Gradient Descent & Backpropagation Cheat Sheet

这是我学习后向传播(Backpropagation)时记录下来的cheat sheet,以及相关的训练过程中的一些Rules of Thumb,仅供参考

Gradient Descent

Gradient descent的目的,是为了减少一个预设的目的函数:
$$C=f(x, y, w, b)$$

其中x,y是数据集,是不可变的,那么C函数的偏差值可以表示为:
$$\Delta C \approx \frac{\partial C}{\partial w} \Delta w + \frac{\partial C}{\partial b} \Delta b$$

同时C函数的Gradient Vector为:
$$\nabla C \equiv \left( \frac{\partial C}{\partial w},
\frac{\partial C}{\partial b} \right)^T$$

如果我们可以使
$$\Delta w = -\eta \frac{\partial C}{\partial w} \tag{1}$$ $$\Delta b = -\eta \frac{\partial C}{\partial b} \tag{2}$$

那么可以实现C一直保持向下减小:
$$\Delta C = -\eta ( (\frac{\partial C}{\partial w})^2 + (\frac{\partial C}{\partial b})^2 )$$

Backpropagation

那么,到底怎么去求式(1)和式(2)呢?这就需要依赖Backpropagation了。实际上,Backpropagation就是一种快速求Gradient的方法。

首先,我们定义一个值,称之为error:
$$\delta^l_j \equiv \frac{\partial C}{\partial z^l_j}\tag{error}$$

下面,我们会通过这个error值去求式(1)和式(2)。主要用到四个公式:
$$\delta^l_j = \frac{\partial C}{\partial a^l_j} \sigma’(z^l_j) \tag{BP1}$$ $$\delta^l = ((w^{l+1})^T \delta^{l+1}) \odot \sigma’(z^l) \tag{BP2}$$ $$\frac{\partial C}{\partial b^l_j} = \delta^l_j \tag{BP3}$$ $$\frac{\partial C}{\partial w^l_{jk}} = a^{l-1}_k \delta^l_j\tag{BP4}$$