关于梯度下降法的理解

2022-03-11 16:48:39 浏览数 (1)

关于梯度下降法的理解,梯度下降法是一个一阶最优化算法。要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。

衔接导数和偏导数一文

f(x Δx,y Δy)≈f(x,y) ∂f(x,y)/∂x*Δx ∂f(x,y)/∂y*Δy

Δz=f(x Δx,y Δy)-f(x,y)

Δz≈∂f(x,y)/∂x*Δx ∂f(x,y)/∂y*Δy≈∂z/∂x*Δx ∂z/∂y*Δ≈(∂z/∂x,∂z/∂y)*(Δx,Δy)

多变量时

Δz≈∂z/∂x*Δx ∂z/∂y*Δy ∂z/∂w*Δw

∇z=(∂z/∂w,∂z/∂x,∂z/∂y),Δx=(Δw,Δx,Δy)

Δz=∇z*Δx=(∂z/∂w,∂z/∂x,∂z/∂y)*(Δw,Δx,Δy)

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

使函数z=f(x,y)取得最小值的x,y满足∂f(x,y)/∂x=0,∂f(x,y)/∂y=0

但∂f/∂x=0,∂f/∂y=0只是必要条件,且联立方程式不易求解,梯度下降法是一种替代方法

梯度下降法不直接求解方程,通过慢慢地移动图像上的点进行摸索,从而找出函数最小值

向量内积公式

a.b=|a||b|cosθ,θ为a,b的夹角

柯西-施瓦茨不等式

由-1≤cosθ≤1,推导出|a||b|≤|a||b|cosθ≤|a||b|,故

1、当两个向量方向相反时,内积取得最小值

2、当两个向量方向相同时,内积取得最大值

3、当两个向量不平行时,内积取平行时的中间值

进一步

1、方向相同、内积越大,则相似度越高

2、方向相反、内积最小,则相似度越低

内积坐标公式

两维空间:

a=(x1,y1),b=(x2,y2)

a.b=x1*x2 y1*y2

三维空间:

a=(x1,y1,z1),b=(x2,y2,z2)

a.b=x1*x2 y1*y2 z1*z2

多维空间

a=(a1,a2,a3,...an),b=(b1,b2,b3,...bn)

a.b=a1b1 a2b2 ... anbn

再进一步

z=w1x1 w2x2 ... wnxn b

w=(w1,w2,...wn),x=(x1,x2,...xn)

z=w*x b

两个向量方向相反时,内积取得最小值,相似度越低,如使a.b取最小值,则

b=-ka (k为正常数)

Δz≈∂z/∂x*Δx ∂z/∂y*Δ

≈(∂z/∂x,∂z/∂y)*(Δx,Δy)

≈∂f(x,y)/∂x*Δx ∂f(x,y)/∂y*Δy

≈(∂(x,y)/∂x,∂(x,y)/∂y)*(Δx,Δy)

可知,当(Δx,Δy)与(∂(x,y)/∂x,∂(x,y)/∂y)方向相反时,内积即Δz最小,也就是减小的越快

(Δx,Δy)=-η(∂f(x,y)/∂x,∂f(x,y)/∂y)=-η(∂z/∂x,∂z/∂y)

(∂f(x,y)/∂x,∂f(x,y)/∂y)就是函数f(x,y)在点(x,y)处的梯度(gradient)

例:设Δx,Δy为微小的数,在函数z=x^2 y^2中,当x从1变到1 Δx,y从2变到2 Δy时,求使这个函数减少得最快的向量(Δx,Δy)

1、(Δx,Δy)=-η(∂z/∂x,∂z/∂y)=-η(2x,2y)

2、x=1,y=2

3、(Δx,Δy)=-η(2,4) (η为正的微小常数)

梯度下降法及用法

1、从初始位置p0出发,利用公式求出最陡的坡度点p1

2、从p1出发,利用公式进一步求出最陡的坡度点p2

3、反复利用公式,最终得以最快速度到达最小值点

梯度下降法推广到三个变量以上

设η为正的微小常数,变量x1,x2,...xn改变为x1 Δx1,x2 Δx2,...xn Δxn,当满足以下关系式时,函数f减少的最快。

(Δx1,Δx2,...Δxn)=-η(∂f/∂x1,∂f/∂x2,...,,∂f/∂xn)

(∂f/∂x1,∂f/∂x2,...,,∂f/∂xn)为函数f在点(x1,x2,...xn)处的梯度

然后从点(x1,x2,...xn)向(x1 Δx1,x2 Δx2,...xn Δxn)移动,使函数减少得最快的方向移动

以此类推,就能在n维空间算出坡度最陡的方向,从而找到最小值

汉密顿算子,定义为

∇f=(∂f/∂x1,∂f/∂x2,...,,∂f/∂xn)

(Δx1,Δx2,...Δxn)=-η∇f(η为正的微小常数)

另Δx=(Δx1,Δx2,...Δxn)

则Δx=-η∇f

下一篇将通过python实现梯度下降法求值

0 人点赞