论文学习:BP神经网络

最近在学习 Long Short-Term Memery (LSTM)[1], 文献中指出:通过递归反向传播算法学习在长时间间隔内存储信息需要花费很长的时间,这主要是由于不足、衰减的误差反向流造成的(Learning to store information over extended time intervals via recurrent backpropagation takes a very long time, mostly due to insufficient, decaying error back flow.)。故先了解一下反向传播算法。

一、原理

BP (back propagation)神经网络是1986年由 Rumelhart 和 McClelland 为首的科学家提出的概念,是一种按照误差反向传播算法训练的多层前馈神经网络(如图1),是应用最广泛的神经网络。

图1:前馈神经网络:采用单向多层结构,分为输入层、隐藏层(一层或多层)和输出层。
整个网络中无反馈信号单向传播。

人工神经网络无需事先确定输入输出之间映射关系的数学方程(也就是连接权重 \omega _{ij} ),仅通过自身的训练,学习某种规则,在给定输入值时得到最接近期望输出值的结果。作为一种智能信息处理系统,人工神经网络实现其功能的核心是算法。BP 神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为 BP 算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方误差(mean squared error)为最小。

均方误差

基本 BP 算法包括信号的前向传播误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反向传播是将输出误差通过隐含层向输入层逐层反向传播,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息[2]

二、详述

(一)信号的前向传播

图2 [3]以输入层 Input units(3个节点)、隐藏层 Hidden units H1(4个节点)、隐藏层 Hidden units H2(3个节点)和输出层 Output units(2个节点)为例,展示了信息的前向传播。

图2:信号的前向传播

Hidden units H1 的输入 Z_{j} 和激活 Y_{j} 是:

其中,\omega _{ij} 是输入单元 i 到隐藏层 j 的权重矩阵,f(\cdot )=sigmoid(\cdot ) 是可微函数。

②Hidden units H2 的输入 Z_{k} 和激活 Y_{k} 是:

 

同理,得到输出层 l 的输出 Y_{l} ,到此为止信息的前向传播已经完成。

(二)误差的反向传播

误差的反向传播是将输出误差通过隐含层向输入层逐层反向传播,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。简单地讲就是,我们要根据每个节点对输出误差的“贡献度”,来分摊误差(贡献度高的自然就要“承担“更重的责任),并借助于随机梯度下降(SDG)方法来重新调整权重。

此处需要补充随机梯度下降(SDG)!!!

继图2 给出的信息的前向传播模型,我们这里据需给出误差的反向传播模型,如图3 。

图3:误差的反向传播

首先我们得清楚一点,就是神经网络中每个节点的处理逻辑(以 Hidden units H1 为例,如图2 所示):用可微函数 f(\cdot )=sigmoid(\cdot )Z_{j} 激活后得到 Y_{j} 。所以我们在误差反向分析过程中,需要明确传播顺序。下面分别通过输出层和隐藏层为例,说明误差传播逻辑。

(1)输出层

使用均方误差来表述输出层的误差 E

①将误差分摊到输出节点 l 的输出 Y_{l} 上:

②将误差分摊到输出节点 l 的输入 Z_{l} 上:

③将误差分摊到权重 \omega _{kl} 上:

 

(2)隐藏层

①将误差分摊到隐藏节点 k 的输出 Y_{k} 上:

 

②其他同输出层方程相似。

三、示例

这里通过一个简单的神经网络(图4 )对 BP 进行演示。该模型对输入 x, x\in [0, 1] 进行二分类,输出l, l\in {0, 1}

图4:1个输入节点、两个隐藏节点和两个输出节点

输入 x=0.4 ,目标输出 l=0 。初始化权重,令 \omega _{ih_{h}}=[0.2, 0.5]\omega _{h_{h}l_{l}}=[0.1, 0.7, 0.2, 0.5] ,偏项b_{n}=[0.05, 0.05]

(一)FP过程

①计算隐藏层

②计算输出层

③均方误差

(二)BP过程

这里我们以更新权重 \omega _{h_{1}l_{1}} 为例,简述 BP 过程。

①计算 l_{1} 的均方误差

②对 \omega _{h_{1}l_{1}} 求偏导

③对 \omega _{h_{1}l_{1}} 更新

同理,对其他权重进行修改,循环上诉过程,直到输出值接近真值。

[1] Hochreiter, S, Schmidhuber, J. Long Short-Term Memory[J]. Neural Computation, 9(8):1735-1780.

[2] https://baike.baidu.com/item/BP神经网络

[3] Lecun Y, Bengio Y, Hinton G. Deep learning.[J]. 2015, 521(7553):436.

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章