1. 似然函数的定义
似然函数 L ( θ ∣ X ) L(\theta | X) L(θ∣X)是在给定参数 θ \theta θ 下,观测数据 X X X出现的概率。它是统计推断中的一个核心概念,用于衡量在特定参数假设下,观测数据的合理性。
假设我们有一组观测数据 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn},并且假设这些数据是独立同分布的 ( i . i . d . ) (i.i.d.) (i.i.d.),那么似然函数可以表示为所有观测数据概率的乘积:
L ( θ ∣ X ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta | X) = \prod_{i=1}^{n} P(x_i | \theta) L(θ∣X)=i=1∏nP(xi∣θ)
其中:
- θ \theta θ是模型的参数,例如线性回归中的权重和偏置,或者逻辑回归中的权重向量。
- P ( x i ∣ θ ) P(x_i | \theta) P(xi∣θ)是在参数 θ \theta θ下,第 i i i 个数据点 x i x_i xi出现的概率。
示例:假设有一个简单的硬币抛掷实验,硬币正面朝上的概率为 θ \theta θ,反面朝上的概率为 1 − θ 1 - \theta 1−θ。如果进行了 n n n 次独立的抛掷,观察到正面朝上的次数为 k k k,那么似然函数可以表示为:
L ( θ ∣ k , n ) = θ k ( 1 − θ ) n − k L(\theta | k, n) = \theta^k (1 - \theta)^{n - k} L(θ∣k,n)=θk(1−θ)n−k
2. 对数似然函数的定义
对数似然函数 ℓ ( θ ∣ X ) \ell(\theta | X) ℓ(θ∣X)是似然函数的自然对数。它将似然函数的乘积形式转换为求和形式,便于计算和优化。
ℓ ( θ ∣ X ) = log L ( θ ∣ X ) = log ( ∏ i = 1 n P ( x i ∣ θ ) ) = ∑ i = 1 n log P ( x i ∣ θ ) \ell(\theta | X) = \log L(\theta | X) = \log \left( \prod_{i=1}^{n} P(x_i | \theta) \right) = \sum_{i=1}^{n} \log P(x_i | \theta) ℓ(θ∣X)=logL(θ∣X)=log(i=1∏nP(xi∣θ))=i=1∑nlogP(xi∣θ)
为什么要取对数?
- 简化计算:将乘积转换为求和,避免数值下溢或上溢问题。
- 数学性质:对数函数是单调递增的,因此最大化对数似然函数等价于最大化似然函数。
- 统计意义:对数似然函数在统计推断中具有良好的性质,例如渐近正态性。
3. 负对数似然函数的定义
负对数似然函数 NLL ( θ ∣ X ) \text{NLL}(\theta | X) NLL(θ∣X)是对数似然函数的负值。它将最大化似然函数的问题转化为最小化损失函数的问题,便于在机器学习中使用优化算法。
NLL ( θ ∣ X ) = − ℓ ( θ ∣ X ) = − ∑ i = 1 n log P ( x i ∣ θ ) \text{NLL}(\theta | X) = -\ell(\theta | X) = -\sum_{i=1}^{n} \log P(x_i | \theta) NLL(θ∣X)=−ℓ(θ∣X)=−i=1∑nlogP(xi∣θ)
为什么要取负值?
在机器学习中,优化问题通常被表述为最小化某个损失函数。取负对数似然函数的目的是将最大化似然函数的问题转化为最小化损失函数的问题。具体来说:
- 最大化似然函数: max θ ℓ ( θ ∣ X ) \max_{\theta} \ell(\theta | X) maxθℓ(θ∣X)
- 最小化负对数似然函数: min θ NLL ( θ ∣ X ) \min_{\theta} \text{NLL}(\theta | X) minθNLL(θ∣X)
这两个优化问题是等价的,因为对数函数是单调递增的。
4. 负对数似然函数的优化
在实际应用中,通常通过最小化负对数似然函数来估计模型参数 θ \theta θ。具体步骤如下:
- 定义模型:选择一个概率模型 P ( x ∣ θ ) P(x | \theta) P(x∣θ),例如高斯分布、伯努利分布等。
- 计算负对数似然函数:根据模型和数据,计算负对数似然函数 NLL ( θ ∣ X ) \text{NLL}(\theta | X) NLL(θ∣X)。
- 优化参数:通过梯度下降或其他优化算法,最小化负对数似然函数,找到最优参数 θ ^ \hat{\theta} θ^。
梯度下降法:假设使用梯度下降法来优化参数 θ \theta θ。梯度下降的更新规则为:
θ new = θ old − η ∇ θ NLL ( θ ∣ X ) \theta_{\text{new}} = \theta_{\text{old}} - \eta \nabla_{\theta} \text{NLL}(\theta | X) θnew=θold−η∇θNLL(θ∣X)
其中:
- η \eta η 是学习率,控制每次迭代的步长。
- ∇ θ NLL ( θ ∣ X ) \nabla_{\theta} \text{NLL}(\theta | X) ∇θNLL(θ∣X) 是负对数似然函数对参数 θ \theta θ 的梯度。
5. 具体应用示例
5.1 逻辑回归中的负对数似然函数
假设有一个二分类问题,使用逻辑回归模型。逻辑回归模型的输出是样本属于类别 1 的概率:
P ( y = 1 ∣ x , θ ) = σ ( θ T x ) P(y = 1 | x, \theta) = \sigma(\theta^T x) P(y=1∣x,θ)=σ(θTx)
其中 σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1是 Sigmoid 函数。
对于二分类问题,似然函数可以表示为:
L ( θ ∣ X , y ) = ∏ i = 1 n P ( y i ∣ x i , θ ) L(\theta | X, y) = \prod_{i=1}^{n} P(y_i | x_i, \theta) L(θ∣X,y)=i=1∏nP(yi∣xi,θ)
其中 y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi∈{0,1}是第 i i i个样本的标签。
对数似然函数为:
ℓ ( θ ∣ X , y ) = ∑ i = 1 n log P ( y i ∣ x i , θ ) = ∑ i = 1 n [ y i log σ ( θ T x i ) + ( 1 − y i ) log ( 1 − σ ( θ T x i ) ) ] \ell(\theta | X, y) = \sum_{i=1}^{n} \log P(y_i | x_i, \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] ℓ(θ∣X,y)=i=1∑nlogP(yi∣xi,θ)=i=1∑n[yilogσ(θTxi)+(1−yi)log(1−σ(θTxi))]
负对数似然函数为:
NLL ( θ ∣ X , y ) = − ∑ i = 1 n [ y i log σ ( θ T x i ) + ( 1 − y i ) log ( 1 − σ ( θ T x i ) ) ] \text{NLL}(\theta | X, y) = -\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(θ∣X,y)=−i=1∑n[yilogσ(θTxi)+(1−yi)log(1−σ(θTxi))]
5.2 优化逻辑回归的负对数似然函数
为了优化逻辑回归模型的参数 θ \theta θ,需要计算负对数似然函数的梯度:
∇ θ NLL ( θ ∣ X , y ) = − ∑ i = 1 n [ y i ∂ ∂ θ log σ ( θ T x i ) + ( 1 − y i ) ∂ ∂ θ log ( 1 − σ ( θ T x i ) ) ] \nabla_{\theta} \text{NLL}(\theta | X, y) = -\sum_{i=1}^{n} \left[ y_i \frac{\partial}{\partial \theta} \log \sigma(\theta^T x_i) + (1 - y_i) \frac{\partial}{\partial \theta} \log (1 - \sigma(\theta^T x_i)) \right] ∇θNLL(θ∣X,y)=−i=1∑n[yi∂θ∂logσ(θTxi)+(1−yi)∂θ∂log(1−σ(θTxi))]
通过链式法则,可以得到:
∂ ∂ θ log σ ( θ T x i ) = σ ′ ( θ T x i ) σ ( θ T x i ) x i \frac{\partial}{\partial \theta} \log \sigma(\theta^T x_i) = \frac{\sigma'(\theta^T x_i)}{\sigma(\theta^T x_i)} x_i ∂θ∂logσ(θTxi)=σ(θTxi)σ′(θTxi)xi
∂ ∂ θ log ( 1 − σ ( θ T x i ) ) = − σ ′ ( θ T x i ) 1 − σ ( θ T x i ) x i \frac{\partial}{\partial \theta} \log (1 - \sigma(\theta^T x_i)) = \frac{-\sigma'(\theta^T x_i)}{1 - \sigma(\theta^T x_i)} x_i ∂θ∂log(1−σ(θTxi))=1−σ(θTxi)−σ′(θTxi)xi
其中 σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1 - \sigma(z)) σ′(z)=σ(z)(1−σ(z))是 Sigmoid 函数的导数。
因此,负对数似然函数的梯度可以简化为:
∇ θ NLL ( θ ∣ X , y ) = − ∑ i = 1 n [ y i σ ( θ T x i ) ( 1 − σ ( θ T x i ) ) σ ( θ T x i ) x i − ( 1 − y i ) σ ( θ T x i ) ( 1 − σ ( θ T x i ) ) 1 − σ ( θ T x i ) x i ] \nabla_{\theta} \text{NLL}(\theta | X, y) = -\sum_{i=1}^{n} \left[ y_i \frac{\sigma(\theta^T x_i)(1 - \sigma(\theta^T x_i))}{\sigma(\theta^T x_i)} x_i - (1 - y_i) \frac{\sigma(\theta^T x_i)(1 - \sigma(\theta^T x_i))}{1 - \sigma(\theta^T x_i)} x_i \right] ∇θNLL(θ∣X,y)=−i=1∑n[yiσ(θTxi)σ(θTxi)(1−σ(θTxi))xi−(1−yi)1−σ(θTxi)σ(θTxi)(1−σ(θTxi))xi]
进一步简化为:
∇ θ NLL ( θ ∣ X , y ) = − ∑ i = 1 n [ y i ( 1 − σ ( θ T x i ) ) − ( 1 − y i ) σ ( θ T x i ) ] x i \nabla_{\theta} \text{NLL}(\theta | X, y) = -\sum_{i=1}^{n} \left[ y_i (1 - \sigma(\theta^T x_i)) - (1 - y_i) \sigma(\theta^T x_i) \right] x_i ∇θNLL(θ∣X,y)=−i=1∑n[yi(1−σ(θTxi))−(1−yi)σ(θTxi)]xi
最终得到:
∇ θ NLL ( θ ∣ X , y ) = − ∑ i = 1 n [ y i − σ ( θ T x i ) ] x i \nabla_{\theta} \text{NLL}(\theta | X, y) = -\sum_{i=1}^{n} \left[ y_i - \sigma(\theta^T x_i) \right] x_i ∇θNLL(θ∣X,y)=−i=1∑n[yi−σ(θTxi)]xi
这个公式是逻辑回归模型中负对数似然函数的梯度,它在模型训练中用于参数的优化。