逻辑回归交叉熵损失函数
时间: 2025-05-04 15:58:46 AIGC 浏览: 35
### 逻辑回归中的交叉熵损失函数
#### 原理概述
逻辑回归是一种用于解决二分类问题的经典机器学习算法。对于二分类问题,目标是预测样本属于某一类别的概率 \( p \),并将其映射到区间 [0, 1] 中。为了衡量模型预测的概率分布与真实标签之间的差异,通常采用 **交叉熵损失函数** (Cross-Entropy Loss Function)。
交叉熵损失函数的核心思想在于通过比较预测值和实际值来评估模型性能。具体来说,在逻辑回归中,该损失函数可以表示为:
\[
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]
\]
其中:
- \( N \): 数据集的总样本数量;
- \( y_i \): 第 \( i \) 个样本的真实标签(取值范围 {0, 1});
- \( \hat{y}_i \): 模型对第 \( i \) 个样本的预测概率;
- \( L(y, \hat{y}) \): 表示整个数据集中所有样本的平均损失[^2]。
此公式实际上是基于最大似然估计推导而来的一种优化目标,它能够有效指导梯度下降法调整权重参数以降低误差。
#### 实现方法
以下是利用 Python 和 PyTorch 库实现逻辑回归及其对应的交叉熵损失计算的一个简单例子:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义输入特征 X 和对应的目标值 Y
X = torch.tensor([[0.5], [1.5], [-0.3]], dtype=torch.float32)
Y = torch.tensor([1., 0., 1.], dtype=torch.float32)
# 构建简单的线性层作为基础结构
model = nn.Sequential(
nn.Linear(1, 1), # 输入维度为1,输出也为1
nn.Sigmoid() # 使用Sigmoid激活函数得到概率值
)
criterion = nn.BCELoss() # 初始化二元交叉熵损失函数
optimizer = optim.SGD(model.parameters(), lr=0.1) # 设置随机梯度下降优化器
for epoch in range(100):
optimizer.zero_grad()
predictions = model(X).squeeze(-1) # 获取当前模型的预测结果
loss = criterion(predictions, Y) # 计算损失
loss.backward() # 反向传播更新梯度
optimizer.step()
print("最终训练后的模型参数:", list(model.parameters()))
```
上述代码片段展示了如何定义一个基本的一维逻辑回归模型,并应用 `nn.BCELoss` 来完成交叉熵损失的计算过程[^1]。
#### 关键点解析
1. **Sigmoid 函数的作用**: Sigmoid 是一种常用的非线性变换函数,它可以将任意实数值压缩至 [0, 1] 范围内,从而适合作为概率解释的基础。
2. **损失函数的选择理由**: 当面对的是二分类场景时,选用交叉熵而非均方差(MSE)等其他类型的损失函数更为合理。这是因为前者更贴合概率框架下的理论假设,有助于加速收敛速度以及提升泛化能力[^3]。
3. **优化策略的影响**: 在实践中,除了标准的批量梯度下降外,还可以尝试诸如 Adam 或 RMSprop 这样的自适应学习率技术进一步提高效率。
---
###
阅读全文
相关推荐



















