机器学习笔记7 - 反向传播

理解反向传播 back propagation

作用

首先需要明白反向传播(back propagation)的作用:

深度学习的训练是损失函数(loss function)最小化的过程,一般采取梯度下降法求解。那么怎么计算梯度呢?这就要用到back propagation了。

计算一个数学表达式的梯度是很直接的,但计算是昂贵的。而反向传播算法使用简单的方法有效的减少了计算量,反向传播使我们能高效计算神经网络各个节点关于损失函数的梯度。

误解

反向传播经常被误解为神经网络的整个学习算法。 实际上,反向传播仅用于计算梯度,然后另一种算法(如随机梯度下降SGD)利用反向传播得到的梯度进行求解最小的损失函数。

链式法则

下面以求 f(x,y,z)=(x+y)z 的偏导为例:
引入一个中间变量q,将公式分成两部分:q=x+y 和 f=qz:
这里写图片描述
上图的真实值计算线路展示了计算的视觉化过程。前向传播从输入计算到输出(绿色),反向传播从尾部开始,根据链式法则递归地向前计算梯度(显示为红色),一直到网络的输入端。可以认为,梯度是从计算链路中回流。
利用链式法则我们知道:
这里写图片描述

反向传播从尾部开始,根据链式法则递归地向前计算梯度,该节点梯度等于上层梯度×局部梯度。

以上图为例,反向传播从从最上层的节点f开始,初始值为1,以层为单位进行处理:

(1)节点q接受f发送的1并乘以该节点的偏导值-4等于-4,节点z接受f发送的1并乘以该节点的偏 导值3等于3,至此第二层完毕;

(2)求出各节点总偏导值并继续向下一层发送,节点q向x发送-4并乘以偏导值1等于-4,节点q向y发送-4并乘以偏导值1等于-4,至此第三层完毕;

(3)节点x,y的偏导值都为-4,即顶点f对x,y的偏导数均为-4。

猜你喜欢

转载自blog.csdn.net/weixin_41774576/article/details/81367986