Transformer 核心机制与架构详解
1. 学习总结
1.1 注意力机制(Attention Mechanism)
注意力机制是深度学习中一种模拟人类视觉或听觉系统工作方式的技术。其灵感来源于人类的感知过程,即根据输入的信息,有选择性地关注或聚焦于不同部分,以便更有效地处理信息。在深度学习中,注意力机制被广泛应用于序列数据、图像处理等任务。
注意力机制的基本思想是在处理输入序列时,不同位置的信息被赋予不同的权重,以便网络更集中地关注对当前任务有用的部分。这样可以提高模型对长序列或大型数据的处理能力,同时降低处理的复杂性。
在自然语言处理中,注意力机制常常被用于机器翻译、文本摘要等任务。在图像处理中,它可以用于图像分类、图像生成等任务。在注意力机制的基础上,出现了不同的变种,如自注意力机制(Self-Attention)等,用于更好地捕捉序列内部的依赖关系。
具体来说,注意力机制允许模型在处理输入时,对不同位置的信息分配不同的权重,以便网络更有针对性地处理输入序列。这种权重的分配是动态的,可以根据当前输入的情况调整。这种能力使得模型能够更灵活地处理各种输入,并且在处理长序列时不容易出现信息丢失的问题。
在自然语言任务中,通过注意力分数来表达某个词在句子中的重要性,分数越高,说明该词对完成该任务的重要性越大。
计算注意力分数时,我们主要参考三个因素:Query、Key 和 Value。
- Query:任务内容,代表当前需要查询的信息。
- Key:索引/标签,帮助定位到答案。
- Value:答案,实际包含的信息内容。

在文本翻译中,我们希望翻译后的句子的意思和原始句子相似,所以进行注意力分数计算时,Query 一般和目标序列(即翻译后的句子)有关,Key 则与源序列(即翻译前的原始句子)有关。
常用的计算注意力分数的方式有两种:Additive Attention 和 Scaled Dot Product Attention。这里主要介绍第二种方法:Scaled Dot Product Attention。
在几何角度,点积(Dot Product)表示一个向量在另一个向量方向上的投影。换句话说,从几何角度上解读,点积代表了某个向量中的多少是和另一个向量相似的。

图片来源:Understanding the Dot Product from BetterExplained
将这个概念运用到当前的情境中,我们想要求 Query 和 Key 之间有多少是相似的,则需要计算 Query 和 Key 的点积。
下面是注意力机制的公式:

1.2 自注意力机制(Self-Attention)
自注意力机制中,我们关注句子本身,查看每个单词对于周边单词的重要性。这样可以很好地理清句子中的逻辑关系,如代词指代。
举个例子,在"The animal didn't cross the street because it was too tired"这句话中,"it"指代句中的"The animal",所以自注意力会赋予"The"、"animal"更高的注意力分值。
自注意力分数的计算还是遵循着上述的公式,只不过这里的 Query、Key 和 Value 都变成了句子本身点乘各自权重。
给定序列 $X$,序列长度为 n,维度为 d_model。在计算自注意力时 $Q = XW^Q, K = XW^K, V = XW^V$。













