注意力机制 Attention Mechanism #199

Open
opened 2024-10-16 13:49:28 +08:00 by GANGUAGUA · 0 comments

什么是注意力机制

首先提到注意力机制,最需要关注的就是”注意”二字,我们需要注意什么?

注意力来源于大数据,数据中包含我们需要的的重要数据,也包含不重要的数据。

但是对于一个模型而言(比如CNN、LSTM),很难决定什么数据重要,什么数据不重要。

由此,注意力机制诞生了。

注意力机制的起源

通过热力图,科学家们发现就像人类在观察事物时会自然地将注意力集中在某些区域:在热力图上,我们会自然将注意力集中到红色区域。在与人接触时,我们会将注意力放在对方的脸/眼睛上。在看文章时,会优先关注文章标题。在看段落时会先注意开头。这些都是视觉注意力。

视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。

这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,极大地提高了视觉信息处理的效率与准确性。

热力图形象化展示了人类在看到一副图像时是如何高效分配有限的注意力资源的,其中红色区域表明视觉系统更关注的目标,很明显对于上图所示的场景,人们会把注意力更多投入到人的脸部,文本的标题以及文章首句等位置。

因此,这些我们自然而然关注的部分,也就是热力图上的红色区域可能包含更多更重要的信息。

注意力机制:我们会把焦点聚焦在比较重要的事务上。

因此,注意力机制(Attention Mechanism)是一种在深度学习模型中用来增强模型对信息重要性的识别能力的技术。它允许模型在处理数据时动态地关注输入序列中的关键部分,从而提高模型的性能和准确性。

怎么做注意力

首先,我们需要了解三个值:Query (Q), Key (K), Value (V)。

Query:代表观察者,或者查询值。

Key:代表关键值。

Value:代表被查询对象。

首先我们得明确一个点,注意力模型从大量信息 Values 中筛选出少量重要信息,这些重要信息一定是相对于另外一个信息 Query 而言是重要的,例如对于上面那张婴儿图,Query 就是观察者。也就是说,我们要搭建一个注意力模型,我们必须得要有一个 Query 和一个 Values,然后通过 Query 这个信息从 Values 中筛选出重要信息。

这些概念源自于信息检索系统,举个简单的例子:当你在某电商平台搜索某件商品时(如冬季男士薄款羽绒服),你在搜索引擎上输入的内容便是Query。然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等)。然后从大量的Values中,根据Query和Key的相似度得到匹配的内容筛选出重要信息(Value)。简单点说,就是计算 Query 和 Values 中每个信息的相关程度。

**如何计算Q与V的相关程度**

img

第一步:计算比较Q和K的相似度

通过刚刚电商购物的例子,我们可以理解这个步骤就是搜索引擎尝试将我们的输入Query(冬季男士薄款羽绒服)与关键值Key(商品的种类,颜色,描述)进行匹配。

计算比较 Q 和 K 的相似度,用 f 来表示:image

一般第一步计算方法包括四种

  • 点乘 (Transformer 使用):image
  • 权重:image
  • 拼接权重:image
  • 感知器:image

最终会返回 image

第二步:对相似度进行归一化

计算完相似度后,下一步是对这些相似度值进行归一化,以便它们可以被解释为概率。这通过softmax函数实现:

image

这里,image表示第i个Key的权重。除以 image 的目的是为了防止由于Key向量的维度 image较大而导致的梯度消失问题。这个操作确保了即使在高维空间中,softmax函数也能稳定地工作。

第三步:计算加权的Value(V)的和

最后一步是使用上一步计算出的权重 𝛼𝑖_αi_ 来对所有的Value向量 𝑉𝑖_Vi_ 进行加权求和,得到最终的Attention向量:

image

这个向量代表了模型对输入序列的“关注”结果,它结合了序列中所有元素的信息,每个元素的重要性由其对应的权重 image决定。

总结来说,注意力机制通过计算输入序列中每个元素与当前处理元素的相似度,然后对这些相似度进行归一化处理,最后将这些归一化的相似度应用于Value向量,以生成一个综合了序列中所有元素信息的向量。这个过程允许模型动态地关注输入数据中最重要的部分。

