bert就是无监督训练的transformer

transformer :seq2seq model with “self-attention”

cnn和transformer对比 transformer与cnn结合_cnn和transformer对比

单向的RNN:

在输出b4的时候,已经看了a1~a4

在输出b3的时候,已经看了a1~a3

双向的RNN:

在输出每一个bi的时候,已经看了a1~a4

RNN的优点:

可以考虑到长距离的依赖

RNN的缺点:

不能实现并行化

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

cnn和transformer对比 transformer与cnn结合_并行化_02

cnn和transformer对比 transformer与cnn结合_自然语言处理_03


cnn和transformer对比 transformer与cnn结合_transformer_04


计算attention的做法就是 取两个向量qi和kj,得到一个向量αij,代表qi和kj的相似程度

cnn和transformer对比 transformer与cnn结合_cnn和transformer对比_05


soft-max 的作用:归一化处理

cnn和transformer对比 transformer与cnn结合_并行化_06


self-attention不仅可以考虑global information,还可以考虑local information. 如果要考虑local information 只要让αijhead为0,就可以不考虑它对应的Vjijhead和Vj的乘积为0)

cnn和transformer对比 transformer与cnn结合_transformer_07


cnn和transformer对比 transformer与cnn结合_深度学习_08

self-attention做的事情和RNN是一样的,只是self-attention中 b1~b4的计算可以同时进行,实现并行化

cnn和transformer对比 transformer与cnn结合_深度学习_09


self-attention都是通过矩阵进行计算的

cnn和transformer对比 transformer与cnn结合_cnn和transformer对比_10

cnn和transformer对比 transformer与cnn结合_深度学习_11

对A(A中的每一个元素都是input中两两position的attention)的每一个column做softmax得到 A head

cnn和transformer对比 transformer与cnn结合_深度学习_12

最后O就是self-attention layer的输出

cnn和transformer对比 transformer与cnn结合_并行化_13

从矩阵的角度,self-attention layer做了什么

gpu可以加速矩阵乘法

cnn和transformer对比 transformer与cnn结合_transformer_14

cnn和transformer对比 transformer与cnn结合_transformer_15


cnn和transformer对比 transformer与cnn结合_并行化_16

每一个head的关注点不一样,各司其职

每两两input vector 做 attention, 每一个input vector 对其他input vector 都有“天涯若比邻”的效果,所以对于self-attention layer来说,不能感知到输入数据的序列。“A打了B”和“B打了A”对于self-attention来说是一样的。

cnn和transformer对比 transformer与cnn结合_自然语言处理_17

在Xi上concat一个pi, pi是独热编码,标志了Xi在输入中的位置

Wp不是learn出来的(在learn的过程中发现效果不好),是人手设的,用公式推导出来的

cnn和transformer对比 transformer与cnn结合_transformer_18

Wp的样子,感觉很神奇,矩阵还可以用图显示出来

cnn和transformer对比 transformer与cnn结合_深度学习_19


cnn和transformer对比 transformer与cnn结合_transformer_20


transformer是一个seq2seq model

cnn和transformer对比 transformer与cnn结合_深度学习_21

cnn和transformer对比 transformer与cnn结合_并行化_22

cnn和transformer对比 transformer与cnn结合_深度学习_23

用seq2seq的地方,都可以用transformer来取代