修正: deepseek 笔记 96 处块级公式改为多行写法(适配 SilverBullet 行首锚点), 索引脚本同步 _abstract 命名

This commit is contained in:
ylhan
2026-09-21 10:53:11 +08:00
parent f5b825bd4a
commit 19afe00a86
28 changed files with 486 additions and 130 deletions
@@ -24,11 +24,15 @@
MoE 层替换前馈网络(FFN),每层含多个结构相同的专家,词元按亲和度只被分配给其中一部分。第 $l$ 层第 $t$ 个词元的输出为
$$\mathbf{h}_{t}^{l}=\sum_{i=1}^{N}\left(g_{i,t}\text{FFN}^{n}_{i}(\mathbf{u}_{t}^{l})\right)+\mathbf{u}_{t}^{l},\qquad s_{i,t}=\text{Softmax}_{i}\left(\mathbf{u}_{t}^{l\top}\mathbf{e}_{i}^{l}\right)$$
$$
\mathbf{h}_{t}^{l}=\sum_{i=1}^{N}\left(g_{i,t}\text{FFN}^{n}_{i}(\mathbf{u}_{t}^{l})\right)+\mathbf{u}_{t}^{l},\qquad s_{i,t}=\text{Softmax}_{i}\left(\mathbf{u}_{t}^{l\top}\mathbf{e}_{i}^{l}\right)
$$
其中 $N$ 为专家总数,$g_{i,t}=s_{i,t}$ 当且仅当它进入 TopK 集合,否则为 0。DeepSeekMoE 另引入细粒度专家切分与共享专家隔离(共享专家处理所有词元、承载公共知识):
$$\mathbf{h}_{t}^{l}=\sum_{i=1}^{K_{s}}\text{FFN}^{s}_{i}(\mathbf{u}_{t}^{l})+\sum_{i=1}^{N}\left(g_{i,t}\text{FFN}^{n}_{i}(\mathbf{u}_{t}^{l})\right)+\mathbf{u}_{t}^{l}$$
$$
\mathbf{h}_{t}^{l}=\sum_{i=1}^{K_{s}}\text{FFN}^{s}_{i}(\mathbf{u}_{t}^{l})+\sum_{i=1}^{N}\left(g_{i,t}\text{FFN}^{n}_{i}(\mathbf{u}_{t}^{l})\right)+\mathbf{u}_{t}^{l}
$$
其中 $K_{s}$ 为共享专家数。
@@ -42,17 +46,23 @@ $$\mathbf{h}_{t}^{l}=\sum_{i=1}^{K_{s}}\text{FFN}^{s}_{i}(\mathbf{u}_{t}^{l})+\s
**专家相关性评分**:给出两种基于词元亲和度的度量。平均门控分数(ESFT-Gate)衡量专家对采样数据的平均亲和度:
$$g_{i}^{l}=\frac{1}{N_{s}}\sum_{j=1}^{N_{s}}\frac{1}{L_{j}}\sum_{k=1}^{L_{j}}g_{i,k}^{l}$$
$$
g_{i}^{l}=\frac{1}{N_{s}}\sum_{j=1}^{N_{s}}\frac{1}{L_{j}}\sum_{k=1}^{L_{j}}g_{i,k}^{l}
$$
词元选择比例(ESFT-Token)衡量专家被选中的词元占比:
$$r_{i}^{l}=\frac{1}{N_{s}}\sum_{j=1}^{N_{s}}\frac{1}{L_{j}}\sum_{k=1}^{L_{j}}\frac{\mathbb{1}\left(g_{i,k}^{l}>0\right)}{K}$$
$$
r_{i}^{l}=\frac{1}{N_{s}}\sum_{j=1}^{N_{s}}\frac{1}{L_{j}}\sum_{k=1}^{L_{j}}\frac{\mathbb{1}\left(g_{i,k}^{l}>0\right)}{K}
$$
其中 $\mathbb{1}(\cdot)$ 为指示函数、$K$ 为每词元激活的专家数;前者看亲和度强弱,后者看调用频率。
**专家选择与微调**:每层设阈值 $p\in(0,1]$,把专家按评分从高到低累加,直到累计占比超过 $p$,得到该层待训练专家集合 $E_{s}^{l}$:
$$\sum_{i\in E_{s}^{l}}R_{i}^{l}\geqslant p,\qquad R_{i}^{l}\in\{r_{i}^{l},\ g_{i}^{l}\}$$
$$
\sum_{i\in E_{s}^{l}}R_{i}^{l}\geqslant p,\qquad R_{i}^{l}\in\{r_{i}^{l},\ g_{i}^{l}\}
$$
关键:训练与推理时词元仍可路由到任意专家,但只有 $E_{s}^{l}$ 内专家会被更新,其余专家与模块全部冻结——既保留路由能力与专精结构,又把可训练参数压到极小。
@@ -23,7 +23,9 @@
论文把奖励模型方法拆成两个正交维度:**奖励生成范式**(标量 scalar、半标量 semi-scalar、生成式 generative)与**打分模式**(逐点 pointwise、成对 pairwise)。给定查询 $x$ 与回复 $\{y_i\}_{i=1}^n$:
$$\mathcal{R}=\begin{cases}\bm{S}&\text{(Scalar)}\\ (\bm{S},\bm{C})&\text{(Semi-Scalar)}\\ \bm{C}&\text{(Generative)}\end{cases}\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n\right)$$
$$
\mathcal{R}=\begin{cases}\bm{S}&\text{(Scalar)}\\ (\bm{S},\bm{C})&\text{(Semi-Scalar)}\\ \bm{C}&\text{(Generative)}\end{cases}\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n\right)
$$
逐点模式为每条回复单独给分 $\{S_i\}_{i=1}^n=f_{\mathrm{point}}(\mathcal{R},\{y_i\}_{i=1}^n)$,成对模式只挑出唯一最优回复 $\hat{y}=f_{\mathrm{pair}}(\mathcal{R},\{y_i\}_{i=1}^n)$。
@@ -39,13 +41,17 @@ $$\mathcal{R}=\begin{cases}\bm{S}&\text{(Scalar)}\\ (\bm{S},\bm{C})&\text{(Semi-
难点在于规模化通用奖励建模下难以预先造出有效原则,论文遂把原则视为奖励生成过程的一部分:
$$\{p_i\}_{i=1}^m\sim p_{\theta}\left(x,\{y_i\}_{i=1}^n\right),\quad \mathcal{R}=\bm{C}\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n,\{p_i\}_{i=1}^m\right)$$
$$
\{p_i\}_{i=1}^m\sim p_{\theta}\left(x,\{y_i\}_{i=1}^n\right),\quad \mathcal{R}=\bm{C}\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n,\{p_i\}_{i=1}^m\right)
$$
即两个函数共享同一模型(共用同一个语言头)。原则能依查询与回复自适应产生,质量与粒度可经后训练提升;规模化生成原则正是推理时扩展获得更细粒度奖励的前提。
第一阶段是**拒绝式微调(Rejective Fine-Tuning, RFT)**冷启动,让 GRM 学会按规定格式、面向各种输入类型生成原则与批判。与以往混用不同格式数据不同,这里统一用逐点格式处理任意条数回复:除通用指令数据外,用预训练 GRM 采样 $N_{\mathrm{RFT}}$ 次轨迹,拒绝预测错误与全部正确的样本。奖励被判为正确的条件是:
$$\begin{cases}\forall i\neq j,\ S_j>S_i,\ j=\arg\max_l\{r_l\}_{l=1}^n,&\text{if } n\ge 2\\ S_1=r_1,&\text{if } n=1\end{cases}$$
$$
\begin{cases}\forall i\neq j,\ S_j>S_i,\ j=\arg\max_l\{r_l\}_{l=1}^n,&\text{if } n\ge 2\\ S_1=r_1,&\text{if } n=1\end{cases}
$$
预训练 GRM 在有限采样配额下对部分样本难以生成正确奖励,故可选地做**提示采样(hinted sampling)**:在输入末尾追加「The best response is: Response ...」,每条只采一次、仅错误时拒绝;但提示采样会让批判「走捷径」,尤其在推理类任务上。
@@ -53,7 +59,9 @@ $$\begin{cases}\forall i\neq j,\ S_j>S_i,\ j=\arg\max_l\{r_l\}_{l=1}^n,&\text{if
在 RFT 之上用基于规则的在线 RL 继续微调,采用 GRPO 原始设定与基于规则的结果奖励:rollout 时依查询与回复生成原则和批判,抽取预测奖励后按准确性规则与真值比较。与 DeepSeek-R1 式做法不同,**这里不用格式奖励**,而用更大的 KL 惩罚系数保证格式、避免偏差:
$$\hat{r}_i=\begin{cases}1,&\text{if } n\ge 2 \text{ and } \forall i'\neq j',\ S_{j'}>S_{i'},\ j'=\arg\max_l\{r_l\}_{l=1}^n\\ 1,&\text{if } n=1 \text{ and } S_1=r_1\\ -1,&\text{otherwise}\end{cases}$$
$$
\hat{r}_i=\begin{cases}1,&\text{if } n\ge 2 \text{ and } \forall i'\neq j',\ S_{j'}>S_{i'},\ j'=\arg\max_l\{r_l\}_{l=1}^n\\ 1,&\text{if } n=1 \text{ and } S_1=r_1\\ -1,&\text{otherwise}\end{cases}
$$
该奖励鼓励 GRM 用在线优化的原则与批判区分最优回复,有利于推理时扩展;奖励信号可无缝取自任意偏好数据集。
@@ -61,7 +69,9 @@ $$\hat{r}_i=\begin{cases}1,&\text{if } n\ge 2 \text{ and } \forall i'\neq j',\ S
推理时算力通过并行采样扩大,温度 0.5。逐点 GRM 的投票即分数求和:
$$S_i^{*}=\sum_{j=1}^{k}S_{i,j},\quad \{p_{i,j}\}_{i=1}^{m_j}\sim p_{\theta}\left(x,\{y_i\}_{i=1}^n\right),\ \mathcal{R}_j=\bm{C}_j\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n,\{p_{i,j}\}_{i=1}^{m_j}\right)$$
$$
S_i^{*}=\sum_{j=1}^{k}S_{i,j},\quad \{p_{i,j}\}_{i=1}^{m_j}\sim p_{\theta}\left(x,\{y_i\}_{i=1}^n\right),\ \mathcal{R}_j=\bm{C}_j\sim r_{\theta}\left(x,\{y_i\}_{i=1}^n,\{p_{i,j}\}_{i=1}^{m_j}\right)
$$
单次分数只落在很小的离散区间(如 $\{1,\dots,10\}$),$k$ 次求和把奖励空间扩大 $k$ 倍,并让模型产出大量原则。论文的直觉是:每条原则可视为一个判断视角的代理,原则越多越能逼近真实分布;采样前打乱回复顺序以规避位置偏差。相比之下,半标量 RM 的平均投票方差过小,成对 GRM 的多数投票在无平局、缺定量分数时易偏差。