浅谈对梯度下降法的理解

2023-11-10

浅谈梯度下降法

 

如果读者对方向导数和梯度的定义不太了解,请先阅读上篇文章《方向导数与梯度》

 

前些时间接触了机器学习,发现梯度下降法是机器学习里比较基础又比较重要的一个求最小值的算法。梯度下降算法过程如下:

1)随机初始值

2)迭代,直至收敛。表示在处的负梯度方向,表示学习率。

 

在这里,简单谈一下自己对梯度下降法的理解。

首先,要明确梯度是一个向量,是一个n元函数f关于n个变量的偏导数,比如三元函数f的梯度为(fx,fy,fz),二元函数f的梯度为(fx,fy),一元函数f的梯度为fx然后要明白梯度的方向是函数f增长最快的方向,梯度的反方向是f降低最快的方向

我们以一元函数为例,介绍一下梯度下降法。

f(x) = (x-1)2+1/2

 

 

上图给出了函数f的图像和初始值x0我们希望求得函数f的最小值,因为沿负梯度方向移动一小步后,f值降低,故只需x0沿着负梯度方向移动一小步即可。

 

而f在点x0的导数大于0,从而f在点x0的梯度方向为正,即梯度方向为f’(x0),故由梯度下降法可知,下一个迭代值,也就是说x0向左移动一小步到了x1,同理在x1点的导数同样大于零,下一次迭代x1向左移动一小步到达x2,一直进行下去,只要每次移动的步数不是很大,我们就可以得到收敛1的解x

上述证实了我们对分析(蓝色倾斜字体)的验证。

 

同样,如果处置选在了最小值的左边,即如图所示:

 

由于f’(x0)<0,所以梯度方向为负,负梯度方向为正,故需将x0沿负梯度方向移动一小步,即向右移动一小步,这样使得f值更小一些。或用梯度下降法迭代公式,依次我们可以得到如图所示的x1,x2,...,xk,...,直到收敛至最小值。

 

对于二元函数,我们也可以通过实例验证梯度下降法的合理性:

 

 

在每次得到一个点(xk,yk)时,我们需要计算(fx(xk),fy(yk)),这个方向表示梯度f增长最快的方向,-(fx(xk),fy(yk))表示梯度下降最快的方向,故只需将(xk,yk)沿着-(fx(xk),fy(yk))这个方向移动一小步,就可以减少f的值,直至收敛到最小值,如上图所示。

 

谈几点梯度下降法需要注意的地方,也是自己对梯度下降法的理解:

1)梯度下降不一定可以收敛到最小值。

梯度下降法是收敛到局部最小值,不一定可以收敛到全局最小值。

比如:

 

我们初始值选择了如图的x0,由于f在点x0的导数大于0,梯度方向向右,负梯度方向向左,从而x0向左移动,逐渐收敛到了局部最小值,而不能收敛到全局最小值。

2)学习率的大小要适中。

学习率太小,每次移动步长太小,收敛太慢,这个比较容易理解。

学习率太大,每次移动步长大,可能导致不收敛,这里用一个图来表示一下:

 

由于距离最小值点越远,导数越大,从而导致步长越来越大,不会收敛。

3)不一定选择负梯度方向,只要是值下降的方向即可。

在每一次迭代选择方向时,我们只要选择与梯度方向夹角小于90度的向量的反方向就可,不一定要选择负梯度方向。但由于,满足这样条件的向量不太容易求出,我们就选择了与梯度方向0度的向量的反方向(负梯度方向),而且这个方向函数值减少的更快,更快的收敛,故是个不错的选择。

4)求最大值的梯度上升法。

f的梯度方向是f的值增长最快的方向。我们每次沿负梯度方向移动一小步可以逐步收敛到局部最大值,因此我们每次沿梯度方向也可以得到函数f的局部最大值。迭代公式为:

这里表示在处的梯度方向,与梯度下降法的含义不同。

 

 

