当前位置: 首页 > news >正文

动手学深度学习——注意力机制

1. 前言

前面我们已经把这条线走到了Seq2Seq束搜索

  • 编码器先读入整个输入序列

  • 解码器再一步步生成输出序列

  • 束搜索帮助我们在生成阶段找到更好的候选句子

但在基础 Seq2Seq 里,还存在一个非常关键的问题:

编码器要把整个输入序列压缩成一个固定长度的上下文向量。

如果输入句子很短,这样做也许还可以。
但如果句子变长,问题就会越来越明显:

  • 重要信息容易丢失

  • 长距离依赖更难保留

  • 解码器无论生成第几个词,看到的都是同一个固定摘要

这显然不够灵活。

于是,一个极其重要的思想出现了:

注意力机制(Attention)

它的核心目标非常直观:

不要让解码器只盯着一个固定摘要,而是让它在每一步生成时,都能动态地去看输入序列中更相关的部分。

这一步,几乎可以说是现代序列建模和 Transformer 时代真正到来的关键转折点。


2. 为什么基础 Seq2Seq 不够

先回忆一下最基础的 Seq2Seq。

编码器读完整个输入句子后,通常会把最终状态作为:

整个源句子的语义摘要

然后解码器拿着这个摘要去生成目标句子。

问题在于:

2.1 所有信息被压到一个固定向量里

这就像让你读完一整篇文章,只准用一句话概括全部内容,
然后再根据这句话去完整复述文章。
显然会很难。

2.2 不同目标词需要关注的源信息不同

翻译时,生成不同目标词,关注的源句位置往往不一样。

例如翻译一句英文时:

  • 生成主语时,可能更关注源句开头

  • 生成动词时,可能更关注中间

  • 生成宾语时,可能更关注后半句

但基础 Seq2Seq 中,解码器每一步拿到的上下文都一样,
这就不够合理。

2.3 长句更容易出问题

句子越长,固定长度上下文越容易装不下全部关键信息。

所以我们很自然会问:

能不能让解码器在每一步生成时,都重新决定“现在该看输入的哪里”?

这就是注意力机制的动机。


3. 什么是注意力机制

注意力机制可以简单理解为:

在处理当前任务时,不平均对待所有输入信息,而是有选择地关注更相关的部分。

这个思想其实非常符合人类直觉。

例如你在读一句话时,如果被问到某个词是什么意思,
你的目光通常会自动去看它附近的上下文,而不是平均看整句每一个词。

所以注意力机制本质上是在做:

按相关性分配关注权重

也就是说,不同输入位置的重要程度可以不同。


4. 注意力机制在 Seq2Seq 里是怎么用的

放到机器翻译场景中,注意力机制的意思是:

解码器在生成第t个目标词时,不再只依赖一个固定上下文向量,
而是去参考编码器在所有时间步上的输出,并根据当前需要给它们分配不同权重。

这句话非常重要。

也就是说:

  • 编码器不只输出最后一个状态

  • 它会保留所有时间步的隐藏状态

  • 解码器每一步都可以“回头看”这些编码结果

  • 然后决定当前最该看哪几个位置

于是,解码器每一步拿到的上下文就不再相同,
而是:

动态变化的上下文向量

这就是注意力机制在 Seq2Seq 中最核心的作用。


5. 为什么叫“注意力”

因为这个机制真的很像“注意”这件事。

假设源句子是:

i love deep learning

当解码器在生成“我”时,可能更应该关注:

i

当生成“喜欢”时,可能更应该关注:

love

当生成“深度学习”时,可能更应该关注:

deep learning

也就是说,生成不同目标词时,模型“目光聚焦”的源句部分会不同。

这和人类翻译时的直觉非常一致。
所以“注意力”这个名字非常贴切。


6. 注意力机制解决的核心问题是什么

如果只抓一个核心问题,那就是:

让解码器摆脱对单个固定上下文向量的过度依赖。

具体来说,它解决了:

6.1 长句信息瓶颈

不再要求把所有信息硬塞进一个固定长度向量里。

6.2 解码不同步的问题

不同时间步可以关注不同输入位置。

6.3 输入和输出对齐更自然

例如翻译时,当前目标词通常与源句某些位置更相关,
注意力机制让模型能自己学这种软对齐关系。

所以,注意力机制不是简单“加了点权重”,
而是在根本上改变了 Seq2Seq 的信息使用方式。


7. 注意力机制最核心的直觉公式

注意力机制最核心的思想,可以浓缩成一句话:

上下文向量 = 对所有输入表示的加权和

也就是说,假设编码器输出了很多隐状态:

