当前位置: 代码迷 >> 综合 >> transformer--变形金刚
  详细解决方案

transformer--变形金刚

热度:82   发布时间:2024-02-11 07:32:32.0

bert就是无监督训练的transformer

transformer :seq2seq model with “self-attention”

在这里插入图片描述单向的RNN:
在输出b4的时候,已经看了a1~a4
在输出b3的时候,已经看了a1~a3
双向的RNN:
在输出每一个bi的时候,已经看了a1~a4
RNN的优点:
可以考虑到长距离的依赖
RNN的缺点:
不能实现并行化

也可以用CNN来处理序列数据,图中每一个三角代表一个filter
CNN的优点:如果想要考虑长距离依赖,需要叠加多层filter
CNN的优点:可以实现并行运算(所有的黄色三角可以同时进行,黄色和橙色也可以同时进行)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
计算attention的做法就是 取两个向量qi和kj,得到一个向量αij,代表qi和kj的相似程度

在这里插入图片描述
soft-max 的作用:归一化处理

在这里插入图片描述
self-attention不仅可以考虑global information,还可以考虑local information. 如果要考虑local information 只要让αijhead为0,就可以不考虑它对应的Vjijhead和Vj的乘积为0)

在这里插入图片描述
在这里插入图片描述self-attention做的事情和RNN是一样的,只是self-attention中 b1~b4的计算可以同时进行,实现并行化

在这里插入图片描述
self-attention都是通过矩阵进行计算的

在这里插入图片描述在这里插入图片描述对A(A中的每一个元素都是input中两两position的attention)的每一个column做softmax得到 A head

在这里插入图片描述最后O就是self-attention layer的输出

在这里插入图片描述从矩阵的角度,self-attention layer做了什么
gpu可以加速矩阵乘法

在这里插入图片描述在这里插入图片描述
在这里插入图片描述每一个head的关注点不一样,各司其职
每两两input vector 做 attention, 每一个input vector 对其他input vector 都有“天涯若比邻”的效果,所以对于self-attention layer来说,不能感知到输入数据的序列。“A打了B”和“B打了A”对于self-attention来说是一样的。

在这里插入图片描述在Xi上concat一个pi, pi是独热编码,标志了Xi在输入中的位置
Wp不是learn出来的(在learn的过程中发现效果不好),是人手设的,用公式推导出来的
在这里插入图片描述Wp的样子,感觉很神奇,矩阵还可以用图显示出来

在这里插入图片描述
在这里插入图片描述
transformer是一个seq2seq model

在这里插入图片描述在这里插入图片描述

在这里插入图片描述用seq2seq的地方,都可以用transformer来取代

  相关解决方案