<h2 id="WDELV">什么是注意力机制</h2> 首先提到注意力机制,最需要关注的就是”注意”二字,我们需要注意什么? 注意力来源于大数据,数据中包含我们需要的的重要数据,也包含不重要的数据。 但是对于一个模型而言(比如CNN、LSTM),很难决定什么数据重要,什么数据不重要。 由此,注意力机制诞生了。 <font style="color:#060607;background-color:#FFFFFF;"></font> <h2 id="bk0UJ"><font style="color:#060607;background-color:#FFFFFF;">注意力机制的起源</font></h2> 通过热力图,科学家们发现<font style="color:#060607;background-color:#FFFFFF;">就像人类在观察事物时会自然地将注意力集中在某些区域:在热力图上,我们会自然将注意力集中到红色区域。在与人接触时,我们会将注意力放在对方的脸/眼睛上。在看文章时,会优先关注文章标题。在看段落时会先注意开头。这些都是视觉注意力。</font> ![](https://cdn.nlark.com/yuque/0/2024/png/48118617/1729045574030-9e9ebf8a-d070-442c-9d1e-f98bc5fb3a4d.png) <font style="color:rgb(35, 38, 59);">视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。</font> <font style="color:rgb(35, 38, 59);">这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,极大地提高了视觉信息处理的效率与准确性。</font> <font style="color:rgb(35, 38, 59);">热力图形象化展示了人类在看到一副图像时是如何高效分配有限的注意力资源的,</font>**<font style="color:rgb(35, 38, 59);">其中红色区域表明视觉系统更关注的目标</font>**<font style="color:rgb(35, 38, 59);">,很明显对于上图所示的场景,人们会把注意力更多投入到人的脸部,文本的标题以及文章首句等位置。</font> <font style="color:#060607;background-color:#FFFFFF;">因此,这些我们自然而然关注的部分,也就是热力图上的</font>**<font style="color:#060607;background-color:#FFFFFF;">红色区域可能包含更多更重要的信息。</font>** 注意力机制:我们会把焦点聚焦在比较重要的事务上。 因此,<font style="color:#060607;background-color:#FFFFFF;">注意力机制(Attention Mechanism)是一种在深度学习模型中用来增强模型对信息重要性的识别能力的技术。它允许模型在处理数据时动态地关注输入序列中的关键部分,从而提高模型的性能和准确性。</font> <font style="color:#060607;background-color:#FFFFFF;"></font> <h2 id="teyZH"><font style="color:#060607;background-color:#FFFFFF;">怎么做注意力</font></h2> <font style="color:#060607;background-color:#FFFFFF;">首先,我们需要了解三个值:Query (Q), Key (K), Value (V)。</font> <font style="color:#060607;background-color:#FFFFFF;">Query:代表观察者,或者查询值。</font> <font style="color:#060607;background-color:#FFFFFF;">Key:代表关键值。</font> <font style="color:#060607;background-color:#FFFFFF;">Value:代表被查询对象。</font> <font style="color:#060607;background-color:#FFFFFF;"></font> <font style="color:rgb(35, 38, 59);">首先我们得明确一个点,注意力模型从大量信息 Values 中筛选出少量重要信息,这些重要信息一定是相对于另外一个信息 Query 而言是重要的,例如对于上面那张婴儿图,Query 就是观察者。也就是说,我们要搭建一个注意力模型,我们必须得要有一个 Query 和一个 Values,然后通过 Query 这个信息从 Values 中筛选出重要信息。</font> 这些概念源自于信息检索系统,举个简单的例子:当你在某电商平台搜索某件商品时(如冬季男士薄款羽绒服),你在搜索引擎上输入的内容便是Query。然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等)。然后从大量的Values中,根据Query和Key的相似度得到匹配的内容筛选出重要信息(Value)。<font style="color:rgb(35, 38, 59);">简单点说,</font>**<font style="color:rgb(35, 38, 59);">就是计算 Query 和 Values 中每个信息的相关程度。</font>** <h3 id="GSvTY">**<font style="color:rgb(35, 38, 59);">如何计算Q与V的相关程度</font>**</h3> ![img](https://cdn.nlark.com/yuque/0/2024/png/48118617/1729047748828-4dc48b0a-4eca-49f7-8867-e59eaf5f8945.png) <h4 id="UZFaI">第一步:计算比较Q和K的相似度</h4> 通过刚刚电商购物的例子,我们可以理解这个步骤就是搜索引擎尝试将我们的输入Query(冬季男士薄款羽绒服)与关键值Key(商品的种类,颜色,描述)进行匹配。 <font style="color:rgb(35, 38, 59);">计算比较 Q 和 K 的相似度,用 f 来表示:</font>![image](https://cdn.nlark.com/yuque/__latex/24d7c03609cad728f04348483b549a4e.svg)<font style="color:rgb(35, 38, 59);"></font> <font style="color:rgb(35, 38, 59);">一般第一步计算方法包括四种</font> + <font style="color:rgb(35, 38, 59);">点乘 (</font>**<font style="color:rgb(35, 38, 59);">Transformer 使用</font>**<font style="color:rgb(35, 38, 59);">):</font>![image](https://cdn.nlark.com/yuque/__latex/d2d5f74250a1be2a5c1e3010df920915.svg)<font style="color:rgb(35, 38, 59);"></font> + 权重:![image](https://cdn.nlark.com/yuque/__latex/e97e6b3106685000528217b24255eeac.svg) + 拼接权重:![image](https://cdn.nlark.com/yuque/__latex/e9f5df688c6483aa0b62fc6c8ebbea35.svg) + 感知器:![image](https://cdn.nlark.com/yuque/__latex/622ab94a720beccf04b043411e3e1442.svg) 最终会返回 ![image](https://cdn.nlark.com/yuque/__latex/de772d5faf0426bb3326194836957f42.svg) <h4 id="iNVF6"><font style="color:rgb(6, 6, 7);">第二步:对相似度进行归一化</font></h4> <font style="color:rgb(6, 6, 7);">计算完相似度后,下一步是对这些相似度值进行归一化,以便它们可以被解释为概率。这通过softmax函数实现: </font>![image](https://cdn.nlark.com/yuque/__latex/a9788535deafa7773550795fa6cc74a8.svg) <font style="color:rgb(6, 6, 7);">这里,</font>![image](https://cdn.nlark.com/yuque/__latex/5d496a3b872073b90e3b920cacfc3dc6.svg)<font style="color:rgb(6, 6, 7);">表示第i个Key的权重。除以 </font>![image](https://cdn.nlark.com/yuque/__latex/1dbcade63c0d54d42df63c3aa277d4b1.svg)<font style="color:rgb(6, 6, 7);"> 的目的是为了防止由于Key向量的维度 </font>![image](https://cdn.nlark.com/yuque/__latex/1dbcade63c0d54d42df63c3aa277d4b1.svg)<font style="color:rgb(6, 6, 7);">较大而导致的梯度消失问题。这个操作确保了即使在高维空间中,softmax函数也能稳定地工作。</font> <h4 id="tb9eQ"><font style="color:rgb(6, 6, 7);">第三步:计算加权的Value(V)的和</font></h4> <font style="color:rgb(6, 6, 7);">最后一步是使用上一步计算出的权重 𝛼𝑖</font>_<font style="color:rgb(6, 6, 7);">αi</font>_<font style="color:rgb(6, 6, 7);"> 来对所有的Value向量 𝑉𝑖</font>_<font style="color:rgb(6, 6, 7);">Vi</font>_<font style="color:rgb(6, 6, 7);"> 进行加权求和,得到最终的Attention向量: </font>![image](https://cdn.nlark.com/yuque/__latex/cdb6f1aa8831fc27fbfbb23f1314e277.svg) <font style="color:rgb(6, 6, 7);">这个向量代表了模型对输入序列的“关注”结果,它结合了序列中所有元素的信息,每个元素的重要性由其对应的权重 </font>![image](https://cdn.nlark.com/yuque/__latex/5d496a3b872073b90e3b920cacfc3dc6.svg)<font style="color:rgb(6, 6, 7);">决定。</font> <font style="color:rgb(6, 6, 7);">总结来说,注意力机制通过计算输入序列中每个元素与当前处理元素的相似度,然后对这些相似度进行归一化处理,最后将这些归一化的相似度应用于Value向量,以生成一个综合了序列中所有元素信息的向量。这个过程允许模型动态地关注输入数据中最重要的部分。</font>
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#199
No description provided.