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