深度学习:逻辑回归的损失函数
逻辑回归的损失函数主要是,也称为。它是分类任务中常用的损失函数,特别适用于二分类问题。
逻辑回归的损失函数主要是对数损失函数(Log Loss),也称为交叉熵损失(Cross-Entropy Loss)。它是分类任务中常用的损失函数,特别适用于二分类问题。
1. 二分类逻辑回归损失函数
假设与输出
-
输入特征: x∈Rn \mathbf{x} \in \mathbb{R}^n x∈Rn
-
模型输出(预测概率):
y^=σ(wTx+b)=11+e−(wTx+b) \hat{y} = \sigma(\mathbf{w}^T \mathbf{x} + b) = \frac{1}{1 + e^{-(\mathbf{w}^T \mathbf{x} + b)}} y^=σ(wTx+b)=1+e−(wTx+b)1
其中σ(⋅)\sigma(\cdot)σ(⋅)是 Sigmoid 函数,将线性输出映射为 0 到 1 之间的概率。 -
真实标签: y∈{0,1}y \in \{0, 1\} y∈{0,1}
Γ(z)=∫0∞tz−1e−tdt . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
损失函数公式
L(y,y^)=−1N∑i=1N[yilog(y^i)+(1−yi)log(1−y^i)] L(y, \hat{y}) = - \frac{1}{N} \sum_{i=1}^N \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] L(y,y^)=−N1i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)]
其中:
- NNN是样本数。
- y^i\hat{y}_iy^i 是第 iii 个样本的预测概率。
- yiy_iyi 是第 iii 个样本的真实标签。
推导过程
- 目标: 最大化似然函数(MLE,Maximum Likelihood Estimation)。
P(y∣x)=y^y(1−y^)1−y P(y | \mathbf{x}) = \hat{y}^y (1 - \hat{y})^{1 - y} P(y∣x)=y^y(1−y^)1−y
对所有样本的联合概率:
L(w,b)=∏i=1Ny^iyi(1−y^i)1−yi L(\mathbf{w}, b) = \prod_{i=1}^N \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i} L(w,b)=i=1∏Ny^iyi(1−y^i)1−yi - 最大化似然函数等价于最小化负对数似然:
ℓ(w,b)=−logL(w,b)=−∑i=1N[yilog(y^i)+(1−yi)log(1−y^i)] \ell(\mathbf{w}, b) = -\log L(\mathbf{w}, b) = -\sum_{i=1}^N \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] ℓ(w,b)=−logL(w,b)=−i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)] - 对单个样本的损失函数:
ℓ(y,y^)=−[ylog(y^)+(1−y)log(1−y^)] \ell(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] ℓ(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]
解释
-
当 ( y = 1 ) 时,损失函数为:
−log(y^) -\log(\hat{y}) −log(y^)
即预测概率越接近 1,损失越小。 -
当 ( y = 0 ) 时,损失函数为:
−log(1−y^) -\log(1 - \hat{y}) −log(1−y^)
即预测概率越接近 0,损失越小。
2. 多分类逻辑回归(Softmax 回归)损失函数
对于多分类问题,输出类别的概率使用 Softmax 函数,交叉熵损失函数为:
Softmax 函数
y^k=ezk∑j=1Kezj \hat{y}_k = \frac{e^{z_k}}{\sum_{j=1}^K e^{z_j}} y^k=∑j=1Kezjezk
其中 KKK 是类别数,zk=wkTx+bkz_k = \mathbf{w}_k^T \mathbf{x} + b_kzk=wkTx+bk 是第 kkk 类的线性输出。
损失函数
L(y,y^)=−1N∑i=1N∑k=1Kyi,klog(y^i,k) L(y, \hat{y}) = - \frac{1}{N} \sum_{i=1}^N \sum_{k=1}^K y_{i,k} \log(\hat{y}_{i,k}) L(y,y^)=−N1i=1∑Nk=1∑Kyi,klog(y^i,k)
其中 yi,ky_{i,k}yi,k是 one-hot 编码的真实标签。
3. 损失函数的性质
- 非负性: 损失函数总是非负的。
- 凸性: 对于逻辑回归,损失函数是凸函数,可以通过梯度下降等优化方法找到全局最优解。
- 概率解释: 损失函数本质上是最大化样本标签的预测概率。
示例代码
import numpy as np
def logistic_loss(y_true, y_pred):
"""
计算二分类逻辑回归的交叉熵损失
"""
epsilon = 1e-15 # 防止对数运算出现数值错误
y_pred = np.clip(y_pred, epsilon, 1 - epsilon) # 限制预测值在合理范围内
loss = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
return loss
# 示例
y_true = np.array([1, 0, 1, 0]) # 真实标签
y_pred = np.array([0.9, 0.1, 0.8, 0.2]) # 预测概率
loss = logistic_loss(y_true, y_pred)
print(f"逻辑回归损失:{loss:.4f}")
你希望进一步了解损失函数的优化过程、梯度推导,还是如何在实际项目中使用它?
更多推荐
所有评论(0)