作者介绍:崔鹏,计算机学博士,专注 AI 与大数据管理领域研究,拥有十五年数据库、操作系统及存储领域实战经验,兼具 ORACLE OCM、MySQL OCP 等国际权威认证,PostgreSQL ACE,运营技术公众号 "CP 的 PostgreSQL 厨房",学术层面,已在AI方向发表2篇SCI论文,将理论研究与工程实践深度结合,形成独特的技术研发视角。
Attention Is All You Need 论文总结
《Attention Is All You Need》论文由Google团队于2017年发表于NeurIPS,首次提出完全基于注意力机制的序列转换模型Transformer,彻底摒弃传统序列模型依赖的循环神经网络(RNN)与卷积神经网络(CNN),成为后续大语言模型的技术基石。 传统序列模型存在串行计算效率低、长距离依赖难捕捉的局限,即便注意力机制此前用于增强模型,仍需依托循环结构。Transformer以“编码器-解码器”为框架,编码器含6层相同结构,每层由多头自注意力与位置wise前馈网络构成,辅以残差连接与层归一化;解码器额外添加掩码多头自注意力(防止“偷看”未来token)和编码器-解码器注意力(关联输入与输出)。为弥补无循环/卷积导致的序列顺序缺失,模型采用正弦余弦函数生成位置编码,可外推至更长序列;多头注意力通过并行计算多组缩放点积注意力,捕捉不同子空间依赖。 实验中,Transformer在WMT 2014英德翻译任务获28.4 BLEU,超传统最优模型2+ BLEU;英法翻译达41.8 BLEU,训练成本不足传统模型1/4。其泛化能力显著,应用于英语句法分析时,仅用WSJ数据F1达91.3,半监督设置下达92.7。注意力可视化还证明模型可捕捉长距离依赖与指代消解,具备可解释性。 该论文确立了注意力机制在NLP的核心地位,为BERT、GPT等模型奠定基础,大幅提升训练效率,推动NLP进入大模型时代。
一文搞懂Transformer架构中的核心“自注意力”集中机制

