返回
查看原链接原链接
X2小时34分52秒 · —

大语言模型与 Transformer 架构、神经网络基础详解

大语言模型与 Transformer 架构、神经网络基础详解

本讲座系统讲解了大语言模型(以 GPT-3 为代表的自回归模型)的底层技术原理,涵盖分词(Tokenization)与概率建模、自回归生成机制、Transformer 的注意力架构与 Masking 技巧、多类分类的损失函数与优化方法,以及神经网络中残差连接和层归一化的设计动机与效果。

核心要点

  • 自回归大语言模型的起点:OpenAI 2020 年发布 GPT-3,其采用自回归(autoregressive)范式,即逐 token 生成文本,每个新 token 依赖于之前已生成的所有 token。
  • 分词(Tokenization)是第一步:需要将文本转化为模型可处理的数值形式,最小单位是子词(subword),而非字符或完整单词。
  • 概率分解用链式法则:联合分布分解为条件概率乘积,避免对指数级序列空间逐一建模。
  • Transformer 核心组件:注意力层 + MLP 交替堆叠;注意力机制负责跨位置信息交换,MLP 逐位置独立处理。
  • 注意力机制的本质:通过 query、key、value 三个投影向量,让每个位置决定"注意"其他位置的哪些信息,并用权重加权求和。
  • 掩码(Masking)保证自回归性质:每个 token 只能依赖之前所有 token,不能看到未来 token。
  • 温度(Temperature)控制生成多样性:低温锐化分布趋向确定性,高温平滑分布鼓励多样性。
  • 训练损失为交叉熵/负对数似然;优化常用 SGD 或 Adam。
  • 残差块与层归一化是深层网络可训练、可收敛的关键设计。

详细解析

一、分词(Tokenization)与概率建模

为什么需要分词
  • Transformer 是数值架构模型,输入必须是数值形式,而原始数据是文本。
  • 第一步决定输入的最小单位是分词(tokenization)
字符级与词级分词的缺陷
分词粒度缺陷
字符级token 数量太多,生成需要太多步骤
词级长词和罕见词难以处理

词级分词的具体问题(以 "internationalisation" 为例)

  • 若把该词当作单个词处理,它太罕见,无法复用对 "internationalise" 的理解。
  • 若已经理解 "internationalise",应该能一定程度上理解 "internationalisation",即便没有见过更多相关数据。
  • 将二者视为完全不同词汇就无法复用理解。

新词问题(以 "LM modification" 为例)

  • 这是一个 2020 年后才出现的新词,若作为一个整体单元需见足够多次才能学会。
  • 若拆分为 "LM" 和 "modification" 两个 token,各自出现频率高且已被理解,组合即可高效理解整体。

子词分词的效率优势

  • 生物学长单词和德语复合长词本质上都是多个子词的组合。
  • 子词分词允许先理解每个子词,再高效理解其组合。
Tokenization 定义与词汇表
  • 有一个预定义的词汇表(vocabulary),是子词列表,将文本切分为子词序列的过程就是 tokenization。
  • 每个 token 对应一个 ID,即词汇表中的索引。
  • 词汇表大小:当前开源模型通常至少 100k tokens;Qwen 2.5 约 250k,可用约 8 字节表示每个 token。
  • Token 示例:
  • " blank dog"(带前导空格的 dog)是一个 token
  • " blank runs" 是一个 token
  • 逗号单独是一个 token
  • "happiness" 拆分结果涉及词根 + 后缀 "ness"
  • 每个模型有各自的 tokenizer,不同公司有不同的分词策略,不是所有模型共享同一分词器。
BPE(Byte Pair Encoding)算法概述
  • 构建词汇表的分词算法。
  • 基本思想:寻找最频繁出现的子词加入词汇表。
  • 贪心算法:先看单字符组合,找到最频繁单字符,再找最频繁双字符组合,逐步合并。
  • 讲话人未给出精确算法版本,感兴趣可查阅原始算法。
概率建模的必要性
  • 所有可能 token 序列的组合数是 |V| 的 T 次方(|V| 为词汇表大小,T 为序列长度)。
  • 无法为每个序列单独指定概率(不能作为离散分类分布处理,参数数量过多)。
  • 解决方式:用链式法则(chain rule)把联合分布分解为条件概率乘积。
  • 每个条件概率的选择空间只有 V 种,用 softmax 在 V 个选项上得到概率分布。
