Transformer 论文学习笔记

重新学习了一下,整理了一下笔记

论文 :《Attention Is All You Need》
代码http://nlp.seas.harvard.edu/annotated-transformer/
地址https://arxiv.org/abs/1706.03762v5
翻译Transformer论文翻译

特点

  1. 提出一种不使用 RNN、CNN,仅使用注意力机制的新模型 Transformer;
  2. 只关注句内各 token 之间的关系;
  3. 使用矩阵计算长程token之间的关联,提升注意力的计算效率;
  4. 使用位置嵌入,为不同位置的token赋予不同的含义。

核心贡献

  • Self-Attention

Transformer 的基本结构

如图,其结构主要分为 Encoder 与 Decoder 两部分,基本单元是 Multi-Head Attention、Layer Norm、Residual Connect、Feed Forward Network,其中 Decoder 每一子块的输入处还有一个 Masked Multi-Head Attention。

Encoder 的输出会被送到 Decoder 的每一个子块中。


Self-Attention

Self-Attention ( K , Q , V ) = softmax ( Q K T d ) V \text{Self-Attention}(K,Q,V)=\text{softmax}(\frac{QK^T}{\sqrt{d}})V Self-Attention(K,Q,V)=softmax(d QKT)V

  • 上图 左侧是 Self-Attention 的计算流程
  • 从计算图以及共识来看,Self-Attention 是被 d \sqrt{d} d Scaled 过的原因是:该因子可以抑制 Q K T QK^T QKT 中过大的值,以防止梯度消失现象的出现
  • softmax 负责计算概率化的注意力分布,该分布负责在 V 中选择与 Qi 关联度较高的 values;
  • Q K T QK^T QKT 的目的是利用矩阵运算一次性计算出每个 Q i Q_i Qi 与所有 keys 的点积 ,同理,后面也一次性地为每个 Q i Q_i Qi 筛选出相应的 values。这种方法优点 是 Self-Attention 可以无视句中 token 之间的距离,以此获得更高的性能,缺点是计算量庞大;
  • 上图 右侧是 Multi-Head Self-Attention 的计算流程,原因是:Multi-Head 增加了特征子空间的数量,使模型能够获取更加丰富的语义信息
  • 文本信息是有先后顺序的,为了防止 Decoder 在处理 LLM 任务时出现信息向"历史"方向传播的现象,需要对一些与 illegal 连接关联的 values 采用 mask out 的操作,即屏蔽掉(设置为 − ∞ -\infin −∞),即只能用前面的token预测后面的token,不能反过来。

Self-Attention 的一个缺点及修补方式

缺点 :点积运算无法对序列中 token 出现的位置进行建模,这样会导致模型无法充分地利用数据上下文中所蕴含的丰富的语义信息。
解决方式:引入位置嵌入(Position Embedding、Position Encoding)

python 复制代码
PE_{pos,2i}=sin(pos/10000^{2i/d_{model}})
PE_{pos,2i+1}=cos(pos/10000^{2i/d_{model}})

使用三角函数的原因 :模型借此可为每个token获取相对位置 信息(对任意偏移量 k k k, P E p o s + k PE_{pos+k} PEpos+k 都可以作为 P E p o s PE_{pos} PEpos 的线性函数),此外它还可以把模型外推到比训练中最长的序列更长的序列中去。


Self-Attention 的复杂度:

相关推荐
iiiiii112 分钟前
【论文阅读笔记】Reparameterization Proximal Policy Optimization (RPO):将PPO的稳定性引入可微分强化学习
论文阅读·人工智能·笔记·深度学习·机器学习·机器人·具身智能
不在逃避q40 分钟前
一步一步学习使用LiveBindings()TListView进阶使用(),打造天气预报程序
服务器·数据库·学习
鱼子星_1 小时前
【C++】深入剖析list:list及其双向迭代器实现
开发语言·数据结构·c++·笔记·stl·list
知识分享小能手1 小时前
高等数学学习教程,从入门到精通,微分中值定理与导数的应用(5)
学习·机器学习·概率论
520拼好饭被践踏1 小时前
JAVA+Agent学习day25
java·开发语言·学习
魔术师Dix2 小时前
StartGame:Unity TDD 外部工程指南
学习·游戏·unity·c#·测试驱动开发
砚凝霜2 小时前
软考网络工程师|第 4 章 WLAN MAC 机制、Ad Hoc、无线安全、WPAN 蓝牙 ZigBee 完整备考笔记
网络·笔记·安全
小弥儿2 小时前
GitHub今日热榜 | 2026-07-31:AI Agent工作流共享赛道升温
人工智能·学习·github
江屿风2 小时前
【C++笔记】【二叉搜索树】流食般投喂
开发语言·数据结构·c++·笔记
xqqxqxxq4 小时前
AI智能旅游规划系统 - 前端技术笔记
前端·笔记·旅游