【weekly-sharing】反向传播算法在神经网络的应用
反向传播算法在神经网络的应用
当通过神经网络输入
在网络得到输出时会得到一个代价函数,允许来自代价函数的信息通过网络向后流动,来计算梯度的过程叫反向传播(back propagation)
反向传播算法主要用于计算梯度
基础
导数
描述函数变化率方向导数
某个方向上的导数-
梯度
梯度的方向是方向导数中取最大值的方向,值是方向导数的最大值。如在二维中,梯度计算:∇θ=(∂θ∂x,∂θ∂x)
对矩阵的梯度计算如下图: 代价函数(损失函数)
代价函数(cost function)即损失函数(loss function)。如在机器学习中,真实值为y ,而预测值为y^ 。代价函数就是来度量预测错误的程度。常写作C 或L 。-
链式法则
链式法则(chain rule) 求复合函数导数的一个法则,如:(f(g(x)))′=f′(g(x))g′(x) dydx=dydz⋅dzdx - 假设
x∈Rm,y∈Rn ,g 是从Rm 到Rn 的映射,f 是从Rn 到R 的映射。如果y=g(x) 且z=f(y) ,那么有如下:∂z∂xi=∑j∂z∂yj⋅∂yi∂xi
- 假设
计算图
计算图(computational graph)。将计算形式化为图形,形式有很多如下图:
描述
最终目标
通过调节神经网络中的参数,使得代价函数达到最小。
方法
使用梯度下降法来获取参数的最优解,梯度下降法迭代表达如下:
问题
需要一个
θ 的初始值需要求出改点的梯度
求梯度
在神经网络中,反向传播的四个方程:
梯度的计算看如下图中推导:
通过反向传播算法计算偏导数
引入误差
参考
- 《Deep Learning》 by Ian Goodfellow, Yoshua Bengio, Aaron Courville
- 《Neural Networks and Deep Learning》