机器学习系列(六)- 梯度下降法

基础概念

梯度理解

  1. 一元函数梯度即斜率;在多元函数中对每个变量求偏导,即每个变量的斜率,切线构成平面则为函数切面即最大梯度,如下图所示。

image-20211130100441151

  1. 将切面图从 $Z$ 轴俯视,则构成如下图所示坐标系,可清晰的看出两条切线作为向量相加即为所求最大梯度方向。

    image-20211130101010735

公式推导

  1. 设 $\sigma(x)$ 为感知机的激活函数;则感知机结果为 $a^{[n]}=\sigma(z^{[n]})=\sigma(W^{[n]}·a^{[n-1]}+b^{[n]})$ ;

    其中 $W$ 、$b$ 都会产生损失值, $a$ 则由 $n-1$ 层决定损失值。

    层感知机计算公式:$z^{[l]} = \begin{bmatrix} z_{1}^{[l]} \newline \vdots \newline z_{i}^{[l]} \end{bmatrix} = \begin{bmatrix} W_{1,1}^{[l]} & \cdots & W_{1,j}^{[l]} \newline \vdots & \ddots & \vdots \newline W_{i,1}^{[l]} & \cdots & W_{i,j}^{[l]} \end{bmatrix} · \begin{bmatrix} a_{1}^{[l-1]} \newline \vdots \newline a_{j}^{[l-1]} \end{bmatrix} + \begin{bmatrix} b_{1}^{[l]} \newline \vdots \newline b_{i}^{[l]} \end{bmatrix}$

    image-20211130142728657

  2. 定义损失函数 $-\nabla J_i^{[n+1]}(W_i^{[n]}, a_i^{[n-1]}, b_i^{[n]})$ ,$\eta$ 为学习步长,其中

    $W_{new.i}^{[n]} = W_{old.i}^{[n]} - \eta · \nabla W_i^{[n]} = W_{old.i}^{[n]} - \eta · \frac{\mathrm{d} J_i^{[n+1]} }{\mathrm{d} W_i^{[n]}}$

    $b_{new.i}^{[n]} = b_{old.i}^{[n]} - \eta · \nabla b_i^{[n]} = b_{old.i}^{[n]} - \eta · \frac{\mathrm{d} J_i^{[n+1]} }{\mathrm{d} b_i^{[n]}}$

    image-20211130142648010

  3. 反向传播递归,推导递归为($n \Rightarrow n+1$)

    $\nabla J^{[n]} = \frac{\mathrm{d} J^{[n+1]} }{\mathrm{d} a^{[n-1]}} = \nabla J_i^{[n]}(W_i^{[n-1]}, a_i^{[n-2]}, b_i^{[n-1]}) \Rightarrow \nabla J^{[n+1]} = \nabla J_i^{[n+1]}(W_i^{[n]}, a_i^{[n-1]}, b_i^{[n]})$

    ,其中 $W$ 递归推导( $b$ 同理)

    $\begin{align} & W_{new.i}^{[n-1]} = W_{old.i}^{[n-1]} - \eta · \nabla W_i^{[n-1]} = W_{old.i}^{[n-1]} - \eta · (\frac{1}{m} \sum_{k=1}^{m}\frac{\mathrm{d} J_k^{[n]} }{\mathrm{d} W_i^{[n-1]}}) \newline \Rightarrow & W_{new.i}^{[n]} = W_{old.i}^{[n]} - \eta · \nabla W_i^{[n]} = W_{old.i}^{[n]} - \eta · (\frac{1}{m} \sum_{k=1}^{m}\frac{\mathrm{d} J_k^{[n+1]} }{\mathrm{d} W_i^{[n]}}) \end{align}$

  4. 当反向传播递归至最后一层, $a^{[0]}$ 为输入样本,损失函数为 $\nabla J^{[1]}_i(W^{[1]}_i, b^{[1]}_i)$