数据科学 10 神经网络
10.1 神经网络基本概念
10.1.1 人工神经元输入输出关系
I
i
=
∑
j
=
1
n
w
j
i
x
j
−
θ
i
I_i=\sum\limits_{j=1}^nw_{ji}x_j-\theta_i
Ii=j=1∑nwjixj−θi
y
i
=
f
(
I
i
)
y_i=f(I_i)
yi=f(Ii)
其中,
- x j x_j xj(j = 1,2,…, n)是从其它神经元传来的输入信号
- w j i w_{ji} wji表示从神经元j到神经元i的连接权值
-
θ
i
θ_i
θi为阈值
f(·)称为激发函数或作用函数,又称为变换函数,它决定神经元(节点)的输出。该输出为1或0,取决于其输入之和大于或小于内部阈值。
有时为了方便起见,常把− θ i \theta_i θi看成是恒等于1的输入 x 0 x_0 x0的权值,这时上式的和式可写成:
I i = ∑ j = 0 n w j i x j x 0 = 1 w 0 i = − θ i I_i=\sum\limits_{j=0}^nw_{ji}x_j \qquad x_0 = 1 \qquad w_{0i} = -\theta_i Ii=j=0∑nwjixjx0=1w0i=−θi
1、常见的激发函数
(1) 阶跃函数和sgn函数
P ( x ∣ ) = { 1 , x ≥ 0 0 , x < 0 P(x|)=\begin{cases} 1, & x \geq 0 \\ 0, & x < 0 \end{cases} P(x∣)={1,0,x≥0x<0
(2) 饱和型函数
P
(
x
∣
)
=
{
1
,
x
≥
1
k
k
x
,
−
1
k
≤
x
<
1
k
−
1
,
x
<
−
1
k
P(x|)=\begin{cases} 1, & x \geq \dfrac{1}{k} \\ kx, & -\dfrac{1}{k} \leq x < \dfrac{1}{k} \\ -1, & x < - \dfrac{1}{k} \end{cases}
P(x∣)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧1,kx,−1,x≥k1−k1≤x<k1x<−k1
(3) 双曲函数
f
(
x
)
=
t
a
n
h
(
x
)
f(x) = tanh(x)
f(x)=tanh(x)
(4) S型函数
神经元的状态与输入作用之间的关系是在(0, 1)内连续取值的单调可微函数,称为Sigmoid函数,简称S型函数。当
β
\beta
β趋于无穷时, S型曲线趋于阶跃函数,通常情况下,
β
\beta
β取值为1。
f
(
x
)
=
1
1
+
e
x
p
(
−
β
)
,
β
>
0
f(x)=\dfrac{1}{1+exp(-\beta)}, \beta > 0
f(x)=1+exp(−β)1,β>0
10.2 感知器与BP网络
10.2.1 感知机
感知器是由美国计算机科学家罗森布拉特(F.Roseblatt)于1957年提出的。感知器可谓是最早的人工神经网络。
1、基本结构
y = f ( x ) = { 1 , ∑ i = 1 d w i x i − θ ≥ 0 − 1 , ∑ i = 1 d w i x i − θ < 0 = s g n ( w 0 T − θ ) y= f(x)=\begin{cases} 1, & \sum\limits_{i=1}^dw_ix_i-\theta \geq 0 \\ -1, & \sum\limits_{i=1}^dw_ix_i-\theta < 0 \end{cases} = sgn(w_0^T-\theta) y=f(x)=⎩⎪⎪⎨⎪⎪⎧1,−1,i=1∑dwixi−θ≥0i=1∑dwixi−θ<0=sgn(w0T−θ)
2、原理
感知器的学习是一种有监督的学习方式,其学习规则称之为delta规则。若以t表示目标输出(Y), a表示实际输出(
y
^
\hat{y}
y^),则
e
=
t
−
a
e = t-a
e=t−a
网络训练的目的就是要使a
→
\rightarrow
→t
当e=0时,得到最优的网络权值和阈值;
当e>0时,实际输出小于目标输出,应加大网络权值和阈值;
当e<0时,实际输出大于目标输出,就减小网络权值和阈值;
其权值阈值学习算法为:
W
(
k
+
1
)
=
W
(
k
)
+
e
p
T
W(k+1)=W(k) + ep^T
W(k+1)=W(k)+epT
\qquad
b
(
k
+
1
)
=
b
(
k
)
+
e
b(k+1) = b(k) + e
b(k+1)=b(k)+e
式中:
e----误差向量, e=t-a
W----权值向量
b----阈值向量
p----输入向量
k----表示第k步学习过程
单层感知器能实现逻辑“与”、“或”功能,却不能实现“异或”功能。由此,提出多层感知器。
3、 多层感知机
10.2.2 BP神经网络
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络。
1、原理
BP的两个过程:数据流的前向计算(正向传播)、误差信号的反向传播。
BP的传递函数:Log-sigmoid型函数(输入值可取任意值,输出值在0和1之间;),tan-sigmod型传递函数(tansig的输入值可取任意值,输出值在-1和+1之间;)、线性传递函数purelin(输入与输出值可取任意值)。
BP的隐藏层:通常有一个或多个隐层,该层中的神经元均采用sigmoid型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值
2、 算法步骤(概述)
(1)、网络初始化。给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值
ε
\varepsilon
ε和最大学习次数M
(2)、随机选择第k个输入样本及对应期望输出
(3)、计算隐含层各神经元的输入和输出
(4)、利用网络期望输出和实际输出,计算误差函数对输出层的个神经元的偏导数
δ
0
(
k
)
\delta_0(k)
δ0(k)
(5)、利用隐含层到输出层的连接权值、输出层的
δ
0
(
k
)
\delta_0(k)
δ0(k)和隐含层的输出计算误差函数对隐含层个神经元的偏导数
δ
h
(
k
)
\delta_h(k)
δh(k)
(6)、利用输出层各神经元的
δ
0
(
k
)
\delta_0(k)
δ0(k)和隐含层各神经元的输出来修正连接权值
w
h
0
(
k
)
w_{h0}(k)
wh0(k)
(7)、利用隐含层各神经元的
δ
h
(
k
)
\delta_h(k)
δh(k)和输入层各神经元的输入修正连接权
(8)、计算全局误差
E
=
1
2
m
∑
k
=
1
m
∑
o
=
1
q
(
d
o
(
k
)
−
y
o
(
k
)
)
2
E=\dfrac{1}{2m}\sum\limits_{k=1}^m\sum\limits_{o=1}^q(d_o(k)-y_o(k))^2
E=2m1k=1∑mo=1∑q(do(k)−yo(k))2
(9)、判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回第三步,进入下一轮学习
3、 算法详述
学习开始时,各隐层连接权系数的初值应以设置较小的随机数较为适宜。
采用S型激发函数时,由于输出层各神经元的输出只能趋于1或0,不能达到1或0。在设置各训练样本时,期望的输出分量不能设置为1或0,以设置为0.9或0.1较为适宜。
在学习开始阶段,选较大的值可以加快学习速率。学习接近优化区时,学习速率必须相当小,否则权值将产生振荡而不收敛。
4、 算法评述
(1)、非线性映射能力
能学习和存贮大量输入-输出模式映射关系,而无需事先了解描述这种关系的数学方程。只要能提供足够多的样本模式对供网络进行学习训练,它便能完成由n维输入空间到m维输出空间的非线性映射。
(2)、泛化能力
当向网络输入训练时未曾见过的非样本数据时,网络也能完成由输入空间向输出空间的正确映射。这种能力称为泛化能力。这部分内容在模型复杂度部分讨论。
(3)、容错能力
输入样本中带有较大的误差甚至个别错误对网络的输入输出规律影响很大。
5、 局限性
1、多数极小点都是局部极小,只能计算局部最优。
2、误差平面有时平缓,有时陡峭,导致采取固定学习效率时,要么学习缓慢,要么跳跃性太大。
6、改进
1、引入动量项
2、变步长法