【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

目录

一、什么是神经网络NN

二、数学原理

正向传播

误差逆传播BP

输出层相关推导

隐层相关推导

三、结论

四、后记


一、什么是神经网络NN

神经网络(neural networks)是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。

神经网络中最基本的成分是神经元,即上述定义中的“简单单元”,在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”,那么他就会被**,即“兴奋”起来,想其他神经元发送化学物质。

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

上述情形,在1943年,就被抽象成了“M-P神经元模型”(上图)。在这个模型中,神经元接受来自n个其他神经元,通过带权重的连接传递过来的信号;神经元将接受到的总输入值与神经元的阈值进行比较,然后通过“**函数”处理并输出神经元的处理结果,较常用的**函数为:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

他的图像为:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

将M-P模型进行扩展,由一个神经元,扩展到多层多个神经元,就是神经网络了。下图为深度神经网络(DNN)示意图

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

那这样扩展之后,要如何给每个神经元输入数据,每个神经元又是如何计算出输出值,又如何使得结果更加准确呢,这就涉及到了数学原理相关的推导

二、数学原理

正向传播

假设我们有一个神经网络如下:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

从上图可以很容易看出,第h个隐层的输入,和第j个输出层的输入,是下记两个求和公式:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

如果我们都有sigmoid作为**函数:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

此处先额外证明一下此公式的一个特性:【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

那我们的隐层和输出层的输出与输入的关系,使用**表达式的表达结果如下:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

使用上述的几个式子,就可以获得从输入层的输入,到输出层输出的所有正向过程了

但是其中有几个值,是无法真实获得,需要随机初始化的变量:

  1. 输入层和隐层的连接权【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

  2. 隐层的阈值【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

  3. 隐层和输出层的连接权【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

  4. 输出层的阈值【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

为了使得NN达到更好的效果,我们希望上面的4个值最终调整到比较合理的值

那么如何调整这些值呢,就需要用到误差逆传播BP的推导了

误差逆传播BP

BP的主体思想为:从误差曲线上任意一点开始,如果想要找到这条曲线的最小值,使得误差最小,最快的方向为当前位置导数的逆方向

比如【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的曲线如下:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

蓝色的点为我们开始的点(即随机了连接权以及阈值之后,首次计算获得的误差)红色的线为当前的切线

如果我们想从蓝色的点,沿着函数曲线快速的找到函数的最小值,那一定就是沿着切线,向反方向查找(按照上图,正方向为右上,反方向为左下),是速度是最快的。BP的思路,大体就是这个思路(另外的一个思路参考 牛顿迭代,也是求导,但是方式略微有不同的地方),所以我们每次对每个变量的更新公式如下:

  1. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)
  2. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)
  3. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)
  4. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

下面我们来推导如何求得这个导数,以及每次对每个变量调整的值应该为多少

从上述式子中,我们可以知道整体的均方差(也就是误差)为:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

输出层相关推导

先已输出层为例,和输出层相关变量的调整值为:

  1.  【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

  2. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

ps. 正常情况下,前面还要乘一个学习率【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)来调整每次的步长;此步长一般为经验值常量,因为懒,所以此处及后面都省略不写了。但是在最终结论中,会在表达式中添加上这个值

先已连接权为例,从当前已列出的式子中,貌似看不出【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的关系,但是没有关系,我们把上述式子一步一步带入,可以获得下面的式子:

本次推导主要用到的公式如下:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

将下面3个式子,一步步带入到第一个式子中,可以获得:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

从上面这个式子可以看出,【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)是和【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)产生关联,【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)产生关联,而在【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)表达式中,是有【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的,这样子就能直观看到【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)是如何关联上的。现在我们想求得【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的偏导,根据链式法则,我们可以得到下面的式子:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

分开对每个式子求导过程如下:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

根据上面推导的sigmoid求导性质可得:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

将这3个式子带入到原式子可得:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

等式右边的值均为已知值,可直接使用求得【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

为了表述简单,提取两者的公共部分,令【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程),上述两者可以简化表达式为:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

隐层相关推导

接下来求隐层相关的:

  1. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

  2. 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

使用到的公式有(部分为上面推导出的结果):

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

从上面【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的关联推导看,【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)相关

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)的表达式上,【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)是相关的

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)是隐层的输出,通过**函数,【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)和隐层的输入【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)和阈值【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)相关:【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)又和【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)相关

继续根据链式法则:【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

对每一项分开求导:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

因为一个隐层的输出,会给到多个输出层,所以在对【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)求导时,需要添加一个求和:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

继续分开求导得:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

带入最初的式子得:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

令 【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)可得:【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

 

三、结论

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

其中:

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

【机器学习】【数学推导】神经网络(NN)及误差逆传播(BP详细推导过程)

 

四、后记

在学习了新知识之后,有事没事的时候,最好都再过一遍笔记,不然本来挺自信的,结果3-4个月没看,被别人问起的时候,突然才发现其实都记不大清了,也是丢人