一、 什么是梯度下降算法
梯度下降法(Gradient descent )是一个一阶最优化算法,通常也称为最陡下降法 ,要使用梯度下降法找到一个函数的局部极小值 ,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。 如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法 ,相反则称之为梯度下降法。
1.1 形象理解
1.2 数学理解——微分
1.3 步长(学习率) —— a a a
前面一直讨论如何下山最快和如何用数学方法来解决下山最快和下山的方向,那么还忽视了一个问题,就是下山的步子。当然,步子太大容易扯着蛋,步子太小下山太慢,可能下山都太阳落山了,因此需要确定一个步长 a a a,使得经过合适的步子后能够顺利最快的下山。可能你也能想到,最好的方式便是先大步子下山,在山的最低处小步,不断逼近最低处。但如果在最低处无限逼近那最后的0.000001,此时在实际意义来说是无意义的,因此同时也需确定某个值,使得迭代到某次后判断与设定值的大小,若小于则停止循环。
不同步长的比较
小步长
小步长表现为计算量大,耗时长,但比较精准。
1.4 梯度下降算法实现
1、给定待优化连续可微分的函数J(θ),学习率或步长a,以及一组初始值(真实值) 2、计算待优化函数梯度 3、更新迭代 4、再次计算新的梯度 5、计算向量的模来判断是否需要终止循环
1.5 梯度下降算法类型
1.5.1 批量梯度下降算法
1.5.2 随机梯度下降算法
1.5.3 小批量梯度下降算法
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214766.html原文链接:https://javaforall.net
