深度学习之梯度下降法,用excel体验梯度下降法

深度学习之梯度下降法

  • 什么是梯度下降法?
  • 用excel体验梯度下降法

  深度学习的过程中经常需要求函数的最小值,而求最小值的最常用的方法之一就是梯度下降法。

什么是梯度下降法?

  我们由一个简单的例子出发。已知 z = f ( x , y ) z=f(x,y) z=f(x,y),如何求该函数的最小值?根据偏导数的含义,当 z z z取最小值的必要条件如下: ∂ f ( x , y ) ∂ x = 0 ∂ f ( x , y ) ∂ y = 0 \frac{\partial f(x,y)}{\partial x}=0 \qquad \frac{\partial f(x,y)}{\partial y}=0 xf(x,y)=0yf(x,y)=0
  但通常情况下,函数会很复杂,求偏导也会十分复杂。
  想象一下兵乓球在斜坡上会如何下降。在斜坡上释放兵乓球时,兵乓球会沿着最陡的方向下降,下降一段后,将兵乓球暂停再释放,兵乓球还是会沿着最陡的坡度下降,以此方式最终到达最低点。其下降的过程要点在于“释放一段路程,暂停,再释放”。每次释放兵乓球都会重新寻找最陡的坡度下降,我们将这种方法称为“梯度下降法”。在数学层面,由于上述下降的路径也是最短的路径,也被称为“最短路径法”。
  联系近似公式(关于近似公式可参考这篇多变量近似公式)、向量的性质,有如下式子: Δ z = f ( x + Δ x , y + Δ y ) − f ( x , y ) = ∂ f ∂ x ⋅ Δ x + ∂ f ∂ y ⋅ Δ y \Delta z=f(x+\Delta x,y+\Delta y)-f(x,y)=\frac{\partial f}{\partial x} ·\Delta x+\frac{\partial f}{\partial y} ·\Delta y Δz=f(x+Δx,y+Δy)f(x,y)=xfΔx+yfΔy

  表达成内积的形式为 Δ z = ( ∂ f ∂ x , ∂ f ∂ y ) . ( Δ x , Δ y ) \Delta z=(\frac{\partial f}{\partial x} ,\frac{\partial f}{\partial y} ).(\Delta x,\Delta y) Δz=(xf,yf).(Δx,Δy)
  其中的 Δ z \Delta z Δz就是“每次兵乓球下降的距离”,也就是每次更新的大小。因此,根据向量的性质,当 Δ z \Delta z Δz下降(减少)得最快时,向量 ( ∂ f ∂ x , ∂ f ∂ y ) (\frac{\partial f}{\partial x} ,\frac{\partial f}{\partial y} ) (xf,yf) ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)须满足以下关系: ( Δ x , Δ y ) = − η ⋅ ( ∂ f ∂ x , ∂ f ∂ y ) η 为 正 的 微 小 常 数 (\Delta x,\Delta y)=- \eta ·(\frac{\partial f}{\partial x} ,\frac{\partial f}{\partial y} )\qquad \eta为正的微小常数 (Δx,Δy)=η(xf,yf)η

  同时也称 ( ∂ f ∂ x , ∂ f ∂ y ) (\frac{\partial f}{\partial x} ,\frac{\partial f}{\partial y} ) (xf,yf)为梯度
  推广到多变量: ( Δ x 1 , Δ x 2 , ⋯   , Δ x n ) = − η ⋅ ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯   , ∂ f ∂ x n ) ( 1 ) ( \Delta x_1,\Delta x_2,\cdots,\Delta x_n)=-\eta·(\frac{\partial f}{\partial x_1} ,\frac{\partial f}{\partial x_2},\cdots, \frac{\partial f}{\partial x_n})\qquad (1) (Δx1,Δx2,,Δxn)=η(x1f,x2f,,xnf)(1)

  为了使表达式更简洁

  1. 哈密顿算子的定义如下

∇ f = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯   , ∂ f ∂ x n ) ( 函 数 对 所 有 变 量 的 微 分 ) \nabla f=(\frac{\partial f}{\partial x_1} ,\frac{\partial f}{\partial x_2},\cdots, \frac{\partial f}{\partial x_n})\qquad(函数对所有变量的微分) f=(x1f,x2f,,xnf)(
  2. 引入位移向量 Δ x = ( Δ x 1 , Δ x 2 , ⋯   , Δ x n ) \Delta x=( \Delta x_1,\Delta x_2,\cdots,\Delta x_n) Δx=(Δx1,Δx2,,Δxn)
  (1)式可化简为 Δ x = − η ∇ f η 为 正 的 微 小 常 数 \Delta x=- \eta \nabla f \qquad \eta为正的微小常数 Δx=ηfη
   η \eta η称为学习率,若设置过大则可能跳过最小值,若设置国小则可能在极小值(“小山谷”)中出不来,只能通过反复试验来寻找恰当的值。

用excel体验梯度下降法

  求 z = x 2 + y 2 的 z=x^2+y^2 的 z=x2+y2最小值

  1. 初始设定
    深度学习之梯度下降法,用excel体验梯度下降法_第1张图片

  2. 计算位移向量
      由 z = x 2 + y 2 z=x^2+y^2 z=x2+y2计算 z z z x x x y y y的偏导,可得 ∂ f ∂ x = 2 x ∂ f ∂ y = 2 y ( 2 ) \frac{\partial f}{\partial x}=2x \quad \frac{\partial f}{\partial y}=2y \qquad (2) xf=2xyf=2y(2)
    Δ x = − η ∇ f η 为 正 的 微 小 常 数 ( 3 ) \Delta x=- \eta \nabla f \qquad \eta为正的微小常数 \qquad(3) Δx=ηfη(3)
      根据学习率和初始位置( x x x y y y的值)计算梯度[式2]以及位移向量[式3],并最终得到函数值。
    深度学习之梯度下降法,用excel体验梯度下降法_第2张图片

  3. 更新位置
    根据梯度下降法,由上一次的位置 ( x i , y i ) (x_i,y_i) (xi,yi)和位移向量 ( Δ x , Δ y ) (\Delta x,\Delta y) (Δx,Δy)计算得到目前最新的位置 ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1)
      
    ( x i + 1 , y i + 1 ) = ( x i , y i ) + ( Δ x , Δ y ) (x_{i+1},y_{i+1})=(x_i,y_i)+(\Delta x,\Delta y) (xi+1,yi+1)=(xi,yi)+(Δx,Δy)
    深度学习之梯度下降法,用excel体验梯度下降法_第3张图片

  4. 反复执行2-3的操作
      反复执行2-3的操作,到30次之后可以看到求得的函数值为0, x x x y y y的值也为0。
    深度学习之梯度下降法,用excel体验梯度下降法_第4张图片

你可能感兴趣的:(深度学习的数学,深度学习,机器学习,人工智能)