自回归生成机制
  • 生成从 BOS(begin of sentence) token 开始,依次采样 x₁, x₂, x₃...
  • 每个新生成的 token 回馈给 Transformer,继续采样下一个 token——这就是"自回归"名称的来源。
  • 也可以给定一段 prompt 作为前缀,从该处继续生成。
  • BOS token 并非在所有情况下都需要("Not always necessary, in some cases you don't do it"),但词汇表会预留特殊 token 配额。
文本转 token 序列及嵌入
  • 文本 → tokenizer 切出 token 序列 → 每个 token 对应 ID → 文本变为 ID 序列。
  • Embedding:每个 token 对应 d 维行向量,参数训练得到。从嵌入矩阵(V×d)读取对应行即可,不依赖上下文或其他 token。
  • 向量约定:讲座统一使用行向量(row vector),与 Python 代码实现一致(许多论文使用列向量)。
条件分布的参数形式
  • Pθ(x₁) = softmax(fθ(x₀)),从 BOS 输出得到第一个 token 分布
  • Pθ(x₂|x₁) = softmax(fθ(x₀, x₁)),依此类推
  • 一般形式:输出位置 t 的 logits 记为 u_t,它是输入 x₀ 到 x_{t-1} 的函数;Pθ(xt | x₁...x_{t-1}) = softmax(u_t) 的第 xt 个分量
Transformer 黑盒视角
  • 输入序列 x₁...xt(离散 ID)→ 每个 token 转为嵌入向量 e(x₁)...e(xt) → 通常在开头追加 BOS token(x₀)→ 嵌入序列输入 Transformer → 每个位置输出 logits 向量(维度为 V)→ softmax 得到下一个 token 的条件概率分布。
  • 因果性(causal)要求:u_t 仅为 x₀ 到 x_{t-1} 的函数,不能依赖后面 token——当前阶段是人为强调的约定,等到引入 Transformer 具体内部机制时才能保证。
关于 Claude Code 分词器的信息(未确证来源)
  • 据报道 Claude Code 更新了分词器,粒度更细,处理相同文本从约 1000 tokens 变为 1500 tokens。
  • 这意味着用户花费更多 token、支付更多费用。
  • 讲话人注明未亲自验证,属于未确证信息。

二、生成细节:温度、采样策略与训练目标

温度(Temperature)参数
  • 生成时可以对 logits 向量除以温度 t 后再做 softmax。
  • 操作不改变 token 相对大小顺序,但改变相对尺度。

温度对分布锐度的影响

温度效果
t 很小(接近 0)logits 差异放大,softmax 输出接近 one-hot,几乎总是取最大 logits 对应 token,趋于确定性
t = 0完全取最大 logits token(贪心解码,greedy decoding),完全确定性
t 很大(>1)logits 差异缩小,分布更平滑,概率更均匀分配,鼓励生成多样性

温度示例

  • 向量 [2, 1, -1] 的 softmax 结果约为 [0.7, 0.3, 0]。
  • 除以很小温度(如 t=0.01)后变为 [200, 100, -100],softmax 结果第一个约 0.99999,后两者几乎为 0。

示例说明与实际限制

  • 温度示例中用了不现实的大值(200, 100, -100),实际 token logits 量级通常在 [-10, 10] 左右。
  • t=0 时无法正常使用 softmax(分母为 0),实际实现中对应完全取最大值即贪心解码。
Top-K 采样
  • 只保留 logits 最高的 K 个 token,丢弃其余维度,然后在这些 token 上重新归一化概率分布。
  • 优点:避免生成概率太低的稀有 token,使生成更稳定。
  • 代价:可能忽略概率稍低但有意义的选择,限制生成多样性;可能错过合理但少见内容。
训练目标:负对数似然(Negative Log-Likelihood)
  • 对给定样本序列 x₁ 到 xT,损失为所有位置条件概率对数之和的负数:
  • $-log P_θ(x₁...xT) = -Σ_t log P_θ(x_t | x₁...x_{t-1})$
  • 每个条件概率即 softmax 向量中对应 x_t 索引的那一项。
  • 优化可用 SGD 或 Adam 等优化器。
Transformer 高层结构
  • 输入 token 向量序列 → 交替应用注意力层和 MLP 层:
  1. 注意力层:输入一个序列的向量,输出另一个等长序列的向量
  2. MLP:每个位置向量独立经过多层感知机(通常两三层网络)
  3. 重复"注意力→MLP"块
  4. 最终输出每个位置向量,经线性变换和 softmax 得到 logits
  • MLP 在所有位置共享相同参数,逐位置独立处理(无位置间相互作用)。
  • 唯一让模型捕捉序列相关性的机制就是注意力层
