当前位置: 首页 > news >正文

Transformer十问

一、Transformer如何解决梯度消失/爆炸问题

通过两个关键技术:

  1. 残差连接(Residual Connection)Output = LayerNorm(x + Sublayer(x))

  2. 层归一化(Layer Normalization):对单样本所有特征维度归一化。

二、Transformer的主要缺陷是什么?

  1. 计算复杂度:自注意力对序列长度L的时间复杂度为O(L²),长序列处理代价高(如10k+ tokens)。

  2. 内存占用:存储注意力矩阵需O(L²)空间,限制批处理大小。

三、Transformer如何催生了预训练语音模型(如BERT、GPT)?

  • Encoder派系(理解任务):
    • BERT:基于Transformer编码器,通过MLM+Next Sentence Prediction预训练。

  • Decoder派系(生成任务):
    • GPT系列:基于Transformer解码器,使用自回归语言建模预训练。

四、Transformer注意力机制公式为什么除以一个缩放因子\sqrt{d_{k}}

  • 问题根源:点积的方差膨胀

假设 Query(Q)和 Key(K)向量是维度为 d_k 的独立随机向量,每个分量均值为 0、方差为 1。

点积结果Q·K^T 的方差:Var(Q·K^T)=Var( {\textstyle \sum_{i=1}^{d_k}}q_i k_i )= d_k * Var(q_i k_i)

q_ik_i独立,则 Var(q_i k_i) = Var(q_i) * Var(k_i) = 1 \to Var(Q·K^T) = d_k

结论:点积结果的方差随d_k线性增长。

  • 方差过大的危害:Softmax 梯度消失

注意力权重通过 Softmax 计算:Attention Weights = Softmax(Q·K^T)

当 Q·K^T的值极大时

Softmax 会将大部分概率集中在少数几个元素上(接近 one-hot 分布)。

梯度问题

Softmax 在接近 one-hot 时梯度接近 0 → 反向传播时梯度消失,模型难以更新参数!

示例:

d_k=64,点积结果的标准差\approx \sqrt{64} =8。输入 Softmax 的值在 [-8, 8] 波动 → 极端值概率接近 1 或 0 → 梯度消失。

  • 缩放因子的作用:稳定方差

通过除以\sqrt{d_{k}}缩放点积结果:Score = (Q·K^T) /\sqrt{d_k}

缩放后的方差Var(Score) = Var(Q·K^T / \sqrt{d_k}) = d_k / (\sqrt{d_k})^2 = d_k / d_k = 1

效果:将点积结果的方差控制为 1 → 输入 Softmax 的值保持稳定范围 → 避免梯度消失

