梯度下降实现

虽然书写的算法对于线性回归和逻辑回归看起来是一样的,其实他们是两个非常不同的算法因为f(x)的定义不同,之前在学习线性回归的梯度下降时,看到如何监控梯度下降以确保它收敛,可以用同样的方法应用于逻辑回归确保它也收敛。类似于线性回归的矢量化实现讨论,我们也可以使用矢量化使逻辑回归的梯度下降运行的更快

逻辑回归代价函数与梯度下降详细解析

1.逻辑回归模型回顾

逻辑回归是二分类问题,模型输出一个概率:

\hat{y}=h_{\theta \left ( x \right )}=\sigma \left ( \theta ^{T}x \right )=\frac{1}{1+e^{-\theta ^{T}x}}

  • \theta = \left [ \theta _{1},\theta _{2},...,\theta _{n} \right ]^{T}是参数向量(权重+偏置)
  • x=\left [ 1,x_{1},...,x_{n} \right ]^{T}是样本特征向量
  • 输出\hat{y}\in \left [ 0,1 \right ]表示预测为正类的概率

2.单个样本的损失函数

逻辑回归使用交叉熵损失:

  • 直观理解  预测和真实标签一致-->损失小;预测和真实标签差距大-->损失大

统一写法(简化版)

  • 同时适用于y=0和y=1
  • 便于对\theta求导和矩阵运算

3.整个训练集的代价函数

对于m个训练样本,取平均:

  • 目标:最小化J(\theta )\rightarrow最大化预测数据的似然概率

4.与最大似然估计的关系

逻辑回归本质是概率模型:

  • 似然函数(Likelihood):
  • 对数似然:
  • 负对数似然=代价函数J(\theta )
  • 结论:最小化代价函数=最大化似然概率

5.梯度下降求解逻辑回归

(1)梯度公式

对参数\theta _{j}求偏导:

  • \hat{y}^{\left ( i \right )}-y^{\left ( i \right )}是预测误差
  • 与现行回归梯度公式相似,但是\hat{y}经过sigmoid函数

更新参数:

  • \alpha是学习率

(2)梯度下降的直观理解

  1. 初始参数随机设定
  2. 计算每个样本的预测概率\hat{y}
  3. 计算梯度(误差乘以特征)
  4. 沿梯度下降更新\theta
  5. 重复迭代,直到损失函数收敛
  6. 直觉:梯度下降就是调整“权重”\theta让预测概率越来越接近真实标签,使损失最小

6.与线性回归梯度下降区别

方面线性回归逻辑回归
模型\hat{y}=\theta ^{T}x\hat{y}=\sigma \left ( \theta ^{T}x \right )
输出范围任意实数0--1概率
代价函数均方误差负对数似然(交叉熵)
梯度公式\hat{y}是sigmoid输出
优势拟合连续值拟合概率,适合分类

核心理解:逻辑回归和线性回归梯度公式形式类似,但逻辑回归使用的sigmoid+交叉熵,使输出位概率并适用于分类

7.矢量化加速梯度下降

非矢量化写法(慢)

for i in range(n):
    gradient[j]=sum((y_hat[i]-y[i])*x[i,j] for i in range(m))/m

矢量化写法:

  • 一次矩阵运算计算所有梯度
  • 利用NumPy/BLAS,高效实现
  • 样本量大时速度快几十倍
  • 矢量化只是计算方式更快,不改变梯度下降本质

8.补充理解

在逻辑回归中,每个样本的损失函数采用对数形式(交叉熵损失),其核心目的是量化模型预测概率和真实标签之间的差距。对于整个训练集,通过对所有样本损失取平均,得到的代价函数数学上等价于负对数似然函数。因此,逻辑回归的训练过程可以被理解为通过最大化训练数据的似然函数来寻找最优参数\theta;从另一个角度来看,这等价于最小化代价函数J\left ( \theta \right ),通过梯度下降不断调整参数,使模型预测概率尽可能接近真实标签,从而达到最大化训练集似然的目标。换言之,逻辑回归的负对数似然代价函数和最大似然估计原理在本质上是一致的,代价函数提供了一个可优化的数学形式,使得梯度下降等优化算法能够有效求解最优参数。(因为逻辑回归的损失函数是对数形式,而它的整个训练集的代价函数和最大似然估计函数的形式一样,即是对数似然。而最大似然函数就是可以帮助我们找到使得代价函数值最低的我们需要的参数。

更多推荐