在之前对多层感知机的实现过程中,只考虑了感知机在进行前向传播时所进行的计算,对于涉及梯度计算的反向传播并未进行过多赘述,仅调用深度学习框架所提供的反向传播函数进行自动梯度计算。因此在本节内容中,针对深度学习模型在训练时的前向传播以及反向传播过程进行了介绍。
一、前向传播
前向传播过程主要是指按输入层 -> 隐藏层 -> 输出层顺序传递数值进行计算并存储结果的过程。
以上述图中多层感知机结构为例:
从输入层到隐藏层的计算为:
zi=w1x+b1hi=ReLU(z)z_i = w_1 x +b_1 \\ h_i = ReLU(z)zi=w1x+b1hi=ReLU(z)
从隐藏层到输出层的计算为:
oi=y^i=w2hi+b2o_i =\hat{y}_i = w_2 h_i + b_2oi=y^i=w2hi+b2
通过该过程,神经网络可以得到一个输出值y^\hat{y}y^,用于计算与训练集中真实值yyy的误差,该误差会在反向传播过程中用到,来实现对参数[w,b][w,b][w,b]的修正,输出预测值与真实值的误差损失可用LLL表示:
l=lloss_function(y^,y)l = l_{loss\_function}(\hat{y},y)l=lloss_function(y^,y)
同时根据之前学到的L2L2L2正则定义,对于参数[w1,b1],[w2,b2][w_1,b_1],[w_2,b_2][w1,b1],[w2,b2],将其视作拓展后的矩阵W1′,W2′W'_1,W'_2W1′,W2′,存在给定超参数λ\lambdaλ,使得正则化项为:
s=λ2(∣∣W1′∣∣2+∣∣W2′∣∣2)s=\frac{\lambda}{2}(||W'_1||^2+||W'_2||^2)s=2λ