<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Agent 学习笔记 – Transformer</title>
    <link>https://skyao.net/learning-ai-agent/timeline/before2022/transformer/</link>
    <description>Recent content in Transformer on AI Agent 学习笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 14 Sep 2026 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://skyao.net/learning-ai-agent/timeline/before2022/transformer/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Timeline: Attention Is All You Need（论文）</title>
      <link>https://skyao.net/learning-ai-agent/timeline/before2022/transformer/paper/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-ai-agent/timeline/before2022/transformer/paper/</guid>
      <description>
        
        
        &lt;p&gt;Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin. &lt;em&gt;Attention Is All You Need&lt;/em&gt;. NIPS 2017. &lt;a href=&#34;https://arxiv.org/abs/1706.03762&#34;&gt;arXiv:1706.03762&lt;/a&gt;（&lt;a href=&#34;https://arxiv.org/html/1706.03762v7&#34;&gt;HTML&lt;/a&gt;、&lt;a href=&#34;https://arxiv.org/pdf/1706.03762&#34;&gt;PDF&lt;/a&gt;）。八位作者均标注为同等贡献。文首注明：在注明出处的前提下，Google 允许在学术或新闻作品中复制该文的表与图。&lt;/p&gt;
&lt;p&gt;中文译本：&lt;a href=&#34;https://arthurchiao.art/blog/attention-is-all-you-need-zh/&#34;&gt;Arthur Chiao&lt;/a&gt;、&lt;a href=&#34;https://github.com/cnolka/transformer-paper-zh&#34;&gt;GitHub LaTeX 中译&lt;/a&gt;、&lt;a href=&#34;https://www.cnblogs.com/dengfanxin/p/16638798.html&#34;&gt;博客园&lt;/a&gt;。民间译本质量不一，英德/英法 BLEU 有的把摘要 41.8 和正文 41.0 抄混。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;
&lt;p&gt;当时占主导的序列转换（sequence transduction）模型，建立在编码器—解码器结构上的复杂循环网络或卷积网络。表现最好的模型还会用注意力把编码器与解码器连起来。&lt;/p&gt;
&lt;p&gt;本文提出一种简单网络架构 &lt;strong&gt;Transformer&lt;/strong&gt;：&lt;strong&gt;只基于注意力机制，完全不用循环和卷积&lt;/strong&gt;。在两项机器翻译任务上，质量更高、更易并行、训练时间显著更短。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WMT 2014 英→德：28.4 BLEU，比此前最佳结果（含模型集成）高 2 个 BLEU 以上。&lt;/li&gt;
&lt;li&gt;WMT 2014 英→法：单模型 41.8 BLEU（正文 6.1 节叙述为 41.0；表 2 为 41.8），在 8 块 GPU 上训练 3.5 天，成本只占文献中最佳模型的一小部分。&lt;/li&gt;
&lt;li&gt;在英语成分句法分析上，无论训练数据多还是少，都表明该架构可以推广到翻译以外的任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-引言&#34;&gt;1 引言&lt;/h2&gt;
&lt;p&gt;循环神经网络，尤其 LSTM 与门控循环网络，已被确立为语言建模、机器翻译等序列建模与转换任务的主流。循环模型把计算沿符号位置展开：位置 (t) 的隐状态 (h_t) 依赖 (h_{t-1}) 与当前位置输入。这种顺序性&lt;strong&gt;阻碍单个训练样本内部的并行&lt;/strong&gt;；序列一长，内存又限制跨样本的 batch，问题更严重。因子分解技巧、条件计算可以提高效率，但&lt;strong&gt;顺序计算这一条约束仍然在&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;注意力已经是序列模型里的常规组件：它可以建模依赖，而不必管依赖在输入或输出里隔了多远。但除少数工作外，注意力仍与循环网络一起用。&lt;/p&gt;
&lt;p&gt;本文提出 Transformer：&lt;strong&gt;去掉循环，完全靠注意力建立输入与输出之间的全局依赖&lt;/strong&gt;。并行度显著提高；在 8 块 P100 上训练约 12 小时，即可达到新的翻译质量水平（指 base 模型）。&lt;/p&gt;
&lt;h2 id=&#34;2-背景&#34;&gt;2 背景&lt;/h2&gt;
&lt;p&gt;减少顺序计算，也是 Extended Neural GPU、ByteNet、ConvS2S 的出发点。它们用卷积对所有位置并行算隐表示。任意两个位置之间要建立联系，所需运算次数随距离增长：ConvS2S 线性，ByteNet 对数。远距离依赖因此更难学。&lt;/p&gt;
&lt;p&gt;在 Transformer 里，这一次数变成&lt;strong&gt;常数&lt;/strong&gt;。代价是对注意力加权位置做平均会降低有效分辨率；第 3.2 节用&lt;strong&gt;多头注意力&lt;/strong&gt;抵消。&lt;/p&gt;
&lt;p&gt;自注意力（self-attention，也称 intra-attention）把&lt;strong&gt;同一序列&lt;/strong&gt;里不同位置联系起来，以计算该序列的表示。它已用于阅读理解、摘要、文本蕴含、与任务无关的句子表示等。端到端记忆网络用循环式注意力代替按序列对齐的循环，在简单问答与语言建模上有效。&lt;/p&gt;
&lt;p&gt;据作者所知，Transformer 是&lt;strong&gt;第一个完全靠自注意力计算输入与输出表示、而不使用按序列对齐的 RNN 或卷积&lt;/strong&gt;的转换模型。&lt;/p&gt;
&lt;h2 id=&#34;3-模型架构&#34;&gt;3 模型架构&lt;/h2&gt;
&lt;p&gt;多数有竞争力的神经序列转换模型是编码器—解码器。编码器把输入符号序列 ((x_1,\ldots,x_n)) 映射为连续表示 (\mathbf{z}=(z_1,\ldots,z_n))。解码器据此一次一个符号地生成 ((y_1,\ldots,y_m))。每一步是自回归的：生成下一个符号时，把已经生成的符号当作额外输入。&lt;/p&gt;
&lt;p&gt;Transformer 沿用这一总体结构。编码器、解码器都用&lt;strong&gt;堆叠的自注意力&lt;/strong&gt;和&lt;strong&gt;逐位置全连接层&lt;/strong&gt;（原文 Figure 1 左右两半）。&lt;/p&gt;
&lt;h3 id=&#34;31-编码器栈与解码器栈&#34;&gt;3.1 编码器栈与解码器栈&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;编码器。&lt;/strong&gt; (N=6) 层相同的层。每层两个子层：多头自注意力；逐位置全连接前馈网络。每个子层外包残差连接，再接层归一化：&lt;/p&gt;
&lt;p&gt;[
\mathrm{LayerNorm}(x + \mathrm{Sublayer}(x))
]&lt;/p&gt;
&lt;p&gt;所有子层以及嵌入层的输出维度均为 (d_{\mathrm{model}}=512)，以便做残差。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解码器。&lt;/strong&gt; 同样 (N=6) 层。在编码器那两个子层之外，插入第三个子层：对编码器栈的输出做多头注意力。同样使用残差与层归一化。解码器里的自注意力被改成&lt;strong&gt;不能看后续位置&lt;/strong&gt;。这种掩码，再加上输出嵌入右移一个位置，保证对位置 (i) 的预测只依赖小于 (i) 的已知输出。&lt;/p&gt;
&lt;h3 id=&#34;32-注意力&#34;&gt;3.2 注意力&lt;/h3&gt;
&lt;p&gt;注意力：把一个 query 和一组 key–value 对映射到一个输出；四者都是向量。输出是 value 的加权和；每个 value 的权重由 query 与对应 key 的兼容性函数算出。&lt;/p&gt;
&lt;h4 id=&#34;321-缩放点积注意力&#34;&gt;3.2.1 缩放点积注意力&lt;/h4&gt;
&lt;p&gt;输入：维度 (d_k) 的 query 与 key，维度 (d_v) 的 value。用 query 与所有 key 做点积，再除以 (\sqrt{d_k})，经 softmax 得到 value 上的权重。一组 query 打成矩阵 (Q)，key、value 打成 (K)、(V)：&lt;/p&gt;
&lt;p&gt;[
\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V
]&lt;/p&gt;
&lt;p&gt;两种常用注意力：加性注意力（Bahdanau 等）与点积（乘性）注意力。点积注意力与上式相同，只是没有 (1/\sqrt{d_k}) 这个缩放。加性注意力用单隐层前馈网算兼容性。理论复杂度相近，实践上点积可用高度优化的矩阵乘，更快、更省空间。&lt;/p&gt;
&lt;p&gt;(d_k) 较小时两者表现接近；(d_k) 较大且不缩放时，加性更好。作者认为 (d_k) 大时点积幅值变大，把 softmax 推到梯度极小的区域（若 (q,k) 各维独立、均值 0 方差 1，则 (q\cdot k) 的方差为 (d_k)）。因此除以 (\sqrt{d_k})。&lt;/p&gt;
&lt;h4 id=&#34;322-多头注意力&#34;&gt;3.2.2 多头注意力&lt;/h4&gt;
&lt;p&gt;不是用 (d_{\mathrm{model}}) 维做一次注意力，而是把 (Q,K,V) 用不同的、可学习的线性投影做 (h) 次，投影到 (d_k,d_k,d_v)，再并行做注意力，把 (d_v) 维输出拼接起来，再投影一次：&lt;/p&gt;
&lt;p&gt;[
\mathrm{MultiHead}(Q,K,V)=\mathrm{Concat}(\mathrm{head}_1,\ldots,\mathrm{head}_h)W^{O}
]&lt;/p&gt;
&lt;p&gt;[
\mathrm{head}_i=\mathrm{Attention}(QW_i^{Q},,KW_i^{K},,VW_i^{V})
]&lt;/p&gt;
&lt;p&gt;其中 (W_i^{Q}\in\mathbb{R}^{d_{\mathrm{model}}\times d_k}) 等。多头让模型能同时从不同表示子空间、不同位置取信息；单头会被平均抑制。&lt;/p&gt;
&lt;p&gt;本文 (h=8)。每个头 (d_k=d_v=d_{\mathrm{model}}/h=64)。头变窄之后，总计算量与全维度单头相近。&lt;/p&gt;
&lt;h4 id=&#34;323-在本模型中的三种用法&#34;&gt;3.2.3 在本模型中的三种用法&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;编码器—解码器注意力。&lt;/strong&gt; query 来自上一解码器层；key 与 value 来自编码器输出。解码器每个位置可以关注输入序列所有位置。对应以往 seq2seq 里的编码器—解码器注意力。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编码器自注意力。&lt;/strong&gt; (Q,K,V) 都来自编码器上一层输出。每个位置可以关注上一层所有位置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解码器自注意力。&lt;/strong&gt; 每个位置可以关注解码器中&lt;strong&gt;不超过该位置&lt;/strong&gt;的位置。为保持自回归、禁止信息左流，在缩放点积注意力里把 softmax 输入中非法连接置为 (-\infty)。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;33-逐位置前馈网络&#34;&gt;3.3 逐位置前馈网络&lt;/h3&gt;
&lt;p&gt;每个编码器、解码器层除注意力子层外，还有对每个位置单独、相同地施加的全连接前馈网：两层线性，中间 ReLU。&lt;/p&gt;
&lt;p&gt;[
\mathrm{FFN}(x)=\max(0, xW_1+b_1)W_2+b_2
]&lt;/p&gt;
&lt;p&gt;不同位置共享同一套线性变换；层与层之间参数不同。也可看成核大小为 1 的两次卷积。输入输出维 (d_{\mathrm{model}}=512)，内层 (d_{ff}=2048)。&lt;/p&gt;
&lt;h3 id=&#34;34-嵌入与-softmax&#34;&gt;3.4 嵌入与 Softmax&lt;/h3&gt;
&lt;p&gt;与其他序列转换模型一样，用可学习嵌入把输入、输出 token 变成 (d_{\mathrm{model}}) 维向量。解码器输出经线性变换与 softmax，得到下一个 token 的概率。两个嵌入层与 softmax 前的线性变换&lt;strong&gt;共享同一权重矩阵&lt;/strong&gt;。嵌入层中把这些权重乘以 (\sqrt{d_{\mathrm{model}}})。&lt;/p&gt;
&lt;h3 id=&#34;35-位置编码&#34;&gt;3.5 位置编码&lt;/h3&gt;
&lt;p&gt;模型没有循环也没有卷积，必须向序列注入相对或绝对位置信息。在编码器、解码器栈底部，把位置编码加到输入嵌入上；维度同为 (d_{\mathrm{model}})，以便相加。&lt;/p&gt;
&lt;p&gt;本文用不同频率的正弦与余弦：&lt;/p&gt;
&lt;p&gt;[
PE_{(pos,2i)}=\sin(pos/10000^{2i/d_{\mathrm{model}}})
]&lt;/p&gt;
&lt;p&gt;[
PE_{(pos,2i+1)}=\cos(pos/10000^{2i/d_{\mathrm{model}}})
]&lt;/p&gt;
&lt;p&gt;(pos) 是位置，(i) 是维度。波长从 (2\pi) 到 (10000\cdot 2\pi) 成几何级数。选择该函数是因为：对任意固定偏移 (k)，(PE_{pos+k}) 可写成 (PE_{pos}) 的线性函数，便于按相对位置做注意力。&lt;/p&gt;
&lt;p&gt;也试过可学习的位置嵌入，与正弦版本结果几乎相同（表 3 行 E）。选用正弦，是因为它可能外推到训练时未见过的序列长度。&lt;/p&gt;
&lt;h2 id=&#34;4-为什么用自注意力&#34;&gt;4 为什么用自注意力&lt;/h2&gt;
&lt;p&gt;比较自注意力、循环、卷积三类层：把变长符号序列 ((x_1,\ldots,x_n)) 映到等长 ((z_1,\ldots,z_n))，(x_i,z_i\in\mathbb{R}^{d})。三条标准：每层计算复杂度；可并行程度（最少顺序操作数）；网络中长程依赖的路径长度。路径越短，长程依赖越好学。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;表 1.&lt;/strong&gt; (n) 为序列长度，(d) 为表示维度，(k) 为卷积核宽，(r) 为受限自注意力的邻域大小。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;层类型&lt;/th&gt;
&lt;th&gt;每层复杂度&lt;/th&gt;
&lt;th&gt;顺序操作&lt;/th&gt;
&lt;th&gt;最大路径长度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;自注意力&lt;/td&gt;
&lt;td&gt;(O(n^{2}\cdot d))&lt;/td&gt;
&lt;td&gt;(O(1))&lt;/td&gt;
&lt;td&gt;(O(1))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;循环&lt;/td&gt;
&lt;td&gt;(O(n\cdot d^{2}))&lt;/td&gt;
&lt;td&gt;(O(n))&lt;/td&gt;
&lt;td&gt;(O(n))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;卷积&lt;/td&gt;
&lt;td&gt;(O(k\cdot n\cdot d^{2}))&lt;/td&gt;
&lt;td&gt;(O(1))&lt;/td&gt;
&lt;td&gt;(O(\log_{k} n))&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;受限自注意力&lt;/td&gt;
&lt;td&gt;(O(r\cdot n\cdot d))&lt;/td&gt;
&lt;td&gt;(O(1))&lt;/td&gt;
&lt;td&gt;(O(n/r))&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;自注意力用常数次顺序操作连接所有位置；循环需要 (O(n))。当 (n&amp;lt;d) 时（机器翻译里 word-piece / BPE 句子表示常见如此），自注意力比循环更快。极长序列可以把注意力限制在半径 (r) 的邻域，最大路径变为 (O(n/r))；文中列为未来工作。&lt;/p&gt;
&lt;p&gt;单层卷积在 (k&amp;lt;n) 时连不满所有位置对；要连满需要堆 (O(n/k)) 层（连续核）或 (O(\log_{k} n)) 层（膨胀卷积），从而加长最长路径。&lt;/p&gt;
&lt;p&gt;附带好处：自注意力可能更可解释。附录可视化显示，不同头学会不同工作，不少头与句法、语义结构有关。&lt;/p&gt;
&lt;h2 id=&#34;5-训练&#34;&gt;5 训练&lt;/h2&gt;
&lt;h3 id=&#34;51-数据与-batch&#34;&gt;5.1 数据与 batch&lt;/h3&gt;
&lt;p&gt;英德：WMT 2014，约 450 万句对；BPE，源/目标共享约 37,000 token 词表。英法：WMT 2014，3600 万句，32,000 word-piece 词表。按近似长度组 batch；每个训练 batch 约 25,000 个源 token 与 25,000 个目标 token。&lt;/p&gt;
&lt;h3 id=&#34;52-硬件与日程&#34;&gt;5.2 硬件与日程&lt;/h3&gt;
&lt;p&gt;一台机器、8 块 NVIDIA P100。base：每步约 0.4 秒，共 100,000 步（12 小时）。big：每步 1.0 秒，300,000 步（3.5 天）。&lt;/p&gt;
&lt;h3 id=&#34;53-优化器&#34;&gt;5.3 优化器&lt;/h3&gt;
&lt;p&gt;Adam，(\beta_1=0.9)，(\beta_2=0.98)，(\epsilon=10^{-9})。学习率：&lt;/p&gt;
&lt;p&gt;[
lrate = d_{\mathrm{model}}^{-0.5}\cdot \min(\mathrm{step_num}^{-0.5},; \mathrm{step_num}\cdot \mathrm{warmup_steps}^{-1.5})
]&lt;/p&gt;
&lt;p&gt;前 (\mathrm{warmup_steps}) 步线性升高，之后按步数平方根的倒数下降。(\mathrm{warmup_steps}=4000)。&lt;/p&gt;
&lt;h3 id=&#34;54-正则&#34;&gt;5.4 正则&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;残差 Dropout。&lt;/strong&gt; 每个子层输出在与输入相加、归一化之前做 dropout；嵌入与位置编码之和也做 dropout。base 模型 (P_{drop}=0.1)。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;标签平滑。&lt;/strong&gt; (\epsilon_{ls}=0.1)。会损害困惑度（模型学得更不确定），但提高准确率与 BLEU。&lt;/p&gt;
&lt;h2 id=&#34;6-结果&#34;&gt;6 结果&lt;/h2&gt;
&lt;h3 id=&#34;61-机器翻译&#34;&gt;6.1 机器翻译&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;表 2&lt;/strong&gt;（newstest2014；训练成本为估计 FLOPs）。Transformer (big) 英德 28.4，英法 41.8；base 英德 27.3，英法 38.1。英德 big 比此前最佳（含集成）高 2 BLEU 以上。base 也超过此前所有已发表模型与集成，训练成本只占竞争模型的一小部分。英法 big 的训练成本不到此前 SOTA 的 1/4。英法 big 使用 (P_{drop}=0.1) 而非 0.3。&lt;/p&gt;
&lt;p&gt;推理：base 对最后 5 个 checkpoint 做平均（每 10 分钟一个）；big 平均最后 20 个。束搜索束宽 4，长度惩罚 (\alpha=0.6)。最大输出长度为输入长度 + 50，可提前结束。&lt;/p&gt;
&lt;h3 id=&#34;62-模型变体&#34;&gt;6.2 模型变体&lt;/h3&gt;
&lt;p&gt;在英德开发集 newstest2013 上改 base（束搜索，不做 checkpoint 平均）。要点（表 3）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(A) 头数与 (d_k,d_v)：单头比最佳设置差 0.9 BLEU；头太多质量也下降。&lt;/li&gt;
&lt;li&gt;(B) 减小 (d_k) 损害质量，说明兼容性不容易，可能需要比点积更复杂的函数。&lt;/li&gt;
&lt;li&gt;(C)(D) 更大的模型更好；dropout 对过拟合很有帮助。&lt;/li&gt;
&lt;li&gt;(E) 正弦位置编码换成可学习位置嵌入，结果几乎相同。&lt;/li&gt;
&lt;li&gt;big：(N=6)，(d_{\mathrm{model}}=1024)，(d_{ff}=4096)，(h=16)，(P_{drop}=0.3)，300K 步，约 2.13 亿参数。base 约 6500 万参数。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;63-英语成分句法分析&#34;&gt;6.3 英语成分句法分析&lt;/h3&gt;
&lt;p&gt;输出有强结构约束，且比输入长得多。RNN seq2seq 在小数据上未达到当时 SOTA。4 层 Transformer，(d_{\mathrm{model}}=1024)。仅 WSJ（约 4 万句）F1 91.3；半监督（约 1700 万句）92.7。除 RNN Grammar 外，好于此前报告的模型。仅用 WSJ 4 万句时，也超过 BerkeleyParser。任务相关调参很少。&lt;/p&gt;
&lt;h2 id=&#34;7-结论&#34;&gt;7 结论&lt;/h2&gt;
&lt;p&gt;Transformer 是第一个完全基于注意力的序列转换模型，用多头自注意力替换编码器—解码器里最常用的循环层。翻译任务上，训练显著快于基于循环或卷积的架构；英德、英法均达到新的 SOTA，英德上最佳模型超过此前所有集成。&lt;/p&gt;
&lt;p&gt;作者计划把 Transformer 扩展到文本以外的输入输出模态，研究局部、受限注意力以处理图像、音频、视频等大输入输出，并使生成不那么顺序化。&lt;/p&gt;
&lt;p&gt;训练与评测代码：&lt;a href=&#34;https://github.com/tensorflow/tensor2tensor&#34;&gt;https://github.com/tensorflow/tensor2tensor&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;附录中的注意力可视化论文所述&#34;&gt;附录中的注意力可视化（论文所述）&lt;/h2&gt;
&lt;p&gt;编码器第 5 层（共 6 层）的自注意力：多个头关注动词 &lt;em&gt;making&lt;/em&gt; 的远距离依赖，补全 &lt;em&gt;making…more difficult&lt;/em&gt;。另有头表现为指代消解（如 &lt;em&gt;its&lt;/em&gt;）。许多头表现出与句子结构相关的行为，且不同头做不同的事。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Timeline: Transformer 讲解</title>
      <link>https://skyao.net/learning-ai-agent/timeline/before2022/transformer/explanation/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-ai-agent/timeline/before2022/transformer/explanation/</guid>
      <description>
        
        
        &lt;h2 id=&#34;论文解决了什么问题&#34;&gt;论文解决了什么问题&lt;/h2&gt;