为什么不能只用 MLP?
  • 方案一:逐 token 独立 MLP——各位置完全无交互,无法理解序列依赖或组合含义。
  • 方案二:巨大 MLP 接收整个拼接序列向量(所有 token 拼成一个长向量):
  • 参数数量随词表大小和序列长度急剧增加(序列长度可能达数百万)
  • 参数量依赖训练时序列长度,训练固定长度后无法适配不同长度测试输入
  • 因此需要引入结构化先验(注意力机制)来降低复杂度,同时保持参数与序列长度无关。
处理序列时的其他考量
  • 卷积网络处理序列问题"实际上在一定程度上可行",但效果不如注意力方法,后续课程会讨论其他高效变体。

三、注意力机制详解

单头注意力(Single-Head Attention)的直觉
  • 让位置 t 的向量在输出时参考其他位置上下文,决定哪些位置信息更有用,加权整合。
  • 为每个位置计算 query(查询)key(键)value(值) 三个向量:
  • query 与各个位置的 key 做内积,衡量相关性(注意力分数)
  • softmax 将分数转为注意力权重(概率分布)
  • 权重对各个位置的 value 向量加权求和,生成输出
  • "Attention" 名称来源于此机制实际在决定每个位置应该"注意"哪些位置。
计算步骤(以位置 t 为例)
  1. 对每个位置 i 计算投影:
  • q_i = h_i · W_Q
  • k_i = h_i · W_K
  • v_i = h_i · W_V
  1. 目标位置 t 与每个位置 i 的注意力分数:score(i) = q_t · k_iᵀ(内积,标量)
  2. 所有分数组成向量,softmax 转为概率分布 p_t₁...p_tT(非负且和为 1)
  3. 输出:h_t^out = Σ_i p_ti · v_i(对 value 向量加权求和)
维度与矩阵形式
  • 输入 h 为 1×d 行向量;W_Q、W_K、W_V 为 d×d' 矩阵;乘积为 1×d' 向量。
  • 所有 Query 组织为 T×d_h 矩阵,Keys 和 Values 同样组织为矩阵。
  • 输出公式:softmax(QKᵀ/√c) × V
  • 除以 √c 是缩放因子(scaling factor),用于稳定训练,但本讲座强调暂时可不必过于关注。
掩码(Masking):强制自回归性质
  • 问题:原始架构中时间 t 输出依赖所有输入(包括 t 之后),不具自回归性质。
  • 解决:在 QKᵀ/√c 矩阵的上三角部分(未来位置)加上负无穷。
  • 原理:任意数加负无穷等于负无穷;softmax 中 e^(负无穷) = 0,被掩码项系数变为 0,其余项重新归一化和为 1。
  • 效果:每个位置的输出只是对当前位置及之前位置的 V 向量的线性组合。
  • 适用条件:掩码只适用于需要自回归性质的模型;如双向编码器任务则不需要。

掩码矩阵示意

  • 上三角全部设为负无穷
  • 例:Q₁K₂ᵀ 和 Q₁K₃ᵀ 无效(Q₁ 不应看到 K₂、K₃)
  • Q₂K₁ᵀ、Q₂K₂ᵀ 有效,Q₂K₃ᵀ 无效
多头注意力(Multi-Head Attention)
  • 动机:不同头的权重矩阵(W_Q、W_K、W_V)不同,每个头做某种特殊类型的工作。例如一个头可能试图找出段落中哪些实体重要,另一个头可能试图找出过去段落的冲突情绪。
  • 完整流程
  1. 输入经多个单头注意力副本(不同权重矩阵),并行运行
  2. 每个头产生一组输出向量序列
  3. 所有头输出按位置拼接
  4. 乘投影矩阵得到该位置最终输出
  • 头的数量:最多约 100 个,取决于模型规模,具体因架构和任务而异(讲话人承认不知道不同具体模型中的确切数量)。
残差连接与归一化(完整模块图)
  • 注意力之后有归一化层(通常用 RMSNorm),然后经过 MLP,将残差加回去,类似残差网络。
  • 存在 Pre-normPost-norm 两种方式(在注意力之前或之后加残差)。