本文由作者结合自己对梯度的理解写出,希望对大家有所帮助,敬请阅读、指正。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈对梯度下降法的理解 的相关文章

  • 最速下降法python_Python-梯度下降法(最速下降法)求解多元函数

    import matplotlib pyplot as plt from mpl toolkits mplot3d import Axes3D import numpy as np def Fun x y 原函数 return x y 43
  • 【数学知识】质数与质因子

    一 质数 1 概念 质数又称素数 一个大于1的自然数 xff0c 除了1和它自身外 xff0c 不能被其他自然数整除的数叫做质数 xff0c 否则称为合数 规定1既不是质数也不是合数质数的个数是无穷的 2 例题 xff1a AcWing 3
  • 数学知识---数论(质数和约数)

    文章目录 1 质数1 1质数的判定 试除法1 2分解质因数 试除法 1 3筛质数2 约数2 1试除法求约数2 2约数个数2 3约数之和2 4最大公约数 欧几里得算法 xff08 辗转相除法 xff09 1 质数 质数是针对所有大于1的自然数
  • 多益网络校招笔试题

    马上要参加多益的笔试了 所以在网上找了一下多益的笔试题 原文 我感觉我想出了一个更简单的方法 时间复杂度O 1 如果有问题希望大家及时指正 题目如下 给定一个数x x gt 5 找到该数与3 4之间的关系 关系如下 x 3 n 4 m 然后
  • 2023-9-11 高斯消元解异或线性方程组

    题目链接 高斯消元解异或线性方程组 include
  • FFT将时域信号变换到频域里面的一些重要知识点记录

    一 FFT是离散傅立叶变换 采样得到的数字信号 就可以做FFT变换了 N个采样点 经过FFT之后 就可以得到N个点的FFT结果 为了方便进行FFT运算 通常N取2的整数次方 假设采样频率为Fs 信号频率F 采样点数为N 那么FFT之后结果就
  • Acwing 893. 集合-Nim游戏

    Mex运算 设S表示一个非负整数集合 定义mex S 为求出不属于集合S的最小非负整数的运算 即 mex S min x x属于自然数 且x不属于S SG函数 在有向图游戏中 对于每个节点x 设从x出发共有k条有向边 分别到达节点y1 y2
  • 直线拟合的三种方法

    近日考虑直线拟合相关的知识 大概有所了解 所以打算进行一些总结 直线拟合常用的三种方法 一 最小二乘法进行直线拟合 二 梯度下降法进行直线拟合 三 高斯牛顿 列 马算法进行直线拟合 一 使用最多的就是最小二乘法 这里我也对最小二乘法进行了一
  • 梯度下降法及其Python实现

    梯度下降法 gradient descent 又名最速下降法 steepest descent 是求解无约束最优化问题最常用的方法 它是一种迭代方法 每一步主要的操作是求解目标函数的梯度向量 将当前位置的负梯度方向作为搜索方向 因为在该方向
  • SVD分解的并行实现

    在之前的文章中 我对SVD进行了大致的了解 它在互联网高端领域中有广泛的应用 至于它的一些详细应 用以后再进一步学习 现在主要的问题是如何有效地实现SVD分解 接下来我会先用两种方法来实现SVD分 解 即基于双边Jacobi旋转的SVD和基
  • 2023-9-8 求组合数(一)

    题目链接 求组合数 I include
  • 矩阵内积运算

    设有矩阵A a1 a2 a3 a4 和矩阵 B b1 b2 b3 b4 那么矩阵A与B的内积为 内积 a1 x b1 a2 x b2 a3 x b3 a4 x b4
  • Acwing-870. 约数个数

    N的任何一个约数都是d的形式 而且d每一项的指数都不同 所以N的约数与 1 k的取法是一致的 N的每一个约数都对应了 1 k的一种取法 不同的取法对应不同的约数 由算数基本定理 每一个数的因式分解是唯一的 只要因式分解不一样 那么这两个数就
  • 组合数学-鸽巢原理

    中国剩余定理证明笔记
  • Acwing 892. 台阶-Nim游戏

    此时我们需要将奇数台阶看做一个经典的Nim游戏 如果先手时奇数台阶上的值的异或值为0 则先手必败 反之必胜 证明 先手时 如果奇数台阶异或非0 根据经典Nim游戏 先手总有一种方式使奇数台阶异或为0 于是先手留了奇数台阶异或为0的状态给后手
  • 对比梯度下降和正规方程解性能

    现在用导数的方式模拟线性回归中的梯度下降法 首先再来回顾一下梯度下降法的基础 梯度下降法不是一个机器学习算法 而是一个搜索算法 梯度下降法用在监督学习中 梯度下降法的过程 对比模型输出值和样本值的差异不断调整本省权重 直到最后模型输出值和样
  • 4261. 孤独的照片

    数据范围为500 000 所以应该控制在O nlogn 或O n 我们发现要枚举的子串它其中有一个字母只出现一次 所以 我们可以去枚举只出现一次的字母是哪个 假设在第i个位置的字母为G 我们要枚举包含这个字母的 且只包含一个G的 且长度大于
  • Acwing-27. 数值的整数次方

    由于本题的指数是int范围 可能很大 所以需要用快速幂 Acwing 875 快速幂 中有详细介绍快速幂 点击链接即可传送 求解 https blog csdn net weixin 43844521 article details 127
  • Acwing-4366. 上课睡觉

    假设最终答案为每堆石子均为cnt个 cnt一定可以整除sum 石子的总数 我们可以依次枚举答案 sum小于等于10 6 所以cnt的数量等于sum约数的个数 10 6范围内 约数最多的数为720720 它的约数个数有240个 int范围内
  • Acwing 890. 能被整除的数

    注 S 表示集合S中的元素个数 对于 S1 U S2 U S3 U U Sn 中的任意一个元素x 证明在等式右侧只被计算一次 上述证明中假设x属于k个集合 推出x会被计算的次数 注 Si是指1 n中i的倍数的个数 使用容斥原理的时间复杂度是

随机推荐