再读《attention is all you need》

Attention-> Attention seq2seq -> Transformer
之前曾经手撕过Transformer的代码,但是时间太久了,目前忘的已经差不多了。
最近在重新回顾一些NLP的基础方法的时候,感觉自己的基础还是太过薄弱,所以打算用这段时间好好对这些方法进行总结,而Transformer作为这几年的集大成之作,就拿他作为这个系列的第一篇。
目前看到比较好的文章:

  1. 讲transformer比较详细的
  2. 手撕代码比较详细的

Seq2Seq模型:出现在输入和输出不一致的情况,属于encoder-decoder的一种:
在这里插入图片描述
decoder中一个词的状态和上一时刻状态、上一时刻输出和状态v都有关。
补充:今天老师上课讲了一个很有意思的观点,他认为实际上Transformer可以看作是一个图结构,因为self-attention计算的是每一个单词和整个句子里面单词的关系,实际上可以看作是一个全联接层,而RNN结构则是对按照单词顺序,从前到后。从这点也可以看出Transformer结构这几年如此之火的原因,因为他突破了之前的序列结构,更符合人神经元的认知,GNN类似的图神经网络一定是未来的一个趋势。

attention相比较RNN的不同点:
RNN是第一个单词计算完了,才计算第二个单词,这样计算会花上大量的时间
Transformer是计算每一个单词,然后分别给他不同的权重,这样会缩短训练的时间

Transformer中运用到的self-attention机制是由attention机制演变而来的:
attention机制
第一步:获得每一个单词的隐藏状态的score
第二步:将每个score都送到softmax中跑
第三步:将每一个score乘softmax得到最后的得分。
第四步:把所有对齐的向量加起来
第五步:将上下文向量送到decoder中进行解码
图解:
在这里插入图片描述

layer normalization 和batch normalization的区别
normalization的作用将取值范围强行拉到0到1之间到正态分布,以避免梯度消失的问题。
nlp中使用layer normalization更多一点,layer normalization是对每一条句子进行操作,batch normalization是对一组batch中的同一位置的单词进行操作。

另外几种Norm的比较:
batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;
layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;
instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;
GroupNorm将channel分组,然后再做归一化;
SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。

在这里插入图片描述

基础知识介绍后,下面就是正文部分,上文提到,Transformer和正常的Seq2Seq结构一样,有encoder和decoder层,本文从这两个部分分别介绍,先放一张Transformer的结构图,左半边就是encoder层,右半边是decoder层:
在这里插入图片描述

输入:Positional Encoding
上文提到attention和RNN最大的区别在于RNN是计算完一个词再计算下一个词,而attention是单独对每一个单词进行运算,所以自然就有一个问题:他忽略了文本序列中单词的顺序,为了解决这个问题他加入了一个新的位置向量:

讲重点self-attention

在这里插入图片描述
Query:
Key:
Value:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值