深度学习之PyTorch实战计算机视觉
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 后向传播

深度学习中的后向传播主要用于对我们搭建的模型中的参数进行微调,在通过多次后向传播后,就可以得到模型的最优参数组合。接下来介绍后向传播这一系列的优化过程具体是如何实现的。深度神经网络中的参数进行后向传播的过程其实就是一个复合函数求导的过程。

首先来看一个模型结构相对简单的实例,在这个实例中我们定义模型的前向传播的计算函数为f=(x+yz,它的流程如图3-7所示。

图3-7

假设输入数据x=2、y=5、z=3,则可以得到前向传播的计算结果f=(x+yz=21,如果把原函数改写成复合函数的形式,令h=x+y=7,就可以得到f=h×z=21。

接下来看看在后向传播中需要计算的内容,假设在后向传播的过程中需要微调的参数有三个,分别是xyz,这三个参数每轮后向传播的微调值为,这三个值计算的都是偏导数,我们把求偏导的步骤进行拆解,这样就更容易理解整个计算过程了。

首先,分别计算,然后计算xyz的后向传播微调值,即它们的偏导数,如下所述。

z的偏导数为

y的偏导数为

x的偏导数为

在清楚后向传播的大致计算流程和思路后,我们再来看一个模型结构相对复杂的实例,其结构是一个初级神经网络,如图3-8所示。

图3-8

我们假设x0=1、x1=1、b=-1,同时存在相对应的权重值w0=0.5、w1=0.5,使用Sigmoid作为该神经网络的激活函数,就可以得到前向传播的计算函数为,将相应的参数代入函数中进行计算,得到,之后再对函数进行求导。同样,可以将原函数进行简化,改写成复合函数的形式求解,令h=w0x0+w1x1+b=0,简化后的函数为,在分别计算后得到,有了以上结果后,下面来看x0x1的后向传播微调值。

x0的后向传播微调值为

x1的后向传播微调值为