为什么沿着梯度相反的方向更新参数

  • Post author:
  • Post category:其他




为什么说,沿着梯度相反的方向函数值下降最快

我们假设损失函数是



f

(

x

)

f(x)






f


(


x


)









x

x






x





就是神经网络的参数,我们的目的是最小化损失函数,也就是不断让



f

(

x

)

f(x)






f


(


x


)





减小。

那么根据高等数学中的泰勒公式,我们知道函数



f

(

x

)

f(x)






f


(


x


)





的一阶泰勒公式如下





f

(

x

+

Δ

x

)

=

f

(

x

)

+

f

(

x

)

Δ

x

+

o

(

Δ

x

)

f(x+\Delta x)=f(x)+f'(x)\Delta x+o(\Delta x)






f


(


x




+








Δ


x


)




=








f


(


x


)




+









f






















(


x


)


Δ


x




+








o


(


Δ


x


)





其中



f

(

x

)

f'(x)







f






















(


x


)





我们都知道是导数,在神经网络中,它就是梯度,因为



x

x






x





是很多的参数,

所以



x

x






x









f

(

x

)

f'(x)







f






















(


x


)





都是向量

我们的目的是让函数值减小,所以



f

(

x

+

Δ

x

)

f(x+\Delta x)






f


(


x




+








Δ


x


)





要小于



f

(

x

)

f(x)






f


(


x


)







那么根据上式我们知道,想要



f

(

x

+

Δ

x

)

<

f

(

x

)

f(x+\Delta x)<f(x)






f


(


x




+








Δ


x


)




<








f


(


x


)





只能有



f

(

x

)

Δ

x

f'(x)\Delta x







f






















(


x


)


Δ


x





小于0。





f

(

x

)

Δ

x

f'(x)\Delta x







f






















(


x


)


Δ


x





是两个向量在做内积相乘,我们又知道两个向量的内积公式如下:





f

(

x

)

Δ

x

=

f

(

x

)

Δ

x

cos

θ

f'(x)\Delta x=\left\|f'(x)\right\|\left\| \Delta x\right\|\cos\theta







f






















(


x


)


Δ


x




=













f






















(


x


)












Δ


x








cos




θ





显然



f

(

x

)

Δ

x

f'(x)\Delta x







f






















(


x


)


Δ


x





的取值范围是



[

f

(

x

)

2

,

f

(

x

)

2

]

[-\left\|f'(x)\right\|^2,\left\|f'(x)\right\|^2]






[













f






















(


x


)














2











,










f






















(


x


)














2









]





。(

注意我这里说的不严谨,因为



Δ

x

\Delta x






Δ


x





的取值是任意的,我们姑且认为它不会大于



f

(

x

)

f'(x)







f






















(


x


)






)

也就是说当



Δ

x

=

f

(

x

)

\Delta x=f'(x)






Δ


x




=









f






















(


x


)





时,与梯度同方向,此时



cos

θ

=

1

\cos\theta=1






cos




θ




=








1





所以





f

(

x

)

Δ

x

=

f

(

x

)

2

f'(x)\Delta x=\left\|f'(x)\right\|^2







f






















(


x


)


Δ


x




=














f






















(


x


)














2












那么我们也就知道了当



Δ

x

=

f

(

x

)

\Delta x=-f'(x)






Δ


x




=












f






















(


x


)





,与梯度相反方向的时候(因为都是向量,所以这个负号表示的就是反方向。),此时



cos

θ

=

1

\cos\theta=-1






cos




θ




=











1





,所以





f

(

x

)

Δ

x

=

f

(

x

)

2

f'(x)\Delta x=-\left\|f'(x)\right\|^2







f






















(


x


)


Δ


x




=



















f






















(


x


)














2












那么显然



f

(

x

+

Δ

x

)

=

f

(

x

)

f

(

x

)

2

f(x+\Delta x)=f(x)-\left\|f'(x)\right\|^2






f


(


x




+








Δ


x


)




=








f


(


x


)



















f






















(


x


)














2












函数值下降的最多。




f

(

x

+

Δ

x

)

=

f

(

x

)

+

f

(

x

)

2

f(x+\Delta x)=f(x)+\left\|f'(x)\right\|^2






f


(


x




+








Δ


x


)




=








f


(


x


)




+














f






















(


x


)














2












函数值上升的最多。


所以说沿着梯度的方向,函数值变化最快

需要注意是,我们要引入步长,也就是



Δ

x

=

α

f

(

x

)

\Delta x=-\alpha f'(x)






Δ


x




=











α



f






















(


x


)





,也就是学习率,因为不能让函数值一下子变化太大。



版权声明:本文为m0_45478865原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。