计算复杂度与内存问题
  • 时间复杂度:对每个位置计算 T 个内积,总操作数为 T² × d_h,对 T 是平方级依赖。
  • 若序列长度 T 为一百万,则需要一万亿次操作,这是"禁止性的"。
  • 这是长上下文问题的根源之一——像 ChatGPT 或 Claude 需要压缩上下文,否则计算效率太差。
  • 缓解方式
  • Flash Attention:不需要一次性计算完整 T×T 矩阵再与 V 相乘,可分块计算,减少内存占用
  • 其他 Transformer 变体可将对 T 的依赖降低到接近线性,但具体哪种方案被 OpenAI/Anthropic 实际采用并不公开
  • 权衡:改变架构改善 T² 依赖会降低表达能力,可能损失部分性能。

四、多类分类与参数优化

多类分类的模型定义
  • 标签 y 是离散选择,取值范围 1 到 K。
  • 模型 h(映射输入 x ∈ R^d 到 K 个数值)输出 K 维向量,这些数值称为 logits
  • 通过 Softmax 将 logits 转化为概率分布:
  • P(y=j|x) = exp(h_θ(x)_j) / Σ_k exp(h_θ(x)_k)
  • 损失函数:负对数似然,在多类分类情形等价于交叉熵损失(Cross Entropy Loss)
  • L_CE = -log[exp(h_y) / Σ_k exp(h_k)]
  • 总损失定义:L(θ) = (1/N) Σ L_CE(h(x_i), y_i),优化目标是找到使损失最小化的 θ。
回归与高斯噪声假设
  • 若假设模型输出为 h_θ(x) 加上高斯噪声(ε ~ N(0, σ²)),则负对数似然化简为均方误差(Mean Square Error)
  • 缩放常数不影响优化结果。
交叉熵名称来源
  • 交叉熵损失的数学形式实际是两个概率分布(模型预测分布 P_θ 与真实标签分布 P*)之间的交叉熵。
梯度下降(GD)与随机梯度下降(SGD)
  • 梯度下降更新规则:θ ← θ − η∇J(θ),每次需计算整个数据集平均梯度。
  • SGD 更新规则:从 {1,...,N} 均匀采样一个样本 j,θ ← θ − η∇J_j(θ)。
  • SGD 近似在期望意义下是无偏的(梯度的期望等于全量梯度)。
为什么用 SGD 而非全量梯度下降
  1. 计算全量梯度代价极高(数据集规模可达百万甚至万亿级别)
  2. 各样本梯度高度相关,无需全部计算即可判断更新方向
  3. 优化过程中无需每一步完全精确,小幅扰动可被后续更新校正
小批量 SGD(Mini-batch SGD)
  • 实际中不在每次只采样一个样本(噪音太大),也不使用全量数据(计算太贵)。
  • 折中选取一个小批量样本计算梯度。
  • 大批量能更好利用 GPU 并行计算资源(例如 1 万块 GPU,如果每次只处理一个样本,大部分 GPU 空闲)。
  • 数据规模时间变化:约 2015 年典型数据集约一百万个样本;到 2026 年左右可能已有约一万亿个 token 量级数据。
非凸优化的未决问题
  • 对非凸函数,梯度下降可能陷入局部极小值。
  • 有观点认为 SGD 随机性可帮助跳出局部极小值,但社区普遍不认同。
  • 更主流假设:高维非凸函数中"坏的"局部极小值很少,甚至所有局部极小值都接近全局极小值。
  • 理论依据有限:高维空间中局部极小值需梯度为零且 Hessian 半正定,条件苛刻,局部极小值数量有限。
  • 有些论文在特定情形下可证明局部极小值数量与全局极小值相同,但一般情形下很难计数。此为尚未解决的问题
教学案例
  • 住房价格预测:面积与价格关系通常先缓慢增长、后趋于线性,说明线性模型不足以拟合,需要非线性模型。

五、从线性到非线性:激活函数与 MLP

引入非线性函数的动机
  • 模型不能只生成线性函数,至少允许生成曲线。
  • 房价不可能为负,需要把线性函数低于零部分截断为零:f(x) = max(wx + b, 0)。
ReLU(Rectified Linear Units,整流线性单元)
  • 数学形式:ReLU(t) = max(t, 0)
  • 本质:正半平面为线性函数(斜率 1),负半平面为 0。
  • 没有 ReLU 时就是线性函数;有 ReLU 才改变函数形状。
  • "激活"名称与生物神经网络相关:神经元接收刺激其响应是非线性的;刺激低于阈值无反应,高于阈值才被激活/触发。
  • 生物准确性反思:ReLU 并不精确对应生物神经元——生物中更接近 Sigmoid;Sigmoid 在深度学习早期更常用,但后来因各种原因被认为效果不佳(原因后文讨论)。
