神经网络-专题教程

【原理】梯度下降算法原理

作者 : 老饼 发表日期 : 2022-06-12 23:42:33 更新日期 : 2024-11-12 18:31:28
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



梯度下降算法是一种简单、有效、经典的求解最小值算法,

机器学习中通常需要求最小化损失函数时的参数的取值,因此经常使用梯度下降算法

本文介绍梯度下降算法的思想、实现流程和优缺点




    01. 为什么需要梯度下降算法    




本节讲解求解为什么需要使用梯度下降算法




     为什么需要梯度下降算法      


在单变量函数求取最小值问题中
我们通常只要令的导数为0,然后解出x就可以
  然而, 在一般多元函数中,要求出最小值是非常困难的
 
为什么需要梯度下降算法
 虽然n个自变量,能求得n条偏导等式,
然而,只有这n条等式是线性方程组时,我们才有成熟的方法对其求解
如果是非线性方程,我们目前并没有成熟的求解方案
 这也是为什么我们很喜欢构造线性问题,因为它能轻松求解
 
对于多元方程极小值问题,联立偏导方程求精确解的路子行不通,
我们的替代方案就是进行数值求解,梯度下降法就是其中常用方法之一







   02. 梯度下降-算法原理  




本节介绍梯度算法的思想及相关要点




    梯度下降算法原理与思路    


梯度下降算法的基本思想如下:
先取一个初始值,然后进行迭代
每次都往梯度的反方向调整(在一维中即导数的负方向)它
直到迭代条件终止(例如无法令的值下降,即达到局部最低点
 
梯度下降算法原理




      梯度与初始值的意义     


    关于梯度的意义     
在一元函数中,负梯度就是导数的反方向
在多元函数中,负梯度就是各个变量偏导数的反方向
 梯度的意义 
 它是函数下降最快的方向(即调整相同步长,负梯度能令f(x)下降最快),故也称为最速下降法
 关于初始值  
 
从算法原理,我们可以知道,梯度下降法对 x 的初始化非常敏感
 梯度下降法只能找到离初始值最近的局部极小值,如果初始化不好,找到的结果也不好
 
梯度下降法初始值的意义 
 
PASS:往往是先随机初始化,然后多跑几次,看哪个结果好,就用哪一个







   03. 梯度下降-算法流程   




本节讲解梯度下降算法的具体算法流程




     梯度下降算法流程图     


梯度下降算法的流程图如下:
 梯度下降算法的流程图 
 从梯度算法的流程图可以看到,梯度下降算法的步骤如下:
1. 先初始化x的值 ​(按个人经验初始化,或随机初始化,或设为0)                     
2. 计算 在处的梯度,令,(lr为学习率,可设为0.1) 
3. 计算处的梯度,令                                   
4. ...如此类推....一直到满足迭代终止条件,最后一次的即为所要找的解。        
迭代终止条件:达到迭代次数,或者 变化不大,或者变化不大
✍️简单的说,就是先初始化 ,然后按不断迭代就行
更具体的流程可以参考文章《梯度下降算法实例matlab






  04. 梯度下降算法的一些讨论  




本节讨论梯度下降算法中,负梯度的意义及学习率的相关内容

通些这些内容的补充,加深对梯度下降算法原理的理解




     为什么按负梯度下降    


《数学分析》中,负梯度方向是函数下降最快的方向,
即x=[2,3],如果梯度为[1,2],则x往[1,2]方向调整,能令函数f(x)下降最快的方向
(所谓最快,即调整同样的步长,该方向能令函数下降最快)
按负梯度下降,保证了调整方向的正确性




      关于梯度下降算法的学习率      


   梯度下降算法为什么要设置学习率   
 
目的是为了保证按梯度方向调整一定能下降。
梯度方向能下降是瞬时的,如果调整步长过大,则不一定能保证函数能下降,
但只要调整步长足够小,函数就能下降(前提是梯度不为0)
所以,我们在调整时,加入学习率lr,以控制步长: 
 
学习率的设置   
 
要保证能下降,学习率就不能过大,
但学习率很小,每次迭代调整都很小,就需要迭代很多次。
为此,我们可以设定一个较中肯的学习率(例如,lr = 0.1)





     梯度下降法的优缺点    


为进一步理解梯度下降算法原理,本节分析梯度下降法的优缺点
    优点   
(1)按负梯度调整,加上学习率的控制,则能保证x的调整,函数一定能下降。
(2)按负梯度下降,由于负梯度是下降最快的方向,在下降速度上更加有效。
   缺 点   
1. 无法跳出局部最优                                                        
 遇到局部最优时,算法就停止,因为此时梯度为0    
因此,该算法只能找到初始解
​的局部最优        
 对跳出局部完全无反抗能力                      
2. 要求连续可导                                                              
 梯度算法要用到梯度,因此要求函数连续可导        
对于不连续或不可导的,则不适用                
 
3. 收敛速度慢                                                                   
                
在梯度平缓处的迭代速度较慢,而极值附近一般都是相对较为平缓的,
因此梯度下降算法的收敛速度较为缓慢            





以上就是梯度下降算法原理的全部内容了~








 End 




联系老饼