




















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

(图源:https://www.datacamp.com/tutorial/how-transformers-work,这篇文章讲得不错)
初看起来可能一头雾水:向量映射是啥?编码器和解码器是干啥的?前馈机制是啥?为啥要归一化?注意力机制是啥?多头注意力机制又是啥?

针对以上疑问,网上已经有非常多经典的文章,从实现层面进行了阐述,比如:
自注意力机制:https://blog.csdn.net/qq_38890412/article/details/120601834
自注意力机制:https://blog.csdn.net/weixin_42110638/article/details/134016569
本文则采用生活中的例子,尝试阐述“自注意力机制”和“多头注意力机制”的概念,希望能增进理解。
想象一下,你正在读一本书,而你的大脑需要理解每一页上的内容。自注意力机制就像是你的大脑在阅读时,不仅关注当前读到的这一行,还会时不时地回顾之前读过的内容,以便更好地理解当前的内容。比如,当你读到一个角色的名字时,你的大脑会自动回想起这个角色之前做过的事情,这样你就能更好地理解这个角色在故事中的作用。现在,如果我们把这本书的每一页比作一个序列中的一个元素,那么自注意力机制就是一种让模型(比如人工智能)能够像人脑一样,在处理当前元素时,还能考虑到序列中其他元素的影响。具体来说,自注意力机制会让模型为序列中的每个元素(比如每个单词)计算一个“权重”,这个权重表示当前元素与其他所有元素(单词)之间的关联程度。这样,模型就可以根据这些权重来决定在生成输出时,应该更多地关注哪些元素。简而言之,自注意力机制就是一种让模型能够“记住”并“理解”序列中每个元素与其他元素之间关系的技巧,就像你在阅读时能够理解和回忆起不同部分之间的联系一样。
是不是有点像自我回顾?
还是以看书为例,想象你正在阅读一本历史书籍,这本书包含了大量的信息,比如人物、时间、地点,以及所发生的事件。你的大脑在阅读时,就像是配备了多个“注意力头”,每个“头”都在关注不同的信息类型。
人物头:这个“头”专注于书中出现的人物,比如他们的名字、角色和行为。当你读到一个人物的名字时,这个“头”会帮你回忆起这个人物之前做过什么,他们的性格特点,以及他们在历史事件中的作用。
时间头:这个“头”关注时间线,帮你追踪不同事件和人物的年代顺序。当你读到一个日期时,这个“头”会帮你把这个日期放在整个历史脉络中,理解它在整个时间线上的位置。
地点头:这个“头”帮助你记住书中提到的地点,比如城市、国家或者战场。当你读到一个地点时,这个“头”会帮你构建起这个地点的地理和文化背景,以及它在历史事件中的重要性。
当你阅读时,这些“头”都在同时工作,帮助你从不同的角度理解和记忆书中的信息。这就是多头注意力的工作原理:它允许你的大脑(或者模型)同时关注多个不同的信息维度,以便更全面地理解和处理复杂的信息。例如,当你读到一个章节,描述了一个重要战役的胜利,你的“事件头”会帮你理解这场战役的战略意义,你的“人物头”会帮你回忆起指挥这场战役的将领,你的“地点头”会帮你想象战场的地理环境,而你的“时间头”会帮你把这个战役放在整个历史时间线上,理解它在整个历史进程中的位置。通过这种方式,多头注意力帮助你(或者模型)更全面、更深入地理解和处理复杂的信息,就像你的大脑在阅读时能够同时关注人物、事件、地点和时间等多个维度一样。
在大模型的实现过程中,多头可以并行执行,以提升效率。
作为深度学习中用于提高模型性能的关键技术,注意力机制种类繁多,每种机制都有其独特的应用场景和计算方式。除了自注意力机制外,还有:
每种注意力机制都有其独特的优势和适用场景,选择合适的注意力机制可以显著提升模型的性能和泛化能力。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。