5.3 前向传播和反向传播
前面讲了多层感知机和相关代码实现,也给出了关于隐藏层的数学表示。这一节我们着重看一下,隐藏在深度学习框架之下的模型参数究竟起到了什么作用。
5.3.1 什么是前向传播
前向传播(Forward Propagation)是指在一个神经网络中,从输入层到输出层的信息传递过程。具体来说就是,将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。

5.3.2 什么是反向传播
反向传播 (Back Propagation) 本质上指的是计算神经⽹络每一层参数梯度的⽅法。利用链式法则逐层求出损失函数对各个神经元权重和偏置的偏导数,构成损失函数对权值和偏置向量的梯度,作为修改权值的依据。


在反向传播的过程中,我们需要从输出层开始,逐层往输入层计算梯度。也就是说从最后一层开始,逐层往第一层计算梯度。
反向传播算法的梯度计算公式是基于链式法则来推导的,是对神经网络各层间关系的数学描述。在进行梯度计算时,我们可以使用反向传播算法的梯度计算公式来逐层计算神经网络中各层的梯度。然后,就可以使用梯度下降法或其他优化算法来更新神经网络的参数,使得神经网络的性能逐步达到最优。
同学们如果看到这堆公式直接头晕了也不要担心,在反向传播算法的过程中,可以使用深度学习框架的自动微分工具来计算梯度,这样可以大大减少手动推导梯度的工作量。
5.3.3 简单实例
前面的公式推导可能让不少同学看晕了,别着急,看一个具体的例子就会明白,所谓的公式只是一种严谨表达,其背后的含义可能并不难理解。
假定一个最简单的网络,包含两个隐层,每层只有一个神经元,其结构如下图所示。


至此,隐藏层权重和偏置项的梯度就都计算出来了。希望同学们通过这个简单例子了解前向传播和反向传播的含义,其实并没有想象中那么可怕。
梗直哥提示:如果你想了解更多关于深度学习的内容,欢迎入群学习(加V: gengzhige99)
同步更新
Github: https://github.com/gengzhige


