iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >梯度下降算法(Gradient descent)
  • 255
分享到

梯度下降算法(Gradient descent)

python人工智能 2023-09-20 15:09:52 255人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一、 什么是梯度下降算法           首先,我们需要明确梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值。简而言之:梯度下降的目的就是求函数的极小值点,例如在最小化损失函数或是线性回归学习中都要用到梯度下降算法。  

一、 什么是梯度下降算法     

     首先,我们需要明确梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值。简而言之:梯度下降的目的就是求函数的极小值点,例如在最小化损失函数或是线性回归学习中都要用到梯度下降算法。

     ##梯度下降算法作为很多算法的一个关键环节,其重要意义是不言而喻的。

     梯度下降算法的思想:先任取点(x0,f(x0)),求f(x)在该点x0的导数f"(x0),在用x0减去导数值f"(x0),计算所得就是新的点x1。然后再用x1减去f"(x1)得x2…以此类推,循环多次,慢慢x值就无限接近极小值点。

      损失函数用来衡量机器学习模型的精确度。一般来说,损失函数的值越小,模型的精确度就越高。 如果要提高机器学习模型的精确度,就需要尽可能降低损失函数的值。而降低损失函数的值,我们 一般采用梯度下降这个方法。所以,梯度下降的目的,就是为了最小化损失函数。

我们设定场景来帮助理解:  

                              梯度下降法的基本思想可以类比为一个下山的过程。

 

假设这样一个场景:一个人被困在山上(最左上),需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低;因此,下山的路径就无法确定,必须利用自己周围的信息一步一步地找到下山的路。这个时候,便可利用梯度下降算法来帮助自己下山。怎么做呢,首先以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着下降方向走一步,然后又继续以当前位置为基准,再找最陡峭的地方,再走直到最后到达最低处。

    如上图,假如为山的纵切面,那每次下山一小步,经过N次后你便可以到达山底。

这类似于“走一步,看一步的想法”。在原有的位置上找到能到达的最低点,再以该点为起点继续寻找当前的最低点,以此往复,即可以到达最低处。当然,这样理解比较抽象,所以,下面我们给出数学概念。

二、数学解释

 

    梯度下降其实就是我们学习人工智能算法的一个基本算法,比如我们小学开始接触数学时候我们学习  加减乘除,最基本的算法 

1、梯度

    一阶函数里梯度就是表示某一函数在该点处的方向导数沿 着该方向取得较大值,即函数在*当前位置的导数*。如果函数为一元函数,梯度就是该函数的导数。

如果为二元函数,梯度定义为:

 

    我们可以看到,梯度就是分别对每个变量进行微分,然后用逗号分割开,梯度是用<>包括起来,说明梯度其实一个向量。向量有方向,梯度的方向就指出了函数在给定点的上升最快的  方向。

   再看刚才的例子,我们需要到达山底,就需要在每一步观测到此时最  陡峭的地方,梯度就恰巧告诉了我们这个方向。梯度的方向是函数在给定点上升最快的方向那么梯度  的反方向就是函数在给定点下降最快的方向, 这正是我们所需要的 。所以我们只要沿着梯度的方向一直走,就能走到局部的最低点!
   

可以看出:单变量函数中,梯度代表的是图像斜率的变化,多变量函数中,梯度代表的是向量,变化最快的地方,即最陡峭的方向

 

2、核心公式

 

 3、步长(学习率)

 前面一直讨论如何下山最快和如何用数学方法来解决下山最快和下山的方向,那么还忽视了一个问题,就是下山的步子。

 我们可以通过来控制每一步走的距离,步长太大走的就容易偏离路线,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以的选择在梯度下降法中往往是很重要的!不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点!

小步长表现为计算量大,耗时长,但比较精准。

大步长,即较大的a aa,表现为震荡,容易错过最低点,计算量相对较小。

注意:由于函数凹凸性,对于凸函数能够无限逼近其最优解,对于非凸函数,只能获取局部最优解

4、梯度下降法的一般步骤

即:

给定待优化连续可微分的函数J(θ),学习率或步长,以及一组初始值(真实值)
2、计算待优化函数梯度
3、更新迭代
4、再次计算新的梯度
5、计算向量的模来判断是否需要终止循环
 

5、一元函数梯度下降实例

 

 代码段

