transformer--变形金刚

bert就是无监督训练的transformer

transformer :seq2seq model with “self-attention”

transformer--变形金刚_第1张图片单向的RNN:
在输出b4的时候,已经看了a1~a4
在输出b3的时候,已经看了a1~a3
双向的RNN:
在输出每一个bi的时候,已经看了a1~a4
RNN的优点:
可以考虑到长距离的依赖
RNN的缺点:
不能实现并行化

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

transformer--变形金刚_第2张图片

transformer--变形金刚_第3张图片
transformer--变形金刚_第4张图片
计算attention的做法就是 取两个向量qi和kj,得到一个向量αij,代表qi和kj的相似程度

transformer--变形金刚_第5张图片
soft-max 的作用:归一化处理

transformer--变形金刚_第6张图片
self-attention不仅可以考虑global information,还可以考虑local information. 如果要考虑local information 只要让αijhead为0,就可以不考虑它对应的Vjijhead和Vj的乘积为0)

transformer--变形金刚_第7张图片
transformer--变形金刚_第8张图片self-attention做的事情和RNN是一样的,只是self-attention中 b1~b4的计算可以同时进行,实现并行化

transformer--变形金刚_第9张图片
self-attention都是通过矩阵进行计算的

transformer--变形金刚_第10张图片transformer--变形金刚_第11张图片对A(A中的每一个元素都是input中两两position的attention)的每一个column做softmax得到 A head

transformer--变形金刚_第12张图片最后O就是self-attention layer的输出

transformer--变形金刚_第13张图片从矩阵的角度,self-attention layer做了什么
gpu可以加速矩阵乘法

transformer--变形金刚_第14张图片transformer--变形金刚_第15张图片
transformer--变形金刚_第16张图片每一个head的关注点不一样,各司其职
每两两input vector 做 attention, 每一个input vector 对其他input vector 都有“天涯若比邻”的效果,所以对于self-attention layer来说,不能感知到输入数据的序列。“A打了B”和“B打了A”对于self-attention来说是一样的。

transformer--变形金刚_第17张图片在Xi上concat一个pi, pi是独热编码,标志了Xi在输入中的位置
Wp不是learn出来的(在learn的过程中发现效果不好),是人手设的,用公式推导出来的
transformer--变形金刚_第18张图片Wp的样子,感觉很神奇,矩阵还可以用图显示出来

transformer--变形金刚_第19张图片
transformer--变形金刚_第20张图片
transformer是一个seq2seq model

transformer--变形金刚_第21张图片transformer--变形金刚_第22张图片

transformer--变形金刚_第23张图片用seq2seq的地方,都可以用transformer来取代

你可能感兴趣的:(自然语言处理,transformer,自然语言处理,深度学习)