五、前馈神经网络(FFN)为什么用两层线性层+激活函数?

  • 结构公式FFN(x) = max(0, xW_1 + b_1)W_2 + b_2(原论文d_{model}=512, d_{ff}=2048

  • 设计意图

    • 第一层W_1将维度扩大4倍→增强非线性表示能力

    • ReLU激活引入稀疏性

    • 第二层W_2投影回原始维度→防止信息膨

  • 参数量占比:FFN占Encoder总参数量的70%(远大于注意力层)。

六、层归一化(LayerNorm)和残差连接(Residual Connection)在 Transformer 中出现的顺序有两种主流设计(Pre-Norm 和 Post-Norm),它们有何区别?各自优劣是什么?

  • Post-Norm(原始论文设计): 输出 = LayerNorm(x + Sublayer(x))

    • 即残差连接放在内部,归一化放在最外层。

    • 缺点: 在训练非常深的模型(如12层以上)时,梯度容易不稳定,导致训练困难,甚至需要精细的学习率热身(Warm-up)策略。

  • Pre-Norm(现在更常用): 输出 = x + Sublayer(LayerNorm(x))

    • 即先对输入进行归一化,再执行子层操作,最后加上残差。

    • 优点: 训练过程更加稳定,允许训练极深的模型(如100层),通常可以移除或减少 Warm-up 步骤。因为梯度可以直接通过恒等路径(Identity Path)回传,缓解了梯度消失问题。

    • 潜在缺点: 有研究表明 Pre-Norm 的最终性能可能略低于训练成功的 Post-Norm,但其稳定的优点使其成为当今大模型(如 GPT、LLaMA)的默认选择。

七、现代大型语言模型(LLMs)普遍只使用解码器(Decoder-Only)架构,而非完整的编码器-解码器架构。为什么?

这源于任务范式的转变和架构的简洁性优势。

  1. 统一的任务范式: LLMs 的核心范式是自回归语言建模(根据上文预测下一个词)。这是一个纯生成任务,解码器架构天生就是为此设计的。而编码器-解码器架构是为“序列到序列”(Seq2Seq)任务设计的,其中间有一个“编码”和“解码”的明确分离,比如翻译和摘要。

  2. 架构简洁性与效率: 只使用解码器架构更简单、参数更统一。训练时,只需要一套权重进行语言模型预训练,非常高效。而 Encoder-Decoder 结构有两套参数,可能更复杂。

  3. 涌现的通用能力: 研究发现,当解码器模型的规模足够大时,通过提示(Prompting)或指令微调(Instruction Tuning),它能够隐式地学会理解、分类、推理等传统上需要“编码”能力的任务,而无需显式的编码器。它通过生成答案的方式来“解决”各种任务。

  4. 成功的实践验证: GPT 系列的成功雄辩地证明了纯解码器架构在 scaling law 下的巨大潜力,使其成为了当前 LLM 的主流选择。T5 这种编码器-解码器架构更像是一个“多任务统一器”,但在通用能力上被证明不如纯解码器架构强大。

八、自注意力机制的计算复杂度为何是 Transformer 处理长序列的核心瓶颈?有哪些主流技术能有效降低其复杂度?

自注意力机制的复杂度瓶颈源于其全局依赖建模的方式,而降低复杂度的核心思路是 “减少无效注意力计算” 或 “用低成本方式近似全局注意力”。

(1)复杂度瓶颈的根源

自注意力对序列中每一个 token(如文本的词、图像的 patch)都需计算与其他所有 token 的注意力权重,其时间复杂度为 O(n²·d)(n 为序列长度,d 为 token 的特征维度):

  • 第一步 “Q・Kᵀ”(计算注意力得分):复杂度 O (n²・d)(Q/K 均为 n×d 矩阵,相乘后得到 n×n 的注意力矩阵);
  • 第二步 “softmax+Q・V”(权重归一化与特征加权):复杂度同样为 O (n²・d)。
    当 n 极大(如文本序列 n=10000、医学影像 patch 数 n=20000)时,n² 的增长会导致计算量和显存占用呈指数级上升,直接超出硬件承载能力。

(2)主流降复杂度技术

技术类型核心原理典型案例复杂度优化效果
稀疏注意力仅计算 token 与 “关键邻居” 的注意力(而非全局)Longformer(滑动窗口 + 全局稀疏)降至 O (n・d・w)(w 为窗口大小)
线性注意力用核函数(如随机投影)近似 Q・Kᵀ,避免 n² 计算Performer(正定性核近似)降至 O (n・d・log n)
分层注意力将长序列拆分为小段,先局部建模再全局聚合Transformer-XL(段级循环)降至 O (n・d)
注意力蒸馏用小模型学习大模型的注意力分布,缩减参数DistilBERT(保留 60% 参数)复杂度降低 40%+

九、Transformer 在小样本学习(Few-shot Learning)中面临 “参数冗余” 与 “数据依赖” 的双重挑战 —— 模型参数上亿但训练数据仅数十条,当前参数高效微调(PEFT)技术如何在保留预训练知识的同时,用少量数据适配下游任务?

传统全量微调(Fine-tuning)需更新 Transformer 所有参数,在小样本下易过拟合;PEFT 的核心是 “冻结大部分预训练参数,仅微调少量参数”,通过 “参数高效” 实现知识迁移,主流方案分为三类:

(1)前缀微调(Prefix Tuning)

  • 设计逻辑:在输入序列前插入一段 “可学习的前缀 token”(如 10-50 个虚拟 token),冻结 Transformer 主体参数,仅训练前缀 token 的嵌入向量。
  • 核心原理:前缀 token 可视为 “任务专属提示”,通过学习前缀,模型可在不改变主体结构的情况下,将预训练知识适配到新任务(如用前缀 “情感分析:” 引导模型判断文本情感)。
  • 优势:参数增量极小(仅前缀嵌入,约 10k-100k 参数),适合多任务场景(不同任务用不同前缀,共享主体模型)。

(2)适配器微调(Adapter Tuning)

  • 设计逻辑:在 Transformer 的每一层(如自注意力后、Feed-Forward 后)插入 “小型适配器模块”(如 Down-project→Activation→Up-project,维度从 d 降至 d/r,r 为压缩比),冻结主体参数,仅训练适配器。
  • 核心原理:适配器通过 “低维瓶颈” 学习任务专属特征,既能捕捉任务差异,又避免参数过多导致过拟合(如 r=16 时,适配器参数仅占主体的 1%-2%)。
  • 代表变体:LoRA(Low-Rank Adaptation),将适配器的权重矩阵分解为两个低秩矩阵(A×B,维度 d×r + r×d),进一步减少参数,被 ChatGPT、Stable Diffusion 广泛用于微调。

(3)提示微调(Prompt Tuning)

  • 设计逻辑:与前缀微调类似,但将 “可学习提示” 插入文本序列中(而非前缀),或直接优化 “离散提示模板”(如 “这篇文章的情感是 [正面 / 负面],因为它提到了 [MASK]”),仅训练提示相关参数。
  • 核心原理:通过优化提示,让模型利用预训练阶段的 “补全能力”(如 MLM)完成下游任务,无需调整模型主体,适合自然语言理解任务(如文本分类、NER)。

十、transformer的实现代码

将专门写一篇博客进行讲解。

http://www.lryc.cn/news/625726.html

相关文章:

  • Java试题-选择题(11)
  • OpenHarmony 之多模态输入子系统源码深度架构解析
  • 记录一次问题,点击详情时设置Editor不可用,点击修改时也不可用了
  • Node.js 在 Windows Server 上的离线部署方案
  • 如何将任意文件一键转为PDF?
  • Markdown to PDF/PNG Converter
  • UniApp 微信小程序之间跳转指南
  • 专题:2025母婴行业消费洞察与分龄营养趋势报告|附40 +份报告PDF、交互图表数据汇总下载
  • 微信小程序实现蓝牙开启自动播放BGM
  • Java技术总监的成长之路(技术干货分享)
  • CAD图纸如何批量转换成PDF格式?
  • 【动态规划:路径问题】最小路径和 地下城游戏
  • 【网络运维】Ansible roles:角色管理
  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • 点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
  • nuxt使用vue-echarts第三方插件报错document is not defined
  • 亚远景-ISO/PAS 8800认证:从框架到实践的合规路径与挑战
  • 2.Kotlin 集合 List 所有方法
  • Js逆向案例 Scrape Spa2(Webpack自吐)
  • Ansible 大项目管理实践笔记:并行任务、角色管理与负载均衡架构部署
  • 基于Python的宠物服务管理系统 Python+Django+Vue.js
  • 当机器猫遇上具身智能:一款能读懂宠物心思的AI守护者
  • XML 序列化与操作详解笔记
  • Gemini CLI 自定义主题配置
  • 块存储 对象存储 文件存储的区别与联系
  • es9.0.1语义检索简单示例
  • RNN(循环神经网络)和Transformer是处理自然语言处理(NLP)任务区别
  • 《用Proxy解构前端壁垒:跨框架状态共享库的从零到优之路》
  • 高校数字化转型实战:破解数据孤岛、构建智能指标体系与AI落地路径
  • C++代码解释:实现一个 mystring 类,用于表示字符串,实现构造函数,默认构造长度为 10 的空间,提供打印字符串,获取空间大小,修改内容的成员函数