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

在语言模型监督式微调(SFT)中的 负对数似然(Negative Log-Likelihood, NLL)等价于最大化似然

在语言模型监督式微调(SFT)中的 负对数似然(Negative Log-Likelihood, NLL)等价于最大化似然

flyfish

θ^MLE=arg⁡max⁡θL(θ)⏟极大似然估计(方法)实现最大化似然(目标)=arg⁡min⁡θ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)Dpθ(yx)
其中 pθ(y∣x)p_\theta(y \mid x)pθ(yx) 是模型在输入 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θ(yx)[0,1])的乘积,直接最大化易出现数值下溢(多个小于1的数相乘,结果趋近于0,计算机无法精确表示);同时,乘积的梯度计算复杂度高于求和。

为解决这些问题,引入“对数似然”(Log-Likelihood):利用对数函数的单调递增性(若 a>ba > ba>b,则 log⁡a>log⁡b\log a > \log bloga>logb),对似然取自然对数,将乘积转化为求和:
log⁡L(θ;D)=∑(x,y)∈Dlog⁡pθ(y∣x)\log \mathcal{L}(\theta; \mathcal{D}) = \sum_{(x,y) \in \mathcal{D}} \log p_\theta(y \mid x)logL(θ;D)=(x,y)Dlogpθ(yx)
此时“最大化对数似然”与“最大化似然”完全等价(因对数不改变单调性)。

而“负对数似然”是对对数似然取负:
NLL(θ;D)=−log⁡L(θ;D)=−∑(x,y)∈Dlog⁡pθ(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)Dlogpθ(yx)
由于负号的引入,对数似然的最大化等价于负对数似然的最小化(若 log⁡L1>log⁡L2\log \mathcal{L}_1 > \log \mathcal{L}_2logL1>logL2,则 −log⁡L1<−log⁡L2-\log \mathcal{L}_1 < -\log \mathcal{L}_2logL1<logL2)。

综上,数学上可严格推导:
arg⁡max⁡θL(θ;D)=arg⁡max⁡θlog⁡L(θ;D)=arg⁡min⁡θ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)[−log⁡pSθ(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θ(yx)]
这就是负对数似然(Negative Log-Likelihood, NLL)。
最小化这个损失 等价于 最大化似然。因为 −log⁡-\loglog反转了最大化成最小化。
在训练中,模型调整参数 θ\thetaθ来最大化 pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)(学生模型预测正确 yyy的概率),这正是 MLE。
这里,似然是 pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)的乘积(对多个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θ)1x序列生成的条件概率模型(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(yty1,...,yt1,θ)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}ytVV\mathcal{V}V是token词汇表,如GPT-4的V\mathcal{V}V约10万)。

由于语言模型是自回归生成(生成yty_tyt时需依赖前序所有token y1,...,yt−1y_1,...,y_{t-1}y1,...,yt1),根据概率的链式法则,单条文本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(y2y1,θ)×p(y3y1,y2,θ)×...×p(yTy1,...,yT1,θ)
符号解读:

  • 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(yty1,...,yt1,θ):模型在“已生成前t−1t-1t1个token y1,...,yt−1y_1,...,y_{t-1}y1,...,yt1”的条件下,生成第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=1Mp(Smθ)=m=1M(t=1Tmp(ym,tym,1,...,ym,t1,θ))
符号解读:

  • 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}^Mm=1M:不同文本之间的独立似然乘积。
3. 预训练的MLE目标:最大化数据集似然

语言模型预训练的核心优化目标是找到使数据集似然p(D∣θ)p(D|\theta)p(Dθ)最大的参数θ\thetaθ,即:
θ^MLE=arg⁡max⁡θ p(D∣θ)=arg⁡max⁡θ ∏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=1Mt=1Tmp(ym,tym,1,...,ym,t1,θ)
这正是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,...,yt1),输出是“给定xxxyyy前缀时,下一个token yty_tyt的概率分布”,记为pSθ(yt∣x,y1,...,yt−1)p_S^\theta(y_t | x, y_1, ..., y_{t-1})pSθ(ytx,y1,...,yt1)(下标SSS表示“学生模型”,以区分后续蒸馏中的“老师模型”);
  • 目标:模型需学习“给定输入xxx时,生成目标输出yyy的条件概率pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)”,并最大化这个概率(即让模型认为“xxx对应yyy是最可能的”)。
