反向传播算法是深度学习的最重要的基础,这篇博客不会详细介绍这个算法的原理和细节。,如果想学习反向传播算法的原理和细节请移步到这本不错的资料。这里主要讨论反向传播算法中的一个小细节:反向传播算法为什么要“反向”?
背景
在机器学习中,很多算法最后都会转化为求一个目标损失函数(loss function)的最小值。这个损失函数往往很复杂,难以求出最值的解析表达式。而梯度下降法正是为了解决这类问题。直观地说一下这个方法的思想:我们把求解损失函数最小值的过程看做“站在山坡某处去寻找山坡的最低点”。我们并不知道最低点的确切位置,“梯度下降”的策略是每次向“下坡路”的方向走一小步,经过长时间的走“下坡路”最后的停留位置也大概率在最低点附近。这个“下坡路的方向”我们选做是梯度方向的负方向,选这个方向是因为每个点的梯度负方向是在该点处函数下坡最陡的方向。至于为什么梯度负方向是函数下降最陡的方向请参考大一下的微积分教材,或者看看这个直观的解释。在神经网络模型中反向传播算法的作用就是要求出这个梯度值,从而后续用梯度下降去更新模型参数。反向传播算法从模型的输出层开始,利用函数求导的链式法则,逐层从后向前求出模型梯度,那么为什么要从后向前呢?
从一道编程题说起
这是leetcode 上的一道编程题 ,这道题不是很难,读者可以自己先做一做。这个问题的原理跟反向传播算法有很大的相似。
这道题目是给出一个三角形的数组,从上到下找到一条路径使得这条路径上数字的和最小,并且路径层与层之间的节点左右需要相邻。详细的题目介绍请到leetcode上看一看。
![](https://img2018.cnblogs.com/blog/1534176/201902/1534176-20190201145834886-689500189.png) 图1
图1中是一个具体的例子,最小和的路径如箭头所示&#