基础知识
交叉熵(Cross-Entropy)
交叉熵衡量的是估计的概率分布Q近似真实分布P时所需的平均信息量 $$ H(P,Q)=-\sum_i P(i)lnQ(i) $$
似然函数(Likelihood Function)
表示给定模型参数$\theta$时,观察到当前数据集$D$的概率 $$ L(\theta;D)=P(D|\theta) $$ 核心思想:最大似然估计(MLE):通过调整参数$\theta$,使当前数据出现的概率最大化
对数似然(Log-Likelihood)
连乘容易导致数值下溢或溢出,取对数将乘法转为加法 $$ lnL(\theta;D)=\sum_{i=1}^N lnP(y_i|x_i;\theta) $$
损失函数(Loss Function)
在最大似然估计中,负对数似然常被用作损失函数 $$ \mathcal{L}(w,b)=-\sum_{i=1}^N[y_iln\hat{y_i}+(1-y_i)ln(1-\hat{y})] $$
数学原理
模型结构:线性组合+Sigmoid函数
逻辑斯蒂回归的核心是将线性回归的输出映射到概率空间(0和1之间)
- 线性部分:
- 对于输入特征向量$\vec{x}=[x_1,x_2,…,x_n]$,计算线性组合:$z=\vec{w}^T\vec{x}+b=w_1x_1+w_2x_2+…+w_nx_n+b$
- 其中,$\vec{w}$是权重向量,$b$是偏置项
- Sigmoid函数:
- 将线性输出$z$通过Sigmoid函数转换为概率:$P(y=1|\vec{x})=\sigma(z)=\frac{1}{1+e^{-z}}$
损失函数:交叉熵
逻辑斯蒂回归通过极大似然估计(MLE)求解参数,对应的损失函数是交叉熵损失
- 似然函数:对每个样本$(x_i,y_i)$,其似然为$P(y_i|x_i)=\sigma(z_i)^{y_i}\cdot (1-\sigma(z_i))^{1-y_i}$
- 对数似然与损失似然:$\mathcal{L}(w,b)=-\sum_{i=1}^N [y_i ln\sigma(z_i)+(1-y_i)ln(1-\sigma(z_i))]$
参数优化:梯度下降
通过梯度下降法迭代更新权重$w$和偏置$b$
- 梯度计算:Sigmoid函数的导数$\sigma ‘(z)=\sigma(z)(1-\sigma(z))$,损失函数$w$和$b$的梯度为:
$$ \frac{\partial \mathcal{L}}{\partial w_j}=\sum_{i=1}^{N}(\sigma(z_i)-y_i)x_{ij},\frac{\partial\mathcal{L}}{\partial b}=\sum_{i=1}{N}(\sigma(z_i)-y_i) $$
- 参数更新:
$$ w=w-\eta \frac{\partial \mathcal{L}}{\partial w}, b=b-\eta\frac{\partial \mathcal{L}}{\partial b} $$
决策边界
逻辑斯蒂回归的决策边界是线性的,由方程$w^Tx+b=0$定义
- 当$\sigma(z)\ge 0.5$,预测$y=1$(即$z\ge 0$);
- 否则预测$y=0$
思路
数据准备
|
|
- 输入数据
x_data
:3个样本,每个样本1个特征(形状为[3, 1]
)。 - 标签数据
y_data
:对应的二分类标签(0或1)。- 当特征值为1.0和2.0时,标签是0;特征值为3.0时,标签是1。
- 这可以理解为模型需要学习“当特征值大于某个阈值时预测为1”。
模型定义
|
|
损失函数与优化器
|
|
- 损失函数
BCELoss
:二元交叉熵损失(Binary Cross Entropy Loss),用于衡量预测概率与真实标签的差异。size_average=False
表示损失是累加而非平均(PyTorch新版本中已更名为reduction='sum'
)。
- 优化器
SGD
:随机梯度下降,学习率lr=0.01
。
训练循环
|
|
代码实现
|
|