BP入门学习
1.神经网络是什么
2.BP神经网络基础理论
3.BP神经网络的建模
4.自实现一个BP神经网络
【原理】梯度下降算法
作者 : 老饼 日期 : 2022-06-12 23:42:33 更新 : 2023-09-27 20:37:36
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com



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

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

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




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



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



   为什么需要梯度下降算法    


在单变量函数求取最小值问题中
我们通常只要令的导数为0,然后解出x就可以
  然而,
 
 在一般多元函数中,要求出最小值是非常困难的
 

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







   02. 梯度下降算法原理  



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



    梯度下降算法思路    


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

 




     关于梯度下降法中一些补充说明    


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






  03. 梯度下降算法流程  



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



    梯度下降算法流程    



1. 先初始化x的值 ​(按个人经验初始化,或随机初始化,或设为0)                     
2. 计算 在处的梯度,令,(lr为学习率,可设为0.1) 
3. 计算处的梯度,令                                   
4. ...如此类推....一直到满足迭代终止条件,最后一次的即为所要找的解。        
迭代终止条件:达到迭代次数,或者 变化不大,或者变化不大
✍️简单的说,就是先初始化 ,然后按不断迭代就行





  04. 梯度下降的一些讨论  



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



   为什么按负梯度下降   


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




      关于学习率      


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





     梯度下降法的优缺点    


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










 End 




联系老饼