梯度下降法是神经网络计算的基础,也是神经网络里面最有力的数学武器。为了更好地感受数据的变化,下面对函数使用梯度下降法求出函数x和y的最小值。

首先求出梯度
1. 初始设定
随便给出初始位置与学习率

2. 计算位移量
,这个位移量可以看作是通过小步长来找出局部最小值。

3. 更新位置
当 i = 0 时,将当前位置 与当前计算得到的位移向量(-0.60,-0.40)相加得到(2.40,1.60)

4. 反复执行2-3的操作
反复执行2-3的操作30次后得出坐标的值。这个2-3反复过程地按照负梯度的倍数输入到
函数的过程被称为梯度下降。

使得函数z在点(0,0)处取得最小值 0
5. 关于学习率
与步长
把 看作步长实际上是不正确的,梯度下降法的步长是不均匀的,梯度在不同的位置大小不同。梯度下降让函数向局部最小值收敛,正如图1.5沿着山谷下降的过程一样。此处列举的山谷下降过程与上述的图1.4坐标数据是不同的,实际情况下人工神经网络的代价函数是非常复杂的。

如果将上面第二步的式子

变形为

将梯度修改为单位向量,就可以将 看作步长了。
以上公式的定义都是由其可微性推导出来的,在微分学中,

在这里面要把 A和B分别看作为

或者

其实就是用式子的线性增量近似值去逼近
,而
的真实增量是式子

注意只是逼近
,并不能说它们等价,会存在误差

这样就能推导出

当分别趋近于0时,取极限

当分子比分母更高阶无穷小时,等式为0。由于我要求出负梯度的值,现在我把式子变成

由变量的取值决定函数要迈出步子有多大,这样把梯度修正为单位向量也就能将
看作步长了。
以上列举的内容只是为了以后更好地理解代价函数对权重、偏置的微小变化有多敏感。
把看作是函数
在某点处的瞬时变化率,而
理解为代价函数
对
微小变化的敏感度,或者换句话说,求
对
的偏导数,可以把
当做改变
对
函数值造成的变化,这两个数的比值,从概念上来说就是
的微小变化会导致
函数产生一些变化,如果这个
函数是一个很复杂的复合函数,那么它也会像神经网络单元一样导致隐含层产生微小的变化,最终影响到代价函数值。上面的描述对
同理。
网友评论