机器学习周报第七周

摘要

自注意力机制是一种在深度学习中广泛应用的注意力机制,主要用于处理序列数据和自然语言处理任务。它通过自动学习输入序列中不同元素之间的关联性,从而捕捉长距离的依赖关系和重要特征。自注意力机制的过程是将输入序列中的每个元素表示成三个部分:查询(Query)、键(Key)和值(Value)。然后,通过计算查询与键之间的相似度,得到注意力权重。最后,根据注意力权重对值进行加权求和,得到输出序列。多头自注意力是对自注意力的改进,通过使用多个独立的注意力头来提高模型性能。每个注意力头学习到不同的输入关联性,从而得到多组注意力权重。位置编码是为了解决自注意力机制中缺乏序列位置信息的问题而引入的。由于自注意力机制只考虑了输入序列中元素之间的关联性,而没有考虑它们的位置关系,因此可能会丢失序列的顺序信息。为了解决这个问题,位置编码被添加到输入序列的表示中,以提供序列的位置信息。

Abstract

Self-attention mechanism is a widely used attentional mechanism in deep learning, mainly for processing sequence data and natural language processing tasks. It captures long-range dependencies and important features by automatically learning the correlations between different elements in the input sequence. The process of the self-attention mechanism is to represent each element in the input sequence into three parts: query, key and value . Then, the attention weights are obtained by calculating the similarity between the Query and the Key. Finally, the values are weighted and summed according to the attention weights to obtain the output sequence. Multi-head self-attention is an improvement of self-attention that improves the model performance by using multiple independent attention heads. Each attention head learns different input correlations to obtain multiple sets of attention weights. Position coding was introduced to address the lack of sequence position information in the self-attention mechanism. Since the self-attention mechanism only considers the correlations between the elements in the input sequence but not their positional relationships, the sequential order information of the sequence may be lost. To solve this problem, positional encoding is added to the representation of the input sequence to provide the positional information of the sequence.

自注意力机制

1.背景

在之前的学习中,模型的输入一般为一个向量。但是在一些其他场景中,经常需要较为复杂的输入。如文字处理问题中,通常要将一段文字输入模型中,这段文字中每个单词当作一个向量的话,就会输入一个向量集给模型。以向量集为输入的实际案例有很多,如声音信号问题、图问题、分子问题等。以下篇幅以词性辨析问题为例,对自注意力机制进行详细介绍。
在这里插入图片描述

2.词性辨析案例

词性辨析是指输入一个句子,并对句子中的每一个单词进行词性判断。对 I saw a saw.这句话中每个单词进行词性判断,将这句话中的每个单词作为一个向量,然后分别输入到一个全连接层中,这个全连接层的输出就是这句话中每个单词的词性,如下图所示。
在这里插入图片描述
但是这样处理有较大的瑕疵。在句子中,第一个saw是一个动词,而第二个saw是一个名词。单词saw在不同的词性中的释义不同。如果要准确地判断单词在具体情况下的释义,需要结合语句的上下文进行分析。自注意力机制一种能够同时考虑序列中所有元素关系的技术,可以解决上述问题。
如下图所示,将四个向量经过自注意力机制处理之后输出四个新的向量,这四个向量已经充分的考虑过与其他向量的联系信息。再将这四个向量输入到全连接层中进行处理。上述过程可以叠加。
在这里插入图片描述

3.自注意力处理机制的过程

如下图所示, a 1 a^1 a1 a 2 a^2 a2 a 3 a^3 a3 a 4 a^4 a4分别为输入层输入的四个向量或者隐藏层输出的四个向量,自注意力处理机制输出的 b i b^i bi充分考虑了以上四个向量。下面以输出 b 1 b^1 b1为例,解释具体过程。
在这里插入图片描述
在self-attention中,判断输入的众多向量的关联程度是通过计算它们之间的注意力权重来实现的。在self-attention机制中,每个向量都被看作是查询(query)、键(key)和值(value)的组合。
首先,通过计算查询向量与每个键向量的相似度,得到每个查询向量对于所有键向量的注意力权重。相似度通常可以通过点积(dot product)、缩放点积(scaled dot product)或其他方法来计算。点积的计算结果是一个标量,表示了两个向量在空间中的相似程度。当两个向量的夹角接近0度时,点积的值会趋近于最大值;当两个向量的夹角接近90度时,点积的值会趋近于0;当两个向量的夹角接近180度时,点积的值会趋近于最小值。因此,点积可以用来判断两个向量之间的相关性和相似度。较大的相似度意味着查询和键之间具有较强的关联,这样的查询会更关注对应的值。通过点积得到的向量记为 α \alpha α
将得到的 α \alpha α接入soft-max中,输出为 α ′ \alpha' α。然后,将 α ′ \alpha' α与值向量相乘并进行加权求和,得到每个查询向量的新表示。这样的操作使得每个查询向量能够同时考虑到其他向量的信息,从而实现了全局的上下文感知。最终,经过这一步操作后的向量 b 1 b^1 b1表示会作为输出。
在这里插入图片描述

4.矩阵的角度

从矩阵乘法的角度看自注意力机制的运行过程如下图所示。
在这里插入图片描述

5.多头自注意力

有一些任务,比如说翻译、语音辨识等问题,使用多头自注意力的效果会更好。即使用较多的注意力头来进行处理。
多头自注意力(Multi-head Self-Attention)是通过使用多个注意力头来改进自注意力的性能。在多头自注意力中,将输入序列分别通过多个独立的注意力头进行处理,每个头学习到不同的输入关联性,从而得到多组注意力权重。最后,将多个注意力头的输出进行拼接或加权求和,得到最终的输出序列。如下图所示。
在这里插入图片描述

6.位置编码

在词性辨识的案例中,一个句子中不同位置有隐藏的词性特征。如动词不会出现在开头等。通过这些词性特征可以帮助模型完成更加精确的判断。但是一般一个向量集作为输入,并没有固定的位置信息。可以同位置编码来解决该问题。
在Transformer模型中,Positional Encoding通常是一组固定的数学函数,用来为序列中的每个词语添加一个位置信息的向量。这个向量会被加到原始的词向量中,从而融合了位置信息。Positional Encoding的设计要保证在不同位置上的向量是唯一的,而且要保持一定的连续性,以便模型能够理解序列的顺序信息。
在这里插入图片描述

7.self-attention vs CNN

用 Self-attention 来处理一张图片时,需要考虑的 pixel,那它产生 query,其他 pixel 产生 key。他的处理范围是一整张图片。而使用CNN来处理时,会画出一个 receptive field,每一个 filter和neural,只考虑 receptive field 范围里的信息。故CNN 可以看作是一种简化版的 Self-attention。
在这里插入图片描述
用不同的数据量来训练 CNN 和 Self-attention,横轴是训练的数据量,纵轴是精准度。
随着数据量越来越多,Self-attention 的结果就越来越好,最终在资料量最多的时候,Self-attention 可以超过 CNN,但在资料量少的时候,CNN 它是可以比 Self-attention,得到更好的结果。这是因为Self-attention 它弹性比较大,所以需要比较多的训练资料,训练资料少的时候容易产生过拟合。而 CNN 它弹性比较小,在训练资料少的时候,结果比较好,但训练资料多的时候,就不如Self-attention有优势。
在这里插入图片描述

总结

自注意力机制是一种强大的注意力机制,可应用于多种序列数据和自然语言处理任务。多头自注意力和位置编码是对自注意力的扩展和改进,它们共同提高了模型的性能和适应能力,使得自注意力机制在深度学习中发挥了重要的作用。下周我将学习循环神经网络的相关知识。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值