1.前向传播
为简单起见,隐藏层不包括偏置项。,中间变量为:
其中是隐藏层的权重参数。再通过激活函数后,隐藏激活向量:
隐藏变量h也是一个中间变量。假设输出层的参数只有权重,我们可以得到输出层变量,它是一个长度为q的向量。
假设损失函数为l,样本标签为y,则单个样本的损失项,
根据正则化定义,给定超参数,正则化项为:
最后,模型在给定数据样本上的正则化损失为:
2.反向传播
反向传播(backward propagation)指的是计算神经网络参数梯度的方法。简言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。该算法存储了计算某些参数梯度时所需的任何中间变量(偏导数)。假设我们有函数Y=f(x)和Z=g(Y),其中输入和输出是任意形状的张量。利用链式法则,我们可以计算Z关于X的导数.
在这里,我们使用prod运算符在执行必要的操作(如换位和交换输入位置)后将其参数相乘。对于向量,这很简单,它只是矩阵-矩阵乘法。对于高维张量,我们使用适当的对应项。运算符prod指代了所有的这些符号。
回想一下,在计算单隐藏层简单网络的参数是和。反向传播的目的是计度和。为此,我们链式法则,以此计算每个中间变量和参数的梯度。计算的顺序与前向传播中执行的顺序相反,因为我们需要从计算图的结果开始,并朝着参数的方向努力。第一步是计算目标函数相对于损失项和正则项的梯度。
接下来,我们根据链式法则计算目标函数关于输出层变量的梯度:
接下来,我们计算正则化项相对于两个参数的梯度:
现在我们可以计算最接近输出层的模型参数的梯度.