通俗理解自注意力机制和多头注意力机制

前言

提到注意力机制,你一定会想起Transformer的经典架构图:

 

(图源:https://www.datacamp.com/tutorial/how-transformers-work,这篇文章讲得不错)

初看起来可能一头雾水:向量映射是啥?编码器和解码器是干啥的?前馈机制是啥?为啥要归一化?注意力机制是啥?多头注意力机制又是啥?

 

针对以上疑问,网上已经有非常多经典的文章,从实现层面进行了阐述,比如:
  1. 自注意力机制:https://blog.csdn.net/qq_38890412/article/details/120601834

  2. 自注意力机制:https://blog.csdn.net/weixin_42110638/article/details/134016569

  3. 向量映射:https://guangzhengli.com/blog/zh/vector-database

本文则采用生活中的例子,尝试阐述“自注意力机制”和“多头注意力机制”的概念,希望能增进理解。

什么是自注意力机制?

想象一下,你正在读一本书,而你的大脑需要理解每一页上的内容。自注意力机制就像是你的大脑在阅读时,不仅关注当前读到的这一行,还会时不时地回顾之前读过的内容,以便更好地理解当前的内容。比如,当你读到一个角色的名字时,你的大脑会自动回想起这个角色之前做过的事情,这样你就能更好地理解这个角色在故事中的作用。现在,如果我们把这本书的每一页比作一个序列中的一个元素,那么自注意力机制就是一种让模型(比如人工智能)能够像人脑一样,在处理当前元素时,还能考虑到序列中其他元素的影响。具体来说,自注意力机制会让模型为序列中的每个元素(比如每个单词)计算一个“权重”,这个权重表示当前元素与其他所有元素(单词)之间的关联程度。这样,模型就可以根据这些权重来决定在生成输出时,应该更多地关注哪些元素。简而言之,自注意力机制就是一种让模型能够“记住”并“理解”序列中每个元素与其他元素之间关系的技巧,就像你在阅读时能够理解和回忆起不同部分之间的联系一样。

是不是有点像自我回顾?

什么是多头注意力机制?

还是以看书为例,想象你正在阅读一本历史书籍,这本书包含了大量的信息,比如人物、时间、地点,以及所发生的事件。你的大脑在阅读时,就像是配备了多个“注意力头”,每个“头”都在关注不同的信息类型。
  1. 人物头:这个“头”专注于书中出现的人物,比如他们的名字、角色和行为。当你读到一个人物的名字时,这个“头”会帮你回忆起这个人物之前做过什么,他们的性格特点,以及他们在历史事件中的作用。

  2. 时间头:这个“头”关注时间线,帮你追踪不同事件和人物的年代顺序。当你读到一个日期时,这个“头”会帮你把这个日期放在整个历史脉络中,理解它在整个时间线上的位置。

  3. 地点头:这个“头”帮助你记住书中提到的地点,比如城市、国家或者战场。当你读到一个地点时,这个“头”会帮你构建起这个地点的地理和文化背景,以及它在历史事件中的重要性。

  4. 事件头:这个“头”关注书中描述的事件,比如战争、政治变革或者社会运动。当你读到一个新的事件时,这个“头”会帮你理解这个事件的起因、过程和结果,以及它对历史进程的影响。
当你阅读时,这些“头”都在同时工作,帮助你从不同的角度理解和记忆书中的信息。这就是多头注意力的工作原理:它允许你的大脑(或者模型)同时关注多个不同的信息维度,以便更全面地理解和处理复杂的信息。例如,当你读到一个章节,描述了一个重要战役的胜利,你的“事件头”会帮你理解这场战役的战略意义,你的“人物头”会帮你回忆起指挥这场战役的将领,你的“地点头”会帮你想象战场的地理环境,而你的“时间头”会帮你把这个战役放在整个历史时间线上,理解它在整个历史进程中的位置。通过这种方式,多头注意力帮助你(或者模型)更全面、更深入地理解和处理复杂的信息,就像你的大脑在阅读时能够同时关注人物、事件、地点和时间等多个维度一样。

在大模型的实现过程中,多头可以并行执行,以提升效率。

扩展:还有哪些注意力机制?

作为深度学习中用于提高模型性能的关键技术,注意力机制种类繁多,每种机制都有其独特的应用场景和计算方式。除了自注意力机制外,还有:
  • Soft Attention:通过计算query与所有key之间的相似度,得到一系列权重,这些权重用于加权求和所有value,从而突出重要部分。Soft Attention输出的是注意力分布的概率值,因此可以嵌入到网络中进行梯度下降训练。
  • Hard Attention:精确选择一个或几个key作为关注点,其余部分则被忽略,实现高分辨率的注意力聚焦。Hard Attention输出的是one-hot向量,通常依赖于强化学习来训练,因此无法嵌入到网络中进行梯度下降。
  • Local Attention:介于Soft和Hard之间,对局部范围内的key进行Soft Attention,从而在全局与局部关注之间取得平衡。Local Attention适用于需要局部关注的场景。
  • Hierarchical Attention:采用分层思想,在所有状态上利用注意力机制,适用于需要多层次关注的复杂任务。
  • Dynamic-Convolution Attention:动态卷积注意力机制通过动态地调整卷积核来捕捉输入特征的不同部分,适用于图像处理等任务。
  • Entity-Aware Attention:实体感知注意力机制专注于识别和关注特定的实体,常用于自然语言处理中的关系抽取和命名实体识别任务。
  • Location-Based Attention:基于位置的注意力机制关注输入数据中的特定位置或区域,适用于图像标注和视频分析等任务。
  • Additive Attention:加性注意力机制通过计算query和key之间的点积来衡量相似度,然后通过加权求和得到最终输出。这种机制在早期的注意力模型中较为常见。
  • Scaled Dot-Product Attention:这是Transformer模型中核心的注意力机制之一,通过计算query和key之间的点积相似度,并通过softmax函数转换为概率分布,然后用这个概率分布加权value向量,从而聚焦在最重要(相似度最高)的信息上。该机制通过缩放点积来避免梯度消失问题,并且能够有效地捕捉查询向量与键向量之间的相似性。

每种注意力机制都有其独特的优势和适用场景,选择合适的注意力机制可以显著提升模型的性能和泛化能力。

posted @ 2024-12-09 11:32  xiaoxi666  阅读(266)  评论(0编辑  收藏  举报
TOP