本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
文章目录
Encoder – Multi Head Attention
Encoder – Positional Encoding
残差网络、LayerNorm、FFN
Attention
Sequence to sequence 就是将source转成target,它们的长度可以不一样。比如中文翻译英文,那幺词的个数可能是不同的。
用RNN进行Encoder和Decoder。RNN是按照时间进行的预测。
RNN是天然按照时间步骤顺序处理,中间步骤z不能从所以输入时间步骤编码成信息。这称为bottleneck problem。
另外,RNN有堆叠时,有梯度消失的问题。
Attention的好处是,上下文的z应该是对于所以输入数据都是可接触的,而不是只和最近的一个输入有关。但是它不是全部记下来,而是有意的pay attention。在时间上关注输入的多个部分。
attention分为隐式的implicit和显式的explicit。也可以用在图像处理中,在深度学习网络中,学习到一些隐式的attention。比如2016那篇文章,激活的单元,有意的倾向于人体的动作。相对于输入的一个偏导数,也就是jacobian matrix。另一种是显式的attention,也就是基于前面输入的记忆,对于输入进行weight,一种加权值。
还有一种attention就是soft和hard。对每个词的每个区域赋予不同的attention。
soft关注整个图像。hard式关注图像中一个patch。两种attention来说,soft:平滑,可求导。
hard:计算少,推理时间短。但是soft:计算比较贵,hard:不能求导,需要其他复杂方法,比如variance reduction或者reinforcement learning。
global全部的输入,local:部分的输入。卷积一般是local的,fully connect一般是global的。可以看到不同的颜色,意味着weight是不断地变化的。只不过它们是在梯度下降缓慢的变化。
输出加了额外的start和end的token。start表示一句话的开始,end表示一句话的结束。
为了解决bottleneck problem,引入了attention mechanism。蓝色的圈和绿圈(start token)都称为hidden state。2个hidden state做点积,就得到attention scores。得分越大,hidden state更相似,也就是aligned越相似。
然后将attention score经过一个softmax得到一个概率的分布attention distribution,对于start更关注编码器第一个hidden state,也就是起始位置。它的he的信息就更多。所以概率比较大。
然后在得到一个attention output,是一个encoder hidden state的加权和。这个attention output又叫context vector。权重大的,就有高的attention。
在计算hit的时候,借用了start和he两个decoder信息。如果he预测错的,那幺借助一个叫做teacher focing的机制,就是我们知道he是groud truth,即使预测的不是he,我们也用he。
由此可以看出,每一个时间步,都有自己的attention score和attention distribution、和attention output。也就是一个dynamic context vector。
注意力机制是一个可以训练的权重均值。输入和输出是1对多。一个输出由很多输入单词决定,他们的决定weight不同。
attention score的计算有不同的方法。additive就是concat。我们上面主要讲的是Dot-Product,后面会讲Scaled Dot-Product.
self-attention就是相同的sequence做注意力机制。看同一个sequence词与词之间的得分。
eating和apple的attention就比较高,但是和green就比较低。
对于RNN来说,自注意力的每一个hidden state和之前的hidden state有关。每一个query的state由前面的s0到st-1的keys和values决定。如果不是self-attention,而是encoder和decoder之间的注意力,我们称之为cross attention交互注意力。
注意,self-attention的query、keys、values都是来自自己,比如encoder的,就都是来自encoder的,或者都是来自decoder的。但是corss-attention,它的query是来自decoder,但是它的key和value是来自encoder的hidden state h0到hn。
给一个value和query,attention可以根据query计算value的加权和。这相当于做了一个选择性总结selective summary。query决定了哪些value需要focus。根据query可以得到一个固定长度的values。
attention可以用到transformer,图像,推荐系统等等。
Transformer框架概述
Transformer可以表示token之间的关系。
google brain提出的。
seq2seq。机器翻译。
从最上面的encoder连到每一个decoder的block。
FFN:Feed Forward Network。前向传播网络。除了encoder和decoder自身的self-attention外,在decoder里,还有一个cross-attention,也就是encoder-decoder attention。
encoder的时候,可以一次放入整个句子,但是decoder的时候,从左到右,依次解码。
transformer要考虑上下文。
it对于animal和street关注度不同。
Encoder – Multi Head Attention
点积运算得到的score就是queries和keys的相似度。
为什幺除以8,不除的话,softmax值比较大,梯度不是很稳定。
输入句子,就是做矩阵运算。
Linear就是Q、K、V和W的矩阵乘法。
论文中是用的8个头。
我们有key,query,value多个weight空间,这样表示更具有丰富的层次。可以关注自身,
Encoder – Positional Encoding
因为transofrmer是直接输入的句子,作并行处理,所以我们引入了positional encoding,来记录句子的顺序。
PEpos表示一个位置编码,PEpos+k表示距离pos位置k个距离的编码,它是PEpos的一个线性函数表示。
残差网络、LayerNorm、FFN
Decoder
Training
Summary
这是Encoder。
这是Decoder。
Be First to Comment