H_1, H_2, ..., H_n

那么解码器在第t步得到的上下文向量可以写成:

c_t = a_{t1} H_1 + a_{t2} H_2 + ... + a_{tn} H_n

其中:

  • a_{ti}表示第t步对第i个输入位置的注意力权重

  • 这些权重一般加起来等于 1

这意味着:

当前上下文不是固定向量,而是对全部编码器输出做的一次“加权汇总”。

而权重怎么来,就是后面“注意力分数”要讲的事情。


8. 什么是注意力权重

注意力权重就是:

当前解码步,对输入各位置的重要性分配。

例如一个 4 个词的源句子,
在某一步生成时,模型可能给出权重:

[0.1, 0.6, 0.2, 0.1]

这表示:

  • 第 2 个词最重要

  • 第 3 个词次之

  • 第 1 和第 4 个词相对没那么重要

所以注意力机制本质上把“我现在更该看哪里”这件事显式量化了。

这比基础 Seq2Seq 里“始终盯着同一个摘要”要灵活得多。


9. 为什么注意力权重通常加起来等于 1

因为它通常被设计成一种“概率分布”或“归一化权重分布”。

也就是说:

  • 每个位置分到一部分注意力

  • 全部注意力总量是固定的

  • 模型只是决定如何分配这份总注意力

这样做有两个好处:

9.1 解释性强

你可以直接看出模型当前更关注哪些位置。

9.2 数值稳定

上下文向量是加权平均,而不是无限放大。

所以在实现中,注意力分数通常会经过 softmax,
把它们变成一组非负且和为 1 的权重。


10. 注意力机制和“软对齐”是什么关系

在机器翻译里,注意力机制常常被理解成一种:

软对齐(soft alignment)

为什么叫“软”?

因为它不是说:

  • 当前目标词只严格对应某一个源词

而是说:

  • 当前目标词可能主要对应某几个源词

  • 但其他位置也可以有少量影响

也就是说,它给出的不是硬性的“一对一对齐”,
而是:

一组连续权重表示的相关性分布

这比硬对齐更灵活,也更适合神经网络端到端学习。


11. 注意力机制在 Seq2Seq 中的数据流怎么变了

和基础 Seq2Seq 比较一下就很清楚。

基础 Seq2Seq

  • 编码器输出最后状态

  • 解码器每一步都用同一个上下文摘要

加注意力的 Seq2Seq

  • 编码器保留所有时间步输出

  • 解码器每一步都根据当前状态重新计算注意力权重

  • 得到当前专属的上下文向量

  • 再结合这个上下文进行生成

所以最大的变化就是:

上下文从“固定”变成了“动态”。

这就是注意力机制的本质升级。


12. 注意力机制为什么影响这么大

因为它不只是一个“小技巧”,而是解决了一个非常根本的问题:

信息该如何在序列中被访问。

在基础 Seq2Seq 里,信息访问方式非常粗糙:

  • 先压缩成一个定长向量

  • 然后一直用这个向量

而注意力机制让访问方式变成:

  • 所有编码结果都先保留

  • 当前需要什么,再动态取什么

这就让模型的信息使用方式从“静态摘要”升级成了“动态检索”。

这一步非常关键。


13. 注意力机制不只用于机器翻译

虽然它最早在 Seq2Seq 机器翻译里特别出名,
但它的思想远远不止翻译。

只要一个任务里存在:

当前处理单元,需要从一组输入表示中选择性获取信息

那就可能用到注意力。

例如:

  • 文本摘要

  • 阅读理解

  • 图像描述

  • 语音识别

  • 后来的 Transformer

所以注意力机制本质上是一种非常通用的信息选择机制。


14. 注意力机制和人类认知为什么很像

这也是它特别有吸引力的一点。

人类处理复杂信息时,不会平均看所有内容,
而是会把有限认知资源集中到更相关的部分。

例如:

  • 听别人说话时,会特别关注关键词

  • 看一张图时,目光会集中在显著区域

  • 读句子时,会重点参考上下文中对当前词最有帮助的部分

注意力机制把这种“选择性处理”的思想引入了神经网络。
所以它的直觉特别自然。


15. 李沐这一节最想让你理解什么

这一节最重要的,不是立刻背公式,
而是把下面这条主线抓住:

第一,基础 Seq2Seq 的问题在于固定上下文向量

长句会更容易信息瓶颈。

第二,注意力机制允许解码器动态查看输入序列不同位置

而不是一直依赖同一个摘要。

第三,注意力本质上是“加权汇总”

不同位置有不同权重。

第四,这是一种非常通用的信息选择机制

不只适用于机器翻译。

