本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
本文讨论和拓展一些梯度下降的理解,
例如梯度下降的意义,学习率的作用,梯度下降法的优缺点等等,
以此加深对梯度下降算法的理解
本节讨论梯度下降算法按负梯度下降的意义
梯度下降算法为什么按负梯度下降
《数学分析》中,负梯度方向是函数下降最快的方向,
即x=[2,3],如果梯度为[1,2],则x往[1,2]方向调整,能令函数f(x)下降最快的方向
所谓最快,即调整同样的步长,该方向能令函数下降最快
梯度下降算法按负梯度下降,保证了调整方向的正确性
总的来说,按负梯度方向调整,不仅能让目标函数下降,还能下降最快
本节我们讨论关于学习率的一些相关知识
梯度下降算法-为什么要设置学习率
梯度下降算法设置学习率的目的是为了保证按负梯度方向调整一定能下降
由于负梯度方向能下降是瞬时的,
如果调整步长过大,则不一定能保证函数能下降,
但只要调整步长足够小,函数就能下降(前提是梯度不为0)
所以,我们在调整时,加入学习率lr,
通过学习率lr控制调整的步长,以保障梯度下降算法能持续令目标函数下降
梯度下降算法-学习率的设置
要保证能下降,学习率就不能过大,
但学习率很小,每次迭代调整都很小,就需要迭代很多次。
为此,我们可以设定一个较中肯的学习率(例如,lr = 0.1)。
✍️关于自适应学习率
如果更智能一些,在程序中将梯度下降算法的学习率改为自适应学习率
例如将学习率在程序中如下设置:
如果本次迭代能令函数下降,我们把学习率调大些,
如果次迭代不能令函数本下降,我们就把学习率调小些
也可以将学习率设计得更加智能,这就属于梯度下降法的拓展了
本节探讨梯度下降算法的优点和缺点
梯度下降算法的优点
(1)必能下降
按负梯度调整,加上学习率的控制,
则能保证x的调整,函数一定能下降
(2)下降速度快
按负梯度下降,由于负梯度是下降最快的方向,在下降速度上更加有效
(3)算法简单有效
梯度下降法只需求一阶导,相对其它算法,较为简单
而迭代机制也简单,只需不断往梯度方法迭代就可
因此不管是推导还是代码编写上都非常简单明了,
且效果又不错,性价比非常高
梯度下降算法的缺点
(1) 只能找到离初始值最近的局部最优
遇到局部最优时,算法就停止,因为此时梯度为0
因此,该算法只能找到离初始解 最近的局部最优,
对跳出局部完全无反抗能力
(2) 要求函数是连续的(可求偏导)
由于要使用梯度,
所以梯度下降算法要求目标函数必须是连续可导的,
这一限制使它不适用于一些不连续可导的问题
(3) 收敛速度慢
在梯度平缓处的迭代速度较慢,而极值附近一般都是相对较为平缓的,
因此梯度下降算法的收敛速度较为缓慢
End