用Excel感受梯度下降的数据变化

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

首先求出梯度(zxzy)=(2x2y)(\frac{\partial z}{\partial x},\frac{\partial z}{\partial y}) = (2x,2y)

1. 初始设定

随便给出初始位置(xi,yi)(i=0)(x_i,y_i)(i=0)与学习率 η\eta
用Excel感受梯度下降的数据变化

2. 计算位移量

(ΔxiΔyi)=η(zxzy)=η(2xi2yi)(\Delta x_i,\Delta y_i) = -\eta(\frac{\partial z}{\partial x},\frac{\partial z}{\partial y}) = -\eta(2x_i,2y_i),这个位移量可以看作是通过小步长来找出局部最小值。
用Excel感受梯度下降的数据变化

3. 更新位置

当 i = 0 时,将当前位置 (x0y0)=(3.002.00)(x_{0},y_{0}) = (3.00,2.00) 与当前计算得到的位移向量(-0.60,-0.40)相加得到(2.40,1.60)
(xi+1,yi+1)=(xi,yi)+(ΔxiΔyi)(x_{i+1},y_{i+1})=(x_{i},y_{i})+(\Delta x_i,\Delta y_i)
用Excel感受梯度下降的数据变化

4. 反复执行2-3的操作

反复执行2-3的操作30次后得出坐标(x30,y30)(x_{30},y_{30})的值。这个2-3反复过程地按照负梯度的倍数输入到zz函数的过程被称为梯度下降。
用Excel感受梯度下降的数据变化
使得函数zz在点(0,0)处取得最小值 0

5. 关于学习率 η\eta 与步长

η\eta 看作步长实际上是不正确的,梯度下降法的步长是不均匀的,梯度在不同的位置大小不同。梯度下降让函数向局部最小值收敛,正如图1.5沿着山谷下降的过程一样。此处列举的山谷下降过程与上述的图1.4坐标数据是不同的,实际情况下人工神经网络的代价函数是非常复杂的。
用Excel感受梯度下降的数据变化
如果将上面第二步的式子

用Excel感受梯度下降的数据变化

变形为

用Excel感受梯度下降的数据变化
将梯度修改为单位向量,就可以将 η\eta 看作步长了。
以上公式的定义都是由其可微性推导出来的,在微分学中,

用Excel感受梯度下降的数据变化

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

用Excel感受梯度下降的数据变化
或者 用Excel感受梯度下降的数据变化

其实就是用式子Adx+BdyAdx+Bdy的线性增量近似值去逼近Δz\Delta z,而Δz\Delta z的真实增量是式子

用Excel感受梯度下降的数据变化

注意dz(x0,y0)dz|_{(x_0,y_0)}只是逼近Δz\Delta z,并不能说它们等价,会存在误差

用Excel感受梯度下降的数据变化

这样就能推导出

用Excel感受梯度下降的数据变化

Δx,Δy\Delta x,\Delta y分别趋近于0时,取极限

用Excel感受梯度下降的数据变化

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

用Excel感受梯度下降的数据变化

由变量η\eta的取值决定函数要迈出步子有多大,这样把梯度修正为单位向量也就能将 η\eta 看作步长了。

以上列举的内容只是为了以后更好地理解代价函数对权重、偏置的微小变化有多敏感。

ΔxΔy\Delta x,\Delta y看作是函数zz在某点处的瞬时变化率,而zx\frac{\partial z}{\partial x}理解为代价函数 zzΔx\Delta x微小变化的敏感度,或者换句话说,求zzxix_i的偏导数,可以把zx\frac{\partial z}{\partial x}当做改变Δx\Delta xzz函数值造成的变化,这两个数的比值,从概念上来说就是Δx\Delta x的微小变化会导致zz函数产生一些变化,如果这个zz函数是一个很复杂的复合函数,那么它也会像神经网络单元一样导致隐含层产生微小的变化,最终影响到代价函数值。上面的描述对zy\frac{\partial z}{\partial y} 同理。

写于2020.03.01 18:49:24