图解Transformer

原链接:https://jalammar.github.io/illustrated-transformer/

翻译: https://blog.csdn.net/longxinchen_ml/article/details/86533005
官翻:https://blog.csdn.net/yujianmin1990/article/details/85221271

总结:

自注意力: 在输入句子中,句子自己会学习自己的每个输入单词与其他单词的联系。
比如代词代指的是哪个单词。

计算自注意力步骤:

第一步

就是从每个编码器的输入向量(每个单词的词向量),通过三个权重矩阵,生成三个向量。
也就是说对于每个单词,我们创造:
一个查询向量query
一个键向量key
一个值向量value
这三个向量是通过词嵌入与三个权重矩阵后相乘创建的。

第二步 计算得分。

query_​​​ * key_i : 得出这个单词和每个单词的联系。 学哪个单词,用哪个单词的query向量
假设我们在为这个例子中的第一个词“Thinking”计算自注意力向量,我们需要拿输入句子中的每个单词对“Thinking”打分。这些分数决定了在编码单词“Thinking”的过程中有多重视句子的其它部分。
学谁的
这些分数是通过打分单词(所有输入句子的单词)的键向量与“Thinking”的查询向量相点积来计算的

第三步: 将分数除以使用的键向量的维数64的平方根

第四步 然后通过softmax传递结果。

softmax的作用是使所有单词的分数归一化,得到的分数都是正值且和为1。
这个softmax分数决定了每个单词对编码当下位置(“Thinking”)的贡献。显然,已经在这个位置上的单词将获得最高的softmax分数,但有时关注另一个与当前单词相关的单词也会有帮助

第五步 打分_attention score

将每个值 Value向量乘以softmax分数(这是为了准备之后将它们求和)。
这里的直觉是希望关注语义上相关的单词,并弱化不相关的单词(例如,让它们乘以0.001这样的小数)。

第六步 是对加权 值向量(value)求和

译注:自注意力的另一种解释就是在编码某个单词时,就是将所有单词的表示(值向量)进行加权求和,而权重是通过该词的表示(键向量)与被编码词表示(查询向量)的点积并通过softmax得到。),然后即得到自注意力层在该位置的输出(在我们的例子中是对于第一个单词)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。