吴恩达机器学习系列12:反向传播算法

当咱们要运用高级算法进行梯度降低时,须要计算两个值,代价函数代价函数的偏导数算法

未命名图片.png

代价函数咱们以前已经知道怎么求了,如今只须要求代价函数的偏导数便可。微信


采用以下方法,先进行前向传播算法,而后再进行反向传播算法(Backpropagation Algorithm,反向传播算法与前向传播算法方向相反,它用来求代价函数的偏导数。具体过程看下图:网络

未命名图片.png

用 δ 做为偏差,计算方法为:机器学习

未命名图片.png


有时咱们在运用反向传播算法时会遇到 bug,并且这个 bug 还不容易被发现,所以咱们就须要用梯度检验(Gradient Checking。这种算法的思想就是运用导数估计值去对导数真实值进行检验,去检查反向传播算法运行时是否存在 bug。函数


都知道,函数在某点的导数近似于该点相邻的两点所连直线的斜率。学习

未命名图片.png

在函数图像上蓝色线表明该点的导数,红色线表明导数的近似值:优化

未命名图片.png

在向量中进行计算就须要对向量中每个元素都计算一遍,这就须要进行一个循环,而这个循环会很是慢。spa

未命名图片.png

循环以后获得的结果与运用反向传播获得的结果进行比较,若是两个结果近似相等,那咱们就能够认为反向传播算法运行正常,以后就能够关闭梯度检验,继续运行反向传播算法。由于梯度检验的循环致使运行速度太慢了。3d



总结cdn


在训练一个完整的神经网络以前,咱们首先要选择一个神经网络结构,也就是选择一个神经元之间关系的模型,一般会是如下这几种状况:

未命名图片.png

通常地来说,最左边这种隐藏层只有一层的结构是最多见的,也是使用最多的。


在选好神经网络结构后,就能够训练神经网络模型了,一共有 6 个步骤:

1.随机初始化权重;

2.运用前向传播算法对每个输入值 x^((i)) 获得输出值

未命名图片.png

3.计算代价函数;

4.运用反向传播算法计算代价函数的偏导数;

5.使用梯度检验肯定反向传播算法是否正常工做,若是检验没有问题,就要关闭梯度检验,由于梯度检验算法运行速度很是慢;

6.使用高级优化算法去进行梯度降低,使得代价函数最小化,从而获得参数向量。



ps. 本篇文章是根据吴恩达机器学习课程整理的学习笔记。若是想要一块儿学习机器学习,能够关注微信公众号「SuperFeng」,期待与你的相遇。

请关注公众号.PNG