负对数似然(Negative Log Likelihood, NLL)的理解:推导与应用

简介

在统计学和机器学习中,负对数似然(NLL) 是一个用于参数估计和优化问题中常用的概念。它是概率理论和优化的桥梁,帮助我们通过找到使观测数据最有可能的参数来拟合模型。


1. 似然函数

似然函数(Likelihood Function) 用来衡量在不同的模型参数下,观测到给定数据的可能性有多大。假设我们有:

  • 一个数据集 D = { x 1 , x 2 , … , x n } \mathcal{D} = \{x_1, x_2, \dots, x_n\} D={x1,x2,,xn}
  • 一个由概率密度(或质量)函数 P ( x ∣ θ ) P(x|\theta) P(xθ) 定义的统计模型,其中 θ \theta θ 代表模型的参数。

似然函数 L ( θ ) L(\theta) L(θ) 定义为给定参数下观测到数据的联合概率(或密度):

L ( θ ) = P ( D ∣ θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta) = P(\mathcal{D}|\theta) = \prod_{i=1}^{n} P(x_i|\theta) L(θ)=P(Dθ)=i=1nP(xiθ)

注意:我们假设数据点是独立同分布(i.i.d.),因此联合概率可以表示为各个数据点概率的乘积。


2. 对数似然函数

直接处理似然函数在数值上可能会不稳定,特别是当数据量很大时,因为会涉及到很多概率的乘积(这些概率可能是非常小的数)。为了简化计算,我们取似然函数的自然对数,得到对数似然函数(log-likelihood function)

ℓ ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} \log P(x_i|\theta) (θ)=logL(θ)=i=1nlogP(xiθ)

对数将乘积转换为和,这在计算上和分析上都更容易处理。


3. 负对数似然(NLL)

在参数估计中,我们的目标是找到能够最大化似然函数的参数值。这种方法被称为最大似然估计(MLE)。然而,在机器学习中的优化算法通常涉及的是最小化而非最大化。为了与这些算法保持一致,我们定义了负对数似然(NLL)

NLL ( θ ) = − ℓ ( θ ) = − ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \text{NLL}(\theta) = -\ell(\theta) = -\sum_{i=1}^{n} \log P(x_i|\theta) NLL(θ)=(θ)=i=1nlogP(xiθ)

最小化NLL等价于最大化对数似然,从而间接地最大化了似然函数。


4. NLL的推导

为了理解NLL是如何推导出来的,我们可以通过一个通用的例子来说明。

步骤1:定义似然函数

对于独立同分布的观测数据 x i x_i xi

L ( θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta) = \prod_{i=1}^{n} P(x_i|\theta) L(θ)=i=1nP(xiθ)

步骤2:取对数,得到对数似然

ℓ ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \ell(\theta) = \log L(\theta) = \sum_{i=1}^{n} \log P(x_i|\theta) (θ)=logL(θ)=i=1nlogP(xiθ)

步骤3:定义负对数似然

NLL ( θ ) = − ℓ ( θ ) = − ∑ i = 1 n log ⁡ P ( x i ∣ θ ) \text{NLL}(\theta) = -\ell(\theta) = -\sum_{i=1}^{n} \log P(x_i|\theta) NLL(θ)=(θ)=i=1nlogP(xiθ)

步骤4:构建优化问题

为了找到最佳的参数 θ ∗ \theta^* θ,我们最小化NLL:

θ ∗ = arg ⁡ min ⁡ θ NLL ( θ ) \theta^* = \arg\min_{\theta} \text{NLL}(\theta) θ=argθminNLL(θ)


5. NLL的例子

例子1:高斯分布

假设每个数据点 x i x_i xi 来自一个均值为 μ \mu μ,方差为 σ 2 \sigma^2 σ2 的高斯分布:

P ( x i ∣ μ , σ 2 ) = 1 2 π σ 2 exp ⁡ ( − ( x i − μ ) 2 2 σ 2 ) P(x_i|\mu, \sigma^2) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) P(xiμ,σ2)=2πσ2 1exp(2σ2(xiμ)2)

计算NLL:

  1. 对数似然:

    ℓ ( μ , σ 2 ) = ∑ i = 1 n ( − 1 2 log ⁡ ( 2 π σ 2 ) − ( x i − μ ) 2 2 σ 2 ) \ell(\mu, \sigma^2) = \sum_{i=1}^{n} \left( -\frac{1}{2} \log(2\pi \sigma^2) - \frac{(x_i - \mu)^2}{2\sigma^2} \right) (μ,σ2)=i=1n(21log(2πσ2)2σ2(xiμ)2)

  2. 负对数似然:

    NLL ( μ , σ 2 ) = − ℓ ( μ , σ 2 ) = n 2 log ⁡ ( 2 π σ 2 ) + 1 2 σ 2 ∑ i = 1 n ( x i − μ ) 2 \text{NLL}(\mu, \sigma^2) = -\ell(\mu, \sigma^2) = \frac{n}{2} \log(2\pi \sigma^2) + \frac{1}{2\sigma^2} \sum_{i=1}^{n} (x_i - \mu)^2 NLL(μ,σ2)=(μ,σ2)=2nlog(2πσ2)+2σ21i=1n(xiμ)2