2. SFT中“似然”的严谨定义:条件似然pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)

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θ(yx)=pSθ(y1,y2,...,yTx,θ)=t=1TpSθ(ytx,y1,...,yt1,θ)
与预训练的p(yt∣y1,...,yt−1,θ)p(y_t | y_1,...,y_{t-1}, \theta)p(yty1,...,yt1,θ)相比,这里多了“输入xxx”作为条件——模型在生成yty_tyt时,不仅依赖前序输出y1,...,yt−1y_1,...,y_{t-1}y1,...,yt1,还需依赖输入xxx(实际训练中,xxx的token会与yyy的前缀token拼接后输入模型,共同影响yty_tyt的概率预测)。

3. SFT的MLE目标:最大化数据集的条件似然

SFT的MLE目标是“找到使所有(x,y)(x,y)(x,y)对的条件似然乘积最大的参数θ\thetaθ”,即:
θ^MLE-SFT=arg⁡max⁡θ ∏(x,y)∈DSFTpSθ(y∣x)=arg⁡max⁡θ ∏(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)DSFTpSθ(yx)=argθmax (x,y)DSFTt=1TpSθ(ytx,y1,...,yt1,θ)
这是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. 数值下溢:大量小于1的概率(如token概率通常是10−3∼10−110^{-3} \sim 10^{-1}103101)相乘,结果会趋近于0,计算机无法精确存储;
  2. 优化适配:主流深度学习优化器(如Adam、SGD)是“最小化优化器”,需将“最大化目标”转化为“最小化目标”。

解决方法是对似然取自然对数并加负号,转化为“负对数似然(NLL)损失”,具体如下:

步骤1:对似然取对数,转化为加法(避免下溢)

由于对数函数ln⁡(⋅)\ln(\cdot)ln()严格单调递增函数,“max⁡p(DSFT∣θ)\max p(\mathcal{D}_{\text{SFT}}|\theta)maxp(DSFTθ)”等价于“max⁡ln⁡p(DSFT∣θ)\max \ln p(\mathcal{D}_{\text{SFT}}|\theta)maxlnp(DSFTθ)”(似然最大时,对数似然也最大)。对数据集条件似然取对数:
ln⁡p(DSFT∣θ)=ln⁡(∏(x,y)∈DSFTpSθ(y∣x))=∑(x,y)∈DSFTln⁡pSθ(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)DSFTpSθ(yx)=(x,y)DSFTlnpSθ(yx)
再代入pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)的token级拆解:
ln⁡p(DSFT∣θ)=∑(x,y)∈DSFT∑t=1Tln⁡pSθ(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)DSFTt=1TlnpSθ(ytx,y1,...,yt1,θ)
加法形式避免了“乘积下溢”,且计算更稳定。

步骤2:加负号,转化为最小化目标(适配优化器)

要将“最大化对数似然”转化为“最小化损失”,只需在对数似然前加负号(因为“max⁡A\max AmaxA”等价于“min⁡(−A)\min (-A)min(A)”):
min⁡θ (−∑(x,y)∈DSFT∑t=1Tln⁡pSθ(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)DSFTt=1TlnpSθ(ytx,y1,...,yt1,θ)

步骤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=1Tln⁡pSθ(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=1TlnpSθ(ytx,y1,...,yt1,θ)]
若进一步简化(将“token级求和”融入条件概率的对数),可写成原论文中的形式(隐含token级乘积的对数等于求和):
LSFT(θ)=E(x,y)∼DSFT[−ln⁡pSθ(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θ(yx)]

最小化LSFT(θ)\mathcal{L}_{\text{SFT}}(\theta)LSFT(θ)等价于SFT阶段的MLE

等价关系:
arg⁡min⁡θ LSFT(θ)=arg⁡min⁡θ (−E[ln⁡pSθ(y∣x)])=arg⁡max⁡θ E[ln⁡pSθ(y∣x)]=arg⁡max⁡θ 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θ(yx)])=argθmax E[lnpSθ(yx)]=argθmax p(DSFTθ)
逻辑链:
最小化NLL损失 → 最大化对数似然的期望 → 最大化数据集的条件似然 → 对应SFT阶段的MLE目标。

