多层前馈网络
介绍:多层前馈网络的反向传播 (BP)学习算法,简称BP算法,是有导师的学习,它是梯度下降法在多层前馈网中的应用。
网络结构:网络由输入层、隐层和输出层节点组成,隐层可一层,也可多层(图中是单隐层),前层至后层节点通过全连接。
XOR问题
线性不可分问题,由Minsky于1969年提出XOR(异或问题)。
针对XOR问题,单层神经网络无法满足需求,需要使用多层感知机(多层前馈神经网络)。即在输入和输出层中间加一或多层隐单元。
多层感知机
如图所示,以三层为例,解决异或问题。
由输入
u
=
(
u
1
,
u
2
)
u=(u_{1}, u_{2})
u=(u1,u2)得到两个隐含层节点和一个输出层节点的输出如下:
y
1
1
=
f
[
w
11
1
u
1
+
w
12
1
u
2
−
θ
1
1
]
y_{1}^{1}=f\left[w_{11}^{1} u_{1}+w_{12}^{1} u_{2}-\theta_{1}^{1}\right]
y11=f[w111u1+w121u2−θ11]
y
2
1
=
f
[
w
21
1
u
1
+
w
22
1
u
2
−
θ
2
1
]
y_{2}^{1}=f\left[w_{21}^{1} u_{1}+w_{22}^{1} u_{2}-\theta_{2}^{1}\right]
y21=f[w211u1+w221u2−θ21]
y
=
f
[
w
1
2
y
1
1
+
w
2
2
y
2
1
−
θ
]
y=f\left[w_{1}^{2} y_{1}^{1}+w_{2}^{2} y_{2}^{1}-\theta\right]
y=f[w12y11+w22y21−θ]
f
[
∙
]
=
{
1
,
∙
≥
0
0
,
∙
<
0
f[\bullet]=\left\{\begin{array}{ll} 1, & \bullet \geq 0 \\ 0, & \bullet<0 \end{array}\right.
f[∙]={1,0,∙≥0∙<0
三层感知器可识别任一凸多边形或无界的凸区域;更多层感知网络则可以识别更加复杂的图形。
多层感知器网络,有如下定理:
- 定理1 若隐层节点(单元)可任意设置,用三层阈值节点的网络,可以实现任意的二值逻辑函数。
- 定理2 若隐层节点(单元)可任意设置,用三层S型非线性特性节点的网络,可以一致逼近紧集上的连续函数或按范数逼近紧集上的平方可积函数。
BP算法
网络结构
BP神经网络由输入层、隐藏层和输出层组成,每一层都包含若干个神经元。输入层接收外部数据,输出层给出预测结果,隐藏层负责对数据进行非线性变换。每两层之间都有连接权重和偏置,它们决定了信号在网络中的传递方式。
下图展示了一个三层(一个输入层、一个隐藏层和一个输出层)的BP神经网络示例:
其中,x表示输入数据,y表示输出数据,w表示权重,b表示偏置,f表示激活函数。
总体思路
① 设置初始权系数
w
0
\mathbf{w}_{0}
w0为较小的随机非零值;
② 给定输入/输出样本对,计算网络输出,完成前向传播;
③ 计算目标函数
J
J
J。如
J
<
ε
J< \varepsilon
J<ε, 训练成功,退出;否则转入④;
④ 反向传播计算由输出层,按梯度下降法将误差反向传播,逐层调整权值。
前向传播
前向传播是指数据从输入层到输出层的计算过程。在每一层中,神经元的输入是上一层神经元的加权和加上偏置项,即:
z i = ∑ j w i j x j + b i z_i = \sum_j w_{ij} x_j + b_i zi=j∑wijxj+bi
其中, z i z_i zi表示第i个神经元的输入, w i j w_{ij} wij表示第j个神经元到第i个神经元的连接权重, x j x_j xj表示第j个神经元的输出(对于输入层来说就是原始数据), b i b_i bi表示第i个神经元的偏置。
然后,神经元的输出是将其输入通过一个激活函数进行非线性变换得到的,即:
a i = f ( z i ) a_i = f(z_i) ai=f(zi)
其中 a i a_i ai表示第i个神经元的输出(对于输出层来说就是预测结果), f f f表示激活函数。常用的激活函数有Sigmoid函数、tanh函数、ReLU函数等。
通过这样逐层计算下去,就可以得到最终的预测结果。
误差反传
反向传播是指根据预测结果与真实结果之间的误差来反向调整网络参数(权重和偏置)的过程。反向传播算法基于梯度下降法,在每次迭代中沿着损失函数(误差平方和)对参数求导得到的负梯度方向更新参数。
为了计算损失函数对参数(以权重为例)求导得到梯度值 ∂ E ∂ w i j \frac{\partial E}{\partial w_{ij}} ∂wij∂E ,我们需要使用链式法则将其分解为三项相乘:
∂ E ∂ w i j = ∂ E ∂ a i ∂ a i ∂ z i ∂ z i ∂ w i j \frac{\partial E}{\partial w_{ij}} = \frac{\partial E}{\partial a_i} \frac{\partial a_i}{\partial z_i} \frac{\partial z_i}{\partial w_{ij}} ∂wij∂E=∂ai∂E∂zi∂ai∂wij∂zi
多回归分类
优点 | 缺点 |
---|---|
学习完全自主;可逼近任意非线性函数 | 算法非全局收敛;收敛速度慢;学习速率α的选择和网络层数的设计没有标准方法 |