其他激活函数
名称说明
Sigmoid早期深度学习使用,后被 ReLU 替代
Leaky ReLU零点左侧有小斜率
SiLU平滑型激活函数
GELU定义式为 x·Φ(x)(Φ 为标准正态累积分布函数),不是严格非线性,零点附近有微小下凹后上升
  • 大多数激活函数递增(不严格如此);零点左侧通常接近 0 但不一定完全为 0。
  • 选择哪种激活函数"有点像一种魔法"——没有完全确定的理论解释,稳定性问题需试错。
高维推广
  • 输入 x ∈ R^d,参数 w ∈ R^d(称为权重向量,后续会变成权重矩阵),b 为偏置(标量)。
  • 模型定义:ReLU(wᵀx + b),输入高维向量,输出标量。
房价预测的中间特征示例
  • 原始输入如 x₁ 面积、x₂ 卧室数、x₃ 邮编、x₄ 待定。
  • 真正影响价格的是原始数据之外的中间变量,如"步行便利度"(Walkability)和"学校质量"(School Quality)。
  • 它们都是原始输入的非线性函数,最终价格是这些中间变量的线性组合。
两层网络的形式化定义
  1. 设输入 x₁,...,xD
  2. 定义中间变量 a₁ = ReLU(w₁ᵀx + b₁),a₂ = ReLU(w₂ᵀx + b₂),...,a_M = ReLU(w_Mᵀx + b_M)
  3. 最终输出:hθ(x) = w₂'ᵀa + b₂(所有 aᵢ 的线性组合加偏置)

矩阵向量简化写法

  • a = ReLU(W₁x + b₁),其中 W₁ 每一行是 w₁₁ᵀ 到 w₁ₘᵀ,整个矩阵维度 M×D
  • ReLU 应用到向量时是逐元素(entrywise)操作
  • 第二层输出 = W₂ᵀa + b₂

参数标识约定:不同层用不同 W 和 b,上用标方括号区分——W[1]、b[1] 为第一层参数,W[2]、b[2] 为第二层参数。

抽象化简化

  • 将"矩阵乘法 + 偏置" z = Wx + b 记为仿射变换
  • 激活函数记为 σ
  • 单层计算:σ(Wz + b)
  • 多层堆叠:σ(W₂σ(W₁z + b₁) + b₂)
参数数量统计(两层网络)
参数维度参数数量
第一层权重 W₁M×DM×D
第一层偏置 b₁MM
第二层权重 W₂N×MN×M
第二层偏置 b₂NN
  • 输入维度 D 由数据决定(固定);中间维度 M 可自由选择,只需保证相邻层矩阵乘法维度兼容。
可视化方式
  • 节点连线图(输入 x₁~xD 连到中间变量 a₁~aM,再连到下一层)——在理解原理前容易造成困惑
  • 更抽象方式:输入 x → 矩阵乘法 → σ → 矩阵乘法 → σ → …
  • 现在论文通常直接画 "x → MLP"
维度变化趋势
  • 通常中间维度比输入维度小。
  • 语言模型中初始词汇量可能达 25 万,中间维度通常缩小到 2K (2048)。
  • 视觉任务中初始输入为 RGB 三通道的 256×256 图像,也需要缩小维度。
MLP 术语
  • MLP(多层感知机,Multi-Layer Perceptron):统称术语,通常封装 1~2 层"仿射变换 + 激活"的组合。
  • 网络层数 = 仿射变换(矩阵乘法)的个数。
待讨论问题
  • Sigmoid 效果不佳的具体原因
  • 深度学习"竞赛"(competition)相关原因——留待后文讨论

六、残差块与层归一化

残差块(Residual Block)定义
  • 在网络层输出上重新加回该层的输入:输出为 σ(Z) + Z(而非单独的 σ(Z))。
  • 不改变维度——输入输出维度完全相同。
  • 被加回的 Z 不一定是原始输入,也可以是某个中间层输出;残差块可堆叠多次。
  • 两个相加分支没有使用相同权重矩阵,分别由不同层计算而来。
