NLP之Transformer介绍
Transformer介绍
摘要
原因
方法
结果验证
- 几个翻译任务上,翻译效果很好
- 8个GPU训练了3.5天
- 总结
结论
介绍了Transformer
-
第一个
-
只使用注意力
- 在encoder-decoder架构中,使用multi-head取代了recurrent layers
效果
-
翻译任务上,训练的很好,而且快很多
-
在WMT 2014 英德,WMT2014英法
- 效果很好
展望
-
可以用到更多数据上
-
图片
- video等
-
生成
-
-
代码一般在摘要的最后一句话
把自注意力和point-wise的fully connected layer堆在一起的
Introduction
第一段
- LSTM
- GRU
- 语言模型
- 编码器-解码器
第二段
-
RNN
-
特点
- 从左往右一个一个词看
-
问题
-
一个一个算,难以并行
- 计算性能比较差
-
如果序列比较长
- 后面的信息会丢失
-
-
第三段
-
Attention在RNN上的应用
- 如何把编码器的东西传给解码器
第四段
-
提出Transformer
-
提出了一个新的方法
-
attention,可以纯做并行
- 解决了RNN的一些问题
-
Background
多头注意力机制
第一个只依赖自注意力机制做decoder和encoder的模型
CNN对比
-
如何使用卷积网络替换时序神经网络
-
卷积神经网络难以对长序列建模
- 只通过一个小的卷积核,卷积信息
-
优势
-
可以做多个输出通过
- transformer里,multi head
-
Model Architecture
编码器
-
一系列的符号表示
- 转为连续型的representation z
-
layer normalization
-
针对不同长度,可以比较好的做normalization
-
以前都是batch normalization,对feature做normalization,保证feature在类似的维度,可以比较
-
layer normalization是对样本做normalization(对行做,行是样本)
- 避免样本的不同长度对结果造成的影像
-
-
输入
-
一个长为n序列,元素是单个的词等
- x1, x2, …, xn
-
-
输出
-
z, 每个z对应x,是其向量表示
- z1, z2, …, zn
-
解码器
-
过去时刻的输出也可以作为输入
-
输入
-
输出
-
输出时候,需要一个一个生成
- 生成一个长度为m的向量
-
子主题 2
-
autoregressive
- 过去时刻的输出作为该时刻的输入
-
网络结构
-
encoder
-
每个块是一个layer
-
第一个子层是
- multi-head self attention
-
第二个子层是
- position wise fully connected feed-forward network
-
-
每个子层用了残差全连接
-
同时做了layer norm
-
layer norm,在样本维度做normalization
- 因为不同样本长度不一样
- 每个样本有自己的0,1
-
对比
-
batch norm
-
在一个batch里面,对feature做normalization(把batch的所有样本放在一起)
-
目的:记录全局的均值和方法
-
缺点
-
小批量时候,变动比较大
-
一个样本特别长时候(语言)
- 可能识别有问题
-
-
-
-
样本长度变化比较大时候,变化会比较大
- 需要对样本做
-
-
-
dmodel = 512
-
可调参数
- 多少层 layer
- 每个层,维度是多大
-
-
decoder
-
多了一个masked multi-head attention
- 使得t时间后的语句被masked
-
子层之注意力
-
attention解释
-
将query和一些keys-vaules对,映射为输出,的函数
-
output是values的加权和,与values的维度一致
-
对应values的权重 如何来?
- values对应的keys和query的相似性,计算而来
-
-
直白点
- 对你的输入做一些加权和
-
-
常见的注意力机制
-
加型的注意力机制
-
点积的注意力机制
- 目前选用的点乘,再除以DK
- 因为当Dk的的时候,值变大,再经过soft max, 值会变的极端,梯度会变得小,跑不动
- 余弦相似度,内积越大,相似性越高;
为0时候,已经正交了。
-
点积的特点
-
简单,高效
-
除以dk的原因
-
不大的时候不影响
-
大的时候
-
如果两个向量比较长
- 点积时候,值可能比较大,相对的差距会变大,经softmax会更加偏向1或者0,导致梯度比较小,可能跑不动
-
-
-
-
-
multi head attention
-
把原始的value key query投影到不同的平面,
-
匹配到不同模式需要的相似函数,类似多个输出通道
-
不同的w出来的attention值,concat起来
- 用了8个注意力头
-
-
position-wise feed-forward networks
-
作用在position wise的全连接层
-
先从512-2048,再到512
- 两个线性连接层
-
-
和RNN的区别?
- RNN是吧上一时刻的输入作为输入,传入下一时刻,通过MLP等
-
-
embedding and softmax
-
positional encoding
-
attention不会有时序信息
-
通过一个512的向量表示,然后和input embedding相加
-
通过sin和cos函数表示
-
在-1和1之间
- input 的embedding也是通过类似的
-
-
-
34分钟
Training
-
Training
-
BPE
- byte-paire encoding
- 根据词根来,把词根提取出来
-
-
硬件
-
8 NVIDIA P100 GPUs
-
后来开始使用TPU
- 适合大的矩阵乘法
-
训练了10w step
- 12小时
-
-
-
超参有哪些
-
N
- 要堆多少层
-
d model
- 模型的宽度,token后的向量宽度
-
d ff
- MLP中间隐藏层的大小
-
h
- 头的个数
-
d k
- attention中k的维度
-
d v
- attention中v的维度
-
P drop
-
train steps
-
总结
-
attention的作用
-
是把总体的信息汇聚起来
- 需要结合ResNet/MLP等
-
做了偏纳归置
-
假设更加一般
-
对数据抓取信息的能力更差
- 需要更大的数据和模型
-
-
-
优点
- 首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;
- 其次它不是类似RNN的顺序结构,因此具有更好的并行性
-
transformer是一个基础的框架
-
对于NLP相关的任务
- 可以用相应的架构
-
与其他模型对比
-
RNN对比
-
RNN的缺点
-
时间片t时刻的计算依赖t-1时刻的计算结果,这样限制了模型的并行能力;
- 无法并行
-
顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
-
RNN序列形计算
- 当前t状态,来自于前面的h(t-1)的输入
- 时序神经网络
-
也是用线性层做语义空间的转换和传递
-
-
-
LSTM对比
-
CNN对比
-
如何使用卷积网络替换时序神经网络
-
优势
-
可以做多个输出通过
- transformer里,multi head
-
可以并行计算
- 所以速度快
-
-
缺点
-
卷积神经网络难以对长序列建模
- 只通过一个小的卷积核,卷积信息
- 难以捕捉远距离特征
-
-
卷积如何操作序列
- 可以设置kernel为1
-
-
attention对模型的做的假设更好,对数据的了解更少
- 所以需要更多的数据和更大的模型
每个z对应x,是其向量表示
- 点赞
- 收藏
- 关注作者
评论(0)