&lt;p&gt;2017 年的对象是&lt;strong&gt;序列转换&lt;/strong&gt;，主要战场是机器翻译。编码器—解码器与注意力已经是常规附件，主干仍是 RNN（或卷积）。三条障碍绑在一起：样本内的顺序计算无法并行；任意两个位置之间的路径随长度线性增长，长程依赖难以学习；注意力仍接在循环网络上，不是转换模型的默认计算。&lt;/p&gt;
&lt;p&gt;解法是更换计算图：缩放点积自注意力让每个位置一步看到全序列（路径 (O(1))，层内顺序操作 (O(1))）；多头注意力避免单次平均抹掉子空间；位置编码补回被移除的词序归纳偏置；解码器自注意力加掩码以保持自回归。翻译分数是结果。被改写的是「一层如何表示一段序列」这一层机制。&lt;/p&gt;
&lt;p&gt;论文没有把自身写成语言模型骨架，也没有工具、循环或停机。结论中指出的下一步是其他模态、局部注意力，以及让生成少一点顺序化。&lt;/p&gt;
&lt;h3 id=&#34;关键术语编码器与解码器&#34;&gt;关键术语：编码器与解码器&lt;/h3&gt;
&lt;p&gt;论文里的编码器与解码器，与今天 LLM 里被叫做「编码器」「解码器」的东西同名同源，但不是同一件事。区分有两条判据：&lt;strong&gt;有没有交叉注意力，注意力带不带因果掩码。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;论文里两个组件的差别只在一层：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;编码器&lt;/th&gt;
&lt;th&gt;解码器&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;每层子层数&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;子层&lt;/td&gt;
&lt;td&gt;自注意力、前馈&lt;/td&gt;
&lt;td&gt;因果自注意力、交叉注意力、前馈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;能看哪儿&lt;/td&gt;
&lt;td&gt;全序列，双向&lt;/td&gt;
&lt;td&gt;自己只看之前的位置，交叉注意力看编码器全部输出&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;生成&lt;/td&gt;
&lt;td&gt;不生成&lt;/td&gt;
&lt;td&gt;自回归，一次一个 token&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;关键是第三个子层。交叉注意力读的是编码器的输出，解码器每一步都回看源序列的表示——这才是「解码」二字的由来：把已经读进来的表示，逐个符号地解出来。&lt;/p&gt;
&lt;p&gt;今天被叫做「编码器」「解码器」的有三样，用法并不相同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;编码器栈&lt;/strong&gt;（BERT 一类）：双向自注意力加前馈，两个子层，没有因果掩码，也不生成。它把整段文本读成一个表示。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解码器栈&lt;/strong&gt;（GPT 一类）：因果自注意力加前馈，&lt;strong&gt;也是两个子层&lt;/strong&gt;，与 BERT 的层同为两层，区别只在掩码；&lt;strong&gt;交叉注意力被去掉了&lt;/strong&gt;，因为没有编码器可供交叉注意。所以「GPT 只用解码器栈」是准确的，但不能读成「留了解码器、藏了编码器」——去掉第三个子层之后，解码器退化为带因果掩码的自注意力加前馈，名字留了下来，机制回到同一条流上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多模态编码器&lt;/strong&gt;（图像、语音）：把别的模态投到 LLM 能读的输入空间里。它与论文里那个读源句子的编码器不是一回事，只是沿用了「先编码成表示」的思路。&lt;/p&gt;
&lt;p&gt;另有一个同名而无关的用法：tokenizer 的 &lt;code&gt;encode&lt;/code&gt; / &lt;code&gt;decode&lt;/code&gt;，把字符串转成 token id 再转回来，与模型结构无关。&lt;/p&gt;
&lt;p&gt;对后面的影响落在一处：决策核心是解码器栈，没有编码器，就没有一份「源序列表示」可以被反复交叉注意。上下文里的所有东西都是同一条流上的 token，当前观察、工具回执与历史对话彼此没有结构上的区分，只有位置与文字的差别。&lt;/p&gt;
&lt;h2 id=&#34;对后续-llm-的影响&#34;&gt;对后续 LLM 的影响&lt;/h2&gt;
&lt;p&gt;第 4 节的复杂度表给出了后来一切的前提：&lt;strong&gt;层内可并行，任意两个 token 之间只有一条短路径。&lt;/strong&gt; 循环网络每层要按位置串行，卷积要靠堆层数接通远处的位置，两条都挡住了「同时加深、加宽、加数据」。自注意力把这两条约束一起拿掉，剩下的事情交给规模。&lt;/p&gt;
&lt;p&gt;论文给的是完整的编码器—解码器，后来的主流却收敛到只用解码器栈。这是工程合力的结果，不是论文的结论，至少四条原因叠在一起。下一个 token 预测不需要标注，互联网上任何文本都是训练数据，而编码器—解码器要为每个任务设计输入与输出的配对形式；任务本身被统一成格式问题，「把下面这段译成英文」写在提示里即可，不必为翻译单独留一个编码器；解码器栈每层只有两个子层，省掉了第二套栈与交叉注意力的显存和算力；KV cache 可以复用，生成时每一步只新增一个 token 的代价，多轮对话与 Agent 循环都吃这一条。&lt;/p&gt;
&lt;p&gt;把这次转向读成架构上的必然，我认为会漏掉另一半事实。理解类任务（SuperGLUE 一类）上，编码器栈与编码器—解码器仍然占优；指令微调之后，编码器—解码器可以用明显更省的推理达到相近的少样本表现；嵌入与检索这一支至今主要用编码器栈。这次转向本身也缺少同算力下的严格对照，&lt;a href=&#34;https://arxiv.org/abs/2510.26622&#34;&gt;有研究&lt;/a&gt;把两类模型放到同一算力最优前沿上比较后指出，编码器—解码器的潜力可能被低估。真正的推动力更像是两件事撞在一起：生成类任务在 2019 年之后变得重要，而解码器栈最容易扩规模。&lt;/p&gt;
&lt;p&gt;位置编码成为一条独立的研究线。论文第 3.5 节选正弦编码，理由是它可能外推到训练时未见的长度；后来的相对位置、RoPE、ALiBi 都在回答同一个问题，「第几步、哪一段」这个信息如何在不引入循环的前提下表达得更好。这条线一直通到长上下文模型。&lt;/p&gt;
&lt;p&gt;表 1 里那行 (O(n^{2}\cdot d)) 也没有消失，只是被绕着走。FlashAttention 改的是显存读写顺序，不是复杂度；PagedAttention 改的是 KV cache 的碎片；滑窗与线性注意力用近似换更长的上下文；MoE 在规模一侧把参数量与算力解耦。这些手段搬动了常数与曲线，没有改变二次方这一项。&lt;/p&gt;
&lt;p&gt;GPT-3 的上下文学习与 Codex 的代码生成，用的都是这副骨架上训练出的解码器语言模型。它们不是这篇论文的实验内容，但都预设了这篇论文改过的计算图。&lt;/p&gt;
&lt;h2 id=&#34;对-ai-agent-的影响&#34;&gt;对 AI Agent 的影响&lt;/h2&gt;
&lt;p&gt;AI Agent 需要的决策核心，要能读一段开放文本并生成下一步。Transformer 提供的是&lt;strong&gt;表示与自回归生成结构&lt;/strong&gt;，不是策略循环；一次前向计算，是在已有 token 上预测后续 token。这个结构留下三件对 Agent 直接起作用的事实。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文就是工作集，KV cache 是它的物理载体。&lt;/strong&gt;「当前观察」在实现上不是一份被解析出来的状态，而是窗口里的一段 token，以及为它们算好的注意力键值。会话继续，cache 就继续追加；换一条会话，整段前缀要重新计算。窗口大小因此不是界面上的一个参数，而是这个循环一次能看见多少环境回执的物理上限。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;动作只能是 token。&lt;/strong&gt; 模型唯一的输出面是下一个 token 的概率分布，它没有别的通道。要用工具、要调 API、要改文件，都必须先把动作序列化成它能生成的东西：早期是约定格式的文本，2023 年 6 月之后是可校验的 JSON 调用，也有把工具做成特殊 token、或把动作写进代码块的做法。工具调用长成今天这个形状，原因在这里——不是接口设计选中了文本，而是输出面只有文本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;成本结构决定了 Agent 的工程形状。&lt;/strong&gt; prefill 阶段的注意力成本随长度平方增长，decode 阶段受显存带宽限制，而多轮循环会反复重新计算同一段前缀。这就是为什么前缀缓存、KV 复用与上下文压缩在 Agent 系统里是基础设施而不是优化项：一个跑二十轮的循环，开销的主要部分往往不在生成新内容，而在反复读同一段历史。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;论文里的机制&lt;/th&gt;
&lt;th&gt;后来在 Agent 里对应的物理事实&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;自注意力一步连接全序列&lt;/td&gt;
&lt;td&gt;当前观察可以整段进入上下文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;掩码自注意力、自回归&lt;/td&gt;
&lt;td&gt;下一步以文本（或后来的工具调用）逐 token 生成，动作只能序列化进这个通道&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(O(n^{2})) 与有限窗口&lt;/td&gt;
&lt;td&gt;一次循环能够容纳的回执有上限；超出后只能截断、检索或外挂记忆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KV cache 随会话增长&lt;/td&gt;
&lt;td&gt;状态就是这段前缀；多轮循环反复重算同一段历史，前缀复用因此成为基础设施&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;位置编码&lt;/td&gt;
&lt;td&gt;「第几步、哪一段」对模型而言不是免费的&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;训练可并行、模型可做大&lt;/td&gt;
&lt;td&gt;核心的能力随规模上升；2022 年 CoT「规模足够大才有效」，前提正是这种结构&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;时间线把它标成底层能力里的&lt;strong&gt;范式更替&lt;/strong&gt;：没有可扩展的条件生成器，后面就没有可讨论的 LLM 核心。&lt;/p&gt;
&lt;h2 id=&#34;扩展阅读&#34;&gt;扩展阅读&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://research.sinica.edu.tw/llm-transformer-misinformation-mitigation-lun-wei-ku/&#34;&gt;大型語言模型 LLM 究竟是什麼？如何用 LLM 對付假新聞？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/weixin_44369324/article/details/163420500&#34;&gt;Transformer 论文精读路线：从 Attention 到现代 LLM 架构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.cloud.tencent.com/article/2535946&#34;&gt;盘一盘，2017年Transformer之后，LLM领域的重要论文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://yeasy.gitbook.io/llm_internals/di-yi-bu-fen-ji-chu-pian/01_introduction/1.5_milestones&#34;&gt;1.5 里程碑时刻：从学术论文到产业变革&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