似然是pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)的乘积的意思是SFT中的似然是“所有(x,y)(x,y)(x,y)对的pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)乘积”,而单个pSθ(y∣x)p_S^\theta(y|x)pSθ(yx)是“该对输出序列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对应的ln⁡pSθ(yt∣...)\ln p_S^\theta(y_t|...)lnpSθ(yt∣...)项乘以“掩码(mask)”,使其贡献为0:
LSFT(θ)=E(x,y)∼DSFT[−1有效token数∑t=1Tmaskt⋅ln⁡pSθ(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[有效token1t=1TmasktlnpSθ(ytx,y1,...,yt1,θ)]
其中maskt=1\text{mask}_t = 1maskt=1(若yty_tyt是有效token)或maskt=0\text{mask}_t = 0maskt=0(若yty_tyt是Padding token),除以“有效token数”是为了避免“长序列损失被过度放大”。

2. 模型输入的拼接方式

SFT阶段,模型并非分别输入xxxyyy,而是将“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,...,yt1,看不到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θ(ytx,y1,...,yt1)的物理意义——模型确实是在“输入xxx的约束下,逐步生成yyy的每个token”,而非“提前看到完整yyy进行作弊”。

在监督式微调(SFT)阶段,最小化该阶段的负对数似然损失(也就是LSFT(θ)\mathcal{L}_{\text{SFT}}(\theta)LSFT(θ)),与通过极大似然估计(MLE)确定SFT阶段的最优模型参数,这两个过程最终得到的最优模型参数完全一致,因此二者在寻找SFT最优参数的目标上是等价的。

http://www.xdnf.cn/news/1376803.html

相关文章:

  • 软考-系统架构设计师 管理信息系统(MIS)详细讲解
  • 为什么编码智能体可以重塑开发范式?
  • 【Mascaret】QGIS中Mascaret插件的使用
  • ESP8266:Arduino学习
  • 高并发内存池(12)-ThreadCache回收内存
  • 【HTML】隐藏滚动条但保留功能
  • 什么是AI+?什么是人工智能+?
  • redis---set详解
  • ICCV 2025 | 清华IEDA提出GUAVA,单图创建可驱动的上半身3D化身!实时、高效,还能捕捉细腻的面部表情和手势。
  • 《MongoDB 常用命令详解:从数据库操作到高级查询》
  • Windows/Linux 环境下 Jmeter 性能测试的安装与使用
  • 未成功:使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)
  • Linux学习-TCP并发服务器构建
  • 在 Windows 上部署 Go 语言开发环境
  • 数据分析编程第五步:数据准备与整理
  • JoyAgent-JDGenie开源多智能体系统详解:架构、部署与企业级应用案例
  • 5G NR学习笔记 预编码(precoding)和波束赋形(beamforming)
  • 嵌入式第三十九天(TCP多任务并发)
  • QT应用层项目20250822
  • MAX系列FPGA型号对比及低功耗特性分析
  • 【Linux 小实战】自定义 Shell 的编写
  • 把CentOS 7默认yum源改成腾讯云镜像
  • 移动端(微信等)使用 vConsole调试console
  • Web漏洞
  • Vue-24-利用Vue3的element-plus库实现树形结构数据展示
  • 一文详解 LangChain4j AiServices:自动代理实现大模型交互
  • 【datawhale组队学习】RAG技术 -TASK05 向量数据库实践(第三章3、4节)
  • 如何使用windows实现与iphone的隔空投送(AirDrop)
  • linux部署overleaf服务器
  • HarmonyOS布局实战:用声明式UI构建自适应电商卡片