
正向传播
正向传播是指对神经网络沿着从输入层到输出层的顺序,依次计算并储存模型的中间变量(包括输出)。
假设模型为含单隐藏层的多层感知机,输入是一个特征为
其中
隐藏层变量 h 也是一个中间变量。假设输出层参数只有权重
假设损失函数为 l,且样本标签为 y,可以计算出单个数据样本的损失项:
引入L2范数正则化,L2 范数正则化在模型原损失函数基础上添加 L2 范数惩罚项,从而得到训练所需要最小化的函数。根据其定义,给定超参数
最终,模型在给定的数据样本上带正则化的损失为:
计算图如下。在图中,方框代表变量,圆圈代表运算符,箭头表示从输入到输出之间的依赖关系。
反向传播
反向传播指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层,依次计算并储存目标函数有关神经网络各层的中间变量以及参数的梯度。
首先给定正向传播的计算图:
举例来说,对于函数
其中 prod 运算符会根据两个输入的形状,在必要的操作(如转置和互换输入位置)后对两个输入做乘法。
本样例的参数为
然后依据链式法则计算目标函数有关输出层变量的梯度
在
接下来计算正则项有关两个参数的梯度:
现在,可以计算最靠近输出层的模型参数的梯度
这里自动将 h 进行转置。
沿着输出层向隐藏层继续反向传播,隐藏层变量的梯度
由于激活函数
最终,我们可以得到最靠近输入层的模型参数的梯度
- 本文标题:正向与反向传播
- 本文作者:ZOU
- 创建时间:2022-03-22 17:17:13
- 本文链接:https://yipeng.xyz/2022/03/22/正向与反向传播/
- 版权声明:可随意使用,但是转载请联系我!