专业英语读书笔记Chapter2:反向传播算法
本章主要讲述如何计算Loss function的梯度,反向传播是这些梯度的快速算法,由梯度的定义可得,即是关于权重和偏置的偏导数。
反向传播算法:backpropagation.
感悟:如何改变权重和偏置来改变整个网络的行为。
2.1 神经网络中使用矩阵快速计算输出的方法
- 权重矩阵$w^l$
相邻两层神经元之间的权值,是深度学习需要学习的参数(c.f. y=k*x+b)
和直线拟合一样,
深度学习训练目标函数:这个目标函数定义了什么样的参数才算一组“好参数”。
在机器学习中,一般是采用成本函数(cost function),然后,训练目标就是通过调整每一个权值Wij来使得cost达到最小。
cost函数可以看成是由所有待求权值Wij为自变量的复合函数,而且基本上是非凸的,即含有许多局部最小值。但实际中发现,采用我们常用的梯度下降法就可以有效的求解最小化cost函数的问题。
当我们将cost 函数表示为$H(W_{11}+W_{12}+W_{13}+…+w_{mn})$
由梯度下降算法可得,BP
作者:Anonymous
链接:https://www.zhihu.com/question/27239198/answer/89853077
来源:知乎
偏置向量$b^l$
向量化函数,相当于对向量中的每个分量,即将每个分量作为输入,作为向量运算。
$f(\begin{pmatrix}2\3\end{pmatrix})=\begin{pmatrix}f(2)\f(3)\end{pmatrix}=\begin{pmatrix}4\9\end{pmatrix}$
这里向量$f$仅仅是对向量的每个元素进行平方运算。
引入了向量化函数后,$a^l=\sigma(w^la^{l-1}+b^l)$
中间变量$w^la^{l-1}+b^l$作为中间变量,为l层神经元的带权输入。
$z_j^l=\sum w_{jk}^la_k^{l-1}+b_j^l$
第l层第j个神经元的激活函数的带权输入。
2.2 关于代价函数的两个假设
二次代价函数
$C=\frac{1}{2n}\sum_x||y(x)-a^L(x)||^2$
第一个假设
是代价函数可以被写成一个在每个训练样本x上的代价函数$C_x$的均值$C=\frac{1}{n} \sum_x C_x$
第二个假设
代价可以写成神经网络输出的函数。
2.3Hadmard乘积
假设$s$和$t$是两个同样维度的向量,Hadmard乘积表示按对应位置元素乘积。
2.4反向传播的四个基本方程
定义l层的第$j^{th}$个神经元上的误差$\delta_j^l$
$\delta_j^l=\frac{\delta C}{\delta z_j^l}$
BP1:输出层误差的方程
$$
\delta_j^L=\frac{\part C}{\part a_j^L}\sigma’(z_j^L);
$$
$$
\delta^L=\nabla_a C\sdot \sigma’(z^L);
$$
BP2:使用下一层的误差表示当前层的误差:
$$
\delta^l((w^{l+1})^T\delta^{l+1}\sdot \sigma’(z^l))
$$
BP3:代价函数关于网络中任意偏置的改变率:
$$
\frac{\part C}{\part b_j^l}=\delta_j^l
$$
BP4:代价函数关于任何一个权重的改变率:
$$
\frac{\part C}{\part w_{jk}^l}=a_k^{l-1}\delta_j^l
$$
2.6 反向传播算法
- 输入x
- 前向传播
- 输出层误差计算
- 反向传播误差计算
- 输出,代价函数的梯度由BP3和BP4给出。
Conclusion:反向传播算法的直观理解
- 反向传播算法确保我们可以同时计算 所有的偏导数$\frac{\part C}{\part w_j}$;仅仅使用一次前向传播,外加一次后向传播。
- 反向传播的计算代价:比起直接计算导数,反向传播会有更大的优势。
- 一种可能的计算代价函数的梯度$\frac{\part C}{\part w_{jk}^l}\Delta w_{jk}^l$的方法是细致地追踪一个$w_{jk}^l$的微小变化如何导致C中的变化值。
所以你可以将反向传播想象成⼀种计算所有可能的路径变化率的求和的⽅式。或者,换句话说,反向传播就是⼀种巧妙地追踪权重(和偏置)微⼩变化的传播,抵达输出层影响代价函数的技术。