学习资料:
《机器学习》周志华
目录
一、 基本概念
- 定义:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
- 最基本成分:神经元模型
- 神经网络的学习过程:根据训练数据来调整神经元之间的连接权(connection weight)以及每个功能神经元的阈值。
二、 神经元模型
1. 原理
每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即 “兴奋”起来,向其他神经元发送化学物质。
2. M-P神经元模型
2.1 原理
神经元接收到来自其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输出。
2.2 激活函数
-
理想:阶跃函数(不够连续、光滑)
-
实际常用:Sigmoid函数,也称为“挤压函数”,把可能在较大范围内变化的输入值挤压到(0 ,1 )输出值范围内。
三、 感知机与多层模型
1. 感知机(Perceptron)
1.1 组成
由两层神经元组成
- 输入层:接收外界信号传递给输出层
- 输出层:M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)
1.2 感知机实现与或非运算
y = f ( ∑ i w i x i − θ ) y=f(\sum_iw_ix_i-\theta) y=f(∑iwixi−θ),假定 f f f为阶跃函数
- “与” ( x 1 ∧ x 2 ) (x_1\wedge x_2) (x1∧x2): w 1 = w 2 = 1 , θ = 2 w_1=w_2=1,\space \theta=2 w1=w2=1, θ=2,仅在 x 1 = x 2 = 1 x_1=x_2=1 x1=x2=1时, y = 1 y=1 y=1
- “或” ( x 1 ∨ x 2 ) (x_1\vee x_2) (x1∨x2): w 1 = w 2 = 1 , θ = 0.5 w_1=w_2=1,\space \theta=0.5 w1=w2=1, θ=0.5,当 x 1 = 1 x_1=1 x1=1或 x 2 = 1 x_2=1 x2=1时, y = 1 y=1 y=1
- “非” ( ¬ x 1 ) (\neg x_1) (¬x1): w 1 = − 0.6 , w 2 = 0 , θ = − 0.5 w_1=-0.6,\space w_2=0,\space \theta=-0.5 w1=−0.6, w2=0, θ=−0.5,当 x 1 = 1 , y = 0 ; x 1 = 0 , y = 1 x_1=1,\space y=0;\space x_1=0,\space y=1 x1=1, y=0; x1=0, y=1
1.3 感知机学习:
- 学习内容:给定训练数据集,通过学习得到权重 w i ( i = 1 , 2 , … , n ) w_i(i=1,2,\dots,n) wi(i=1,2,…,n)及阈值 θ \theta θ
💡 阈值 θ \theta θ可看作一个固定输入为-1的“哑结点”(dummynode)所对应的连接权重 w n + 1 w_{n+1} wn+1,这样权重和阈值的学习就可统一为权重的学习
-
学习规则:对训练样例 ( x , y ) (x,y) (x,y),感知机的输出为 y ^ \hat{y} y^,调整感知机的权重
w i ← w i + Δ w i (1) w_i \leftarrow w_i+\Delta w_i \tag{1} wi←wi+Δwi(1)
Δ w i = η ( y − y ^ ) x i (2) \Delta w_i=\eta(y-\hat{y})x_i\tag{2} Δwi=η(y−y^)xi(2)
- 学习率(Learning rate): η ∈ ( 0 , 1 ) \eta \in(0,1) η∈(0,1),通常设置为一个小正数
2. 多层模型
-
目的:解决非线性可分问题
-
特征:输入层和输出层之间包含一层或多层神经元,称为隐层或隐含层(hidden layer)
💡 隐含层和输出层的神经元都是拥有激活函数的功能神经元
-
多层前馈神经网络(multi-layer feedforward neural networks)
- 每层神经元与下一层神经元全互连,神经元之间不同层连接也不跨层连接
- 输入层神经元接受外界输入
- 隐含层和输出层神经元对信号进行加工
- 输出层神经元输出最终结果
四、 误差逆传播算法(BP算法)
1. 参数描述
d d d个输入神经元, l l l个输出神经元, q q q个隐层神经元
- { x 1 , … x i , … x d } \{ x_1,\dots x_i,\dots x_d\} {x1,…xi,…xd}:输入层的 d d d个输入
- v i h v_{ih} vih:输入层第 i i i个神经元和隐层第 h h h个神经元之间的连接权
- α h \alpha_h αh:隐层第 h h h个神经元的输入
- γ h \gamma_h γh:隐层第 h h h个神经元的阈值
- { b 1 , … b h , … b q } \{ b_1,\dots b_h,\dots b_q\} {b1,…bh,…bq}:隐层的 q q q个输出
- w h j w_{hj} whj:隐层第 h h h个神经元和输出层第 j j j个神经元之间的连接权
- β j \beta _j βj:输出层第 j j j个神经元的输入
- θ j \theta_j θj:输出层第 j j j个神经元的阈值
- { y 1 , … y j , … y l } \{ y_1,\dots y_j,\dots y_l\} {y1,…yj,…yl}:输出层的 l l l个输出
2. 公式推导
对单个训练例 ( x k , y k ) (\bm{x}_k,\bm{y}_k) (xk,yk)神经网络输出 y ^ k = ( y ^ 1 k , y ^ 2 k , … , y ^ l k ) \bm{\hat{y}}_k=(\hat{y}_1^k,\hat{y}_2^k,\dots,\hat{y}_l^k) y^k=(y^1k,y^2k,…,y^lk)
第
j
j
j个输出
y
^
j
k
=
f
(
β
j
−
θ
j
)
(3)
\hat{y}_j^k=f(\beta_j-\theta_j) \tag{3}
y^jk=f(βj−θj)(3)
网络在
(
x
k
,
y
k
)
(\bm{x}_k,\bm{y}_k)
(xk,yk)上的均方误差
E
k
=
1
2
∑
j
=
1
l
(
y
^
j
k
−
y
j
k
)
2
(4)
E_k=\frac{1}{2}\sum_{j=1}^{l}(\hat{y}_j^k-y_j^k)^2 \tag{4}
Ek=21j=1∑l(y^jk−yjk)2(4)
任意参数
v
v
v的更新估计式
v
←
v
+
Δ
v
(5)
v\leftarrow v+\Delta v \tag{5}
v←v+Δv(5)
以隐层到输出层的连接权
w
h
j
w_{hj}
whj为例,对公式(4)的误差
E
k
E_k
Ek,给定学习率
η
\eta
η,得到
Δ
w
h
j
\Delta w_{hj}
Δwhj
Δ
w
h
j
=
−
η
∂
E
k
∂
w
h
j
(6)
\Delta w_{hj}=-\eta\frac{\partial E_k}{\partial w_{hj}} \tag{6}
Δwhj=−η∂whj∂Ek(6)
∂
E
k
∂
w
h
j
=
∂
E
k
∂
y
^
j
k
⋅
∂
y
^
j
k
∂
β
j
⋅
∂
β
j
∂
w
h
j
(7)
\frac{\partial E_k}{\partial w_{hj}}= \frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\partial \hat{y}_j^k}{\partial \beta_{j}}\cdot \frac{\partial \beta_j}{\partial w_{hj}}\tag{7}
∂whj∂Ek=∂y^jk∂Ek⋅∂βj∂y^jk⋅∂whj∂βj(7)
根据
β
j
\beta_j
βj的定义
∂
β
j
∂
w
h
j
=
b
h
(8)
\frac{\partial \beta_j}{\partial w_{hj}}=b_h \tag{8}
∂whj∂βj=bh(8)
Sigmoid函数性质
f
′
(
x
)
=
f
(
x
)
(
1
−
f
(
x
)
)
(9)
f'(x)=f(x)(1-f(x)) \tag{9}
f′(x)=f(x)(1−f(x))(9)
根据(3)(4),有
g
j
=
−
∂
E
k
∂
y
^
j
k
⋅
∂
y
^
j
k
∂
β
j
=
−
(
y
^
j
k
−
y
j
k
)
f
′
(
β
j
−
θ
j
)
=
y
^
j
k
(
1
−
y
^
j
k
)
(
y
j
k
−
y
^
j
k
)
(10)
\begin{aligned} g_j &=-\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot\frac{\partial \hat{y}_j^k}{\partial \beta_j}\\ &=-(\hat{y}_j^k-y_j^k)f'(\beta_j-\theta_j)\\&=\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k) \end{aligned}\tag{10}
gj=−∂y^jk∂Ek⋅∂βj∂y^jk=−(y^jk−yjk)f′(βj−θj)=y^jk(1−y^jk)(yjk−y^jk)(10)
将(8)(10)代入(7)再带入(6),得到BP算法中关于
w
h
j
w_{hj}
whj的更新公式
Δ
w
h
j
=
η
g
j
b
h
(11)
\Delta w_{hj}=\eta g_jb_h \tag{11}
Δwhj=ηgjbh(11)
类似可得
Δ
θ
j
=
−
η
g
j
(12)
\Delta\theta_j=-\eta g_j\tag{12}
Δθj=−ηgj(12)
Δ
v
i
h
=
η
e
h
x
i
(13)
\Delta v_{ih}=\eta e_hx_i\tag{13}
Δvih=ηehxi(13)
Δ
γ
h
=
−
η
e
h
(14)
\Delta\gamma_h=-\eta e_h \tag{14}
Δγh=−ηeh(14)
其中
e
h
=
b
h
(
1
−
b
h
)
∑
j
=
1
l
w
h
j
g
j
(15)
e_h=b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j\tag{15}
eh=bh(1−bh)j=1∑lwhjgj(15)