梯度下降法简单介绍

梯度下降法是一种常用的优化算法,用于最小化损失函数。它包括批量、随机和小批量三种实现方式,涉及学习率、迭代次数等超参数调整。文章介绍了梯度的定义、梯度下降法的原理,并通过线性回归和逻辑回归展示了应用实例,同时讨论了调参技巧和局部最优解的问题。
摘要由CSDN通过智能技术生成

梯度下降法简单介绍

本教程将介绍梯度下降法的基本思想和应用场景,并讲解其实现方法和调参技巧。

概述

梯度下降法(Gradient Descent)是一种常用的优化算法,用于在训练机器学习模型时最小化损失函数(即误差)。

在机器学习中,我们通常将问题描述成最小化一个损失函数的过程,其中损失函数是关于模型参数的函数。梯度下降法的目标就是找到损失函数的最小值点,更新模型参数使得损失函数达到最小值。

原理

梯度的定义

梯度即函数在某个点处的变化率,它是一个向量,包含了函数在各个维度上的变化率。对于函数 f ( x 1 , x 2 , . . . , x n ) f(x_1,x_2,...,x_n) f(x1,x2,...,xn),其梯度为:
∇ f ( x 1 , x 2 , . . . , x n ) = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n ] \nabla f(x_1,x_2,...,x_n) = \left[\dfrac{\partial f}{\partial x_1},\dfrac{\partial f}{\partial x_2},...,\dfrac{\partial f}{\partial x_n}\right] f(x1,x2,...,xn)=[x1f,x2f,...,xnf]
其中 ∂ f ∂ x i \dfrac{\partial f}{\partial x_i} xif 表示在 x i x_i xi 处沿着 x i x_i xi 方向的变化率。

梯度下降法的原理

梯度下降法的思想很简单:在每一步,我们沿着负梯度的方向(即下降最快的方向)移动一定的步长,直到达到损失函数的最小值。

具体来说,假设我们要最小化的损失函数是 J ( θ ) J(\theta) J(θ),其中 θ \theta θ 是模型参数。我们从一个初始点 θ 0 \theta_0 θ0 开始迭代,每次迭代更新 θ \theta θ 的值,直至满足停止准则(比如损失函数值下降到一定程度,或者达到固定次数的迭代次数)。

每次迭代的更新公式为:
θ = θ − α ⋅ ∇ J ( θ ) \theta = \theta - \alpha \cdot \nabla J(\theta) θ=θαJ(θ)

其中 α \alpha α 是学习率(learning rate),它控制每一步迭代的步长。学习率太小会导致收敛速度慢,而学习率太大会导致算法发散。因此,学习率是梯度下降法中需要调整的一个超参数。

需要注意的是,梯度下降法只是一种局部搜索优化算法,即它无法保证得到全局最优解。因此,有时需要运用其他优化算法来搜索全局最优解。

应用

线性回归

线性回归是一种最简单的机器学习算法,它旨在找到一条直线来拟合数据。在线性回归中,我们需要最小化损失函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x i ) − y i ) 2 J(\theta) = \dfrac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_i) - y_i)^2 J(θ)=2m1i=1m(hθ(xi)yi)2
其中 h θ ( x i ) h_\theta(x_i) hθ(xi) 是模型预测值, y i y_i yi 是实际值, m m m 是样本数量。

梯度下降法的迭代公式为:
θ j = θ j − α ⋅ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) \theta_j = \theta_j - \alpha \cdot \dfrac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})\cdot x_j^{(i)} θj=θjαm1i=1m(hθ(x(i))y(i))xj(i)
其中 j j j 表示第 j j j 个参数, α \alpha α 是学习率。

逻辑回归

逻辑回归是一种广泛应用于分类问题的机器学习算法,它旨在找到一个函数来分割数据。

在逻辑回归中,我们需要最小化损失函数:

J ( θ ) = − 1 m ∑ i = 1 m ( y i log ⁡ h θ ( x i ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x i ) ) ) J(\theta) = -\dfrac{1}{m}\sum_{i=1}^{m}(y_i\log h_\theta(x_i) + (1-y_i)\log (1-h_\theta(x_i))) J(θ)=m1i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))
其中 h θ ( x i ) h_\theta(x_i) hθ(xi) 是模型预测值, y i y_i yi 是实际值, m m m 是样本数量。

梯度下降法的迭代公式为:
θ j = θ j − α ⋅ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ⋅ x j ( i ) \theta_j = \theta_j - \alpha \cdot \dfrac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})\cdot x_j^{(i)} θj=θjαm1i=1m(hθ(x(i))y(i))xj(i)
其中 j j j 表示第 j j j 个参数, α \alpha α 是学习率。

实现

批量梯度下降法

批量梯度下降法(Batch Gradient Descent)是一种在每次迭代中使用全部样本的梯度下降法,它能够保证每一次迭代的下降方向最优,但需要消耗大量的计算资源和时间。 伪代码:

while not converge:
    grad = compute_gradient(theta, data)
    theta = theta - alpha * grad

随机梯度下降法

随机梯度下降法(Stochastic Gradient Descent)是批量梯度下降法的一种变体,它在每次迭代中只使用一个样本的梯度,因此运行速度快,但不能保证每次迭代都能得到最优解。 伪代码

while not converge:
    idx = random.randint(1, m)
    grad = compute_gradient(theta, data[idx])
    theta = theta - alpha * grad

小批量梯度下降法

小批量梯度下降法(Mini-Batch Gradient Descent)是批量梯度下降法和随机梯度下降法的折中方案,它在每次迭代中使用一小部分样本的梯度,既能保证下降方向比较优秀,又能够加速迭代过程。 伪代码:

while not converge:
    idx = random.sample(range(1, m), batch_size)
    grad = compute_gradient(theta, data[idx])
    theta = theta - alpha * grad

其中 batch_size 是批量大小,需要调参。

调参

在梯度下降法中,需要调节的超参数主要有:

  • 学习率(learning rate):控制每次迭代的步长,需要根据具体的问题进行调节。
  • 迭代次数(number of iterations):需要设置一个足够大的值,保证算法收敛到最优解。
  • 批量大小(batch size):需要根据计算资源和算法效果进行调节,一般设置成 32/64/128 等。
  • 停止准则(stopping criterion):一般设置成损失函数下降到一定程度或者达到一定的迭代次数。

总结

梯度下降法是一种常用的优化算法,适用于在机器学习中最小化损失函数的过程。在应用中,可以根据具体的问题和数据特点选择批量梯度下降法、随机梯度下降法或者小批量梯度下降法,其中需要注意学习率、迭代次数、批量大小等超参数的调节。同时,在实际应用中,需要避免梯度爆炸和梯度消失的问题,并考虑使用其他优化算法来解决局部最优的问题。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百年孤独百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值