在语言模型监督式微调(SFT)中的 负对数似然(Negative Log-Likelihood, NLL)等价于最大化似然
在语言模型监督式微调(SFT)中的 负对数似然(Negative Log-Likelihood, NLL)等价于最大化似然
flyfish
θ^MLE=argmaxθL(θ)⏟极大似然估计(方法)实现最大化似然(目标)=argminθNLL(θ)⏟通过最小化负对数似然(工具)间接实现\underbrace{\hat{\theta}_{\text{MLE}} = \arg\max_{\theta} L(\theta)}_{\text{极大似然估计(方法)实现最大化似然(目标)}} = \underbrace{\arg\min_{\theta} \text{NLL}(\theta)}_{\text{通过最小化负对数似然(工具)间接实现}}极大似然估计(方法)实现最大化似然(目标)θ^MLE=argθmaxL(θ)=通过最小化负对数似然(工具)间接实现argθminNLL(θ)
想让模型贴合数据(目的)→ 转化为“最大化似然”的目标→ 用“极大似然估计(MLE)”方法求解参数→ 因工程问题(下溢、优化器),用“负对数似然 NLL (Negative Log-Likelihood, NLL)”作为损失函数→ 最小化NLL,间接达成最大化似然,最终让模型拟合数据。
术语 | 核心定位 | 定义/含义 |
---|---|---|
最大化似然(Maximize Likelihood) | 优化目标 | 找到模型参数θ\thetaθ,使得“模型生成训练数据的概率(即似然)”最大——本质是让模型贴合数据分布。 |
极大似然(Maximum Likelihood) | 方法/过程 | 通常指“极大似然估计(MLE)”,是“通过最大化似然来求解最优参数θ^\hat{\theta}θ^”的具体过程(数学方法)。 |
负对数似然(NLL) | 优化工具(损失函数) | 对“似然”取对数后加负号得到的函数,是“最大化似然”的“等价转化形式”,用于解决直接最大化似然的工程问题(如数值下溢)。 |
从数学看最小化NLL ≡ 最大化似然
要理解等价性,需先明确“似然函数”和“负对数似然”的定义及关系,这是核心逻辑基础:
1. 似然函数(Likelihood):模型贴合数据的概率
对于监督式微调的数据集 D={(x1,y1),(x2,y2),...,(xN,yN)}\mathcal{D} = \{(x_1,y_1), (x_2,y_2), ..., (x_N,y_N)\}D={(x1,y1),(x2,y2),...,(xN,yN)}(xxx 为输入文本,yyy 为对应的目标输出序列,如SFT中“指令-回答”对),语言模型(参数为 θ\thetaθ)生成该数据集的似然定义为:
L(θ;D)=∏(x,y)∈Dpθ(y∣x)\mathcal{L}(\theta; \mathcal{D}) = \prod_{(x,y) \in \mathcal{D}} p_\theta(y \mid x)L(θ;D)=(x,y)∈D∏pθ(y∣x)
其中 pθ(y∣x)p_\theta(y \mid x)pθ(y∣x) 是模型在输入 xxx 下生成目标序列 yyy 的概率。
“最大化似然”的目标是找到参数 θ∗\theta^*θ∗,使得 L(θ;D)\mathcal{L}(\theta; \mathcal{D})L(θ;D) 最大——即让模型尽可能“大概率生成训练数据中的目标序列”,本质是让模型拟合训练数据的分布。
2. 负对数似然(NLL):似然的“单调递减变换”
由于似然是多个概率(pθ(y∣x)∈[0,1]p_\theta(y \mid x) \in [0,1]pθ(y∣x)∈[0,1])的乘积,直接最大化易出现数值下溢(多个小于1的数相乘,结果趋近于0,计算机无法精确表示);同时,乘积的梯度计算复杂度高于求和。
为解决这些问题,引入“对数似然”(Log-Likelihood):利用对数函数的单调递增性(若 a>ba > ba>b,则 loga>logb\log a > \log bloga>logb),对似然取自然对数,将乘积转化为求和:
logL(θ;D)=∑(x,y)∈Dlogpθ(y∣x)\log \mathcal{L}(\theta; \mathcal{D}) = \sum_{(x,y) \in \mathcal{D}} \log p_\theta(y \mid x)logL(θ;D)=(x,y)∈D∑logpθ(y∣x)
此时“最大化对数似然”与“最大化似然”完全等价(因对数不改变单调性)。
而“负对数似然”是对对数似然取负:
NLL(θ;D)=−logL(θ;D)=−∑(x,y)∈Dlogpθ(y∣x)\text{NLL}(\theta; \mathcal{D}) = -\log \mathcal{L}(\theta; \mathcal{D}) = -\sum_{(x,y) \in \mathcal{D}} \log p_\theta(y \mid x)NLL(θ;D)=−logL(θ;D)=−(x,y)∈D∑logpθ(y∣x)
由于负号的引入,对数似然的最大化等价于负对数似然的最小化(若 logL1>logL2\log \mathcal{L}_1 > \log \mathcal{L}_2logL1>logL2,则 −logL1<−logL2-\log \mathcal{L}_1 < -\log \mathcal{L}_2−logL1<−logL2)。
综上,数学上可严格推导:
argmaxθL(θ;D)=argmaxθlogL(θ;D)=argminθNLL(θ;D)\arg\max_\theta \mathcal{L}(\theta; \mathcal{D}) = \arg\max_\theta \log \mathcal{L}(\theta; \mathcal{D}) = \arg\min_\theta \text{NLL}(\theta; \mathcal{D})argθmaxL(θ;D)=argθmaxlogL(θ;D)=argθminNLL(θ;D)
即“最小化NLL”与“最大化似然”是完全等价的优化目标。
监督式微调(Supervised Fine-Tuning, SFT)是用人工标注的数据(输入-输出对)来“微调”模型。
极大似然估计是通过最大化似然函数(或对数似然函数)来求解模型未知参数最优估计值的方法。
数据是 (x,y)(x, y)(x,y)对,比如 xxx是问题,yyy是正确答案。模型学习预测 yyy给定 xxx。
论文中的 LSFT(θ)=E(x,y)∼(X,Y)[−logpSθ(y∣x)]L_{\text{SFT}}(\theta) = \mathbb{E}_{(x,y) \sim (X,Y)} [-\log p_S^\theta(y|x)]LSFT(θ)=E(x,y)∼(X,Y)[−logpSθ(y∣x)]
这就是负对数似然(Negative Log-Likelihood, NLL)。
最小化这个损失 等价于 最大化似然。因为 −log-\log−log反转了最大化成最小化。
在训练中,模型调整参数 θ\thetaθ来最大化 pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)(学生模型预测正确 yyy的概率),这正是 MLE。
这里,似然是 pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)的乘积(对多个token)。我们最大化它,让模型“解释”数据最好。
详细说明
一、前置铺垫:语言模型与传统MLE场景
传统MLE(如苹果抽样)的核心是单参数→简单分布(伯努利/二项)→独立数据
语言模型的MLE是高维参数→序列生成分布→依赖型数据
要素 | 传统MLE(苹果抽样) | 语言模型MLE(文本训练) | 关键说明 |
---|---|---|---|
观测数据DDD | 独立数据点集合(如10个苹果的颜色:D={1,1,0,...}D=\{1,1,0,...\}D={1,1,0,...}) | 文本序列集合(如D={S1,S2,...,SM}D=\{S_1, S_2, ..., S_M\}D={S1,S2,...,SM},SSS是单条文本token序列) | 文本是依赖型数据:下一个token的生成依赖前序token(autoregressive特性),非独立同分布(i.i.d.),需用条件概率链描述。 |
模型参数θ\thetaθ | 单维/低维参数(如红苹果比例θ\thetaθ) | 神经网络的高维权重集合(如Transformer的Attention矩阵、全连接层权重) | θ\thetaθ维度通常为百万~百亿级,需通过梯度下降等数值优化方法更新,无法像传统MLE那样通过解析解求解。 |
概率模型p(⋅∣θ)p(\cdot|\theta)p(⋅∣θ) | 简单分布(伯努利:p(x∣θ)=θx(1−θ)1−xp(x|\theta)=\theta^x(1-\theta)^{1-x}p(x∣θ)=θx(1−θ)1−x) | 序列生成的条件概率模型(p(S∣θ)=∏t=1Tp(yt∣y1,...,yt−1,θ)p(S|\theta)=\prod_{t=1}^T p(y_t | y_1,...,y_{t-1}, \theta)p(S∣θ)=∏t=1Tp(yt∣y1,...,yt−1,θ),yty_tyt是第ttt个token) | 模型通过神经网络学习“给定前序token时,下一个token的概率分布”,本质是建模文本的联合概率。 |
MLE目标 | 最大化p(D∣θ)p(D|\theta)p(D∣θ)(数据在θ\thetaθ下的联合概率) | 最大化p(D∣θ)p(D|\theta)p(D∣θ)(所有训练文本在θ\thetaθ下的联合概率) | 逻辑不变:选择使“观测到的训练文本最可能发生”的参数θ\thetaθ。 |
二、语言模型预训练中MLE的表述:建模文本的联合概率
语言模型(如GPT系列)的预训练阶段,核心是通过MLE学习“文本的生成规律”,即让模型在给定前序token时,尽可能预测出正确的下一个token。需分“单条文本的似然”和“数据集的似然”两层定义:
1. 单条文本的似然:基于自回归的条件概率链
设单条文本SSS经过tokenizer(分词器)后转化为长度为TTT的token序列:S=[y1,y2,...,yT]S = [y_1, y_2, ..., y_T]S=[y1,y2,...,yT],其中yt∈Vy_t \in \mathcal{V}yt∈V(V\mathcal{V}V是token词汇表,如GPT-4的V\mathcal{V}V约10万)。
由于语言模型是自回归生成(生成yty_tyt时需依赖前序所有token y1,...,yt−1y_1,...,y_{t-1}y1,...,yt−1),根据概率的链式法则,单条文本SSS的联合概率可拆解为“条件概率的乘积”:
p(S∣θ)=p(y1,y2,...,yT∣θ)=p(y1∣θ)×p(y2∣y1,θ)×p(y3∣y1,y2,θ)×...×p(yT∣y1,...,yT−1,θ)
p(S|\theta) = p(y_1, y_2, ..., y_T | \theta) = p(y_1|\theta) \times p(y_2 | y_1, \theta) \times p(y_3 | y_1, y_2, \theta) \times ... \times p(y_T | y_1, ..., y_{T-1}, \theta)
p(S∣θ)=p(y1,y2,...,yT∣θ)=p(y1∣θ)×p(y2∣y1,θ)×p(y3∣y1,y2,θ)×...×p(yT∣y1,...,yT−1,θ)
符号解读:
- p(y1∣θ)p(y_1|\theta)p(y1∣θ):模型在“无任何前序token”时,生成第一个token y1y_1y1的概率(由模型的“起始embedding”或“位置编码”初始化);
- p(yt∣y1,...,yt−1,θ)p(y_t | y_1,...,y_{t-1}, \theta)p(yt∣y1,...,yt−1,θ):模型在“已生成前t−1t-1t−1个token y1,...,yt−1y_1,...,y_{t-1}y1,...,yt−1”的条件下,生成第ttt个token yty_tyt的概率(由神经网络计算:前序token的embedding输入Transformer,输出层通过Softmax转化为V\mathcal{V}V上的概率分布,p(yt∣...)p(y_t|...)p(yt∣...)是该分布中yty_tyt对应的概率值)。
此时,单条文本SSS的似然就是上述联合概率p(S∣θ)p(S|\theta)p(S∣θ)——它量化了“模型参数θ\thetaθ生成这条文本的可能性”。
2. 训练数据集的似然:独立样本的联合概率
预训练数据集D={S1,S2,...,SM}D = \{S_1, S_2, ..., S_M\}D={S1,S2,...,SM}包含MMM条独立的文本(不同文本之间无依赖,如“今天天气好”和“苹果很好吃”是独立的)。根据概率的乘法公理,数据集DDD的联合概率(即“数据集的似然”)是所有单条文本似然的乘积:
p(D∣θ)=∏m=1Mp(Sm∣θ)=∏m=1M(∏t=1Tmp(ym,t∣ym,1,...,ym,t−1,θ))
p(D|\theta) = \prod_{m=1}^M p(S_m|\theta) = \prod_{m=1}^M \left( \prod_{t=1}^{T_m} p(y_{m,t} | y_{m,1}, ..., y_{m,t-1}, \theta) \right)
p(D∣θ)=m=1∏Mp(Sm∣θ)=m=1∏M(t=1∏Tmp(ym,t∣ym,1,...,ym,t−1,θ))
符号解读:
- Sm=[ym,1,...,ym,Tm]S_m = [y_{m,1}, ..., y_{m,T_m}]Sm=[ym,1,...,ym,Tm]:第mmm条文本的token序列,TmT_mTm是其长度;
- 内层乘积∏t=1Tm\prod_{t=1}^{T_m}∏t=1Tm:第mmm条文本内部的自回归条件概率链;
- 外层乘积∏m=1M\prod_{m=1}^M∏m=1M:不同文本之间的独立似然乘积。
3. 预训练的MLE目标:最大化数据集似然
语言模型预训练的核心优化目标是找到使数据集似然p(D∣θ)p(D|\theta)p(D∣θ)最大的参数θ\thetaθ,即:
θ^MLE=argmaxθ p(D∣θ)=argmaxθ ∏m=1M∏t=1Tmp(ym,t∣ym,1,...,ym,t−1,θ)
\hat{\theta}_{\text{MLE}} = \arg\max_{\theta} \ p(D|\theta) = \arg\max_{\theta} \ \prod_{m=1}^M \prod_{t=1}^{T_m} p(y_{m,t} | y_{m,1}, ..., y_{m,t-1}, \theta)
θ^MLE=argθmax p(D∣θ)=argθmax m=1∏Mt=1∏Tmp(ym,t∣ym,1,...,ym,t−1,θ)
这正是MLE的标准定义——只不过参数θ\thetaθ是高维神经网络权重,似然函数是“两层乘积”(文本间独立乘积+文本内自回归条件概率乘积),而非传统MLE的“单一层乘积”。
三、SFT阶段:负对数似然(NLL)损失与MLE的严谨关联
监督式微调(SFT)是预训练模型之后的“任务适配阶段”,核心是用人工标注的(输入-输出)对(记为(x,y)(x, y)(x,y),如x=x=x=“红苹果有多少种?”,y=y=y=“红苹果主要有…3种”)微调模型,使其输出更贴合人类期望的“正确答案”。原表述中“最小化NLL等价于MLE”需要从“数学等价性”“损失函数设计逻辑”“实际训练细节”三方面严谨证明。
1. SFT中数据与模型的重新定义
首先明确SFT场景的核心要素(区别于预训练的“无监督文本”):
- SFT数据集DSFT\mathcal{D}_{\text{SFT}}DSFT:人工标注的(x,y)(x, y)(x,y)对集合,DSFT={(x1,y1),(x2,y2),...,(xN,yN)}\mathcal{D}_{\text{SFT}} = \{(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)\}DSFT={(x1,y1),(x2,y2),...,(xN,yN)};
xxx:输入prompt(如问题、指令),经tokenizer后为x=[x1,x2,...,xL]x = [x_1, x_2, ..., x_{L}]x=[x1,x2,...,xL](长度LLL);
yyy:目标输出序列(如正确答案),经tokenizer后为y=[y1,y2,...,yT]y = [y_1, y_2, ..., y_{T}]y=[y1,y2,...,yT](长度TTT); - 模型输入输出:SFT阶段,模型的输入是“x+分隔符+yx + 分隔符 + yx+分隔符+y的前缀”(如xxx后接
<|endofprompt|>
,再接y1,...,yt−1y_1,...,y_{t-1}y1,...,yt−1),输出是“给定xxx和yyy前缀时,下一个token yty_tyt的概率分布”,记为pSθ(yt∣x,y1,...,yt−1)p_S^\theta(y_t | x, y_1, ..., y_{t-1})pSθ(yt∣x,y1,...,yt−1)(下标SSS表示“学生模型”,以区分后续蒸馏中的“老师模型”); - 目标:模型需学习“给定输入xxx时,生成目标输出yyy的条件概率pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)”,并最大化这个概率(即让模型认为“xxx对应yyy是最可能的”)。
2. SFT中“似然”的严谨定义:条件似然pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)
SFT的似然不再是“无条件的文本联合概率”,而是“给定输入xxx时,输出yyy的条件似然”——因为SFT是“监督任务”,需强制模型在xxx的约束下生成yyy,而非自由生成文本。
根据自回归特性,yyy的条件似然可通过链式法则拆解为“token级条件概率的乘积”:
pSθ(y∣x)=pSθ(y1,y2,...,yT∣x,θ)=∏t=1TpSθ(yt∣x,y1,...,yt−1,θ)
p_S^\theta(y|x) = p_S^\theta(y_1, y_2, ..., y_T | x, \theta) = \prod_{t=1}^T p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta)
pSθ(y∣x)=pSθ(y1,y2,...,yT∣x,θ)=t=1∏TpSθ(yt∣x,y1,...,yt−1,θ)
与预训练的p(yt∣y1,...,yt−1,θ)p(y_t | y_1,...,y_{t-1}, \theta)p(yt∣y1,...,yt−1,θ)相比,这里多了“输入xxx”作为条件——模型在生成yty_tyt时,不仅依赖前序输出y1,...,yt−1y_1,...,y_{t-1}y1,...,yt−1,还需依赖输入xxx(实际训练中,xxx的token会与yyy的前缀token拼接后输入模型,共同影响yty_tyt的概率预测)。
3. SFT的MLE目标:最大化数据集的条件似然
SFT的MLE目标是“找到使所有(x,y)(x,y)(x,y)对的条件似然乘积最大的参数θ\thetaθ”,即:
θ^MLE-SFT=argmaxθ ∏(x,y)∈DSFTpSθ(y∣x)=argmaxθ ∏(x,y)∈DSFT∏t=1TpSθ(yt∣x,y1,...,yt−1,θ)
\hat{\theta}_{\text{MLE-SFT}} = \arg\max_{\theta} \ \prod_{(x,y) \in \mathcal{D}_{\text{SFT}}} p_S^\theta(y|x) = \arg\max_{\theta} \ \prod_{(x,y) \in \mathcal{D}_{\text{SFT}}} \prod_{t=1}^T p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta)
θ^MLE-SFT=argθmax (x,y)∈DSFT∏pSθ(y∣x)=argθmax (x,y)∈DSFT∏t=1∏TpSθ(yt∣x,y1,...,yt−1,θ)
这是MLE在“条件概率场景”下的标准应用——传统MLE最大化“无条件似然p(D∣θ)p(D|\theta)p(D∣θ)”,SFT的MLE最大化“条件似然p(DSFT∣θ)p(\mathcal{D}_{\text{SFT}} | \theta)p(DSFT∣θ)”(DSFT\mathcal{D}_{\text{SFT}}DSFT是(x,y)(x,y)(x,y)对集合),本质逻辑一致。
4. 负对数似然(NLL)损失:从最大化似然到最小化损失
直接最大化“似然乘积”存在两个技术问题:
- 数值下溢:大量小于1的概率(如token概率通常是10−3∼10−110^{-3} \sim 10^{-1}10−3∼10−1)相乘,结果会趋近于0,计算机无法精确存储;
- 优化适配:主流深度学习优化器(如Adam、SGD)是“最小化优化器”,需将“最大化目标”转化为“最小化目标”。
解决方法是对似然取自然对数并加负号,转化为“负对数似然(NLL)损失”,具体如下:
步骤1:对似然取对数,转化为加法(避免下溢)
由于对数函数ln(⋅)\ln(\cdot)ln(⋅)是严格单调递增函数,“maxp(DSFT∣θ)\max p(\mathcal{D}_{\text{SFT}}|\theta)maxp(DSFT∣θ)”等价于“maxlnp(DSFT∣θ)\max \ln p(\mathcal{D}_{\text{SFT}}|\theta)maxlnp(DSFT∣θ)”(似然最大时,对数似然也最大)。对数据集条件似然取对数:
lnp(DSFT∣θ)=ln(∏(x,y)∈DSFTpSθ(y∣x))=∑(x,y)∈DSFTlnpSθ(y∣x)
\ln p(\mathcal{D}_{\text{SFT}}|\theta) = \ln \left( \prod_{(x,y) \in \mathcal{D}_{\text{SFT}}} p_S^\theta(y|x) \right) = \sum_{(x,y) \in \mathcal{D}_{\text{SFT}}} \ln p_S^\theta(y|x)
lnp(DSFT∣θ)=ln(x,y)∈DSFT∏pSθ(y∣x)=(x,y)∈DSFT∑lnpSθ(y∣x)
再代入pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)的token级拆解:
lnp(DSFT∣θ)=∑(x,y)∈DSFT∑t=1TlnpSθ(yt∣x,y1,...,yt−1,θ)
\ln p(\mathcal{D}_{\text{SFT}}|\theta) = \sum_{(x,y) \in \mathcal{D}_{\text{SFT}}} \sum_{t=1}^T \ln p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta)
lnp(DSFT∣θ)=(x,y)∈DSFT∑t=1∑TlnpSθ(yt∣x,y1,...,yt−1,θ)
加法形式避免了“乘积下溢”,且计算更稳定。
步骤2:加负号,转化为最小化目标(适配优化器)
要将“最大化对数似然”转化为“最小化损失”,只需在对数似然前加负号(因为“maxA\max AmaxA”等价于“min(−A)\min (-A)min(−A)”):
minθ (−∑(x,y)∈DSFT∑t=1TlnpSθ(yt∣x,y1,...,yt−1,θ))
\min_{\theta} \ \left( - \sum_{(x,y) \in \mathcal{D}_{\text{SFT}}} \sum_{t=1}^T \ln p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta) \right)
θmin −(x,y)∈DSFT∑t=1∑TlnpSθ(yt∣x,y1,...,yt−1,θ)
步骤3:除以样本数,转化为“平均损失”(稳定训练)
为使损失值与数据集大小无关(避免样本数增多导致损失值无界增大),通常对损失取“数据集上的期望”(或“平均值”,在独立同分布假设下二者等价)。用期望符号E(x,y)∼DSFT\mathbb{E}_{(x,y) \sim \mathcal{D}_{\text{SFT}}}E(x,y)∼DSFT表示“对SFT数据集中的(x,y)(x,y)(x,y)对取平均”,最终得到SFT的NLL损失函数:
LSFT(θ)=E(x,y)∼DSFT[−∑t=1TlnpSθ(yt∣x,y1,...,yt−1,θ)]
\mathcal{L}_{\text{SFT}}(\theta) = \mathbb{E}_{(x,y) \sim \mathcal{D}_{\text{SFT}}} \left[ - \sum_{t=1}^T \ln p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta) \right]
LSFT(θ)=E(x,y)∼DSFT[−t=1∑TlnpSθ(yt∣x,y1,...,yt−1,θ)]
若进一步简化(将“token级求和”融入条件概率的对数),可写成原论文中的形式(隐含token级乘积的对数等于求和):
LSFT(θ)=E(x,y)∼DSFT[−lnpSθ(y∣x)]
\mathcal{L}_{\text{SFT}}(\theta) = \mathbb{E}_{(x,y) \sim \mathcal{D}_{\text{SFT}}} \left[ - \ln p_S^\theta(y|x) \right]
LSFT(θ)=E(x,y)∼DSFT[−lnpSθ(y∣x)]
最小化LSFT(θ)\mathcal{L}_{\text{SFT}}(\theta)LSFT(θ)等价于SFT阶段的MLE
等价关系:
argminθ LSFT(θ)=argminθ (−E[lnpSθ(y∣x)])=argmaxθ E[lnpSθ(y∣x)]=argmaxθ p(DSFT∣θ)
\arg\min_{\theta} \ \mathcal{L}_{\text{SFT}}(\theta) = \arg\min_{\theta} \ \left( - \mathbb{E} \left[ \ln p_S^\theta(y|x) \right] \right) = \arg\max_{\theta} \ \mathbb{E} \left[ \ln p_S^\theta(y|x) \right] = \arg\max_{\theta} \ p(\mathcal{D}_{\text{SFT}}|\theta)
argθmin LSFT(θ)=argθmin (−E[lnpSθ(y∣x)])=argθmax E[lnpSθ(y∣x)]=argθmax p(DSFT∣θ)
逻辑链:
最小化NLL损失 → 最大化对数似然的期望 → 最大化数据集的条件似然 → 对应SFT阶段的MLE目标。
似然是pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)的乘积的意思是SFT中的似然是“所有(x,y)(x,y)(x,y)对的pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)乘积”,而单个pSθ(y∣x)p_S^\theta(y|x)pSθ(y∣x)是“该对输出序列yyy的token级条件概率乘积”
SFT中NLL损失的实际训练两个细节
1. Padding Token的损失屏蔽
实际训练中,不同(x,y)(x,y)(x,y)对的输出序列yyy长度不同(如有的答案长20个token,有的长50个token),需用“Padding token”(如<|pad|>
)将所有yyy补到相同长度。但Padding token是“无意义的填充符号”,不应参与损失计算——因此在计算LSFT(θ)\mathcal{L}_{\text{SFT}}(\theta)LSFT(θ)时,需对Padding token对应的lnpSθ(yt∣...)\ln p_S^\theta(y_t|...)lnpSθ(yt∣...)项乘以“掩码(mask)”,使其贡献为0:
LSFT(θ)=E(x,y)∼DSFT[−1有效token数∑t=1Tmaskt⋅lnpSθ(yt∣x,y1,...,yt−1,θ)]
\mathcal{L}_{\text{SFT}}(\theta) = \mathbb{E}_{(x,y) \sim \mathcal{D}_{\text{SFT}}} \left[ - \frac{1}{\text{有效token数}} \sum_{t=1}^T \text{mask}_t \cdot \ln p_S^\theta(y_t | x, y_1, ..., y_{t-1}, \theta) \right]
LSFT(θ)=E(x,y)∼DSFT[−有效token数1t=1∑Tmaskt⋅lnpSθ(yt∣x,y1,...,yt−1,θ)]
其中maskt=1\text{mask}_t = 1maskt=1(若yty_tyt是有效token)或maskt=0\text{mask}_t = 0maskt=0(若yty_tyt是Padding token),除以“有效token数”是为了避免“长序列损失被过度放大”。
2. 模型输入的拼接方式
SFT阶段,模型并非分别输入xxx和yyy,而是将“xxx的token序列 + 分隔符token(如<|endofprompt|>
) + yyy的token序列”拼接成一个完整序列[x1,...,xL,sep,y1,...,yT][x_1,...,x_L, \text{sep}, y_1,...,y_T][x1,...,xL,sep,y1,...,yT],并采用“自回归掩码”(Transformer的因果掩码)确保:
- 生成y1y_1y1时,模型只能看到xxx和分隔符,看不到y2,...,yTy_2,...,y_Ty2,...,yT;
- 生成yty_tyt时,模型只能看到xxx、分隔符和y1,...,yt−1y_1,...,y_{t-1}y1,...,yt−1,看不到yt+1,...,yTy_{t+1},...,y_Tyt+1,...,yT。
这种拼接方式确保了pSθ(yt∣x,y1,...,yt−1)p_S^\theta(y_t | x, y_1,...,y_{t-1})pSθ(yt∣x,y1,...,yt−1)的物理意义——模型确实是在“输入xxx的约束下,逐步生成yyy的每个token”,而非“提前看到完整yyy进行作弊”。
在监督式微调(SFT)阶段,最小化该阶段的负对数似然损失(也就是LSFT(θ)\mathcal{L}_{\text{SFT}}(\theta)LSFT(θ)),与通过极大似然估计(MLE)确定SFT阶段的最优模型参数,这两个过程最终得到的最优模型参数完全一致,因此二者在寻找SFT最优参数的目标上是等价的。