负对数似然损失
本文由 gpt-4.1 生成,并由人工修改
参见:什么是最大似然估计,及其对损失函数的推导过程 | BiliBili
似然概率
似然概率(Likelihood)用来衡量在给定模型参数下,生成观察数据的可能性有多大。具体来说,在参数化概率模型中,我们假设数据 \(x\) 由一个参数为 \(\theta\) 的概率分布产生,那么观测到数据 \(x\) 的概率可以表示为:
这个概率被称为参数 \(\theta\) 对于数据 \(x\) 的似然。当我们将参数 \(\theta\) 看作变量、而观测值 \(x\) 固定时,\(P(x\mid\theta)\) 就构成了一个关于 \(\theta\) 的函数,我们称之为似然函数,即:
似然函数在最大似然估计(MLE)中起核心作用,通过调整参数 \(\theta\),使得似然函数 \(L(\theta)\) 达到最大,从而得到最有可能生成观测数据的参数估计值。
需要注意的是,似然概率表示的是“在参数为 \(\theta\) 的情况下,数据 \(x\) 出现”的概率,而不是“在数据 \(x\) 已发生的情况下,参数为 \(\theta\) 的概率”。这两者的区别在贝叶斯统计中尤为重要。
似然函数
假设你有一组观测数据 \(x_1, x_2, ..., x_n\),它们是从某个概率分布 \(p(x\mid\theta)\)(\(\theta\) 是参数)独立同分布采样得到的。似然函数是指在参数为 \(\theta\) 时,观测到这些数据的概率(或概率密度):
- \(L(\theta)\):似然函数,表示在参数 \(\theta\) 下,观测到数据 \(x_1, x_2, ..., x_n\) 的概率。
- \(p(x_1, x_2, ..., x_n \mid \theta)\):表示在参数 \(\theta\) 已知的情况下,观测到数据 \(x_1, x_2, ..., x_n\) 的概率。
- \(L(\theta)\) 本质上是一个函数,它不是“求概率”,而是“把参数 \(\theta\) 当作变量”,用于衡量不同参数 \(\theta\) 下,观测到当前数据的“合理性”或“可能性”有多大。
- 由于数据独立,可以把联合概率拆成单个概率的乘积。
- 我们关心“哪个 \(\theta\) 能让观测到的数据最有可能出现”,即 \(\theta^* = \operatorname*{argmax}_\theta L(\theta)\)。
对数似然
因为似然函数往往是许多概率的连乘,数值上容易下溢、计算困难,所以通常对其取对数,得到对数似然函数:
作用和意义
- 最大似然估计(MLE):在模型训练时,我们通常希望找到能最大化对数似然的参数 \(\theta\),这就是最大似然估计的思想。
- 对数似然在数值计算、梯度优化(如 PyTorch 中的损失函数)中更稳定、更方便。
应用举例
假设你的数据服从正态分布 \(N(\mu, \sigma^2)\),对数似然函数为:
进一步展开:
负对数似然损失
在深度学习中,优化模型参数是通过最小化模型在数据集上的损失得到的。也就是说,loss 越小越好。但是对于对数似然函数来说,它的结果越大,表示模型参数越好。因此我们在对数似然损失的前面加上一个负号,让它变成负对数似然损失(Negative Log Likelihood Loss,NLL Loss),这样我们只要使 NLL Loss 最小,就能得到最优的模型参数。