注意力机制:让每个元素主动筛选相关内容
我们可以把 Attention(注意力机制) 想象成「找朋友时,主动关注和自己最相关的人 / 事」的过程,用生活例子拆解每一步:
1. 把文字变成 “机器能懂的语言”(Embedding)
比如处理句子:“我喜欢吃苹果和香蕉。”
每个词(我、喜欢、吃、苹果、香蕉)会被转换成向量(一串数字,类似 “暗号”),让计算机能 “理解” 词的含义。
类比:把 “苹果”“香蕉” 这些汉字,翻译成机器能懂的 “数字暗号”。
2. 每个词的 “角色分工”(Queries、Keys、Values)
把每个词想象成 “人”,每个 “人” 要完成三件事:
Queries(Q,查询者):主动去 “问” 其他词,找和自己相关的内容。比如 “苹果” 当 Q,就是 “我要找和我相关的词!”
Keys(K,钥匙 / 标识):其他词的 “身份标签”。比如 “香蕉” 的 K 是 “水果 / 和苹果同类”,“我” 的 K 是 “说话者 / 和苹果关系远”。
Values(V,值 / 具体信息):每个词的 “核心信息”。比如 “苹果” 的 V 是 “[红色、甜、水果]”,“香蕉” 的 V 是 “[黄色、糯、水果]”。
3. 计算 “相关性得分”(每个 Q 和每个 K 算分)
“查询者”(如 “苹果” 的 Q)要和所有词的 K “配对”,算彼此的 “匹配度”。
比如 “苹果” 的 Q 和 “香蕉” 的 K 匹配度高(都是水果,关系近),得分就高。
“苹果” 的 Q 和 “我” 的 K 匹配度低(一个是水果,一个是说话者,关系远),得分就低。
4. 给得分 “降温”(Divide by √d)–为了防止有的得分特别高、有的特别低,导致后续 “关注重心” 过于极端,要给所有得分除以一个数。
类比:考试分数有的考 100,有的考 10,除以 10 后变成 10 和 1,差距没那么极端,更易比较。
5. 把得分变成 “注意力占比”(Softmax)
Softmax 会把所有得分变成0~1 之间的数,且总和为 1,这样就得到 “每个词被关注的比例”。
比如 “苹果” 查询后,“香蕉” 的得分经过 Softmax 变成 0.88(说明 “苹果” 要重点关注 “香蕉”),“我” 的得分变成 0.12(关注很少)。
类比:班级投票选 “最相关的词”,“香蕉” 得了 88 票,“我” 得了 12 票,总票数 100,所以 “香蕉” 的 “注意力权重” 是 88%。
6. 加权获取最终信息(Softmax × Value + 求和)
每个词的 V(核心信息)乘以对应的 “注意力权重”,再把所有结果加起来,就是这个词的最终表示-。
比如 “苹果” 的最终表示 = (“香蕉” 的 V × 0.88) + (“我” 的 V × 0.12) + … 这样 “苹果” 的含义就融合了 “香蕉” 的重点信息。
整体效果:每个词能 “看到全局重点”
比如句子 *“我喜欢吃苹果和香蕉”*,“苹果” 不仅能 “看到自己”,还能通过注意力机制,重点关
注 “香蕉”(因为都是水果,关系近),同时也会轻微关注 “吃”“喜欢”。这样每个词的含义都融合了 “整个句子的重点”,而不是只看前面的词(比如传统模型 “断章取义”,Attention 能 “全局抓重点”)。
再举个生活例子:「课堂记笔记」
Input:老师讲:“苹果生长需要阳光,苹果是水果,和香蕉同类,香蕉更甜…”
Embedding:把 “苹果”→符号 A,“香蕉”→符号 B,“阳光”→符号 C。
Queries(Q):“苹果” 的 Q 是 “找和我相关的内容!”
Keys(K):“香蕉” 的 K 是 “水果 / 同类”,“阳光” 的 K 是 “种植 / 需要”。
得分 + Softmax:“苹果” 和 “香蕉” 的 K 匹配度高,权重 0.9;和 “阳光” 的 K 匹配度低,权重 0.1。
最终表示:“苹果” 的笔记 = (“香蕉” 的笔记 ×0.9) + (“阳光” 的笔记 ×0.1),这样记的笔记既包含 “苹果自己的生长”,又重点包含 “香蕉(同类)” 的信息。
简单来说,Attention 就是让每个元素(词)主动筛选全局中与自己最相关的内容,融合成更全面的含义,就像你听别人说话时,会自动聚焦 “关键词” 一样~
我们可以把Attention(注意力机制)想象成「找朋友时,主动关注和自己最相关的人 / 事」的过程 ,用生活例子拆解每一步: 1.把文字变成 “机器能懂的语言”(Embedding) 比如处理句子:“我喜欢吃苹果和香蕉。” 每个词(我、喜欢、吃、苹果、香蕉)会被转换成向量(一串数字,类似 “暗号”),让计算机能 “ 理解” 词的含义。 →类比:把 “苹果”“香蕉” 这些汉字,翻译成机器能懂的 “数字暗号”。 2.每个词的 “角色分工”(Queries、Keys、Values) 把每个词想象成 “人”,每个 “人” 要完成三件事: ◦Queries(Q,查询者):主动去 “问” 其他词,找和自己相关的内容。比如 “苹果” 当Q,就是 “ 我要找和我相关的词!” ◦Keys(K,钥匙 / 标识):其他词的 “身份标签”。比如 “香蕉” 的K是 “水果 / 和苹果同类”,“ 我” 的K是 “说话者 / 和苹果关系远”。 ◦Values(V,值 / 具体信息):每个词的 “核心信息”。比如 “苹果” 的V是 “[红色、甜、水果]” ,“香蕉” 的V是 “[黄色、糯、水果]”。 3.计算 “相关性得分”(每个Q和每个K算分) “查询者”(如 “苹果” 的Q)要和所有词的K “配对”,算彼此的 “匹配度”。 ◦比如 “苹果” 的Q和 “香蕉” 的K匹配度高(都是水果,关系近),得分就高(如图中q₁·k₁=112) 。 ◦“苹果” 的Q和 “我” 的K匹配度低(一个是水果,一个是说话者,关系远),得分就低(如图中q ₁·k₂=96,比 112 低)。 4.给得分 “降温”(Divide by √d–)
为了防止有的得分特别高、有的特别低,导致后续 “关注重心” 过于极端,要给所有得分除以一个数 (如图中除以 8)。 →类比:考试分数有的考 100,有的考 10,除以 10 后变成 10 和 1,差距没那么极端,更易比较。 5.把得分变成 “注意力占比”(Softmax) Softmax会把所有得分变成0~1 之间的数,且总和为 1,这样就得到 “每个词被关注的比例”。 比如 “苹果” 查询后,“香蕉” 的得分经过Softmax变成 0.88(说明 “苹果” 要重点关注 “香蕉” ),“我” 的得分变成 0.12(关注很少)。 →类比:班级投票选 “最相关的词”,“香蕉” 得了 88 票,“我” 得了 12 票,总票数 100,所以 “ 香蕉” 的 “注意力权重” 是 88%。 6.加权获取最终信息(Softmax × Value +求和) 每个词的V(核心信息)乘以对应的 “注意力权重”,再把所有结果加起来,就是这个词的最终表示- 。 比如 “苹果” 的最终表示 = (“香蕉” 的V × 0.88) + (“我” 的V × 0.12) + …这样 “苹果” 的 含义就融合了 “香蕉” 的重点信息。 整体效果:每个词能 “看到全局重点” 比如句子 *“我喜欢吃苹果和香蕉”*,“苹果” 不仅能 “看到自己”,还能通过注意力机制,重点关 注 “香蕉”(因为都是水果,关系近),同时也会轻微关注 “吃”“喜欢”。这样每个词的含义都融 合了 “整个句子的重点”,而不是只看前面的词(比如传统模型 “断章取义”,Attention能 “全局 抓重点”)。 再举个生活例子:「课堂记笔记」 ◦Input:老师讲:“苹果生长需要阳光,苹果是水果,和香蕉同类,香蕉更甜…” ◦Embedding:把 “苹果”→符号A,“香蕉”→符号B,“阳光”→符号C。 ◦Queries(Q):“苹果” 的Q是 “找和我相关的内容!” ◦Keys(K):“香蕉” 的K是 “水果 / 同类”,“阳光” 的K是 “种植 / 需要”。 ◦
得分 +Softmax:“苹果” 和 “香蕉” 的K匹配度高,权重 0.9;和 “阳光” 的K匹配度低,权重 0 .1。 ◦最终表示:“苹果” 的笔记 = (“香蕉” 的笔记 ×0.9) + (“阳光” 的笔记 ×0.1),这样记的笔记 既包含 “苹果自己的生长”,又重点包含 “香蕉(同类)” 的信息。 简单来说,Attention就是让每个元素(词)主动筛选全局中与自己最相关的内容,融合成更全面的含 义,就像你听别人说话时,会自动聚焦 “关键词” 一样~
本文分享自 CP的postgresql厨房 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!