【MachineLearning六】梯度下降法(基于Matlab求函数最⼩
值)
算法原理
梯度下降法是⼀个最优化算法,可以⽤来求⼀个函数的最⼩值,最⼤值等,也常⽤于⼈⼯神经⽹络中更新各个感知器之间的权值,求出cost function的最⼩值等,应⽤⼴泛。
matlab求导其原理简单,就求函数的最⼩值这个应⽤⽽⾔,⼤致说来就是先求出该函数梯度,⼤家都知道梯度是⼀个函数在该点的最快上升率,那么求个相反数就是最快下降率了。将每个⾃变量按下列公式更新:
xt+1=xt+Δx
xt+1=xt+Δx
其中
Δx=−η∂f∂x
Δx=−η∂f∂x
ηη称为学习速率,也称为步长,指明了⾃变量朝向最快下降⽅向减少的速度,这个值的选定相当重要,太⼤了会导致震荡,⽆法收敛到最⼩值点,太⼩了会导致收敛速度过慢。
当xt+1xt+1和xtxt的差⼩于⼀个阀值时,就可以停⽌循环了。
Matlab实现