| 第1行: |
第1行: |
| | [[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配,其中红色区域表明视觉系统更加关注的目标<ref>Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.</ref>。|替代=|400x400像素]] | | [[文件:注意力机制的理解.png|缩略图|婴儿在看到一幅图像时的注意力分配,其中红色区域表明视觉系统更加关注的目标<ref>Singh R, Chandra S, Dhusia K, et al. Capacitating surveillance and situational awareness with measure of visual engagement using eyetracker[C]//2016 International Conference on Computing, Communication and Automation (ICCCA). IEEE, 2016: 1161-1165.</ref>。|替代=|400x400像素]] |
| − | 在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。通过借鉴人类聚焦关键信息的观察与思考模式,在人工智能领域,注意力机制(Attention Mechanism)是深度学习领域的一项重要技术创新。它允许模型在处理信息时动态地关注最相关的部分,而不是平等对待所有输入信息。注意力机制可以增强可解释性:通过可视化注意力权重,帮助理解模型的决策过程。
| + | 在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。在人工智能领域,注意力机制(Attention Mechanism)是深度学习领域的一项重要技术创新,借鉴了人类聚焦关键信息的观察与思考模式。它允许模型在处理信息时动态地关注最相关的部分,而不是平等对待所有输入信息。注意力机制可以增强可解释性,通过可视化注意力权重,帮助理解模型的决策过程。 |
| | | | |
| | = 注意力机制原理 = | | = 注意力机制原理 = |
| − | 注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时,会自动将注意力集中在最重要或最相关的区域上。比如,当我们阅读文章或观看图像时,视觉系统会自动将注意力集中在关键信息上,而非均匀处理所有细节。注意力机制是一种在神经网络中模拟人类注意力行为的技术。其核心思想是让模型在处理输入序列时,能够有选择性地关注输入序列中与当前任务相关的部分,并分配不同的权重。权重越高,表示模型对该部分输入的信息给予了更多的关注。
| + | 注意力机制的基本原理可以类比为人类的视觉注意过程。当我们观察一个场景时,会自动将注意力集中在最重要或最相关的区域上。比如,当我们阅读文章或观看图像时,视觉系统会自动将注意力集中在关键信息上,而非均匀处理所有细节。注意力机制的核心思想是让模型在处理输入序列时,能够有选择性地关注输入序列中与当前任务相关的部分,并分配不同的权重。权重越高,表示模型对该部分输入的信息给予了更多的关注。 |
| | | | |
| | 注意力机制的计算过程包含三个核心组件:查询(Query, Q):表示当前需要关注什么;键(Key, K):表示可以被关注的信息;值(Value, V):表示实际的信息内容。注意力机制计算一个权重分布,该分布表示了查询与每个键之间的相关性。然后,将这些权重与对应的值进行加权求和,得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时,从输入序列中“提取”出的最相关信息。 | | 注意力机制的计算过程包含三个核心组件:查询(Query, Q):表示当前需要关注什么;键(Key, K):表示可以被关注的信息;值(Value, V):表示实际的信息内容。注意力机制计算一个权重分布,该分布表示了查询与每个键之间的相关性。然后,将这些权重与对应的值进行加权求和,得到最终的注意力输出。这个输出可以被视为模型在处理当前查询时,从输入序列中“提取”出的最相关信息。 |
| | | | |
| | = 注意力机制的类型 = | | = 注意力机制的类型 = |
| − | 根据不同的分类标准,注意力机制可以分为多种类型。如果按注意力范围分类,可以分为'''自注意力(Self-Attention)''':序列内部元素之间的注意力,如Transformer中的自注意力。'''交叉注意力(Cross-Attention)''':不同序列之间的注意力,如编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制<ref name=":1" />|替代=|344x344像素]] | + | 根据不同的分类标准,注意力机制可以分为多种类型。如果按注意力范围分类,可以分为'''自注意力(Self-Attention)''':序列内部元素之间的注意力,如Transformer编码器中的自注意力。'''交叉注意力(Cross-Attention)''':不同序列之间的注意力,如Transformer编码器-解码器结构中的注意力。[[文件:Self-attention.png|缩略图|自注意力机制<ref name=":1" />|替代=|344x344像素]] |
| | | | |
| | === 自注意力机制 === | | === 自注意力机制 === |
| | 自注意力机制通过动态权重分配,允许序列中每个元素与其他元素进行交互,从而动态聚合全局上下文信息,精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制<ref>Feng, Z. & Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).'' 449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).</ref>。 | | 自注意力机制通过动态权重分配,允许序列中每个元素与其他元素进行交互,从而动态聚合全局上下文信息,精确建模元素间的依赖关系。Transformer模型在诸多自然语言处理任务中展现出的卓越性能源于其全局自注意力机制<ref>Feng, Z. & Li, Y. A window attention based Transformer for Automatic Speech Recognition. ''2024 5th International Conference on Computer Engineering and Application (ICCEA).'' 449-454, doi: 10.1109/ICCEA62105.2024.10603610 (2024).</ref>。 |
| − | 具体的步骤为<ref>Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).</ref><ref name=":1">Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30 (2017).</ref>:
| + | 具体的实现步骤为<ref name=":1">Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30 (2017).</ref><ref>Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).</ref>: |
| | | | |
| | ==== 查询 (Query), 键(Key), 值 (Value) 的生成 ==== | | ==== 查询 (Query), 键(Key), 值 (Value) 的生成 ==== |
| − | 将输入序列转化形成的嵌入向量(可以是词向量,也可以是词向量加上位置编码向量)分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k),V向量的维度为d(v)。
| + | 将输入序列转化形成的嵌入向量(可以是词向量,也可以是词向量加上位置编码向量),分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。 |
| | | | |
| | ==== 注意力分数矩阵 ==== | | ==== 注意力分数矩阵 ==== |
| 第21行: |
第21行: |
| | | | |
| | ==== 归一化点乘矩阵 ==== | | ==== 归一化点乘矩阵 ==== |
| − | 由于点乘操作,S值可能过大或过小,在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。
| + | 由于点乘操作,Q*K<sup>T</sup>值可能过大或过小,在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。 |
| | | | |
| | ==== 加权输出 ==== | | ==== 加权输出 ==== |
| − | 使用归一化后的注意力分数对V向量进行加权求和,作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention),用公式表示为:
| + | 使用归一化后的注意力分数对V向量进行加权求和,作为自注意力机制的输出。 |
| | + | |
| | + | 整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention),用公式表示为: |
| | [[文件:公式2.png|居中|替代=|无框]] | | [[文件:公式2.png|居中|替代=|无框]] |
| | 具体的代码实现可参考:<syntaxhighlight lang="python3" line="1"> | | 具体的代码实现可参考:<syntaxhighlight lang="python3" line="1"> |
| 第36行: |
第38行: |
| | | | |
| | def forward(self, Q, K, V, attn_mask=None): | | def forward(self, Q, K, V, attn_mask=None): |
| − | scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_kif attn_mask is not None: | + | scores = torch.matmul(Q, K.transpose(-1, -2)) / self.sqrt_d_k |
| | + | if attn_mask is not None: |
| | scores = scores.masked_fill(attn_mask == 0, -1e9) | | scores = scores.masked_fill(attn_mask == 0, -1e9) |
| | attn = torch.softmax(scores, dim=-1) | | attn = torch.softmax(scores, dim=-1) |
| 第44行: |
第47行: |
| | | | |
| | === 多头注意力机制 === | | === 多头注意力机制 === |
| − | [[文件:多头注意力机制.png|缩略图|多头注意力机制<ref name=":2">Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).</ref>|替代=|301x301像素]]多头注意力是利用多个查询,来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地计算注意力权重,最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息,增强对复杂数据内在结构的建模能力<ref name=":1" /><ref name=":2" /><ref>Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)'' 5797-5808 (2019).</ref>。具体流程如下: | + | [[文件:多头注意力机制.png|缩略图|多头注意力机制<ref name=":1" />|替代=|301x301像素]]多头注意力是利用多个查询,来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地计算注意力权重,最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息,增强对复杂数据内在结构的建模能力<ref name=":1" /><ref name=":2">Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).</ref><ref>Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)'' 5797-5808 (2019).</ref>。具体流程如下: |
| | | | |
| | ==== 子空间Q, K, V 向量的生成 ==== | | ==== 子空间Q, K, V 向量的生成 ==== |
| 第57行: |
第60行: |
| | [[文件:公式4.png|居中|400x400px|替代=|无框]] | | [[文件:公式4.png|居中|400x400px|替代=|无框]] |
| | = 注意力机制的应用 = | | = 注意力机制的应用 = |
| − | 注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是,ChatGPT等大型语言模型都广泛使用了注意力机制作为核心技术。
| + | 注意力机制在各种人工智能领域都得到了广泛的应用。值得一提的是,ChatGPT等大语言模型都广泛使用了注意力机制作为核心技术。 |
| | [[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用<ref name=":0">Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).</ref>|替代=|250x250像素]] | | [[文件:注意力机制在自然语言处理中的应用.png|缩略图|注意力机制在自然语言处理中的应用<ref name=":0">Andrea, G. ''et al''. Attention in Natural Language Processing. ''IEEE Transactions on Neural Networks and Learning Systems'' '''32''', 4291-4308, doi: 10.1109/tnnls.2020.3019893 (2021).</ref>|替代=|250x250像素]] |
| | === '''自然语言处理''' === | | === '''自然语言处理''' === |
| − | [[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉<ref>Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).</ref>|替代=|250x250像素]]'''机器翻译:'''注意力机制使得模型在翻译长句子时,能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制,我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时,我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。 | + | [[文件:注意力机制用于计算机视觉.png|缩略图|注意力机制用于计算机视觉<ref>Kelvin, Xu. ''et al''. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. arXiv:1502.03044v3 (2016).</ref>。图片中白色区域代表被注意的区域,下方注释画横线的部分表示相关的单词 |
| | + | |
| | + | <span class="lark-record-clipboard" data-lark-record-format="docx/text" data-lark-record-data="{"rootId":"BGqidHR1WoXkk9xC7bqcFw2anEg","text":{"initialAttributedTexts":{"text":{"0":"(图片中白色区域代表被注意的区域,下方注释画横线的部分表示相关的单词)"},"attribs":{"0":"*0+z"}},"apool":{"numToAttrib":{"0":["author","7489058965368913939"]},"nextNum":1}},"type":"text","referenceRecordMap":{},"extra":{"channel":"saas","isEqualBlockSelection":true,"pasteRandomId":"9f3abfd3-27c9-4dd0-8c65-a6699deacca3","mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":78,"type":"text","selection":{"start":0,"end":35},"recordId":"UqyudArJBodu8ZxCrNmczfkfnMg"}],"payloadMap":{},"isCut":false}"></span>|替代=|250x250像素]]'''机器翻译:'''注意力机制使得模型在翻译长句子时,能够关注到源语言句子中与目标语言当前词语相关的部分。通过引入注意力机制,我们将源语言中每个位置的信息都保存下来。在解码过程中生成每一个目标语言的单词时,我们都通过注意力机制直接从源语言的信息中选择相关的信息作为辅助。 |
| | | | |
| | '''文本摘要:'''模型可以学习关注文档中的关键句子或段落,生成更准确、更简洁的摘要。 | | '''文本摘要:'''模型可以学习关注文档中的关键句子或段落,生成更准确、更简洁的摘要。 |