首页 > 其他分享 >通俗理解自注意力机制和多头注意力机制

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

时间:2024-12-09 11:45:22浏览次数:4  
标签:元素 模型 Attention 理解 机制 通俗 注意力

前言

提到注意力机制,你一定会想起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向量,从而聚焦在最重要(相似度最高)的信息上。该机制通过缩放点积来避免梯度消失问题,并且能够有效地捕捉查询向量与键向量之间的相似性。

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

标签:元素,模型,Attention,理解,机制,通俗,注意力
From: https://www.cnblogs.com/xiaoxi666/p/18594531

相关文章

  • TransmittableThreadLocal的实现机制和原理
    1前言前面我看过了ThreadLocal的实现机制和原理以及InheritableThreadLocal的实现机制和原理两种类型的ThreadLocal,前者是普通的,后者是在前者的基础上套了一层父子线程关系,当使用后者的时候,会在线程创建的时候,浅拷贝一份父线程的变量值。那么今天空了,我来看看另外一种Threa......
  • springcloud eureka原理和机制
    公司的注册中心使用的是Eureka,之前使用过ZooKeeper,大致原理应该差不多,具体细节需要进一步学习,正好之前在腾讯云开发者社区看到一篇讲得很不错的文章,转载过来方便查看。简介在微服务架构下,服务端环境通常包含多个服务,同时每个服务也是一个无状态的多实例集群。这些服务和实例一般......
  • 嵌入式系统的内存访问和总线通信机制解析、PCI/PCIe引入
    往期内容Uart子系统专栏:专栏地址:Uart子系统Linux内核早期打印机制与RS485通信技术–末片,有专栏内容观看顺序interrupt子系统专栏:专栏地址:interrupt子系统Linux链式与层级中断控制器讲解:原理与驱动开发–末片,有专栏内容观看顺序pinctrl和gpio子系统专栏:专栏地......
  • 反射机制
    '''反射机制:通过字符串驱动代码,基于字符串找到对应模块之中的方法或属性。通过反射机制可以极大的简化代码逻辑,也可以让我们的程序具备一定的动态运行过程中自我修改的能力python中的反射机制主要是四种方法的调用:getattr()setattr()......
  • Java中的SPI机制
    引言今天和大家分享一下一个在Java开发中非常重要的概念——SPI(ServiceProviderInterface)。SPI直译叫做服务提供者接口,是一种用于动态加载服务的机制。它不仅能够帮助我们构建更加灵活和可扩展的应用程序,还能让我们的代码更加简洁和易于维护。希望通过本文,大家能够对SPI......
  • Android移动开发基础——Handler机制
    ⼀、Handler原理在Android中,Handler是⼀个重要的⼯具,主要⽤于在不同线程之间传递消息或执⾏任务,特别是从后台线程向主线程(UI线程)发送任务。Handler的⼯作原理依赖于Looper和MessageQueue,它们共同组成了Android的消息处理机制。⼆、Handler原理概述1、线程和消息......
  • Redis 的事务机制有什么隐藏特性
    Redis的事务机制是通过MULTI,EXEC,WATCH和DISCARD命令来实现的。它提供了一种方式,可以将多个命令组合成一个序列,这个序列要么完全执行,要么完全不执行(在某些特定情况下)。然而,Redis的事务并不提供传统数据库中的ACID特性,即原子性、一致性、隔离性和持久性。下面是一......
  • Python 中的继承机制是什么样的?
    Python的继承机制允许一个类(子类)继承另一个类(父类或基类)的属性和方法。通过继承,可以实现代码复用,同时也能让代码结构更加清晰、易于维护。Python支持单继承和多继承,并且有丰富的特性来处理这些关系。继承的基本概念单继承:一个子类只继承自一个父类。多继承:一个子类可以从多......
  • Windows 操作系统中的身份验证机制非常多样化且高度集成,以确保系统和网络环境的安全性
    Windows操作系统中的身份验证机制非常多样化且高度集成,以确保系统和网络环境的安全性。主要的身份验证机制包括以下几种:1. Windows本地身份验证(LocalAuthentication)这种身份验证机制是在单台计算机中使用的,通常用于独立的个人计算机或没有域控制器的工作组环境中。用户名......
  • Kerberos 是一种基于票证的身份验证协议,在 Windows 环境中提供了强大的安全性、单点登
    Kerberos5协议是一个计算机网络身份认证协议,用于安全地验证通信双方的身份并加密它们之间的通信。它最初由麻省理工学院(MIT)开发,成为许多现代操作系统(如Windows、Linux、Unix)中的标准身份验证协议之一。Kerberos协议特别适用于客户端与服务器之间的身份验证,广泛应用于局域网(LAN......