Transformer算法完全解读

什么是注意力?

当我们看东西时,我们能够快速做出判断,因为我们的大脑可以在高分辨率下接收我们对图片某个区域的注意力,并在低分辨率下感知周围区域。而且视点可以随着时间的推移而改变,也就是说,人眼可以快速扫描全局图像,找到需要关注的目标区域(即在阅读文本时快速扫描全文)。然后找出关键段落、关键词),然后对这一领域多加关注,以便获取更详细的信息,压制其他无用的信息,从而快速做出判断,而不是从头到尾观察事情。才能得到判决。

[En]

When we look at things, we are able to make a quick judgment because our brain can receive our attention on a certain area of the picture at high resolution and perceive the surrounding area at low resolution. And the viewpoint can change over time, in other words, the human eye can quickly scan the global image to find the target area that needs attention (that is, quickly scan the full text when reading the text. Then find the key paragraphs, keywords), and then assign more attention to this area, in order to get more detailed information and suppress other useless information, so as to make a quick judgment, rather than observing things from beginning to end. to get a judgment.

仿生学正是基于人脑的特点而进行的,从而提出了深度学习中的注意机制。在神经网络中,注意力机制可以被看作是一种资源分配机制,可以理解为根据对象的重要性重新分配资源,从而将重要的单元划分得更多,将不重要的或不好的单元划分得更少。

[En]

It is based on the characteristics of the human brain that bionics is carried out, thus the attention mechanism in deep learning is proposed. In the neural network, the attention mechanism can be regarded as a mechanism of resource allocation, which can be understood as redistributing resources according to the importance of the object, so that the important units will be divided more and the unimportant or bad units will be divided less.

如何将这种能力转移到计算机上?

[En]

How can this ability be transferred to a computer?

我们通过一个类比来说明:我们需要去定做一件衣服,想好需要的衣服后,我们去到服装店,把我们对衣服的关键性描述($query$,$Q$)告诉老板,例如”男士衬衫、格子衬衫、纯棉”,随后,老板在脑海里将我们的描述与店里所有衣服样品($value$,$V$)的描述($key$,$K$)进行对比,然后拿出相对更加匹配的样品给我们看,看了之后,我们就发现,有些衣服有50%(权重)符合我们的心意,有些衣服只有20%符合我们心意,难道我们选择最满意的一件吗?不是,我们告诉老板,这件样品,你取这50%的特点,那件样品,取另外20%的特点,直到凑成100%(加权平均的过程),也就是完整衣服的特征,最后那件凑成的衣服,就是我们想要的衣服(注意力值)。

Transformer算法中的注意力机制,跟这个定做衣服的过程是很类似的。这里有三个很关键的概念,也就是上面提到的$query$(来自源数据)、$key$(来自目标数据)、$value$(来自目标数据),这里用”来自”这个词有些不太准确,因为$query$、$key$、$value$是通过源数据、目标数据(都是矩阵)与不同的矩阵($W^Q$, $W^K$, $W^V$)相乘得到,放在神经网络中就是经过线性层变换。$query$、$key$、$value$三者之间是存在联系的,联系越紧密(越相似),那么权重就越大,最终获得的注意力就越多,所以,怎么来评判它们之间的相似度就很关键了。最简单的,就是使用余弦相似度,但是这里,我们更多的是使用点积的方式,两个向量越相似,点积就越大。获得点积之后,进行softmax操作,然后再与$value$矩阵进行加权求和,就获得了最终整个序列的注意力值。整个过程如图5所示。公式表示如下:

$$Attention(Q, K, V)=softmax(\frac{QK^T}{\sqrt[]{d_k}})$$

式中,$d_k$为输入样本维度数,除以$\sqrt[]{d_k}$是为了对最终注意力值大小进行规范化,使注意力得分贴近于正态分布,有助于后续梯度下降求解。

Transformer算法完全解读

图5 注意力机制

Transformer中的注意力机制又不仅于此,Transformer还是用了一种自注意力机制,这种注意力机制中$query$、$key$、$value$三者都是同一矩阵经过变化得来,当然,再简化一点,直接使用初始数据矩阵作为$query$、$key$、$value$也不是不行。

这个过程很重要,是Transformer的核心,我们再用更加数学化的方式表述一遍。假设存在序列数据集$X={x_1, x_2, x_3, …, x_T}$(可以认为$x_1$是文本中的第一个词),$X$经过词嵌入和位置编码后,转为为${a_1, a_2, a_3, …, a_T}$,我们分别使用$W^Q$, $W^K$, $W^V$与之相乘,获得$q_i$,$k_i$,$v_i$,$i \in (1, 2, 3, …, T)$。以$x_1$为例,如何获得$x_1$的注意力值呢?

  • 首先,我们用$x_1$对应的$query$即$q_1$与$k_1, k_2, k_3, …, k_T$计算向量点积, 得到$\alpha_{11}, \alpha_{12}, \alpha_{12}, …, \alpha_{1T}$。注意,这时候的,$\alpha_{11}, \alpha_{12}, \alpha_{12}, …, \alpha_{1T}$在取值范围上,可未必在[0, 1]之间,还需要经过softmax处理;
  • 然后,将$\alpha_{11}, \alpha_{12}, \alpha_{12}, …, \alpha_{1T}$输入softmax层,从而获取值在[0, 1]之间的注意力权重值,即$\hat \alpha_{11}, \hat \alpha_{12}, \hat \alpha_{12}, …, \hat \alpha_{1T}$,这相当于一个概率分布矩阵;
  • 最后,将$\hat \alpha_{11}, \hat \alpha_{12}, \hat \alpha_{12}, …, \hat \alpha_{1T}$分别与对应的$v_1, v_2, v_3, …, v_T$相乘,然后求和,这样便获得了与输入的$x_1$相对应的注意力值$b_1$。

在注意机制层之后,输出矩阵中的每个词向量都包含了当前句子中所有词的语义信息,这对提高模型的性能至关重要。

[En]

After the attention mechanism layer, each word vector in the output matrix contains the semantic information of all the words in the current sentence, which is crucial to improve the performance of the model.

实现注意机制的流程代码如下:

[En]

The process code for implementing the attention mechanism is as follows:

Original: https://www.cnblogs.com/chenhuabin/p/16453665.html
Author: 奥辰
Title: Transformer算法完全解读

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499129/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球