![深度学习:卷积神经网络技术与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/162/32436162/b_32436162.jpg)
3.7 反向传播
采用反向传播算法的神经网络也称为BP网络。本节以如图3-8所示的神经网络反向传播为例,介绍反向传播算法是如何进行参数优化的。
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/t3-8-i.jpg?sign=1739298148-OLXQ4Qe1deGaAa7uYOguqLjwshmwjZvd-0-e2d27ee24ba6bfc3dadaef098d8d3896)
图3-8 神经网络反向传播
设输入层第i个神经元的输出为oi,则对于隐藏层第j个神经元来说,可将其输入表示为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-i.png?sign=1739298148-8ObploNVXrQzc9LoWyoQE0BhslPb5T2Z-0-c6a2c5163ea69aa7f4747f94aa241952)
隐藏层第j个神经元的输出为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-2-i.png?sign=1739298148-ZBTxAl7MJPKCvhksXTcoXb31sPuiUinj-0-2a5fa2afb61b20ae65b428332ab6ef9c)
对于输出层中的第k个神经元来说,其输入表示为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-3-i.png?sign=1739298148-WAk95OGlm0x6KH1dxkVCvmQk4FW0cyIy-0-347f1a791c43810bf67f1ae2eb26776f)
相应的输出为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-4-i.png?sign=1739298148-CEvmoSiCguE7JFXZvc0iTrbAVwH8AX1P-0-41af54e47481689f57d237a237c26b36)
其中,g=1/[1+exp(–(x+θ))]表示Sigmoid函数,且θ为阈值或偏置值。从中不难看出,Sigmoid函数的曲线随阈值θ的正负情况而变化,当θ为正值时,它就会沿着横坐标向左移动,反之,它将向右移动。因此,各神经元的输出应为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-5-i.png?sign=1739298148-XGRmvM7DCpJoFohZWI5D2rzoE2Bx1YCA-0-8c5eb88595d559d1d4695f235294b658)
BP网络学习过程中的误差反向传播是通过使一个目标函数(实际输出与希望输出之间的误差平方和)最小化来完成的,可以利用梯度下降法导出公式。
接下来考虑BP网络的学习过程,不妨用tpk来表示第k个输出神经元的期望输出,用opk来表示实际的网络输出,那么可以得到系统的平均误差如下:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/50-6-i.png?sign=1739298148-j4vdy1igl0Far3tRwjblMAyYjgWusTwx-0-c2019f421254fbc9a699f831b8722305)
实际中为了便于计算,略去下标p,因此上式可进一步简化为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-i.png?sign=1739298148-p5NIU4ogJBufoOiCwXGbflyGtSpOjC9H-0-05db84d4d863182e4cc13f3eaa3fc028)
根据梯度下降法,权值(包括阈值)的变化项Δwkj与之间满足正比关系,这里将其表示为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-2-i.png?sign=1739298148-K2OdcAyT7qrJd1tIyxrQtwsH0SgiZbmG-0-e9fba67b6b9d97c9b32dbde0b3ad9704)
由式(3.20)和式(3.22)可知:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-3-i.png?sign=1739298148-GAjYjxLUxHXU2P5u2q3amc8FKubcOsY0-0-ee1ce719ca6cb3ecdc10ff6e4693175f)
对于隐藏层神经元,上式表示为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-4-i.png?sign=1739298148-Hd5bkNLrHJibGSdyuDWlhylU4COeDnxk-0-e8f3cc6af6aaead2bc90df3c401bceda)
这里,我们记
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-5-i.png?sign=1739298148-Cf6hLkoV88eguYDSvE099JIKKmhtm6B4-0-e6c148f4aeff8211f8622f1859742937)
然而,不能直接对的值进行相关的计算,只能将它用参数的形式来表示。其具体表示如下:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/51-6-i.png?sign=1739298148-w3qkJASh3hUzyUoHJRZfnzeulb2smyMI-0-d243819539e2f57ac8b0997436188e7d)
因此,可以将各个权值系数的调整量表示如下:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/52-i.png?sign=1739298148-jukyKfQp6kQYtS5MPunKpjcM7uSXBVL9-0-c75a726fcb09d1de1d594b3c8b377056)
其中,δk=(tk–ok)ok(1–ok),η为学习率(或称学习步长)。
在BP网络的学习过程中,通过这种前向计算输出、反向传播误差的多次迭代过程,可使网络实际输出与训练样本所期望的输出之间的误差随着迭代次数的增加而减小,最终使得该过程收敛到一组稳定的权值。
在实际应用过程中,参数η的选取是影响算法收敛性质的一个重要因素。通常情况下,如果学习率η取值太大,权值的改变量也越大,算法的收敛速度可能在一开始会比较快,但可能会导致算法出现振荡,从而出现不能收敛或收敛很慢的情况。为了在增大学习率的同时不至于产生振荡,我们可对式(3.29)中的权值更新法则进行修改,也就是在其右侧加入冲量项,可表示为:
![](https://epubservercos.yuewen.com/9B758C/17517094407487606/epubprivate/OEBPS/Images/52-2-i.png?sign=1739298148-BROMUGSZ9KQD6lfNcrUIpAL2K7UdoBPd-0-da8b6a3cd8d889397c773a3f51ce6a6f)
其中,n+1代表第n+1次迭代,n是一个比例常数。该式说明在第n+1次迭代中wji的变化有部分类似于第n次迭代中的变化,也就是对其设置了一些惯性。冲量项的设置可以抑制振荡的发生,但使得学习率相应地降低。