@[toc]
文章说明
反向传播(Backpropagation)算法是怎么让神经网络(neural network)变的有效率的。
背景
梯度下降(Gradient Descent)
在这里插入图片描述反向传播(Backpropagation)并不是和梯度下降(Gradient descent)不同的一个方法。他只是一个比较有效率的演算法,让你在计算梯度向量的时候比较有效率把结果计算出来。
链式法则(Chain Rule)
关键就是求导的链式法则(Chain Rule),下图就是链式法则求导的两种case
在这里插入图片描述
反向传播
首先定义损失函数(Lost function):
- 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的哦,用L表示。
-
代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。
所以这里定义的是有点问题的。
那怎么去做呢?我们先整个神经网络(Neural network)种抽取出一小部分的神经(Neural)去看:
在这里插入图片描述在这里插入图片描述
从这一小部分中去看,把计算梯度分成两个部分
- 计算(Forward pass的部分)
- 计算 ( Backward pass的部分 )
Forward pass
那么,首先计算(Forward pass的部分):
根据链式法则(Chain Rule),forward pass的运算规律就是:
直接使用数字,更直观地看到运算规律:
在这里插入图片描述
是不是只管看到了结果,就是上一个的值,接下来是计算 Backward pass~~
Backward pass
(Backward pass的部分)这就很困难复杂因为我们的C是最后一层:
那怎么计算 (Backward pass的部分)这就很困难复杂因为我们的C是最后一层:
计算所有激活函数的偏微分,激活函数有很多,这里使用Sigmod函数为例
在这里插入图片描述
这里使用链式法则(Chain Rule)的case1,计算过程如下:
在这里插入图片描述最终的式子结果:
在这里插入图片描述但是你可以想象从另外一个角度看这个事情,现在有另外一个neural,把back的过程逆向过来:
在这里插入图片描述case 1: Output layer
case 1,就是y1与y2是输出值:
在这里插入图片描述
case2:Not Output Layer
在这里插入图片描述- Compute for all activation function inputs z
- Compute from the output layer
怎么去计算呢?
image 在这里插入图片描述实际上进行backward pass时候就是反向的计算(也相当于一个neural network)。
网友评论