探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解)

这篇具有很好参考价值的文章主要介绍了探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一  需求解函数

f() 和 g()函数分别为求y值求导数的函数。

目的:求该函数的最小值:

        探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

 代码:

import numpy as np
import matplotlib.pyplot as plt 

f = lambda x : (x - 3.5) ** 2 - 4.5 * x + 10
g = lambda x : 2 * (x - 3.5) - 4.5

x = np.linspace(0, 11.5, 100)
y = f(x)

plt.plot(x, y) 

二 随机初始化一个值

在 0 - 12 中随机取一个值:10

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

k = np.random.randint(0, 12)
print('随机取到的值k:', k)  # 10 

三 查看此时的斜率

查看此时的切线方程:

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

k = 10
g(x) = 8.5   # 斜率
f(x) = 7.5   # y值
# 该点的切线方程:y = 8.5 * x - 77.5

plt.plot(x, y) 
plt.scatter(k, f(k), color = 'red', s = 30)

# 生成x的范围
x_values = np.linspace(8, 11.5, 100)

# 计算对应的y值
y_values = 8.5 * x_values - 77.5
# 绘制直线
plt.plot(x_values, y_values, color='blue', label='Line')

四 根据斜率和学习率确定下一个点

设置学习率为0.2,与初始点的梯度反向进行下降,如果在上一个点斜率为正,说明需要x需要向左移动才能接近最小值:next_k = k - 学习率*斜率

学习率可以改,设置值比较大移动比较快,设置比较小移动比较慢。

求到的第一个K:8.3

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

learing_ratio = 0.2
next_k = k - learing_ratio*g(k) 

plt.plot(x, y) 
plt.scatter(k, f(k), color = 'red', s = 30)
plt.scatter(next_k, f(next_k), color = 'red', s = 30) 

print(next_k, f(next_k))
# 8.3 -4.309999999999995

五 根据该逻辑继续计算下一个值

用上一次计算的 8.2 计算一个值:next_k2 = next_k - learing_ratio*g(next_k) 

求到的第二个K:7.28

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

learing_ratio = 0.2
next_k2 = next_k - learing_ratio*g(next_k) 

plt.plot(x, y) 
plt.scatter(k, f(k), color = 'red', s = 30)
plt.scatter(next_k, f(next_k), color = 'red', s = 30)
plt.scatter(next_k2, f(next_k2), color = 'red', s = 30)
print(next_k2, f(next_k2))
# 7.28 -8.471599999999995

六 同时查看两次迭代过程中 y值的变化率

查看两次迭代过程中 y值的变化率分别为:-11.559999999999995  -4.1616

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

plt.plot(x, y) 
plt.scatter([k, next_k, next_k2], [f(k), f(next_k), f(next_k2)], 
            color = 'red', s = 30)

# 绘制直线
plt.plot(x, [f(k)] * len(x), label='y=5', color='blue', linestyle='--')
plt.plot(x, [f(next_k)] * len(x), label='y=5', color='green', linestyle='--')
plt.plot(x, [f(next_k2)] * len(x), label='y=5', color='red', linestyle='--')

print(f(next_k) - f(k), f(next_k2) - f(next_k))  # -11.5599999999-4.1616

七 设置循环,求最接近的目标值

注意:截止条件设置的变化率是x 的变化率,就是当 斜率的变化值足够小 的时候截止,其实也是y值的变化率乘学习率后的变化值 !!

k = k - learing_ratio*g(k)

设置截止循环条件:precision = 0.0001

探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

learing_ratio = 0.2
last_k = k + 0.1
# 精确度
precision = 0.0001

k_ = [k]
count = 0  # 记录迭代次数

while True:
    if np.abs(k - last_k) < precision:
        break
    last_k = k
    count += 1
    k = k - learing_ratio*g(k)  # 迭代
    k_.append(k)
    print(f'-> 迭代次数cnt:{count:2},更新后的x:{k:0.7f}, 实时的y:{f(k):0.7f}')

print(f'梯度下降的次数:{count}')
plt.plot(x, y) 
print('最后的k值:', k)  # 5.75009323204022

# 散点图,转换为array数组可以用f(x)直接求列表的y值
k_ = np.array(k_)
plt.scatter(k_, f(k_), color = 'red', s = 30)

 探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解),机器学习,人工智能,计算机视觉,深度学习,机器学习

PS:最后的列表直接求y值是先转换为了 np.array数组!!!

实际值:5.75

循环21次,最后求到的k值:5.75009323204022文章来源地址https://www.toymoban.com/news/detail-755785.html

到了这里,关于探秘机器学习核心逻辑:梯度下降的迭代过程 (图文详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 机器学习_梯度下降

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

    2024年01月19日
    浏览(46)
  • 机器学习——梯度下降法

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

    2023年04月08日
    浏览(42)
  • 机器学习梯度下降法笔记

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

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

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

    2024年02月22日
    浏览(43)
  • [机器学习] 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日
    浏览(54)
  • 机器学习&&深度学习——随机梯度下降算法(及其优化)

    在我们没有办法得到解析解的时候,我们可以用过梯度下降来进行优化,这种方法几乎可以所有深度学习模型。 关于优化的东西,我自己曾经研究过智能排班算法和优化,所以关于如何找局部最小值,以及如何跳出局部最小值的一些基本思想是有感触的,随机梯度算法和其优

    2024年02月15日
    浏览(44)
  • 机器学习(二):线性回归之梯度下降法

    ✍ 作者简介: i阿极 ,CSDN Python领域新星创作者, 专注于分享python领域知识。 ✍ 本文录入于《机器学习案例》 ,本专栏精选了经典的机器学习算法进行讲解,针对大学生、初级数据分析工程师精心打造,对机器学习算法知识点逐一击破,不断学习,提升自我。 ✍ 订阅后,

    2023年04月22日
    浏览(48)
  • 机器学习中梯度下降法的缺点

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

    2024年02月20日
    浏览(42)
  • 机器学习--决策树、线性模型、随机梯度下降

    🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+    目录  一、决策树 二、线性模型 三、随机梯度下降 决策树(decision

    2024年02月03日
    浏览(43)
  • 机器学习_通过梯度下降找到最佳参数

    所谓训练机器,也称拟合的过程,也就是 确定模型内部参数的过程 。具体到线性模型,也就是确定y’=wx+b 函数中的w和b。 对于线性回归来说,针对损失函数的 梯度下降 (gradient descent )方法可以使猜测沿着 正确的方向前进 ,因此总能找到比起上一次猜测时 误差更小的w和b组

    2024年01月21日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包