Transformer 与模型架构原理

张开发
2026/4/6 0:10:52 15 分钟阅读

分享文章

Transformer 与模型架构原理
整体架构Transformer 采用Encoder-Decoder架构但两者都由相同的Layer堆叠而成。输入部分包括输入嵌入Input Embedding和位置编码Positional Encoding。Encoder编码器由 个相同的 Encoder Layer 堆叠原论文 6每个 Encoder Layer Multi-Head Self-AttentionFeed-Forward Network (FFN)两层的全连接层第一层激活函数为 ReLU 即 max(0,x)第二层没有激活函数不改变矩阵维度 两个残差连接 LayerNorm即 AddNormDecoder解码器由 个相同的 Decoder Layer 堆叠每个 Decoder Layer Masked Multi-Head Self-AttentionCross-Attention使用 Encoder 的输出FFN 三个残差连接 LayerNorm输出部分包括一个线性层Linear和 Softmax 层用于计算下一个 token 的概率分布。各部件作用与原理组件作用底层原理Self-Attention建立序列内任意位置的直接依赖捕获全局上下文通过 Q/K/V 计算相似度加权实现全连接的序列建模时间复杂度 (2)Multi-Head将高维空间切分为多个子空间并行学习不同语义关系类似 CNN 的多通道增强表达能力H 个 head 关注不同 aspect语法/语义/指代等FFN对 Attention 输出进行非线性变换增强模型容量两个线性层夹激活函数()max(0,11)22逐位置独立计算残差连接缓解梯度消失支持深层堆叠(())保留浅层信息梯度可直接回传LayerNorm稳定训练加速收敛对单样本特征维度归一化()−比 BN 更适合变长序列Positional Encoding注入位置信息模型本身无位置感知正弦/余弦函数或学习式嵌入编码绝对/相对位置各部分作用及底层原理位置编码由于 Attention 机制本身是位置无关的即对打乱的序列会产生相同的结果位置编码的作用是注入序列的顺序信息。多头自注意力核心是让序列中的每个位置都能关注到序列中所有其他位置的信息从而捕捉全局依赖关系。底层通过计算 Query查询、Key键和 Value值之间的相似度来实现。前馈网络FFN这是一个两层的全连接网络对每个位置的向量独立地进行非线性变换。其作用是对注意力层输出的特征进行进一步的处理和投影增强模型的表达能力。残差连接 层归一化残差连接帮助梯度在深层网络中直接流动防止梯度消失层归一化则稳定了每一层的输入分布加速模型收敛。掩码多头自注意力在解码器中为了防止模型在预测当前词时“看到”未来的信息掩码机制将当前位置之后的位置的注意力分数设置为负无穷经过Softmax后变为0。cross-attention它接收解码器前一层的输出作为 Query接收编码器的输出作为 Key 和 Value。这使得解码器在生成每个词时都能关注到输入序列的哪些部分与之最相关起到了信息交互的作用。关键原理总结Attention Is All You Need完全抛弃 RNN/CNN仅靠 Attention 机制建模序列关系并行计算相比 RNN 的时序依赖Self-Attention 可一次性计算整个序列充分利用 GPU 并行性2. Transformer 的 forward 计算包含哪些部件非线性由什么提供Forward 计算包含的部件输入部件Token 嵌入查找和位置编码叠加。多头注意力部件线性投影、点积相似度计算、Softmax、加权求和、多头拼接、输出线性投影。Add Norm 部件残差相加和层归一化。前馈网络FFN部件第一个线性层、非线性激活函数、第二个线性层。输出部件最后的线性层和 Softmax。非线性的提供Transformer 中的非线性主要由两个部分提供前馈网络FFN的激活函数这是最主要的非线性来源。在 Transformer Base 版本中使用的是 ReLU或 GELU、SwiGLU 等变体它对每个位置的向量进行独立的高维映射和非线性筛选。Self-Attention 中的 SoftmaxSoftmax 操作本身也是一种非线性函数它将点积分数转换为非线性的概率分布。Forward 流程以 Encoder 为例Input Embedding Positional Encoding↓[Encoder Layer × N]├─ Multi-Head Self-Attention│ ├─ Linear 投影得到 Q, K, V│ ├─ Scaled Dot-Product Attention (Softmax)│ ├─ Concat Linear│ └─ Dropout├─ Add LayerNorm (残差1)├─ FFN│ ├─ Linear₁ (升维通常 4×)│ ├─ Activation (ReLU/GELU/SwiGLU)│ ├─ Linear₂ (降维)│ └─ Dropout└─ Add LayerNorm (残差2)↓Output非线性来源位置非线性操作说明FFN 激活函数ReLU / GELU / SwiGLU主要非线性来源逐位置独立变换Attention SoftmaxSoftmax(/)提供概率分布的软性选择非线性LayerNorm含可学习参数的缩放/偏移轻微非线性主要起稳定作用重点FFN 的激活函数是主要非线性来源没有它模型退化为线性变换的堆叠。3. Transformer 为什么能替代 RNN核心优势是什么Transformer 能替代 RNN 的核心在于它解决了 RNN 的两大痛点无法并行和长距离遗忘。RNN 的致命缺陷长距离依赖困难梯度需经过长链反向传播存在梯度消失/爆炸难以建模远距离关系串行计算时间步 依赖 −1 的隐状态无法并行GPU 利用率低计算复杂度高序列长度 计算复杂度 (⋅2)但常数因子大且无法加速Transformer 的核心优势优势具体表现全局依赖建模Self-Attention 任意两位置直接交互距离为 (1)彻底解决长程依赖完全并行化Attention 计算可矩阵化整个序列一次性处理(1) 时间步忽略 Softmax 规约计算效率虽然复杂度也是 (2⋅)但矩阵乘法高度优化实际速度远超 RNN可解释性强Attention 权重直观展示模型关注位置便于调试和分析堆叠扩展性残差连接 LayerNorm 支持深层网络100 层表达能力随深度指数增长一句话总结Transformer 用空间换时间通过 (2) 的 attention 计算换取了并行性和长程建模能力在硬件加速时代这是更优的 trade-off。4. 详细介绍 Self-Attention 机制包括本质、数学解释、具体计算步骤及时间复杂度。参考博客百度 | Transformer 模型详解本质Self-Attention 的本质是“用序列中的其他元素来增强目标元素的语义表示”通过计算序列中每个元素与所有元素之间的相关性注意力权重然后基于这些权重对相关信息进行聚合从而让模型更好地理解上下文。将序列中每个位置与所有位置进行相似度比较根据相似度加权聚合信息实现动态全连接图的构建。数学解释及具体计算步骤给定输入序列 [1,2,...,]其中 是维度为 的向量。计算 Q, K, V通过三个可训练的权重矩阵 ,,∈× 对输入 进行线性变换得到 Query、Key、Value 矩阵。,,计算相似度点积计算 Query 矩阵与 Key 矩阵的点积得到一个 × 的注意力分数矩阵 。⋅ 表示第 个词对第 个词的关注程度。缩放Scale将注意力分数除以 防止点积结果过大导致 Softmax 梯度消失。应用 Softmax对缩放后的矩阵在最后一个维度即对每个 Query 对应的所有 Key 的分数进行 Softmax 归一化得到最终的注意力权重矩阵 概率分布。()加权求和将注意力权重矩阵 与 Value 矩阵 相乘得到最终的输出矩阵 。时间复杂度Self-Attention 的时间复杂度是(2⋅)其中 是序列长度 是向量维度。⋅ 计算量为 (2⋅)。加权求和 ⋅ 计算量为 (2⋅)。时间复杂度分析这里直接利用结论m×n 矩阵与 n×k 矩阵相乘的时间复杂度是 O(mnk)因为最终结果矩阵里有 m×k 个元素每个元素是通过 n 次乘法 (n-1) 次加法得到的。操作计算复杂度说明Q/K/V 投影(3⋅⋅⋅)三个矩阵乘法(2⋅)核心瓶颈序列长度的平方Softmax(2)逐行计算加权 V(2⋅)一般假设 /ℎ总计(2⋅)与 RNN 的 (⋅2) 对比≪ 时更优空间复杂度(2) 存储 Attention 矩阵这是长文本如 100K token的主要挑战。5. 为什么要用 Multi-Head Attention切分为多头的作用是什么使用 Multi-Head Attention 的核心原因是让模型能够从不同角度、关注不同子空间的信息。切分为多头的作用捕获多维度的特征关系类似于卷积神经网络CNN中多个卷积核的作用不同的注意力头可以学习到不同类型的依赖关系。例如一个头可能主要关注语法结构如名词-动词关系另一个头可能关注长距离的语义指代如代词与其先行词还有一个头可能关注相邻词的局部信息。降低单次注意力的偏重风险如果不切分多头整个模型只能在一个单一的语义空间内计算平均的注意力权重这可能导致模型过度关注自身或其他一两个词而忽略了其他有用的信息。增强模型表达能力多头机制允许模型联合处理来自不同表示子空间的信息。最后将所有头的信息拼接起来通过一个线性变换融合成一个更丰富、更强大的特征表示。实现上Multi-Head 并不是循环计算多个头而是通过对 维度的切分将原来的大矩阵乘法变成多个小矩阵的并行乘法从而保持计算效率与单头相似。核心动机单头 Attention 的表达能力有限难以同时捕捉不同类型的语义关系。具体作用作用解释多子空间并行学习将 维空间切分为 ℎ 个 维子空间/ℎ每个 head 独立学习不同 aspect增强表达能力类似 CNN 的多通道特征不同 head 可关注语法关系、语义相似、指代消解、位置邻近等计算效率虽然总参数量相同但每个 head 的矩阵更小可并行计算且注意力矩阵更小× 但维度降低计算流程head_i Attention(XW_i^Q, XW_i^K, XW_i^V) # [n, d_k]MultiHead(Q,K,V) Concat(head_1,...,head_h)W^O # [n, h*d_k] [h*d_k, d_model] [n, d_model]总参数量4⋅2Q/K/V/O 各 ×与单头相同但分布更优。实际观察不同 head 确实学到不同模式有的关注局部相邻词有的关注全局远距离依赖有的关注特定语法关系Head Pruning可裁剪冗余 head 而不显著损失性能证明存在分工6. 计算 Attention 的 Softmax 之前为什么要除以根号 这是为了防止梯度消失也被称为缩放点积注意力Scaled Dot-Product Attention。原因假设 和 是独立的随机变量均值为0方差为1。那么它们的点积 ⋅∑1 的均值为0但方差变为 。未缩放时当 很大时点积结果会非常大方差大导致 Softmax 函数的输入落入梯度极小的饱和区域。这意味着 Softmax 之后正确的词概率接近1错误的词概率接近0但反向传播时梯度会非常小模型几乎无法学习。缩放后除以 可以将点积的方差拉回 1使得 Softmax 的输入落在梯度敏感的区域保证了训练过程的稳定性。7. 介绍一下 Transformer 的位置编码Positional Encoding还了解其他位置编码吗原始 Transformer 的位置编码原论文使用了三角函数的绝对位置编码Sinusoidal Positional Encoding。(,2)(/100002/)(,21)(/100002/)其中 是位置索引 是维度索引。作用通过不同频率的正余弦函数为每个位置生成一个唯一的向量。这种设计的优势在于它能够让模型轻易地学习到相对位置关系因为对于固定的偏移量 可以表示为 的线性变换。其他位置编码随着发展出现了很多更先进的编码方式主要分为绝对编码和相对编码可学习位置编码Learned Positional Embedding将位置编码视为可训练的参数矩阵。如 BERT、GPT 等模型使用。优点是灵活但缺点是外推性差即无法处理比训练时更长的序列。旋转位置编码RoPE是目前大模型如 LLaMA ChatGLM最常用的方法之一。它通过旋转矩阵乘法将相对位置信息直接注入到 Query 和 Key 的向量表示中。RoPE 具有良好的相对位置感知能力和较好的外推性。ALiBiAttention with Linear Biases这种方法不直接对 Embedding 加位置信息而是在 Attention 分数计算完成后根据 Query 和 Key 的距离加上一个预设的、不可学习的线性偏置项。其优点是极强的外推能力和极高的计算效率广泛应用于 BLOOM 等模型中。8. 介绍 QKV 的计算。如果在 Transformer 中去掉 K变成 QQV会有什么问题仅考虑编码器内部QKV 计算详解在 Transformer 中,, 是通过输入矩阵 分别与三个不同的权重矩阵 ,, 相乘得到的。代表当前词在询问什么。代表当前词有什么特征被询问。代表当前词实际提供的信息内容。如果去掉 K变成 QQV仅考虑 Encoder 内部计算形式Attentionsoftmax()问题分析问题具体说明对称性过强 是对称矩阵强制双向关系对称但语言中关系常不对称A 关注 B ≠ B 关注 A缺乏内容索引Q 既当查询又当索引导致查询与内容耦合。无法区分我要找 X和我有 X检索逻辑混乱表达能力骤降参数量减少少一个 且 的秩受限rank ≤ 无法建模复杂关系训练不稳定 的数值动态范围更难控制Softmax 更容易饱和等价于线性 Attention 退化数学上近似于对 V 做固定的二次型加权失去灵活性本质K 的存在实现了内容与查询的解耦是 Attention 机制检索-读取逻辑的关键。去掉 K模型退化为固定的自相关计算失去动态路由能力。9. Transformer 是 Encoder-Decoder 架构而 GPT 是 Decoder-only 架构为什么会演变成这种形式为什么生成式任务如 GPT通常舍弃 Encoder演变原因这种演变主要源于预训练任务目标和下游任务形式的变化。原始 Transformer诞生于机器翻译任务这是一个典型的 Seq2Seq 任务输入源语言和输出目标语言是完整的、但内容不同的句子。Encoder 负责理解整个输入句子Decoder 则负责基于输入理解逐个生成输出词。GPT 的 Decoder-onlyGPT 开创了“自回归语言建模”的预训练范式即“预测下一个词”。这个任务天然适合 Decoder-only 架构模型只能看到当前词之前的词通过 Masked Attention然后预测下一个词完美契合了生成任务的本质。BERT 的 Encoder-onlyBERT 使用的预训练任务是 Masked Language Model完形填空需要同时利用一个词的左右两侧上下文信息来预测被遮住的词因此它只需要 Encoder 来理解完整的上下文。生成式任务舍弃 Encoder 的原因任务本质匹配生成式任务的本质是无条件或基于提示Prompt的续写。这本质上就是一个自回归过程。Decoder-only 架构的 Masked Self-Attention 天生就是为此设计的它在生成时只能看到历史信息符合因果推断的逻辑。架构简化与扩展舍弃 Encoder 极大地简化了模型结构使得堆叠更多层、训练更大规模的模型变得更加容易和稳定。GPT 系列的成功证明了这种简洁架构的扩展能力。统一的任务表示Decoder-only 架构可以将各种不同的任务翻译、问答、摘要等都统一为“文本生成”的格式。只需要将任务描述和输入拼接成 Prompt 喂给模型模型就能以续写的方式生成答案实现大一统的通用能力。上下文学习In-Context LearningDecoder-only 架构在推理时能够灵活地利用输入 Prompt 中的示例来调整输出这种能力被称为上下文学习。Encoder-Decoder 模型由于对输入和输出的处理方式不同实现这种能力相对复杂。10. Transformer 的 FFN 层为什么会逐渐演变成 MOE 层这个我不懂虽然可以背过但不确定是正确的传统 Transformer 中的 FFN 层是密集的前馈网络参数量与隐层维度相关随着模型规模扩大其计算和参数量急剧增加。MoE混合专家层通过将单个 FFN 替换为多个并行的专家网络和一个门控网络实现稀疏激活每个 token 仅激活 top-k 个专家在保持计算量基本不变的前提下大幅增加模型参数量从而提升模型容量和性能。这种演变是为了在有限计算资源下扩大模型规模例如 Switch Transformer、GShard 等模型通过 MoE 结构显著提升了大语言模型的能力。11. MOE 层的负载均衡具体是怎么做的偏置项 b 是怎么训练的如何保证偏置项得到变换负载均衡Router 可能总是选少数几个受欢迎专家导致其他专家闲置Collapse 问题。为避免某些专家过载而其他闲置通常采用辅助损失auxiliary loss鼓励各专家被选中的次数均匀例如计算每个专家被选中的概率与均匀分布的交叉熵同时引入专家容量expert capacity限制每个专家处理的 token 数量超出部分被丢弃或重新路由还可通过动态调整门控的偏置项实现均衡。偏置项 b 的训练偏置项是门控网络中每个专家对应的可学习参数初始为 0。在前向时门控输出 logits 加上偏置后经 softmax 得到选择概率反向传播中通过梯度下降更新偏置项使其参与优化。保证偏置项变换偏置项作为模型参数通过常规优化器更新。负载均衡损失会间接影响偏置项使其向平衡专家负载的方向调整。此外有些方法如 GShard会根据专家实际处理 token 数量与均值的偏差直接更新偏置项以实现负载均衡。这两个看不懂12. 如何降低 Transformer 的计算复杂度常见的稀疏注意力变体有哪些Transformer 的自注意力复杂度为 O(n²d)n 为序列长度。可通过稀疏注意力、低秩近似等方法降低。常见稀疏注意力变体包括局部注意力如滑动窗口注意力Longformer每个 token 只关注附近窗口内的 token。分块注意力如 Reformer 的 LSH 注意力将序列分块并在块内或块间进行注意力。全局局部注意力如 BigBird 和 Longformer结合全局 token如 [CLS]与局部窗口。随机注意力如 BigBird 中部分 token随机连接增加信息流动。低秩近似如 Linformer 通过投影将序列长度降维复杂度 O(n)。核化方法如 Performer 使用随机特征映射FAVOR近似注意力复杂度 O(n)。这些方法通过减少注意力矩阵的计算量或近似计算来降低复杂度。13. 分析一下 Transformer 训练过程中显存占用和计算复杂度。显存占用主要包括模型参数、梯度、优化器状态和中间激活值。对于 Transformer 层中间激活值尤其是 attention 权重矩阵 形状为 [batch, heads, seq_len, seq_len]是长序列下的主要瓶颈。此外FFN 的中间层激活也占用显存。例如对于批次大小 b、序列长度 n、隐层维度 d、头数 h单层注意力权重占用 b×h×n² 个浮点数在长序列时极大。计算复杂度每层自注意力为 O(n²d)计算 QK 乘积和加权求和FFN 为 O(nd²)。总体每层复杂度 O(n²d nd²)。对于大模型d 较大但长序列时 n² 项主导。显存占用拆解训练时模型状态Model States- ZeRO 论文分类参数Parameters2×params 字节FP16/BF16梯度Gradients2×params 字节优化器状态Optimizer StatesAdam 需要 12×params 字节FP32 拷贝 动量 二阶矩激活值Activations- 与 batch size 和序列长度相关Attention 矩阵(2⋅⋅)batch size, 层数每层激活(⋅⋅)具体显存占用情况以 7B 模型为例CSDN | LLM 微调基础加载 / 微调一个 7B 模型到底需要多少显存计算复杂度FLOPs前向传播每层Self-Attention4⋅⋅2⋅2⋅⋅⋅2投影Attention计算输出投影FFN8⋅⋅⋅2通常 4总计(22)关键结论短序列FFN 主导(⋅2)长序列Attention 主导(2⋅)训练时反向传播额外 2 倍计算量14. Self-Attention 机制在多模态对齐上是否存在瓶颈有没有实际场景里注意力权重完全偏掉的情况总之是存在的。不同模态之间特征分布差异大直接 attention 到一起可能会出问题不懂多模态这些答案我不知道是否正确。多模态对齐瓶颈Self-Attention 处理单一模态内部的依赖无法直接建模跨模态对应关系。多模态任务通常需要跨模态注意力cross-attention或专用融合模块。此外不同模态特征分布、位置编码方式差异大直接拼接后使用 self-attention 难以有效对齐且长序列如图像 patch会加剧计算负担。注意力权重偏掉的情况实际训练中可能因初始化不当、数据分布不均或训练不稳定导致注意力权重集中在少数 token 上甚至完全偏向某一位置如 [CLS] 或 [SEP]造成信息丢失。例如模型过拟合或容量不足时注意力可能坍塌为稀疏分布。多模态对齐的瓶颈1. 模态异构性Modality Gap视觉特征CNN/ViT 输出与文本特征Token Embedding分布差异大直接拼接导致注意力选择性失明某一模态主导另一模态被忽略2. 粒度不匹配图像全局特征[CLS]或 patch 级16x16 区域文本token 级词/子词注意力权重在不对齐的粒度上难以建立有效关联3. 训练目标冲突对比学习CLIP拉近跨模态距离但生成任务VQA需要细粒度对齐单一注意力机制难以同时满足两种需求实际场景注意力权重完全偏掉的案例不确定是不是 LLM 生成的幻觉案例 1CLIP 的bag of words问题图像中有红色球在蓝色盒子旁边文本问球在哪里注意力权重均匀分布在所有物体上无法精确定位空间关系原因全局对比学习缺乏细粒度监督案例 2多模态大模型BLIP-2/LLaVA的幻觉图像实际内容一只猫在沙发上模型生成猫在桌子上错误注意力分析文本生成时视觉 token 的注意力权重被语言先验压制模型依赖训练记忆而非图像内容案例 3视频-文本对齐的时间偏置视频理解任务中模型过度关注开头帧忽略后续关键信息原因位置编码累积 自回归生成导致的注意力漂移解决方案跨模态注意力Q 来自文本KV 来自视觉Flamingo 的 Gated Cross-Attention细粒度对齐区域-词级别匹配GLIP对比学习生成联合训练BLIP 的 ITCITMLM 三任务15. 如何解决梯度消失和梯度爆炸问题梯度消失Vanishing Gradient原因激活函数的导数 1Sigmoid/Tanh多层连乘后梯度指数级减小解决方案方法原理应用残差连接Residual Connection()梯度可直接回传Transformer 每层必备LayerNorm稳定每层的分布防止激活值过小放在残差前或后Pre/Post Norm更好的初始化Xavier/Glorot、He 初始化保持方差恒定第一层 embeddingReLU/GELU 替代 Sigmoid导数在正区间为 1 或接近 1替代 Sigmoid门控机制LSTM/GRU 的遗忘门控制信息流RNN 时代方案不过最近也有 Gated Attention没看过 不懂梯度爆炸Exploding Gradient原因梯度 1多层连乘后指数级增大解决方案方法原理关键参数梯度裁剪Gradient Clipping设定阈值超过则缩放max_norm1.0常见权重衰减Weight DecayL2 正则化限制权重大小0.01更小的学习率直接限制参数更新幅度Warmup 策略Transformer 中的具体实践常用方法包括激活函数使用 ReLU、Leaky ReLU 等避免梯度饱和。残差连接允许梯度直接跳过非线性层缓解消失。归一化层BatchNorm 或 LayerNorm 稳定前向传播和梯度。权重初始化如 Xavier 或 He 初始化使各层输出方差稳定。梯度裁剪限制梯度范数防止爆炸。优化器如 Adam 自适应调整学习率稳定训练。预训练通过预训练获得良好初始化减少梯度问题。在 Transformer 中残差连接和 LayerNorm 是核心手段。Pre-Norm vs Post-NormPost-Norm原始LayerNorm(Attention())深层易梯度消失Pre-Norm主流LayerNorm(Attention())训练更稳定但可能表达能力略降关键背诵点现代 LLMGPT-3/LLaMA都用 Pre-Norm 梯度裁剪 Warmup 组合。16. 介绍一下 LayerNorm 和 BatchNorm 的区别计算维度BatchNorm 对每个特征维度在 batch 上归一化计算 batch 均值和方差LayerNorm 对每个样本的所有特征维度归一化跨特征维度 计算样本内均值和方差。适用场景BatchNorm 适用于 CV 等固定尺寸输入对 batch size 敏感LayerNorm 适用于 NLP 等变长序列所需要的 , 统计量单样本独立不依赖 batch因此 Transformer 采用 LayerNorm。训练与推理BatchNorm 在训练时使用 batch 统计量推理时使用全局统计量LayerNorm 训练和推理一致。依赖关系BatchNorm 依赖 batch 内样本LayerNorm 不依赖 batch。为什么 Transformer 不用 BN序列长度可变不同样本长度不同batch 统计无意义自回归生成推理时逐个生成 token无法预计算 batch 统计独立同分布假设破坏序列中不同位置 token 分布不同RMSNormLLaMA 使用去掉均值中心化只保留方差归一化Mean(2)⋅更快效果相当17. 在 Agent 多轮对话任务中Attention 的局限性体现在哪些方面长程依赖标准 self-attention 复杂度高难以处理超长对话历史导致早期信息丢失。记忆能力不足注意力缺乏显式记忆机制关键信息可能被遗忘尤其在多轮中。上下文漂移注意力易偏向近期对话忽略早期上下文造成状态不一致。推理效率低每次生成需重新计算整个历史延迟高。状态管理困难难以维护动态更新的对话状态需结合外部记忆或状态追踪。知识更新局限无法动态整合新知识需借助检索增强生成等方法。核心局限1. 上下文长度限制Context Window Limitation标准 LLM 支持 4K-128K token多轮对话 工具调用历史 长文档容易溢出表现早期对话信息被挤出窗口模型失忆2. 注意力稀释Attention Dilution长序列中Softmax 归一化导致每个 token 的注意力权重被稀释表现关键决策信息如用户初始需求在后续轮次中被大量中间 token 淹没令我联想到 Gated Attention 解决到 attention sink 问题。3. 位置编码的远程衰减RoPE/ALiBi 等相对位置编码远距离 token 的相对位置表示能力弱表现模型更关注近期对话忽略早期关键约束4. 缺乏显式状态管理每轮都重新计算全量 Attention没有 RNN 的隐状态压缩机制表现重复信息反复计算无法像人类一样形成记忆摘要5. 工具调用历史的噪声干扰Agent 执行多步工具调用返回的中间结果如 API 返回的 JSON包含大量噪声表现注意力被无关字段分散难以聚焦关键结果解决方案前沿方向方案原理RAG / 外部记忆将历史对话编码存入向量库按需检索Summarization 压缩定期将早期对话摘要化为 system promptMemory Transformer显式记忆槽如 个可学习的记忆 tokenStreaming Attention滑动窗口 全局摘要 token如 LongLLaMAHierarchical Attention先段内、后段间的层次化注意力

更多文章