#f(x)=x^2import numpy as np#定义原函数f(x)=x^2def f(x):    return np.power(x, 2)#定义函数求导公式1def d_f_1(x):    return 2.0 * x#定义函数求导公式2def d_f_2(f, x, delta=1e-4):    return (f(x+delta) - f(x-delta)) / (2 * delta)xs = np.arange(-10, 11)# 限制自变量x的范围plt.plot(xs, f(xs))#绘图plt.show()learning_rate = 0.1# 学习率(步长)max_loop = 30# 迭代次数x_init = 10.0# x初始值x = x_initlr = 0.01# ε值,不过我们下面用的是迭代次数限制for i in range(max_loop):    # d_f_x = d_f_1(x)    d_f_x = d_f_2(f, x)    x = x - learning_rate * d_f_x    print(x)    print('initial x =', x_init)print('arg min f(x) of x =', x)print('f(x) =', f(x))
//能做,但不建议使用#include "stdio.h" double fun(double x){       //定义初始函数    return x*x/2.0 - 2*x;} double der_fun(double x){       //求函数的导数    return x - 2.0;} int main(){    double length,accuracy;     //定义步长,精确度    double x0,x1;      //定义初始位置    printf("请输入步长,精确度及其初始位置:");    scanf("%lf %lf %lf",&length,&accuracy,&x0);    while(length*(-1)*der_fun(x0) > accuracy){        x0 = x0 - length*der_fun(x0);    }    printf("x = %.5lf\ny = %.5lf",x0,fun(x0));    return 0; }

 6、批量梯度下降算法

前面所讨论中使用的梯度下降算法公式为:

可以看出,计算机会每次从所有数据中计算梯度,然后求平均值,作为一次迭代的梯度,对于高维数据,计算量相当大,因此,把这种梯度下降算法称之为批量梯度下降算法

7、随机梯度下降算法 

随机梯度下降算法是利用批量梯度下降算法每次计算所有数据的缺点,随机抽取某个数据来计算梯度作为该次迭代的梯度,梯度计算公式:

迭代公式可写为: 

由于随机选取某个点,省略了求和和求平均的过程,降低了计算复杂度,提升了计算速度,但由于随机选取的原因,存在较大的震荡性。 

来源地址:https://blog.csdn.net/m0_63794226/article/details/125289189

--结束END--

本文标题: 梯度下降算法(Gradient descent)