残差网络整体结构(如 ResNet)
  • 先通过一层将输入维度变换到中间维度
  • 然后应用大量堆叠的残差块
  • 最后用一层将维度变换到目标输出维度
  • 本质上就是许多残差块的堆叠应用
  • 2015 年:残差块在著名 ResNet 论文中被引入
残差块的原始动机
  • 核心推理链:假设中间层 Z 已非常接近目标标签 Y,则不应让网络重新学习完整映射 Y = σ(Z),而应显式建模差异。
  • 数学推导:如果相信 Y − Z ≈ σ(Z),将 Z 移到等号另一边得 Y = σ(Z) + Z——正好是残差块表达式。
  • 实践中通常用一至两层(而非直接函数)建模该差异。
  • 设计选择本质:是否显式保留 Z 项是建模假设的选择,"除此之外没有更深刻的东西"。
残差网络为何有效的多种解释(未决问题)
  1. 残差更简单:如果 Z 已接近 Y,残差本身数值很小,预测差值比直接预测原始标签更简单。
  2. 优化视角:有研究(包括讲话人本人的论文)认为添加 Z 项使优化问题在某种程度上有更好的条件数(better conditioned)。
  • 每种解释都有一定道理,但难以从根本原理确定哪一种是唯一正确的——存在多个候选解释,难以判定孰对孰错
  • 实践中残差块用 2~3 层效果最佳(尝试过 2 层、3 层、L 层),原因未从根本原理层面完全理解。
层归一化(Layer Norm):原始版本步骤
  1. 计算经验均值 μ̂ 和经验标准差 σ̂
  2. 归一化:(Z − μ̂) / σ̂,数据变为均值 0、方差 1
  3. 引入可训练参数 β 和 γ:β + γ·(Z − μ̂) / σ̂,输出均值为 β、标准差为 γ
RMS Norm(简化版本)
  • 后续研究发现不需要减去均值,只需除以标准差:
  • σ̂ = √(1/m · ΣZᵢ²)
  • β + γ·(Z / σ̂)
  • 减去均值(shift)这一步可以被省略,只保留除以方差的归一化。
  • γ 仍需保留,β 是否保留是可选项。
设计哲学
  • 关键思想不是强制将数据归一化为确切标准正态(均值 0、方差 1)。
  • 而是先归一化到标准形式,然后留下可训练参数 γ、β,让模型在训练过程中自行决定最终缩放和偏移。
缩放不变性(Scaling Invariance)
  • 核心性质:LN(αZ) = LN(Z)——输入乘任意标量 α,输出不变(除非同时改变 β、γ 参数;测试时这些参数固定)。
  • 无论模型权重矩阵或输入数据被如何缩放,输出都不受影响(合理近似程度下)。
  • 实际好处
  1. 避免数值爆炸:过去调参时常遇到层数加深后输出越来越大(如 10²⁰ 量级)的爆炸问题,归一化后不再遇到此问题。
  2. 简化初始化:不再需要极其小心地初始化权重——过去初始化不当会导致前向传播数值爆炸。
卷积网络(本讲座跳过)
  • 讲座备注中包含卷积网络内容,因时间原因以及大语言模型领域主要以 Transformer 为主而未展开。
  • 卷积网络在实际中除非常硬核的视觉任务外使用不多——现在人们大量使用 Transformer。
限制与未决问题
  • 残差网络有效的确切机理仍未完全定论(存在多种解释)。
  • 2~3 层残差块最佳的原因未从根本上理解。
  • 层归一化梯度问题:前向传播是缩放不变的,但梯度并非严格缩放不变;层归一化将部分数值稳定性问题转移到优化阶段(关于梯度的缩放不变性仍是更复杂的课题)。

总结

本讲座系统性地建立了从文本输入到模型训练/生成的完整技术链路:分词(子词级)→ 概率建模(链式法则 + softmax)→ 自回归生成 → Transformer 注意力机制(含掩码与多头扩展)→ 多类分类损失与优化 → 非线性激活函数与 MLP 堆叠 → 残差连接与层归一化。每个环节都说明了其设计动机、数学形式、实际效果与局限。核心技术洞察包括:子词分词使罕见词可复用常见子词理解、注意力是序列关系建模的必要条件(MLP 无法实现跨位置交互)、温度控制生成多样性、残差与归一化解决深层网络训练稳定性、SGD 在高维非凸问题中的有效性依赖"坏局部极小值稀少"假设。多个问题仍未完全解决(残差网络有效机理、SGD 跳出局部极小值的机制、激活函数选择的依据等),属于开放研究问题。