前言

在学习神经网络的时候,一直不理解反向传播算法,看到一大堆公式,总是一头雾水。看了很多大佬的分析和解说,最后通过自己一步步的分析和理解发现,相比直接看公式和方程,似乎一个简单的例子更容易理解这种看似复杂实际上并不复杂的算法,下面主要通过一个简单的例子来表达我对BP(反向传播算法)的理解。

链式法则(乘法法则)

如果已经理解链式法则的可以忽略这一部分。

链式法则可以说是反向传播算法的重中之重,几乎每一步的运算都会用到它。

核心理解如下:
假设有两个函数:深度学习链式推导 链式法则是什么_神经网络
很显然:深度学习链式推导 链式法则是什么_深度学习_02
为了求深度学习链式推导 链式法则是什么_python_03,我们就需要用到链式法则:
深度学习链式推导 链式法则是什么_机器学习_04

反向传播算法引例

看下面这个网络:



深度学习链式推导 链式法则是什么_python_05


一共有3层:输入层、隐藏层、输出层。输入层有两个神经元 深度学习链式推导 链式法则是什么_神经网络_06,隐藏层有两个神经元 深度学习链式推导 链式法则是什么_深度学习链式推导_07(这里为了简化问题,方便我们理解算法,我们可以先不用考虑激活函数),输出有一个神经元 深度学习链式推导 链式法则是什么_神经网络_08.

为了直观的理解这个网络,我们可以为每个参数赋上具体的数值,比如,令 深度学习链式推导 链式法则是什么_深度学习链式推导_09,假设各个权重的真实值分别是 深度学习链式推导 链式法则是什么_深度学习_10,这样,通过正向运算,我们可以得到 深度学习链式推导 链式法则是什么_神经网络_08 的目标真实值 深度学习链式推导 链式法则是什么_python_12

因此,在反向传播的过程中,我们只知道 深度学习链式推导 链式法则是什么_深度学习链式推导_09以及 深度学习链式推导 链式法则是什么_python_12深度学习链式推导 链式法则是什么_python_15 是未知的,为了使反向传播进行下去,我们需要随机初始化各个权重值,假设我们随机初始化的结果是:
深度学习链式推导 链式法则是什么_深度学习链式推导_16

下面就是反向传播算法的具体计算过程了:

首先,我们要计算误差,也就是真实值与预测值之间的误差 深度学习链式推导 链式法则是什么_深度学习链式推导_17。上面提到,真实值 深度学习链式推导 链式法则是什么_python_12,需要我们计算预测值 深度学习链式推导 链式法则是什么_神经网络_08

深度学习链式推导 链式法则是什么_python_20
深度学习链式推导 链式法则是什么_机器学习_21

然后,我们就要开始更新各个权重值了,我们先来更新 深度学习链式推导 链式法则是什么_python_22深度学习链式推导 链式法则是什么_python_23,为了更新 深度学习链式推导 链式法则是什么_python_22,需要计算 深度学习链式推导 链式法则是什么_python_25,根据链式法则:
深度学习链式推导 链式法则是什么_python_26
已知 深度学习链式推导 链式法则是什么_深度学习链式推导_17,则
深度学习链式推导 链式法则是什么_深度学习链式推导_28
深度学习链式推导 链式法则是什么_机器学习_29,则
深度学习链式推导 链式法则是什么_深度学习链式推导_30
因此,
深度学习链式推导 链式法则是什么_机器学习_31
最后,我们就可以运用梯度下降法来更新深度学习链式推导 链式法则是什么_python_22,假设学习率 深度学习链式推导 链式法则是什么_深度学习_33,则
深度学习链式推导 链式法则是什么_机器学习_34

同理,我们可以按照上面的方法更新深度学习链式推导 链式法则是什么_python_23

上面已经求得 深度学习链式推导 链式法则是什么_机器学习_36.
根据 深度学习链式推导 链式法则是什么_机器学习_29
深度学习链式推导 链式法则是什么_python_38
则,
深度学习链式推导 链式法则是什么_深度学习链式推导_39

下面,我们来更新 深度学习链式推导 链式法则是什么_机器学习_40.

深度学习链式推导 链式法则是什么_python_41,根据链式法则:
深度学习链式推导 链式法则是什么_python_42
深度学习链式推导 链式法则是什么_深度学习_43上面已经求过,根据 深度学习链式推导 链式法则是什么_机器学习_29可以求得:
深度学习链式推导 链式法则是什么_神经网络_45
根据 深度学习链式推导 链式法则是什么_深度学习_46 可以求得:
深度学习链式推导 链式法则是什么_机器学习_47
所以,
深度学习链式推导 链式法则是什么_机器学习_48
因此,
深度学习链式推导 链式法则是什么_python_49

同理,
深度学习链式推导 链式法则是什么_神经网络_50
深度学习链式推导 链式法则是什么_机器学习_51
深度学习链式推导 链式法则是什么_深度学习_52

现在,我们已经更新了所有的权重值:
深度学习链式推导 链式法则是什么_神经网络_53
再次根据前向运算可以求得 深度学习链式推导 链式法则是什么_python_54深度学习链式推导 链式法则是什么_深度学习_55,我们可以发现,新的预测值更接近真实值了,而且,误差变得更小了,就这样,只要重复上面的步骤,我们就可以得到越来越准确的预测模型了!!!!

这就是我对反向传播算法的理解,希望对大家有所帮助。