深入探讨梯度下降:优化机器学习的关键步骤(一)

这篇具有很好参考价值的文章主要介绍了深入探讨梯度下降:优化机器学习的关键步骤(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍀引言

在机器学习领域,梯度下降是一种核心的优化算法,它被广泛应用于训练神经网络、线性回归和其他机器学习模型中。本文将深入探讨梯度下降的工作原理,并且进行简单的代码实现


🍀什么是梯度下降?

梯度下降是一种迭代优化算法,旨在寻找函数的局部最小值(或最大值)以最小化(或最大化)一个损失函数。在机器学习中,我们通常使用梯度下降来最小化模型的损失函数,以便训练模型的参数。
这里顺便提一嘴,与梯度下降齐名的梯度上升算法目的是使效用函数最大。


🍀损失函数

在使用梯度下降之前,我们首先需要定义一个损失函数。损失函数是一个用于衡量模型预测值与实际观测值之间差异的函数。通常,我们使用均方误差(MSE)作为回归问题的损失函数,使用交叉熵作为分类问题的损失函数。


🍀梯度(gradient)

梯度是损失函数相对于模型参数的偏导数。它告诉我们如果稍微调整模型参数,损失函数会如何变化。梯度下降算法利用梯度的信息来不断调整参数,以减小损失函数的值。

🍀梯度下降的工作原理

梯度下降的核心思想是沿着损失函数的负梯度方向调整参数,直到达到损失函数的局部最小值。具体来说,梯度下降的步骤如下:

  • 初始化模型参数:首先,随机初始化模型参数或使用某种启发式方法。

  • 计算损失和梯度:使用当前模型参数计算损失函数的值,并计算损失函数相对于参数的梯度。

  • 参数更新:根据梯度的方向和学习率(learning rate)本文我称其为eta,更新模型参数。学习率是一个控制步长大小的超参数,它决定了每次迭代中参数更新的大小。

  • 重复迭代:重复步骤2和3,直到损失函数的值收敛到一个稳定的值,或达到预定的迭代次数。

🍀梯度下降的变种

在梯度下降的基础上,发展出了多种变种算法,以应对不同的问题和挑战。其中一些常见的包括

🍀随机梯度下降(SGD)

随机梯度下降每次只使用一个随机样本来估计梯度,从而加速收敛速度。它特别适用于大规模数据集和在线学习。

🍀批量梯度下降(BGD)

批量梯度下降在每次迭代中使用整个训练数据集来计算梯度。尽管计算开销较大,但通常能够更稳定地收敛到全局最小值。

🍀小批量梯度下降(Mini-Batch GD)

小批量梯度下降综合了SGD和BGD的优点,它使用一个小批量样本来估计梯度,平衡了计算效率和收敛性能。

🍀如何选择学习率?

学习率是梯度下降的关键超参数之一。选择合适的学习率可以加速收敛,但过大的学习率可能导致不稳定的训练过程。通常,我们可以采用以下方法选择学习率:

  • 网格搜索:尝试不同的学习率值,通过验证集的性能来选择最佳值。

  • 学习率衰减:开始时使用较大的学习率,随着训练的进行逐渐减小学习率。

  • 自适应学习率:使用自适应学习率算法,如Adam、Adagrad或RMSprop,它们可以自动调整学习率以适应梯度的变化。

🍀梯度下降的相关数学公式

本人数学不好,这里有说的不清楚的地方还请见谅,谢谢佬~
首先我们通过图像认识一下损失函数
深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能
这里的步长指的是,可能有些人会好奇为啥有一个负号呢?因为对称轴左侧的导数都是负值,这里加一个负号不就正了嘛
深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能

具体推导过程请查看相关佬的文章(哭~)

🍀梯度下降的实现(代码)

首先我们导入我们需要的库

import numpy as np
import matplotlib.pyplot as plt

之后我们需要举一个例子,这里我们采用numpy里面的一个分割函数linspace,同时我们举一个函数的例子

plt_x = np.linspace(-1,6,141)
plt_y = (plt_x-2.5)**2-1

之后我们使用show进行展示一下图像

plt.plot(plt_x,ply_y)
plt.show()

运行结果如下
深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能

上图看起来就是一个普通的曲线,方便我们进行理解

接下来我们需要两个函数,一个为了返回导数,一个为了返回对应的y值

def dj(thera):
    return 2*(thera-2.5) # 求导
def j(thera)
    return (thera-2.5)**2-1  # 求对应的值

接下来是梯度下降的关键位置了,这里我们需要初始化两个参数以及一个范围参数,同时设置一个while循环,将前一个thera保存在last_thera中,后一个thera是前一个thera和步长的差值,这里的步长就是梯度个参数eta的乘积,最后使用if函数来终结循环,最终我们将最小值点的值、导数、以及自变量打印出来

eta = 0.1
theta =0.0
epsilon = 1e-8
while True:
    gradient = dj(theta)
    last_theta = theta
    theta = theta-gradient*eta 
    if np.abs(j(theta)-j(last_theta))<epsilon:
        break
        
print(theta)
print(dj(theta))
print(j(theta))

运行结果如下
深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能
这里我们也可以使用列表来看看到底进行了多少次thera的循环

eta = 0.1
theta =0.0
epsilon = 1e-8
theta_history = [theta]
while True:
    gradient = dj(theta)
    last_theta = theta
    theta = theta-gradient*eta 
    theta_history.append(theta)
    if np.abs(j(theta)-j(last_theta))<epsilon:
        break
        
print(theta)
print(dj(theta))
print(j(theta))

len(theta_history)

运行结果如下

深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能
还可以绘制图像进行直观查看

plt.plot(plt_x,plt_y)
plt.plot(theta_history,[(i-2.5)**2-1 for i in theta_history],color='r',marker='*')
plt.show()

运行结果如下
深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能
这样的话就很直观了吧~

🍀总结

本节只介绍梯度下降的简单实现,下节继续学习此法中eta参数的调节

深入探讨梯度下降:优化机器学习的关键步骤(一),机器学习,机器学习,人工智能

挑战与创造都是很痛苦的,但是很充实。文章来源地址https://www.toymoban.com/news/detail-691263.html

到了这里,关于深入探讨梯度下降:优化机器学习的关键步骤(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习笔记之优化算法(十七)梯度下降法在强凸函数的收敛性分析

    上一节介绍并证明了: 梯度下降法 在 强凸函数 上的收敛速度满足 Q mathcal Q Q -线性收敛 。 本节将介绍:在 更强 的条件下:函数 f ( ⋅ ) f(cdot) f ( ⋅ ) 在其定义域内 二阶可微 , 梯度下降法 在 f ( ⋅ ) f(cdot) f ( ⋅ ) 上的收敛速度存在什么样的结论。 关于 梯度下降法 在

    2024年02月12日
    浏览(32)
  • 机器学习笔记值优化算法(十四)梯度下降法在凸函数上的收敛性

    本节将介绍 梯度下降法 在 凸函数 上的收敛性。 收敛速度:次线性收敛 关于 次线性收敛 ,分为两种 判别 类型: R mathcal R R -次线性收敛与 Q mathcal Q Q -次线性收敛。而次线性收敛的 特点 是: 随着迭代次数的增加,相邻迭代步骤产生的目标函数结果 f ( x k ) , f ( x k + 1 ) f

    2024年02月13日
    浏览(31)
  • 机器学习笔记之优化算法(十六)梯度下降法在强凸函数上的收敛性证明

    本节将介绍: 梯度下降法 在 强凸函数 上的收敛性,以及 证明过程 。 凸函数与强凸函数 关于 凸函数 的定义使用 数学符号 表示如下: ∀ x 1 , x 2 ∈ R n , ∀ λ ∈ ( 0 , 1 ) ⇒ f [ λ ⋅ x 2 + ( 1 − λ ) ⋅ x 1 ] ≤ λ ⋅ f ( x 2 ) + ( 1 − λ ) ⋅ f ( x 1 ) forall x_1,x_2 in mathbb R^n, forall

    2024年02月11日
    浏览(30)
  • 机器学习梯度下降法笔记

    梯度下降法(Gradient Descent)是一种常用的优化算法,用于在机器学习和深度学习中最小化或最大化一个函数的值。在机器学习中,梯度下降法常用于调整模型的参数,使得模型能够更好地拟合训练数据。 这个优化算法的基本思想是通过迭代的方式,不断调整参数的值,使得

    2024年02月15日
    浏览(30)
  • 机器学习——梯度下降法

    问:梯度下降法一定能求得最小值??? 答: 在某些情况下,梯度下降法可以找到函数的最小值,但并非总是如此。这取决于函数的形状和梯度下降法的参数设置。如果函数具有多个局部最小值,梯度下降法可能会收敛到其中一个局部最小值,而不是全局最小值。此外,如

    2023年04月08日
    浏览(30)
  • 机器学习_梯度下降

    计算梯度向量其几何意义,就是函数变化的方向,而且是变化最快的方向。对于函数f(x),在点(xo,yo),梯度向量的方向也就是y值增加最快的方向。也就是说,沿着梯度向量的方向 △f(xo),能找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -△f(xo)的方向,梯度

    2024年01月19日
    浏览(36)
  • 机器学习——线性回归、梯度下降

    监督学习 :学习数据带有标签 无监督学习 :没有任何的标签,或者有相同的标签 其他:强化学习、推荐系统等 还是房价预测的例子, 训练集如下: 定义各个变量的含义如下: m——代表训练集中实例的数量 x——代表特征/输入变量 y——代表目标变量/输出变量 (x,y)——代

    2024年02月07日
    浏览(37)
  • 梯度下降与机器学习的关系

    梯度下降是一种优化算法,常用于机器学习中的参数优化问题。在机器学习中,我们通常需要通过调整模型的参数来最小化损失函数,从而使模型能够更好地拟合数据。梯度下降算法通过不断迭代更新参数,沿着损失函数的负梯度方向移动,逐步接近最优解。 以下是梯度下降

    2024年02月22日
    浏览(34)
  • [机器学习] 1. 梯度下降 Gradient Descent 与随机梯度下降 Stochastic Gradient Descent

    ML Theory 太魔怔了!!!!! 从微积分课上我们学到 对一个 (mathscr C^2) 函数,其二阶泰勒展开的皮亚诺余项形式 [f(bm w\\\') = f(bm w) + langle nabla f(bm w), bm w\\\' - bm wrangle + o(|bm w\\\' - bm w|)] 这说明只要 (bm w\\\') 和 (bm w) 挨得足够接近,我们就可以用 (f(bm w) + langle nabla f(

    2024年02月08日
    浏览(40)
  • 机器学习中梯度下降法的缺点

    机器学习中的梯度下降法是一种寻找函数最小值的优化算法,广泛应用于训练各种模型,尤其是在深度学习中。尽管其应用广泛,但梯度下降法也存在一些不可忽视的缺点: 1. 局部最小值和鞍点 局部最小值问题:  对于非凸函数,梯度下降法可能会陷入局部最小值,而不是

    2024年02月20日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包