所以这一节其实是在告诉你:

Seq2Seq 为什么必须进一步升级,以及升级的核心方向是什么。


16. 注意力机制和后面内容怎么衔接

这一节其实只是总览和直觉建立。
后面通常会顺着这条线继续展开:

下一步:代码实现

看最基础的注意力层怎么写。

再下一步:注意力分数

也就是:

权重到底怎么计算?

再后面:带注意力的 Seq2Seq

把注意力真正装进 Seq2Seq 解码器里。

所以这一节是一个非常关键的过渡层:

先建立思想,再进入公式和实现。


17. 本节总结

这一节我们学习了注意力机制,核心内容可以总结为以下几点。

17.1 注意力机制的核心是动态关注输入中更相关的部分

而不是平均使用所有信息。

17.2 在 Seq2Seq 中,它解决了固定长度上下文向量的信息瓶颈

特别是长句问题。

17.3 解码器每一步都会根据当前需要,重新分配对输入各位置的注意力权重

因此上下文向量是动态变化的。

17.4 注意力本质上是对输入表示做加权和

权重通常来自归一化后的注意力分布。

17.5 它是一种非常通用的信息选择机制

后面会进一步发展成更强大的模型框架。


18. 学习感悟

注意力机制这一节特别重要,因为它几乎改变了大家对“神经网络如何使用信息”的理解。

以前的思路更像是:

把信息都压进一个向量里,再想办法从这个向量里读出来。

而注意力机制换了一个思路:

不要强迫所有信息提前压缩好,
先把它们保留下来,等真正需要的时候再去有选择地读取。

这一步看似简单,实际上非常深刻。
因为它让模型的信息流从“固定压缩”变成了“动态访问”。

也正是从这里开始,后面的 Transformer 才真正变得顺理成章。

http://www.jsqmd.com/news/643413/

相关文章:

  • 2026年4月CSDN热点TOP5:AI记忆困境+存算一体量产,程序员必追的技术风口(附大厂实操)
  • qwen code 使用教程
  • 国产麒麟/统信/windows系统通用智能固话语音转文字录音盒接线详细步骤
  • SIMATIC WinCC 免费下载
  • 不止于安防:用视频拼接技术玩转智能交通与园区管理,RTSP/FLV流输出全攻略
  • CSS如何使用CSS Grid实现响应式网格_通过fr单位灵活布局
  • RMBG-2.0背景移除模型新手指南:界面功能详解与操作演示
  • Python 内存管理基础:引用计数与垃圾回收
  • PHP怎么按多个字段排序_usort自定义比较函数【方法】
  • SQL Server 2022 新语法:IS [NOT] DISTINCT FROM 彻底解决 NULL 比较难题
  • 手把手教学:用DeerFlow的Web界面轻松进行多轮研究对话
  • Cogito-v1-preview-llama-3B效果对比:在ChineseGLUE榜单全面领先
  • AI绘画小白必看:Z-Image-Turbo-辉夜巫女快速上手攻略
  • GTE-Base-ZH与LaTeX文档处理:智能编排学术论文参考文献
  • H3C IRF部署与排障实战指南:从端口绑定到配置一致性
  • 如何在CSS中正确加载本地JPG背景图片
  • OFA-Image-Caption效果对比评测:与CLIP、BLIP等主流图像描述模型对比
  • RexUniNLU新手教程:用统一模型同时做实体识别和情感分析,处理爬虫数据不再难
  • 智慧医疗中的诊断辅助与健康管理
  • 【AI Agent】AI Agent 智能体系统性知识体系
  • 扣子(Coze)进阶:AI赋能历史教育!打造沉浸式历史人物互动视频教程
  • 51单片机+ESP8266 MQTT协议下的智能火灾报警系统实战与内存优化
  • Autoware实车部署避坑指南(一)-- 从零搭建矢量地图与Unity工具链实战
  • 文墨共鸣大模型操作系统原理辅助教学:图解进程管理与文件系统
  • 别再为服务器账单发愁!元域资源调度与成本优化的三层架构实战
  • YOLO12多尺度检测效果展示:同一图像不同分辨率输入结果对比图集
  • 嵌入式工程师必看:用STM32CubeMX配置RMII以太网PHY的完整流程(以LAN8720A为例)
  • Windows本地AI新玩法:Docker Compose一键部署Ollama与Open WebUI,小白也能玩转私有大模型
  • 别再死记硬背了!用MATLAB动画演示,5分钟搞懂2ASK、2FSK、2PSK、2DPSK相干解调区别
  • CasRel开源可部署价值:替代商业NLP平台,年节省知识图谱构建成本超80%