正向与反向传播
ZOU

正向传播

正向传播是指对神经网络沿着从输入层到输出层的顺序,依次计算并储存模型的中间变量(包括输出)。

假设模型为含单隐藏层的多层感知机,输入是一个特征为 的样本。那么,中间变量为:


其中是隐藏层的权重参数。把中间变量输入激活函数后,将得到向量长度为 h 的隐藏层变量:


隐藏层变量 h 也是一个中间变量。假设输出层参数只有权重,那么可以得到向量长度为 q 的输出层变量:


假设损失函数为 l,且样本标签为 y,可以计算出单个数据样本的损失项:


引入L2范数正则化,L2 范数正则化在模型原损失函数基础上添加 L2 范数惩罚项,从而得到训练所需要最小化的函数。根据其定义,给定超参数,正则化项即为:


最终,模型在给定的数据样本上带正则化的损失为:


计算图如下。在图中,方框代表变量,圆圈代表运算符,箭头表示从输入到输出之间的依赖关系。

反向传播

反向传播指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层,依次计算并储存目标函数有关神经网络各层的中间变量以及参数的梯度。

首先给定正向传播的计算图:

举例来说,对于函数,当需要求 z 对 x 的导数时,通过链式法则,有:

其中 prod 运算符会根据两个输入的形状,在必要的操作(如转置和互换输入位置)后对两个输入做乘法。

本样例的参数为,因此反向传播的目标就是计算。因为在输出层才能知晓结果,所以我们需要以相对正向传播相反的方向来进行计算,并且需要进行一次正向传播。首先,分别计算目标函数有关损失项 L 和正则项 s 的梯度:

然后依据链式法则计算目标函数有关输出层变量的梯度

中,y 为常量,所以该式表示损失函数对 o 这个预测求导数。

接下来计算正则项有关两个参数的梯度:

现在,可以计算最靠近输出层的模型参数的梯度。依据链式法则,得到:

这里自动将 h 进行转置。

沿着输出层向隐藏层继续反向传播,隐藏层变量的梯度可以这样计算:

由于激活函数是按元素运算的,中间变量 z 的梯度的计算需要使用按元素乘法符

最终,我们可以得到最靠近输入层的模型参数的梯度。依据链式法则,得到:

  • 本文标题:正向与反向传播
  • 本文作者:ZOU
  • 创建时间:2022-03-22 17:17:13
  • 本文链接:https://yipeng.xyz/2022/03/22/正向与反向传播/
  • 版权声明:可随意使用,但是转载请联系我!
 评论