Attention is all you need学习

基础:NN

NN 通常指 神经网络(Neural Network),是一类用“很多层可学习的线性变换 + 非线性激活”来拟合复杂函数的模型。

过去使用的方法:RNN

循环神经网络(RNN)是一类专门处理序列数据的神经网络 RNN核心思想 在时间步 t: 当前隐藏状态 ht​ 由 当前输入 xt​ 和 上一步隐藏状态 ht−1​ 共同决定 当前输出 yt​ 由当前隐藏状态 ht​ 计算得到 本质:信息在时间维度上循环传递,保留历史状态。

自注意力

序列里每个位置 i 的表示,会根据它对序列中所有位置 j 的“相关性”去加权汇聚信息,从而让它能直接“看见”远处的 token。

给定输入向量序列 XRn×dX \in \mathbb{R}^{n \times d},先做三组线性投影:

  • Q=XWQQ = XW_Q(Query) 当前位置“想要什么信息/用什么标准去匹配”
  • K=XWKK = XW_K(Key) 每个位置“我有什么特征可以被匹配(供别人来找我)”
  • V=XWVV = XW_V(Value) 真正要被汇聚走的“内容信息”

然后计算注意力权重与输出(Scaled Dot-Product Attention):

A=softmax(QKdk)A = \mathrm{softmax}\left( \frac{QK^\top}{\sqrt{d_k}} \right)

Output=AV\mathrm{Output} = AV

  • QKQK^\top:每个位置对其它位置的相似度分数(相关性)。
  • 除以 dk\sqrt{d_k}:防止维度大时点积过大导致 softmax 过饱和、梯度不稳定。
  • softmax:把分数归一化成权重(每行和为 1),表示“我该关注谁”。

多头注意力

同一次注意力不只算一套权重,而是并行算 h 套(h 个“头”),每个头在不同的投影空间里关注不同关系

得到多张A⁽¹⁾,A⁽²⁾,…,A⁽ʰ⁾。比如同一句话里: 一些头更关注局部邻近词(短语结构) 一些头更关注指代/主谓等长距离依赖 一些头可能学到位置/句法边界之类规律

编码器

编码器做什么:把输入序列通过自注意力等层变成一串“上下文化表示”H=[h₁,…,hₙ]。可以理解为:每个输入词都被“结合上下文重新表征”了。

解码器

解码器做什么:按时间步生成输出y₁,y₂,…。每一步先对“已生成的输出前缀”做 masked self-attention(只能看见左边的词,不能偷看未来),再去“看”编码器输出H,最后预测下一个词。

前馈网络(FFN)

在 attention 把“该看谁”处理完之后,再对每个位置的特征做一次更强的非线性加工。 FFN(x) = W2 * activation(W1 * x + b1) + b2 先线性变换一次,过激活函数,再线性变换一次。之前看CNN提到激活函数用于将线性变为非线性

Transformer 整体结构图

  • Input Embedding 把词变成向量
  • Positional Encoding 给模型加入位置信息
  • Multi-Head Attention 用来让一个词关注句子里其他词,捕捉关系
  • Feed Forward 是逐位置的前馈网络,进一步做特征变换
  • Add & Norm 表示 残差连接 + LayerNorm,作用是让训练更稳定
  • Masked Multi-Head Attention。这里的 Masked 表示生成当前词时,只能看见前面已经生成的词,不能偷看后面的正确答案

Transformer架构图


Attention is all you need学习
https://yaoyablog.xyz/2026/04/10/study/AI相关/Attention-is-all-you-need学习/
作者
Yaoyawen
发布于
2026年4月10日
许可协议