梯度下降法

作者:追风剑情 发布于:2022-5-24 9:35 分类:Algorithms

  应用数学最重要的任务之一就是寻找函数取最小值的点。梯度下降法是神经网络中找函数最小值的点的方法。在数值分析领域,梯度下降法也称为最速下降法

通过导数找函数最小值

例 1 已知函数 z=f(x,y),求使函数取得最小值的 x、y ?

分别对x、y求偏导数,当x、y的偏导数都为0时,函数 z=f(x,y) 取得最小值。 f(x,y)x=0,f(x,y)y=0 上式表明,与函数相切的平面变得水平时,那个切点即为函数的最小值点。
注意 上式只是寻找最小值点的必要条件,对于有多个极值点的函数要小心处理。

在神经网络中变量非常多,通常不采用联立偏导方程组求解。


梯度下降法的基本思路

  先在函数上随便取一个点,然后向最陡的方向移动一小段距离,再次判断最陡的方向,然后再向最陡的方向移动一小段距离,不断重复这种操作,便可沿最短路径到达函数底部(最小值点)。

例 2 函数z=f(x,y)中,当x改变△x,y改变△y时,函数f(x,y)的值的变化△z?

根据近似公式,以下关系式成立。 Δz=f(x+Δx,y+Δy)f(x,y)=f(x,y)xΔx+f(x,y)yΔy 可以将上式表示为两个向量的内积形式 (f(x,y)x,f(x,y)y),(Δx,Δy) 当两个向量的方向相反时,这两个向量的内积取得最小值,根据向量的这条性质得 (Δx,Δy)=η(f(x,y)x,f(x,y)y)(η) 注:希腊字母η读作ita

向量(Δx,Δy)称为位移向量。向量(f(x,y)x,f(x,y)y)称为函数f(x,y)在点(x,y)处的梯度(gradient)。梯度给出了最陡的坡度方向。

将上面的公式推广到n个变量 (Δx1,Δx2,,Δxn)=η(fx1,fx2,,fxn) 神经网络中会涉及到成千上万个变量,用上面的式子表示就显得十分冗长。

更简洁的表达式 Δx=(Δx1,Δx2,,Δxn)f=(fx1,fx2,,fxn) 在向量分析领域,称为哈密顿算子

注:希腊字母读作nabla

利用上面的Δxf,梯度下降法的基本公式可以简洁地表示为 Δx=ηf

  η可以看作移动的“步长”,根据η的值,可以确定下一步移动到哪个点。如果步长较大,那么可能会到达最小值点,也可能会直接跨过了最小值点(左图)。而如果步长较小,则可能会滞留在极小值点(右图)。
1111.jpg
在神经网络中,η称为学习率。遗憾的是,它的确定方法没有明确的标准,只能通过反复试验来寻找恰当的值。

η与步长

上面的讨论是将η看作步长,实际上这并不正确,正确的做法应该是将整个右侧看作步长η(fx1,fx2,,fxn),为了让“步长”均匀,需要将梯度修正为单位向量,如下: (Δx,Δy)=η(f(x,y)x,f(x,y)y)/(f(x,y)x)2+(f(x,y)y)2 经过以上修正后,就可以将η看作步长了。

单变量函数的梯度下降法

梯度下降法也可以用于单变量函数,将偏导数替换为导数,将得到的下式作为梯度下降法的基本公式。 Δx=ηf(x)(η)


验证梯度下降法

对于函数z=x2+y2,请用梯度下降法求出使函数取得最小值的x、y值

首先求出梯度 (1)(zx,zy)=(2x,2y)

接下来,逐步进行计算。

初始设定

随便给出初始位置(xi,yi)(i=0)与学习率η。

111111.png

计算位移向量

对于当前位置(xi,yi),算出梯度,然后根据梯度下降法的基本公式,求位移向量Δx=(Δxi,Δyi),根据(1)式可得 (2)(Δxi,Δyi)=η(2xi,2yi)=(η2xi,η2yi)

222222.png

更新位置

根据梯度下降法,由下式求出从当前位置(xi,yi)移动到点(xi+1,yi+1)(3)(xi+1,yi+1)=(xi,yi)+(Δxi,Δyi)

3333.png

反复执行②~③的操作

下图是反复执行②~③的操作30次后得出的坐标(x30,y30)的值。

44444.png

与建立偏导方程组求解出的值一致。 {zx=2x=0zy=2y=0 解偏导方程组得,x=0,y=0

标签: Algorithms

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号