BP 神经网络中的 BP 为 Back Propagation 的简写,最早它是由Rumelhart、McCelland等科学家于 1986 年提出来的,Rumelhart 并在Nature 上发表了一篇非常著名的文章 《Learning representations by back-propagating errors》 。随着时代的迁移,BP神经网络理论不断的得到改进、更新,现在无疑已成为了应用最为广泛的神经网络模型之一。让我们一起来探索下 BP神经网络最初的 基本模型和概念!
从神经网络的生物模型说起
我们知道人大脑信息的传递、对外界刺激产生反应都由神经元控制的,人脑就是由上百亿个的这样神经元构成。这些神经元之间并不孤立而且联系很密切,每个神经元平均与几千个神经元相连接,因此构成了人脑的神经网络。刺激在神经网络中的传播是遵循一定的规则的,一个神经元并非每次接到其他神经传递过来的刺激都产生反应。它首先会将与其相邻的神经元传来的刺激进行积累,到一定的时候产生自己的刺激将其传递给一些与它相邻的神经元。这样工作的百亿个的神经元构成了人脑对外界进行的反应。而人脑对外界刺激的学习的机制就是通过调节这些神经元之间联系以及其强度。当然,实际上以上说的是对人脑真正神经工作的一种简化的生物模型,利用这种简化的生物模型可以将它推广至机器学习中来,并把它描述成人工神经网络。BP神经网络就是其中的一种,来看看具体对神经元的分析。
图1 神经网络中神经元示意图
Xj 表示这种积累,Yi表示某个神经元传递过来的刺激量,Wi表示链接某个神经元刺激的权重,得到公式:
Xj = (y1 * W1)+(y2 * W2)+...+(yi * Wi)+...+ (yn * Wn)
Xj 完成积累后,完成积累的神经元本身对周围的一些神经元传播刺激,将其表示为 yj
yj = f(Xj)
Xj 的结果进行处理后,对外传递刺激 yj 。用 f 函数映射来表示这种处理,将它称之为 激活函数。
BP神经网络的构成
分析完单个的神经元后,再来看看它们组成网络后的情形,用图形来说明是最直观的方法,如图2所示:
图2 BP神经网络示意图
输入层。第二区域,表示神经元相互之间传递刺激相当于人脑里面,因此把第二区命名为隐藏层。第三区域,表示神经元经过多层次相互传递后对外界的反应,因此把第三区域命名为输出层。
运用向后反馈的学习机制,来修正神经网中的权重,最终达到输出正确结果的目的!
BP神经网络的数学推导
公式(1):
Sigmoid 函数,那么可以得到第二个公式(2):
yi 然后加权积累(权重 Wji )完成后产生 xj ,再通过激活函数产生刺激 yj,向下一层与它相连的神经元传递,依次类推最终输出结果。
Wji,这一部分数学推导需要运用到多元微分的数学内容。要修正 Wji 就需要得到误差量。具体来看,首先用 dj 来表示真实的正确结果,并且设误差为 E ,那么( yj - dj )对应的就是 E 对于 yj 的微分增量,即 yj 减去( yj - dj )后就能得到正确值,得到公式(3):
Wji的误差量是多少也就是
的值。而由公式(1)中知道 Wji 与 xj 相关, 那么可以推导出公式(4):
Wji的误差量,转换为需要求
的值了。它的推导如下:
其中
的值,可以通过公式(2)求导得出来:
所以最终得到的的误差量的值为:
yi ,前面的都是 yj 。推到这里可以算是完成了运用神经网络的输出值 yj 和正确值 dj 对最后一层隐藏层 Wji 的修正,那么对其他隐藏层呢? 接着往下看。
公式(3)开始,如果我们知道
(注意是 yi ,公式(3)中是 yj ),就可以 同理 推导求出其对应其他隐藏层需要修正的权重值误差量了。推导如下:
这样所有的误差量的都可以 同理 推导完成!
Wji ,就是加上下面变量了,设置一个 l
至此,BP神经网络反馈部分的数学推导算完成了,可以在自己的草稿纸上画画~