Transformer一为什么是需要Transformer摘要Transformer 不是凭空出现的。它是在 N-gram、RNN、LSTM、GRU 等序列建模方法遇到瓶颈之后被提出的一种新架构。本文不急着讲公式而是先回答一个更基础的问题为什么深度学习已经有了 RNN 和 LSTM还需要 Transformer一、序列建模到底在解决什么问题自然语言、时间序列、代码、语音本质上都可以看成一种“序列”。例如一句话工人 没有 佩戴 安全帽模型要做的事情不只是认识每个词还要理解“工人”是谁“佩戴”是动作“安全帽”是动作对象“没有”改变了整个句子的含义也就是说序列建模要解决的是如何根据上下文理解当前位置的信息。如果模型只看到“安全帽”三个字它只能知道这是一个物品。如果模型看到“工人没有佩戴安全帽”它才能知道这是一个安全违规场景。二、最早的思路N-gramN-gram 是一种很经典的语言建模方法。它的基本思想是根据前面 N 个词预测当前词或下一个词。例如 2-gram 只看前 1 个词佩戴 - 安全帽3-gram 看前 2 个词没有 佩戴 - 安全帽4-gram 看前 3 个词工人 没有 佩戴 - 安全帽N-gram 的优点N-gram 很容易理解也很容易实现。它不需要复杂的神经网络只需要统计词语出现的概率。例如上下文下一个词概率佩戴安全帽高佩戴手套中佩戴手机低N-gram 的缺点N-gram 的问题也很明显它只能看固定长度的上下文。假设句子很长进入施工现场的工人因为赶时间没有按照规定佩戴安全帽如果只看前 2 个词或前 3 个词模型很难把“工人”和“安全帽”联系起来。N-gram 的核心缺陷是问题说明上下文长度固定N 设多大就只能看多远数据稀疏N 越大组合越多很多组合没见过无法理解语义主要靠统计不真正建模词与词的深层关系可以把 N-gram 理解成一个“短视”的模型它能看见眼前几个词但很难理解整句话。三、RNN让模型按顺序读句子为了解决 N-gram 上下文长度固定的问题RNN 出现了。RNN 的全称是 Recurrent Neural Network循环神经网络。它的核心思想是按顺序一个 token 一个 token 地读取并把前面读到的信息保存在隐藏状态中。RNN 的计算过程假设输入句子是工人 没有 佩戴 安全帽RNN 会这样处理工人 - 隐藏状态 h1 没有 - 结合 h1 得到 h2 佩戴 - 结合 h2 得到 h3 安全帽 - 结合 h3 得到 h4可以画成工人 ── h1 ── 没有 ── h2 ── 佩戴 ── h3 ── 安全帽 ─ h4每一步都会接收两个信息当前输入 token上一步传下来的隐藏状态因此RNN 理论上可以把前面的信息一直传下去。RNN 相比 N-gram 的进步方法上下文能力是否学习语义表示N-gram固定窗口弱RNN理论上可以看完整历史强RNN 的确比 N-gram 更像人在读句子。人也是从左到右读边读边记住前面的内容。四、RNN 的两个核心问题RNN 很自然但它有两个非常关键的问题。1. 长距离依赖问题RNN 的信息是一步一步传递的。如果两个词距离很远信息需要经过很多步才能传到后面。例如那个昨天进入施工现场并且因为天气炎热一直在休息区附近工作的工人没有佩戴安全帽“工人”和“安全帽”之间隔了很多词。RNN 要想让“安全帽”理解它和“工人”的关系就需要把“工人”的信息从前面一步步传到后面。问题是传得越远信息越容易变弱。这就是长距离依赖问题。2. 无法高效并行训练RNN 必须按顺序计算。因为第 2 步依赖第 1 步第 3 步依赖第 2 步。h1 - h2 - h3 - h4 - h5这意味着不能同时计算所有 token序列越长训练越慢很难充分利用 GPU 的并行能力这对大规模语料训练非常致命。大语言模型需要处理海量文本如果模型只能一个词一个词慢慢读训练效率会非常低。五、LSTM 和 GRU 改进了什么为了解决 RNN 容易遗忘的问题LSTM 和 GRU 被提出。它们的核心思想是加入门控机制让模型自己决定哪些信息应该保留哪些信息应该遗忘。LSTM 的直观理解LSTM 像一个带记忆管理功能的 RNN。它会问三个问题哪些旧信息要忘掉哪些新信息要写入当前要输出哪些信息因此LSTM 比普通 RNN 更擅长保留长期信息。GRU 的直观理解GRU 可以看成更简洁的 LSTM。它参数更少计算更快但同样通过门控机制缓解遗忘问题。LSTM / GRU 的局限虽然 LSTM 和 GRU 改进了 RNN但它们仍然没有解决根本问题问题是否解决长距离依赖缓解了但没有彻底解决顺序计算没解决并行训练没解决直接建模任意两个 token 的关系不够直接LSTM 和 GRU 仍然是一步步读句子。只要是一步步读就很难完全摆脱顺序计算带来的效率限制。六、Transformer 的关键变化不再一步步读Transformer 的思路非常大胆不再按顺序一个词一个词传递信息而是让所有 token 同时互相交流。比如句子工人 没有 佩戴 安全帽Transformer 会让每个 token 都直接看见其他 token工人 - 没有 工人 - 佩戴 工人 - 安全帽 没有 - 佩戴 没有 - 安全帽 佩戴 - 安全帽可以用一张图理解工人 / | \ 没有 | 安全帽 \ | / 佩戴这就是自注意力机制的基本思想每个 token 都可以直接关注其他 token并根据重要程度汇总信息。七、Transformer 解决了什么问题1. 更好地处理长距离依赖在 RNN 中远距离信息要一步步传递。在 Transformer 中任意两个 token 可以直接建立联系。例如“工人”和“安全帽”距离很远时Transformer 仍然可以让“安全帽”直接关注“工人”。这大大降低了长距离信息丢失的风险。2. 更适合并行训练Transformer 不需要像 RNN 那样按时间步顺序计算隐藏状态。在训练阶段一句话里的 token 可以同时参与计算。这非常适合 GPU。也正是因为这一点Transformer 才能支撑后来的大规模预训练模型。3. 上下文建模能力更强Transformer 的每一层都会重新计算 token 之间的关系。第一层可能关注局部词语关系。中间层可能关注句法结构。高层可能关注语义和任务意图。这使得 Transformer 能逐层提炼上下文表示。八、图表总结几种方法的对比方法核心思想优点缺点N-gram根据固定窗口统计概率简单、容易实现上下文短、数据稀疏RNN按顺序读取并传递隐藏状态能处理变长序列长距离依赖弱、训练慢LSTM / GRU加入门控机制控制记忆缓解遗忘问题仍然顺序计算Transformertoken 之间直接注意力交互长距离建模强、并行训练快结构更复杂、计算量较大再用一句话对比N-gram看前几个词 RNN一个词一个词读 LSTM带记忆管理地读 Transformer让所有词互相交流九、Transformer 的出现意味着什么Transformer 的出现不只是换了一个模型结构而是改变了序列建模的方式。以前的模型更像“顺序阅读”词1 - 词2 - 词3 - 词4Transformer 更像“全局讨论”每个词都能和其他词交流然后更新自己的理解这使它天然适合处理复杂上下文。大语言模型之所以能完成问答、写作、翻译、代码生成、推理等任务基础就在于它可以从大量上下文中捕捉复杂关系。十、本文小结本文主要回答了一个问题为什么需要 Transformer核心结论如下N-gram 只能看固定窗口难以理解长上下文。RNN 可以处理序列但长距离依赖和并行训练能力较弱。LSTM / GRU 通过门控机制缓解遗忘但仍然无法摆脱顺序计算。Transformer 使用自注意力机制让 token 之间可以直接建立联系。Transformer 更适合长文本建模和大规模并行训练。