当前位置:   article > 正文

【深度学习基础】神经网络的学习(3)_init_x

init_x

通过前面的学习,我们知道了多维变量下的偏导数的计算方法。神经网络学习的过程是不断追求最优参数的过程,而计算偏导数和梯度就是追求最优参数的最快路径。

什么是梯度

梯度,就是多维自变量的偏导数构成的向量集合。例如对于下面的函数:

对x0的偏导计算:

对x1的偏导计算:

那么梯度就是两个偏导数一起构成的向量:

根据前面的学习,偏导数的计算可以采用中心差分的方式计算,而就某一维自变量的计算时,其他维度的自变量视为常量:

  1. def numerical_gradient(f, x):
  2. # 微小变化量
  3. h = 1e-4 # 0.0001
  4. # 生成等维度的数组
  5. grad = np.zeros_like(x) # 生成和x形状相同的数组
  6. for idx in range(x.size):
  7. # 当前维度的自变量的值
  8. tmp_val = x[idx]
  9. # f(x+h)的计算
  10. x[idx] = tmp_val + h
  11. fxh1 = f(x)
  12. # f(x-h)的计算
  13. x[idx] = tmp_val - h
  14. fxh2 = f(x)
  15. # 差分计算
  16. grad[idx] = (fxh1 - fxh2) / (2*h)
  17. x[idx] = tmp_val # 还原值
  18. return grad

那么计算函数在某些位置的偏导、梯度就很方便了:

  1. def function_2(x):
  2. return x[0]**2 + x[1]**2
  1. >>> numerical_gradient(function_2, np.array([3.0, 4.0]))
  2. array([ 6., 8.])A
  3. >>> numerical_gradient(function_2, np.array([0.0, 2.0]))
  4. array([ 0., 4.])
  5. >>> numerical_gradient(function_2, np.array([3.0, 0.0]))
  6. array([ 6., 0.])

 我们看到函数在不同的位置,他们的偏导数各不相同,那么这些偏导数和梯度有什么含义呢?

 如果按照负梯度作为向量绘制到图像中的时候,我们得到上面的图像。我们发现,箭头都指向函数最小值的位置,就像我们三维图像一样,他们都指向凹槽的底部:

 实际上,负梯度所指向的方向,就是函数在该位置减小幅度最大的方向

梯度下降法

既然负梯度指向的是函数在该位置减小幅度最大的方向,我们就可以利用这一特性,慢慢的调整参数,使之达到最优(达到代价函数的最低点)。

 也就是说,每次我们计算该位置的梯度,然后在此处向梯度下降的位置移动一个小单位,这样我们一步步地接近目标。

这里的η是学习率,觉得我们每一步迈进的大小。学习率不宜过大,否则容易来回跳,找不到最优的值;学习率也不宜过小,否则学习速度太慢,效率低。

(一般动态调整学习率,前面的步骤使用较大的学习率,速度快,后面的步骤使用较小的学习率,速度慢但是可以避免越过最优值。)

我们先来实现梯度下降过程中的位置更新:

  1. def gradient_descent(f, init_x, lr=0.01, step_num=100):
  2. x = init_x
  3. # 开始迭代更新
  4. for i in range(step_num):
  5. # 计算梯度
  6. grad = numerical_gradient(f, x)
  7. # 移动位置
  8. x -= lr * grad
  9. return x

 我们尝试计算一下最小值:

  1. >>> def function_2(x):
  2. ... return x[0]**2 + x[1]**2 ...
  3. >>> init_x = np.array([-3.0, 4.0])
  4. >>> gradient_descent(function_2, init_x=init_x, lr=0.1, step_num=100)
  5. array([ -6.11110793e-10, 8.14814391e-10])

我们发现得到的结果非常接近(0,0)这说明真的找到了函数的最低点

 而实际上,自变量也真的是沿着负梯度的方向一步步地移动到最低处。

神经网络中的梯度

在学习过程中的梯度就是代价函数与权重矩阵的偏导向量。

 权重更新

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/392949
推荐阅读
相关标签
  

闽ICP备14008679号