news 2026/4/18 3:10:02

构筑 AI 理论体系:深度学习 100 篇论文解读 第十九篇:序列建模的焦点——注意力机制 Attention Mechanism (2015)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
构筑 AI 理论体系:深度学习 100 篇论文解读 第十九篇:序列建模的焦点——注意力机制 Attention Mechanism (2015)

构筑 AI 理论体系:深度学习 100 篇论文解读

第十九篇:序列建模的焦点——注意力机制 Attention Mechanism (2015)

I. 论文背景、核心命题与作者介绍 💡

2014 年Encoder-Decoder(编码器-解码器)架构在神经机器翻译(NMT)中取得了突破。这种架构使用一个 RNN(通常是 LSTM 或 GRU)将整个输入序列压缩成一个单一的固定长度向量(Context Vector)。当输入序列很长时,这种信息瓶颈会导致翻译质量急剧下降。

Dzmitry Bahdanau及其团队在 2015 年提出的注意力机制(Attention Mechanism)彻底解决了这个信息瓶颈问题。它允许解码器在每一步输出时,动态地、有选择性地关注输入序列中的相关部分。

核心作者介绍
作者国籍机构(2015 年时)核心贡献
Dzmitry Bahdanau白俄罗斯/加拿大University of Montreal (Yoshua Bengio 团队)注意力机制在机器翻译中的首次成功应用者。
Kyunghyun Cho (赵竟玄)韩国University of MontrealGRU 的提出者,注意力机制的共同贡献者。
Yoshua Bengio加拿大University of Montreal深度学习三巨头之一。
信息项详情
论文题目Neural Machine Translation by Jointly Learning to Align and Translate
发表年份2015 年
出版刊物ICLR (International Conference on Learning Representations)
核心命题如何取代传统的固定长度上下文向量,让解码器在每一步生成输出时,能够动态地关注输入序列中最相关的部分,从而改善长序列的翻译质量?

II. 核心机制:软对齐与动态上下文 ⚙️

注意力机制的核心思想是实现软对齐(Soft Alignment)。它为输入序列的每个隐藏状态分配一个权重(Attention Weight),这些权重是动态计算的。

1. 核心概念:隐藏状态 (hhh)

隐藏状态hth_tht是循环神经网络(RNN、LSTM 或 GRU)在处理序列数据时在时间步ttt产生的、对历史信息和当前输入进行概括的“记忆”

  • 本质:它是对**从序列开始到时间步ttt为止的所有历史信息(上下文)**的压缩表示。
  • 作用:在 Encoder-Decoder 架构中,编码器产生的一系列隐藏状态构成了输入序列的完整信息库,解码器则使用自己的隐藏状态进行查询

关于隐藏状态数量的澄清:
隐藏状态的维度(向量的宽度)是一个超参数(由开发者手动设置),与句子长度和网络层数无关。

但是,隐藏状态的数量(时间步ttt的总数)是由输入序列的长度决定的:如果输入句子有NNN个词,则编码器将产生NNN个隐藏状态{h1,h2,…,hN}\{h_1, h_2, \dots, h_N\}{h1,h2,,hN}

2. 关键输入与角色划分(Q, K, V 概念映射)

在编码器-解码器架构中,注意力机制工作的起点是:

  • 输入序列信息(键KKK和值VVV):这是编码器处理输入句子后产生的所有时间步的隐藏状态Hencoder={h1enc,h2enc,…,hTxenc}H_{encoder} = \{h_1^{enc}, h_2^{enc}, \dots, h_{T_x}^{enc}\}Hencoder={h1enc,h2enc,,hTxenc}
  • 当前查询信息(查询QQQ):这是解码器在生成第ttt个目标词时使用的前一个隐藏状态ht−1h_{t-1}ht1

符号解释:

  • hench^{enc}henc:隐藏状态,是编码器 RNN 单元在特定时间步输出的向量,代表了历史信息的压缩记忆
  • HencoderH_{encoder}Hencoder: 编码器生成的所有隐藏状态的集合。
  • TxT_xTx:输入序列的总长度(即隐藏状态的总时间步数)。
3. 步骤一:计算对齐分数(Scoring/Energy)

目标是计算查询ht−1h_{t-1}ht1所有输入状态hiench_{i}^{enc}hienc相关性或“匹配度”。

  • 计算:使用对齐模型(Score Function)输出一个分数score(ht−1,hienc)\text{score}(h_{t-1}, h_{i}^{enc})score(ht1,hienc)

公式解释:

  • ht−1h_{t-1}ht1: 表示解码器的前一个时间步的隐藏状态(查询QQQ)。
  • hiench_{i}^{enc}hienc: 表示编码器的第iii个时间步的隐藏状态(键KKK/值VVV)。
4. 步骤二:归一化与注意力权重的确定

将所有分数转换成概率分布,确保总和为 1。

  • 计算:
    αti=exp⁡(score(ht−1,hienc))∑j=1Txexp⁡(score(ht−1,hjenc))\alpha_{ti} = \frac{\exp(\text{score}(h_{t-1}, h_{i}^{enc}))}{\sum_{j=1}^{T_x} \exp(\text{score}(h_{t-1}, h_{j}^{enc}))}αti=j=1Txexp(score(ht1,hjenc))exp(score(ht1,hienc))
    • 结果:αti\alpha_{ti}αti是最终的注意力权重

