在百度做橱柜网站,中企动力全球邮箱,养生网站策划,公众号模板制作精美【最近课堂上Transformer之前的DL基础知识储备差不多了#xff0c;但学校里一般讲到Transformer课程也接近了尾声#xff1b;之前参与的一些科研打杂训练了我阅读论文的能力和阅读源码的能力#xff0c;也让我有能力有兴趣对最最源头的论文一探究竟#xff1b;我最近也想按…【最近课堂上Transformer之前的DL基础知识储备差不多了但学校里一般讲到Transformer课程也接近了尾声之前参与的一些科研打杂训练了我阅读论文的能力和阅读源码的能力也让我有能力有兴趣对最最源头的论文一探究竟我最近也想按照论文梳理一下LLM是如何一路发展而来的所以决定阅读经典论文。本文是这个系列的第一篇。】
Attention is all you need 这篇文章提出了一个新的“简单的”架构、LLM的基石——Transformer主要是针对机器翻译任务当然后来就出圈了。在这篇文章之前机器翻译的做法是EncoderDecoder端到端其中Encoder和Decoder都是循环神经网络Attention。这篇文章所做的是把循环神经网络去掉整个端到端是纯Attention的。
图解整体架构
论文中的这张图就可以说明Transformer的架构。左下方的inputs是传入的单词组成的句子所以要经过一个embedding层这是常规操作然后通过N个编码块论文中叫‘层’每个编码块包括Multi-Head Attention(positional Encoding后面讲)归一化前馈网络和残差连接需要有resnet基础编码器的输出给到解码器但是是拦腰给进去的不是在outouts的位置解码器是shifted right的意思是逐字生成的解码块比编码块就多了一个Masked Multi-Head后面讲别的都和编码器一样。最后编码器通过一个softmax就得到一个概率分布即对字典里的每一个字都输出一个概率一般概率最高的字作为这一步输出的字。 接下来逐个详解模型中的每一个部分 这个子层连同上面的norm表示成公式就是
LayerNorm
为什么要用LayerNorm而不是batchNorm因为每一个seq的长度是不同的使用batchNorm是把多个序列在某一个embedding维度上做归一化而使用LayerNorm是在一个对一个序列在所有embedding维度上做归一化。前者当序列长度波动大时每个batch的均值和方差也波动较大预测不稳定。
Attention
q, k, v 是三种向量Attention输出是多个v向量的加权平均具体权重是多少呢按q和k的相似度来决定。k-v是成对的; 新来了一个q计算q和每个k的相似度相似度高的k对应v的权重就高。 scaled dot-product attention
既然注意力机制要计算相似度那么Transformer用的是哪一种相似度计算方式呢
使用了最简单的内积相似度。 除以dk是为了防止值过大或过小梯度消失。
Mask
在输出的到t时刻时应该只看k1, k2, ... kt-1所以之后的都被置为很小的负数通过softmax后就会变为0。
多头注意力机制 就是把上面的Attention做多次最后把结果拼起来而每次都维度小一点。为什么要用多头增加可学习的变量W否则没有什么可学参数。
在Transformer中输入输出的地方q, k, v是相同的一个向量复制3份但编码器传给解码器的向量是作为KV而Q来自解码器下一个输入。也就是解码器在解码器中通过控制权重挑出自己感兴趣的东西。
feed forward
就是mlp embedding
在Transformer中embedding是共享权重的。
位置编码
注意到加权是顺序无关的词序列打乱之后加权结果不会变。为了解决这个问题做如下位置编码并和embedding相加 训练
训练部分在论文中也有详细交代步长也比较讲究。