最小化:

  • 为了找到最优的 μ \mu μ σ 2 \sigma^2 σ2,我们对NLL分别对 μ \mu μ σ 2 \sigma^2 σ2 求偏导数,令其为0,求解。
例子2:伯努利分布

对于二元数据 x i ∈ { 0 , 1 } x_i \in \{0,1\} xi{0,1},其成功概率为 p p p

P ( x i ∣ p ) = p x i ( 1 − p ) 1 − x i P(x_i|p) = p^{x_i} (1 - p)^{1 - x_i} P(xip)=pxi(1p)1xi

计算NLL:

NLL ( p ) = − ∑ i = 1 n ( x i log ⁡ p + ( 1 − x i ) log ⁡ ( 1 − p ) ) \text{NLL}(p) = -\sum_{i=1}^{n} \left( x_i \log p + (1 - x_i) \log(1 - p) \right) NLL(p)=i=1n(xilogp+(1xi)log(1p))

最小化:

  • 类似于高斯分布的情况,我们对NLL对 p p p 求导,令其为0,求解 p p p

6. NLL在机器学习中的应用

作为损失函数

在机器学习模型中,特别是在分类任务中,NLL常常作为训练过程中要最小化的损失函数。

  • 二分类(逻辑回归): 使用从伯努利分布推导的NLL。
  • 多分类(Softmax回归): 使用从多项式分布推导的NLL,通常称为交叉熵损失
优化算法

诸如梯度下降及其变体(如随机梯度下降、Adam等)使用NLL对模型参数的梯度来逐步更新参数。


7. 使用NLL的优势

  • 凸性: 对于许多模型,NLL是一个凸函数,保证任何局部最小值都是全局最小值。
  • 数值稳定性: 取对数可以避免非常小的概率导致的下溢问题。
  • 加法性: 数据点的加和结构允许简单的mini-batch训练和并行计算。

8. 与交叉熵损失的关系

在分类任务中常用的交叉熵损失是NLL的特例。

对于真实标签 y i y_i yi 和预测概率 y ^ i = P ( y i ∣ θ ) \hat{y}_i = P(y_i|\theta) y^i=P(yiθ)

交叉熵损失 = − ∑ i = 1 n y i log ⁡ y ^ i \text{交叉熵损失} = -\sum_{i=1}^{n} y_i \log \hat{y}_i 交叉熵损失=i=1nyilogy^i

y i y_i yi 是one-hot编码的向量, y ^ i \hat{y}_i y^i 是模型的预测概率时,这等同于NLL。


9. 使用NLL的实际步骤

  1. 定义模型: 选择合适的概率分布(如高斯分布、伯努利分布、多项式分布)。
  2. 计算似然函数: 根据模型写出 P ( x i ∣ θ ) P(x_i|\theta) P(xiθ)
  3. 推导NLL: 对似然函数取负对数。
  4. 计算梯度: 求解 ∇ θ NLL ( θ ) \nabla_{\theta} \text{NLL}(\theta) θNLL(θ) 以用于优化算法。
  5. 优化参数: 使用优化算法最小化NLL,得到最优参数。

10. 例子:训练一个逻辑回归模型

模型:

P ( y i = 1 ∣ x i , θ ) = σ ( θ T x i ) = 1 1 + e − θ T x i P(y_i = 1|x_i, \theta) = \sigma(\theta^T x_i) = \frac{1}{1 + e^{-\theta^T x_i}} P(yi=1∣xi,θ)=σ(θTxi)=1+eθTxi1

NLL:

NLL ( θ ) = − ∑ i = 1 n [ y i log ⁡ σ ( θ T x i ) + ( 1 − y i ) log ⁡ ( 1 − σ ( θ T x i ) ) ] \text{NLL}(\theta) = -\sum_{i=1}^{n} \left[ y_i \log \sigma(\theta^T x_i) + (1 - y_i) \log (1 - \sigma(\theta^T x_i)) \right] NLL(θ)=i=1n[yilogσ(θTxi)+(1yi)log(1σ(θTxi))]

梯度:

∇ θ NLL ( θ ) = − ∑ i = 1 n ( y i − σ ( θ T x i ) ) x i \nabla_{\theta} \text{NLL}(\theta) = -\sum_{i=1}^{n} (y_i - \sigma(\theta^T x_i)) x_i θNLL(θ)=i=1n(yiσ(θTxi))xi

优化:

  • 使用梯度下降更新 θ \theta θ

    θ ← θ − η ∇ θ NLL ( θ ) \theta \leftarrow \theta - \eta \nabla_{\theta} \text{NLL}(\theta) θθηθNLL(θ)

    其中 η \eta η 为学习率。


结论

负对数似然(NLL)是统计建模和机器学习中的一个基本工具。通过将最大化似然问题转换为最小化NLL,我们可以利用强大的优化算法来有效地估计模型参数。理解如何推导和使用NLL是从事数据分析、统计学或机器学习工作的人必备的技能,因为它在许多模型和方法中起着关键作用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值