公式解释:

  • αti\alpha_{ti}αti:注意力权重。表示在解码器ttt时刻,对输入序列中第iii个时间步的关注度。
  • ∑j=1Txexp⁡(… )\sum_{j=1}^{T_x} \exp(\dots)j=1Txexp(): 对所有输入时间步jjj(从 1 到TxT_xTx)的分数进行求和,用于归一化
5. 步骤三:计算动态上下文向量

根据注意力权重αti\alpha_{ti}αti,对编码器隐藏状态hiench_{i}^{enc}hienc进行加权求和,得到动态上下文向量ctc_tct

  • 计算:
    ct=∑i=1Txαtihiencc_t = \sum_{i=1}^{T_x} \alpha_{ti} h_{i}^{enc}ct=i=1Txαtihienc
    • 结果:ctc_tct全新的、为当前解码步骤定制的上下文信息。

公式解释:

  • ctc_tct:动态上下文向量,专为解码器ttt时刻的输出而定制。
  • ∑i=1Tx\sum_{i=1}^{T_x}i=1Tx: 对输入序列中的所有时间步iii进行求和。
6. 步骤四:解码器生成输出

解码器利用ctc_tctht−1h_{t-1}ht1来计算并生成下一个输出词。


III. 历史意义与地位 👑

1. 解决信息瓶颈

注意力机制彻底打破了 RNN 编码器-解码器架构中固定上下文向量的限制。

2. 可解释性的革命

注意力权重αti\alpha_{ti}αti为深度学习模型提供了一种罕见的可解释性。通过可视化这些权重,我们可以清晰地看到模型在生成某个输出词时,“看”向了输入序列中的哪个词,实现了对齐(Alignment)的可视化。

3. Transformer 的催化剂

证明了注意力循环更有效处理序列依赖关系,为Transformer架构的诞生奠定基础。


IV. 零基础理解:注意力机制做了什么? 👶

他们做了什么:科学家给模型设计了一个机制,让它不再“一次性记住”整个长句子,而是动态地聚焦

怎么做的:

  1. 改变记忆方式:机器将输入的每个词都存放在一个单独的卡片上(即hiench_{i}^{enc}hienc隐藏状态)。
  2. 动态查找:在翻译时,机器用当前状态ht−1h_{t-1}ht1,查询)询问所有卡片:“我当前最需要看哪个词?
  3. 计算相关性:机器计算当前状态所有输入卡片匹配度,转换为 0 到 1 之间的关注度比例(权重αti\alpha_{ti}αti
  4. 形成焦点:最后,机器将所有输入词语按这个权重比例加权平均,形成一个临时的、高度聚焦的上下文信息ctc_tct)。

结果:机器翻译长句子时不再“健忘”,每次都能将注意力集中在最关键的输入部分。


下一篇预告:下一篇(第二十篇)我们将探讨另一项在 NLP 中至关重要的技术——**词嵌入(Word Embeddings)**的重大突破:Word2Vec (2013),它是如何用高效的浅层网络捕捉词语语义关系的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 23:09:39

.NET周刊【11月第5期 2025-11-30】

国内文章 TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎 https://www.cnblogs.com/hez2010/p/19261972/turning-csharp-type-system-into-a-query-engine 本文探讨了在 .NET 环境中如何高效处理内存中的数据查询,提出了一种基于 C# 类型系统的全新…

作者头像 李华
网站建设 2026/4/18 2:37:23

【案例共创】从0开始使用华为云开发者空间搭建房价预测模型

最新案例动态,请查阅【案例共创】从0开始使用华为云开发者空间搭建房价预测模型。小伙伴们快来领取华为开发者空间进行实操吧! 本案例由:梅科尔工作室提供 1 概述 1.1 案例介绍 华为云开发者空间,华为云为每个新生态开发者免费…

作者头像 李华
网站建设 2026/4/18 5:43:33

通宵测完NanoBanana Pro,我只想说,太牛逼了。

作为一名长期关注 AI 技术和数字创意工具的用户,最近我终于体验了谷歌最新发布的 Nano Banana Pro,这个图像生成模型真的是让我目瞪口呆。通宵一试,我只能说,这个工具简直是 划时代的神器,不仅技术极其强大&#xff0c…

作者头像 李华
网站建设 2026/4/16 14:31:19

算法题 重构字符串

重构字符串 问题描述 给定一个字符串 s,检查是否能重新排列其中的字符,使得任意两个相邻的字符都不相同。 如果可以重新排列,返回任意一个满足条件的字符串。如果不能,返回空字符串 ""。 示例: 输入: s &qu…

作者头像 李华
网站建设 2026/4/15 19:40:27

无人机红外图像下极小目标检测数据集,无人机红外小目标检测数据集 低空安防、机场净空监测、反无人机系统、鸟类迁徙监控 YOLOv8** 构建的 **无人机红外图像下极小目标检测系统

无人机红外图像下极小目标检测数据集,8302张,yolo和voc两种标注方式 4类,标注数量: Plane:飞机 2163 Drone:无人机 3120 Heli:直升机 2217 Bird:鸟类 1958 image num: 8302 1 1 以下是 无人机红外图像下极小目标检测数据集 的完…

作者头像 李华
网站建设 2026/4/18 5:39:39

qt-lambda信号槽机制

想要调查&#xff0c;lambda信号槽在用完后会不会自己回收 写入成员变量 private: std::function<void()> lambdaSlot; 初始化 lambdaSlot []() {qDebug() << "Lambda slot executed";// 可访问类成员&#xff08;如this指针&#xff09;};cpp代码展示…

作者头像 李华