深度学习之梯度

Posted nefu_0iq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习之梯度相关的知识,希望对你有一定的参考价值。

什么是梯度?

一、数学知识:

一、简介

  1. 导数(derivate):高中所学的二维空间中的增长速率。(标量)
  2. 偏微分(partial derivate):对于空间中,某一方向的增长。(标量)
  3. 梯度(gradient):对函数的各个自变量的偏微分的集合。(矢量)

二、实例

  1. 函数 z = y 2 − x 2 z = y^2 - x^2 z=y2x2
    1. 偏导数: ∂ z ∂ x = − 2 x \\frac\\partial z\\partial x=-2x xz=2x, ∂ z ∂ y = 2 y \\frac\\partial z\\partial y=2y yz=2y
    2. 梯度: ∇ f = ( ∂ z ∂ x , ∂ z ∂ y ) = ( − 2 x , 2 y ) \\nabla f=(\\frac\\partial z\\partial x,\\frac\\partial z\\partial y)=(-2x,2y) f=(xz,yz)=(2x,2y)

三、梯度的含义

  1. 神经网络的特征之一,从数据样本中学习。loss函数就是我们可以自动确定的抓手。当然,使得loss函数达到最小值时,就是我们要寻找的参数。这时就引入了导数的概念。
  2. 导数的引入,可以使我们容易获得极值点, f ′ ( x ) = 0 f'(x)=0 f(x)=0,可是使得我们通过微分方程来轻松获得极值点。但是导数仅仅是对一维函数所说的,但是在现实生活中,往往存在很多维度的属性,这时候并不能用导数来完成这一工作,所以我们引入了梯度

四、迭代法求取最小值

1、简单例子

通过使用 θ t + 1 = θ t − a t ∇ f ( θ t ) \\theta_t+1=\\theta_t-a_t\\nabla f(\\theta_t) θt+1=θtatf(θt)

  1. 函数: f ( θ 1 , θ 2 ) = θ 1 2 + θ 2 2 f(\\theta_1,\\theta_2)=\\theta_1^2+\\theta_2^2 f(θ1,θ2)=θ12+θ22
  2. 目标函数: m i n θ 1 , θ 2 ( f ( θ 1 , θ 2 ) ) \\underset\\theta_1,\\theta_2min(f(\\theta_1,\\theta_2)) θ1,θ2min(f(θ1,θ2))
  3. 更新规则:
    1. θ 1 = θ 1 − a d d θ 1 f ( θ 1 , θ 2 ) \\theta_1=\\theta_1-a\\frac dd\\theta_1f(\\theta_1,\\theta_2) θ1=θ1adθ1df(θ1,θ2)
    2. θ 2 = θ 2 − a d d θ 2 f ( θ 1 , θ 2 ) \\theta_2=\\theta_2-a\\frac dd\\theta_2f(\\theta_1,\\theta_2) θ2=θ2adθ2df(θ1,θ2)

2、相关问题

  1. Learning rate的设置:Learning rate设置不合理会影响最终生成的答案。如果LR太大则可能会跨越,太小可能会计算速度变慢。如下图所示

  2. 初始值的设置:初始值设置不合理会影响最终生成的答案。如图下图所示

  3. 就上图而言如何逃离最小值呢?可以引入惯性,可以变换到其他位置,如图所示:

五、常见的梯度函数

以上是关于深度学习之梯度的主要内容,如果未能解决你的问题,请参考以下文章

深度学习之线性代数

深度学习之反向传播算法

深度学习之Batch归一化

深度学习之反向传播算法

Python机器学习之梯度提升树

深度学习之前馈神经网络(前向传播和误差方向传播)