本文链接: https://www.lsjlt.com/news/413068.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 梯度下降算法(Gradient descent)
    一、 什么是梯度下降算法           首先,我们需要明确梯度下降就是求一个函数的最小值,对应的梯度上升就是求函数最大值。简而言之:梯度下降的目的就是求函数的极小值点,例如在最小化损失函数或是线性回归学习中都要用到梯度下降算法。   ...
    99+
    2023-09-20
    python 人工智能
  • 使用Python在实现一个梯度下降算法
    这期内容当中小编将会给大家带来有关使用Python在实现一个梯度下降算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3...
    99+
    2023-06-06
  • 图文详解梯度下降算法的原理及Python实现
    目录1.引例2.数值解法3.梯度下降算法4.代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何通过计算机算法编程求f(x)min? 2.数值解法 传统方法是数值解...
    99+
    2024-04-02
  • PyTorch梯度下降反向传播
    前言: 反向传播的目的是计算成本函数C对网络中任意w或b的偏导数。一旦我们有了这些偏导数,我们将通过一些常数 α的乘积和该数量相对于成本函数的偏导数来更新网络中的权重和偏...
    99+
    2024-04-02
  • Python实现梯度下降法的示例代码
    目录1.首先读取数据集2.初始化相关参数3.定义计算代价函数–>MSE4.梯度下降5.执行1.首先读取数据集 导包并读取数据,数据自行任意准备,只要有两列,可以分为...
    99+
    2024-04-02
  • 反向传播BP学习算法Gradient Descent的推导过程
    目录1.定义Loss Function2.Gradient Descent3.求偏微分4.反向传播5.总结BP算法是适用于多层神经网络的一种算法,它是建立在梯度下降法的基础上的。本文...
    99+
    2024-04-02
  • 深入探究Python底层技术:如何实现梯度下降算法
    深入探究Python底层技术:如何实现梯度下降算法,需要具体代码示例引言:梯度下降算法是一种常用的优化算法,广泛应用于机器学习和深度学习领域。本文将深入探究Python底层技术,详细介绍了梯度下降算法的原理和实现过程,并提供具体的代码示例。...
    99+
    2023-11-08
    Python 底层技术 梯度下降算法
  • 梯度下降、过拟合和归一化
    好的课程应该分享给更多人:人工智能视频列表-尚学堂,点开任意一个之后会发现他们会提供系列课程整合到一起的百度网盘下载地址,包括视频+代码+资料,免费的优质资源。当然,现在共享非常多,各种mooc、博客、论坛等,很容易就可以找到各种各样的知...
    99+
    2023-01-30
    梯度 归一化
  • 使用Python实现小批量梯度下降算法的代码逻辑
    让theta=模型参数和max_iters=时期数。对于itr=1,2,3,...,max_iters:对于mini_batch(X_mini,y_mini): 批量X_mini的前向传递: 1、对小批量进行预测 2、使用参数的当...
    99+
    2024-01-22
    算法的概念
  • PyTorch加载数据集梯度下降优化
    目录一、实现过程1、准备数据2、设计模型3、构造损失函数和优化器4、训练过程5、结果展示二、参考文献一、实现过程 1、准备数据 与PyTorch实现多维度特征输入的逻辑回归的方法不同...
    99+
    2024-04-02
  • Pytorch梯度下降优化的示例分析
    这篇文章主要介绍了Pytorch梯度下降优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、激活函数1.Sigmoid函数函数图像以及表达式如下:通过该函数,可以...
    99+
    2023-06-25
  • Python实现批量梯度下降法(BGD)拟合曲线
    1. 导入库 import numpy as np #矩阵运算 import matplotlib.pyplot as plt #可视化 import random #产生数据扰...
    99+
    2024-04-02
  • Python实现多元线性回归的梯度下降法
    目录1. 读取数据2.定义代价函数3. 梯度下降4.可视化展示1. 读取数据 首先要做的就是读取数据,请自行准备一组适合做多元回归的数据即可。这里以data.csv为例,这里做的是二...
    99+
    2024-04-02
  • 机器学习(二):线性回归之梯度下降法
    文章目录 专栏导读 1、梯度下降法原理 2、梯度下降法原理代码实现 3、sklearn内置模块实现 专栏导读 ✍ 作者简介:i阿极,CSDN Python领域新星创作者,...
    99+
    2023-09-07
    机器学习 线性回归 python 梯度下降法
  • Python机器学习之随机梯度下降法的实现
    目录随机梯度下降法随机梯度下降法的实现随机梯度下降法 为什么使用随机梯度下降法? 如果当我们数据量和样本量非常大时,每一项都要参与到梯度下降,那么它的计算量时非常大的,所以我们可以采...
    99+
    2023-02-27
    Python随机梯度下降法 Python梯度下降法 Python梯度下降
  • python机器学习逻辑回归随机梯度下降法
    目录写在前面随机梯度下降法参考文献写在前面 随机梯度下降法就在随机梯度上。意思就是说当我们在初始点时想找到下一点的梯度,这个点是随机的。全批量梯度下降是从一个点接着一点是有顺序的,全...
    99+
    2024-04-02
  • python中逻辑回归随机梯度下降法怎么用
    这篇文章主要为大家展示了“python中逻辑回归随机梯度下降法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归随机梯度下降法怎么用”这篇文章吧。随机梯度下降法随机梯度下...
    99+
    2023-06-25
  • python实现梯度下降求解逻辑回归
    本文实例为大家分享了python实现梯度下降求解逻辑回归的具体代码,供大家参考,具体内容如下 对比线性回归理解逻辑回归,主要包含回归函数,似然函数,梯度下降求解及代码实现 线性回归 ...
    99+
    2024-04-02
  • 如何使用Nadam进行梯度下降优化
    这篇文章主要介绍如何使用Nadam进行梯度下降优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!梯度下降是一种优化算法,遵循目标函数的负梯度以定位函数的最小值。梯度下降的局限性在于,...
    99+
    2024-04-02
  • PyTorch梯度下降反向传播实例分析
    本文小编为大家详细介绍“PyTorch梯度下降反向传播实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“PyTorch梯度下降反向传播实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言:反向传播的目...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作