news 2025/12/30 10:40:29

构筑 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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 21:31:53

从爬取到分析:使用 Pandas 处理头条问答数据

在当下的内容生态中,头条问答汇聚了海量用户生成的问答数据,这些数据涵盖了用户的兴趣偏好、问题诉求、内容互动等多维度信息,是洞察用户行为、挖掘内容价值的重要资源。而 Pandas 作为 Python 生态中核心的数据处理库,凭借其高效…

作者头像 李华
网站建设 2025/12/16 21:30:55

Ubuntu下使用conda安装TensorFlow-GPU实战指南

Ubuntu下使用conda安装TensorFlow-GPU实战指南 在实验室部署深度学习项目时,最让人抓狂的不是模型调不通,而是“代码没问题,但GPU就是用不上”。明明装了 tensorflow-gpu,运行时却只看到CPU默默工作;nvidia-smi 显示驱…

作者头像 李华
网站建设 2025/12/16 21:30:31

LobeChat能否实现段落缩写功能?长文本精炼助手

LobeChat能否实现段落缩写功能?长文本精炼助手 在信息爆炸的时代,我们每天面对的文本量呈指数级增长——从学术论文到行业报告,从会议纪要到社交媒体长文。如何快速提取核心内容,成为高效工作的关键。这时,一个能“读…

作者头像 李华
网站建设 2025/12/16 21:28:53

弱网测试利器 - Charles工具实战分享

一:弱网测试要点 二:利用抓包工具charles进行弱网设置,适用PC端和移动端(IOS/Android) 1、以charles 4.5.6版本为例,打开Proxy->Throttle Settings 2、打开Throttle Settings,界…

作者头像 李华