神经元模型
单神经元模型如下:
其可以描述为
y
=
f
(
∑
j
=
1
n
w
j
x
j
−
θ
)
y=f(\sum_{j=1}^{n}w_{j}x_{j}-\theta)
y=f(∑j=1nwjxj−θ)
其作用函数如下:
1
◯
\textcircled{1}
1◯非对称型Sigmoid函数(Log Sigmoid)
简称S型作用函数,是可微的,其形式如下:
f
(
x
)
=
1
1
+
e
−
x
或
f
(
x
)
=
1
1
+
e
−
β
x
,
β
>
0
(1)
f(x)=\frac{1}{1+e^{-x}}或f(x)=\frac{1}{1+e^{-\beta x}},\beta>0\tag{1}
f(x)=1+e−x1或f(x)=1+e−βx1,β>0(1)
2
◯
\textcircled{2}
2◯对称型Sigmoid函数(Tangent Sigmoid)
是可微的,其形式如下:
f
(
x
)
=
1
−
e
−
x
1
+
e
−
x
或
f
(
x
)
=
1
−
e
−
β
x
1
+
e
−
β
x
,
β
>
0
(2)
f(x)=\frac{1-e^{-x}}{1+e^{-x}}或f(x)=\frac{1-e^{-\beta x}}{1+e^{-\beta x}},\beta>0\tag{2}
f(x)=1+e−x1−e−x或f(x)=1+e−βx1−e−βx,β>0(2)
3
◯
\textcircled{3}
3◯对称型阶跃函数,是具有阶跃作用函数的神经元,也称为阈值逻辑单元,其形式如下:
f
(
x
)
=
{
+
1
,
x
≥
0
−
1
,
x
<
0
(3)
f(x)= \begin{cases} +1,&x\ge0\\ -1,&x<0 \end{cases}\tag{3}
f(x)={+1,−1,x≥0x<0(3)
感知机原理
感知机模型训练过程如下:
输入:训练数据集
{
x
(
i
)
,
y
(
i
)
}
\{x^{(i)},y^{(i)}\}
{x(i),y(i)} (监督学习)
输出:
w
\bm{w}
w
- 赋初值 w 0 \bm{w_{0}} w0,数据序号 i i i = 1,迭代次数 k k k = 0。
- 选择数据点 { x ( i ) , y ( i ) } \{\bm{x}^{(i)},y^{(i)}\} {x(i),y(i)}
- 判断该数据点是否为当前模型的误分类点,即判断若
y
(
i
)
(
w
T
x
(
i
)
)
≤
0
y^{(i)}(\bm{w}^T\bm{x}^{(i)})\le0
y(i)(wTx(i))≤0,则更新权值:
w k + 1 = w k + η y ( i ) x ( i ) (4) \bm{w}_{k+1}=\bm{w}_{k}+\eta y^{(i)}\bm{x}^{(i)}\tag{4} wk+1=wk+ηy(i)x(i)(4) - 转到2,直到训练集中没有误分类点
实际上,感知机与神经元模型具有完全相同的形式。
多层感知机
1969年Minsky提出了XOR问题,单层的感知机无法对于异或的逻辑关系进行拟合,为解决这一问题,多层感知机的方法被提出。
多层感知机在输入和输出层之间加入一层或多层隐藏层,构成多层感知器,如图二所示:
y 1 1 = f [ w 11 1 u 1 + w 12 1 u 2 − θ 1 1 ] (5) y_{1}^{1}=f[w_{11}^{1}u_{1}+w_{12}^{1}u_{2}-\theta_{1}^{1}]\tag{5} y11=f[w111u1+w121u2−θ11](5) y 2 1 = f [ w 21 1 u 1 + w 22 1 u 2 − θ 2 1 ] (6) y_{2}^{1}=f[w_{21}^{1}u_{1}+w_{22}^{1}u_{2}-\theta_{2}^{1}]\tag{6} y21=f[w211u1+w221u2−θ21](6) y = f [ w 1 2 y 1 1 + w 2 2 y 2 1 − θ ] (3) y=f[w_{1}^{2}y_{1}^{1}+w_{2}^{2}y_{2}^{1}-\theta]\tag{3} y=f[w12y11+w22y21−θ](3) f [ ⋅ ] = { 1 , ⋅ ≥ 0 0 , ⋅ < 0 (7) f[\cdot] = \begin{cases} 1,&\cdot\ge0\\ 0,&\cdot<0 \end{cases}\tag{7} f[⋅]={1,0,⋅≥0⋅<0(7)三层感知器即可识别任一凸多边形或无界的凸区域。如果继续添加更多层感知器,则能够识别更复杂的图形。
对于多层感知器网络,有如下定理:
定理1 若隐层节点(单元)可任意设置,用三层阈值节点的网络,可以实现任意的二值逻辑函数。
定理2 若隐层节点(单元)可任意设置,用三层S型非线性特 性节点的网络,可以一致逼近紧集上的连续函数或按范数逼近紧集上的平方可积函数。
BP算法
BP算法结构
多层前馈网络的反向传播(BP)学习算法,简称BP算法,它是梯度下降法在多层前馈网中的应用,其网络结构如图三所示:
在BP算法中需要已知网络的输入/输出样本,即导师信号,BP学习算法由正向传播和反向传播组成:
1
◯
\textcircled{1}
1◯正向传播是输入信号从输入层经隐层,传向输出层,若输出层得到了期望的输出, 则学习算法结束;否则,转至反向传播。
2
◯
\textcircled{2}
2◯反向传播是将误差(样本输出与网络输出之差)按原联接通路反向计算,由梯度下降法调整各层节点的权值和阈值,使误差减小。
神经网络记法如下:
层:使用上标
[
l
]
[l]
[l]表示,共
L
L
L层。其中输入为第
0
0
0层,输出为
L
L
L层
网络输出:
y
^
=
a
[
L
]
=
a
\bm{\hat{y}}=\bm{a}^{[L]}=\bm{a}
y^=a[L]=a;网络输入:
a
[
0
]
=
x
\bm{a}^{[0]}=\bm{x}
a[0]=x
网络中第l层输出:
a
[
l
]
=
f
(
z
[
l
]
)
\bm{a}^{[l]}=f(\bm{z}^{[l]})
a[l]=f(z[l]),选取作用函数Sigmoid函数,则可记为:
a
[
l
]
=
σ
(
z
[
l
]
)
\bm{a}^{[l]}=\sigma(\bm{z}^{[l]})
a[l]=σ(z[l])
权值连接:
w
i
j
[
l
]
w_{ij}^{[l]}
wij[l],表示连接第l层第
i
i
i个节点和第
l
−
1
l-1
l−1层第j个节点的权值
梯度下降法
设算法的输入输出样本(导师信号)为:
{
x
(
1
)
,
y
(
1
)
}
,
{
x
(
2
)
,
y
(
2
)
}
,
⋯
{
x
(
N
)
,
y
(
N
)
}
(8)
\{\bm{x}^{(1)},\bm{y}^{(1)}\},\{\bm{x}^{(2)},\bm{y}^{(2)}\},\cdots\{\bm{x}^{(N)},\bm{y}^{(N)}\}\tag{8}
{x(1),y(1)},{x(2),y(2)},⋯{x(N),y(N)}(8)即共N个样本。或记为
{
x
(
i
)
,
y
(
i
)
}
,
i
=
1
,
⋯
,
N
\{\bm{x}^{(i)},\bm{y}^{(i)}\},i=1,\cdots,N
{x(i),y(i)},i=1,⋯,N
网络训练的目的,是使对每一个输入样本,调整网络参数,使输出均方误差最小化。这是一个最优化问题。
选取: J ( x ( i ) ; w ) = 1 2 ( y ( i ) − y ^ ( i ) ( x ; w ) ) 2 = 1 2 ( y ( i ) − a ( i ) ( x ; w ) ) 2 J(\bm{x}^{(i)};\bm{w})=\frac{1}{2}(\bm{y}^{(i)}-\hat{\bm{y}}^{(i)}(\bm{x};\bm{w}))^{2}=\frac{1}{2}(\bm{y}^{(i)}-\bm{a}^{(i)}(\bm{x};\bm{w}))^{2} J(x(i);w)=21(y(i)−y^(i)(x;w))2=21(y(i)−a(i)(x;w))2
考虑迭代算法,设初始权值为
w
0
\bm{w}_{0}
w0, k时刻权值为
w
k
\bm{w}_{k}
wk, 则使用泰勒级数展开,有:
J
(
w
k
+
1
)
=
J
(
w
k
)
+
[
d
J
d
θ
]
T
Δ
w
k
+
⋯
(9)
J(\bm{w}_{k+1})=J(\bm{w}_{k})+[\frac{dJ}{d\bm{\theta}}]^{T}\Delta \bm{w}_{k}+\cdots\tag{9}
J(wk+1)=J(wk)+[dθdJ]TΔwk+⋯(9)为选择使
J
J
J最小的
Δ
w
k
\Delta\bm{w}_{k}
Δwk,最直接的方法就是选择
Δ
w
k
=
−
α
d
J
d
θ
,
0
<
α
≤
1
\Delta\bm{w}_{k}=-\alpha\frac{dJ}{d\bm{\theta}},0<\alpha\le1
Δwk=−αdθdJ,0<α≤1,这样每一步都能保证
J
(
w
k
+
1
)
≤
J
(
w
k
)
J(\bm{w}_{k+1})\le J(\bm{w}_{k})
J(wk+1)≤J(wk) ,从而使
J
J
J最终可收敛到最小。
这就是梯度下降算法,也是BP学习算法的基本思想,其过程如下:
1
◯
\textcircled{1}
1◯设置初始权系数
w
0
\bm{w}_{0}
w0为较小的随机非零值;
2
◯
\textcircled{2}
2◯ 给定输入/输出样本对,计算网络输出, 完成前向传播
3
◯
\textcircled{3}
3◯ 计算目标函数
J
J
J。如
J
J
J<
ε
\varepsilon
ε, 训练成功,退出;否则转入
4
◯
\textcircled{4}
4◯
4
◯
\textcircled{4}
4◯ 反向传播计算 由输出层,按梯度下降法将误差反向传播,逐层调整权值。
算法优缺点
BP神经网络的优点包括:
1
◯
\textcircled{1}
1◯学习完全自主
2
◯
\textcircled{2}
2◯可逼近任意非线性函数
其缺点包括:
1
◯
\textcircled{1}
1◯算法非全局收敛
2
◯
\textcircled{2}
2◯收敛速度慢
3
◯
\textcircled{3}
3◯学习速率
α
\alpha
α选择麻烦
4
◯
\textcircled{4}
4◯神经网络设计过程麻烦
优化算法
由于梯度下降法容易陷入局部最小值的陷阱,即病态曲率问题,使得无法下降到梯度最小的点,严重影响了BP算法的性能。使用动量法可有效改善收敛速度,以及避免一些陷入局部极小值 ,使用AdaGrad及Adam等算法可自适应调节学习速率,加速收敛。
动量法更新公式如下:
v
t
=
α
v
t
−
1
−
ε
g
t
(10)
v_{t}=\alpha v_{t-1}-\varepsilon g_{t}\tag{10}
vt=αvt−1−εgt(10)
Δ
θ
←
v
t
(11)
\Delta \theta \leftarrow v_{t}\tag{11}
Δθ←vt(11)
θ
t
+
1
←
θ
t
+
Δ
θ
(12)
\theta_{t+1} \leftarrow \theta_{t}+\Delta \theta \tag{12}
θt+1←θt+Δθ(12)
算法流程如下:
算法
1
使用动量的随机梯度下降(
S
D
G
)
R
e
q
u
i
r
e
:学习率
ϵ
,动量参数
α
R
e
q
u
i
r
e
:初始参数
θ
,初始速度
v
w
h
i
l
e
没有达到停止准则
d
o
从训练集中采包含
m
个样本
{
x
(
1
)
,
⋯
,
x
(
m
)
}
的小批量,对应目标为
y
(
i
)
。
计算梯度估计:
g
←
1
m
∇
θ
∑
i
L
(
f
(
x
(
i
)
;
θ
)
,
y
(
i
)
)
计算速度更新:
v
←
α
v
−
ϵ
g
应用更新:
θ
←
θ
+
v
e
n
d
w
h
i
l
e
\begin{array} {lll} \hline \bm{算法1} \;使用动量的随机梯度下降(\rm SDG)\\ \hline \rm Require:学习率\epsilon,动量参数\alpha\\ \rm Require:初始参数\bm{\theta},初始速度 \bm{v}\\ \quad \rm while \;没有达到停止准则\; do\\ \quad\quad 从训练集中采包含m个样本\{x^{(1)},\cdots,x^{(m)}\}的小批量,对应目标为\bm{y}^{(i)}。\\ \quad\quad 计算梯度估计:\bm{g} \leftarrow \frac{1}{m}\nabla_{\bm{\theta}}\sum_{i}L(f(\bm{x}^{(i)};\bm{\theta}),\bm{y^{(i)}})\\ \quad\quad 计算速度更新:\bm{v} \leftarrow \alpha\bm{v}-\epsilon\bm{g}\\ \quad\quad 应用更新:\bm{\theta}\leftarrow\bm{\theta}+\bm{v}\\ \quad \rm end\;while\\ \hline \end{array}
算法1使用动量的随机梯度下降(SDG)Require:学习率ϵ,动量参数αRequire:初始参数θ,初始速度vwhile没有达到停止准则do从训练集中采包含m个样本{x(1),⋯,x(m)}的小批量,对应目标为y(i)。计算梯度估计:g←m1∇θ∑iL(f(x(i);θ),y(i))计算速度更新:v←αv−ϵg应用更新:θ←θ+vendwhile
自适应梯度法中的参数能够自适应变化,具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根,其算法流程如下:
算法
2
A
d
a
G
r
a
d
算法
R
e
q
u
i
r
e
:全局学习率
ϵ
R
e
q
u
i
r
e
:初始参数
θ
R
e
q
u
i
r
e
:小常数
δ
,为了数值稳定大约设为
1
0
−
7
初始化梯度累计变量
r
=
0
w
h
i
l
e
没有达到停止准则
d
o
从训练集中采包含
m
个样本
{
x
(
1
)
,
⋯
,
x
(
m
)
}
的小批量,对应目标为
y
(
i
)
。
计算梯度估计:
g
←
1
m
∇
θ
∑
i
L
(
f
(
x
(
i
)
;
θ
)
,
y
(
i
)
)
累计平方梯度:
r
←
r
+
g
⊙
g
计算更新:
Δ
θ
←
−
ϵ
δ
+
r
⊙
g
应用更新:
θ
←
θ
+
Δ
θ
e
n
d
w
h
i
l
e
\begin{array} {lll} \hline \bm{算法2} \;\rm AdaGrad 算法\\ \hline \rm Require:全局学习率\epsilon\\ \rm Require:初始参数\bm{\theta}\\ \rm Require:小常数\delta,为了数值稳定大约设为10^{-7}\\ \quad 初始化梯度累计变量\bm{r}=0\\ \quad \rm while \;没有达到停止准则\; do\\ \quad\quad 从训练集中采包含m个样本\{x^{(1)},\cdots,x^{(m)}\}的小批量,对应目标为\bm{y}^{(i)}。\\ \quad\quad 计算梯度估计:\bm{g} \leftarrow \frac{1}{m}\nabla_{\bm{\theta}}\sum_{i}L(f(\bm{x}^{(i)};\bm{\theta}),\bm{y^{(i)}})\\ \quad\quad 累计平方梯度:\bm{r} \leftarrow \bm{r}+\bm{g}\odot\bm{g}\\ \quad\quad 计算更新:\Delta\bm{\theta} \leftarrow -\frac{\epsilon}{\delta+\sqrt{r}}\odot\bm{g}\\ \quad\quad 应用更新:\bm{\theta}\leftarrow\bm{\theta}+\Delta\bm{\theta}\\ \quad \rm end\;while\\ \hline \end{array}
算法2AdaGrad算法Require:全局学习率ϵRequire:初始参数θRequire:小常数δ,为了数值稳定大约设为10−7初始化梯度累计变量r=0while没有达到停止准则do从训练集中采包含m个样本{x(1),⋯,x(m)}的小批量,对应目标为y(i)。计算梯度估计:g←m1∇θ∑iL(f(x(i);θ),y(i))累计平方梯度:r←r+g⊙g计算更新:Δθ←−δ+rϵ⊙g应用更新:θ←θ+Δθendwhile
RMSProp 解决 AdaGrad 方法中学习率过度衰减的问题,RMSProp使用指数衰减平均以丢弃遥远的历史,使其能够快速收敛;此外,RMSProp还加入了超参数p控制衰减速率,其流程如下:
算法
3
R
M
S
P
r
o
p
算法
R
e
q
u
i
r
e
:全局学习率
ϵ
,衰减速率
ρ
R
e
q
u
i
r
e
:初始参数
θ
R
e
q
u
i
r
e
:小常数
δ
,为了数值稳定大约设为
1
0
−
6
初始化累积变量
r
=
0
w
h
i
l
e
没有达到停止准则
d
o
从训练集中采包含
m
个样本
{
x
(
1
)
,
⋯
,
x
(
m
)
}
的小批量,对应目标为
y
(
i
)
。
计算梯度估计:
g
←
1
m
∇
θ
∑
i
L
(
f
(
x
(
i
)
;
θ
)
,
y
(
i
)
)
累计平方梯度:
r
←
ρ
r
+
(
1
−
ρ
)
g
⊙
g
计算更新:
Δ
θ
←
−
ϵ
δ
+
r
⊙
g
(
ϵ
δ
+
r
逐元素应用
)
应用更新:
θ
←
θ
+
Δ
θ
e
n
d
w
h
i
l
e
\begin{array} {lll} \hline \bm{算法3} \;\rm RMSProp算法\\ \hline \rm Require:全局学习率\epsilon,衰减速率\rho\\ \rm Require:初始参数\bm{\theta}\\ \rm Require:小常数\delta,为了数值稳定大约设为10^{-6}\\ \quad 初始化累积变量\bm{r}=0\\ \quad \rm while \;没有达到停止准则\; do\\ \quad\quad 从训练集中采包含m个样本\{x^{(1)},\cdots,x^{(m)}\}的小批量,对应目标为\bm{y}^{(i)}。\\ \quad\quad 计算梯度估计:\bm{g} \leftarrow \frac{1}{m}\nabla_{\bm{\theta}}\sum_{i}L(f(\bm{x}^{(i)};\bm{\theta}),\bm{y^{(i)}})\\ \quad\quad 累计平方梯度:\bm{r} \leftarrow \rho \bm{r}+(1-\rho)\bm{g}\odot\bm{g}\\ \quad\quad 计算更新:\Delta\bm{\theta} \leftarrow -\frac{\epsilon}{\delta+\sqrt{r}}\odot\bm{g}(\frac{\epsilon}{\delta+\sqrt{r}}逐元素应用)\\ \quad\quad 应用更新:\bm{\theta}\leftarrow\bm{\theta}+\Delta\bm{\theta}\\ \quad \rm end\;while\\ \hline \end{array}
算法3RMSProp算法Require:全局学习率ϵ,衰减速率ρRequire:初始参数θRequire:小常数δ,为了数值稳定大约设为10−6初始化累积变量r=0while没有达到停止准则do从训练集中采包含m个样本{x(1),⋯,x(m)}的小批量,对应目标为y(i)。计算梯度估计:g←m1∇θ∑iL(f(x(i);θ),y(i))累计平方梯度:r←ρr+(1−ρ)g⊙g计算更新:Δθ←−δ+rϵ⊙g(δ+rϵ逐元素应用)应用更新:θ←θ+Δθendwhile
Adam 在 RMSProp 方法的基础上更进一步:除了加入历史梯度平方的指数衰减平均 (
r
r
r) 外,还保留了历史梯度的指数衰减平均 (
s
s
s) ,相当于动量。Adam 行为就像一个带有摩擦力的小球,在误差面上倾向于平坦的极小值,其流程如下:
算法
3
R
M
S
P
r
o
p
算法
R
e
q
u
i
r
e
:步长
ϵ
(
建议默认为
:
0.001
)
R
e
q
u
i
r
e
:矩估计的指数衰减速率,
ρ
1
和
ρ
2
在区间
[
0
,
1
)
内,建议分别默认为
0.9
和
0.999
R
e
q
u
i
r
e
:小常数
δ
,建议默认为
1
0
−
8
R
e
q
u
i
r
e
:初始参数
θ
初始化一阶和二阶矩变量
s
=
0
,
r
=
0
初始化时间步
t
=
0
w
h
i
l
e
没有达到停止准则
d
o
从训练集中采包含
m
个样本
{
x
(
1
)
,
⋯
,
x
(
m
)
}
的小批量,对应目标为
y
(
i
)
。
计算梯度估计:
g
←
1
m
∇
θ
∑
i
L
(
f
(
x
(
i
)
;
θ
)
,
y
(
i
)
)
t
←
t
+
1
更新有偏一阶矩估计:
s
←
ρ
1
s
+
(
1
−
ρ
1
)
g
更新有偏二阶矩估计:
r
←
ρ
2
r
+
(
1
−
ρ
2
)
g
⊙
g
修正一阶矩的偏差:
s
^
←
s
1
−
ρ
1
t
修正二阶矩的偏差:
r
^
←
r
1
−
ρ
2
t
计算更新:
Δ
θ
←
−
ϵ
s
^
r
^
+
δ
应用更新:
θ
←
θ
+
Δ
θ
e
n
d
w
h
i
l
e
\begin{array} {lll} \hline \bm{算法3} \;\rm RMSProp算法\\ \hline \rm Require:步长\epsilon(建议默认为:0.001)\\ \rm Require:矩估计的指数衰减速率,\rho_{1}和\rho_{2}在区间[0,1)内,建议分别默认为0.9和0.999\\ \rm Require:小常数\delta,建议默认为10^{-8}\\ \rm Require:初始参数\bm{\theta}\\ \quad 初始化一阶和二阶矩变量\bm{s}=0,\bm{r}=0\\ \quad 初始化时间步t=0\\ \quad \rm while \;没有达到停止准则\; do\\ \quad\quad 从训练集中采包含m个样本\{x^{(1)},\cdots,x^{(m)}\}的小批量,对应目标为\bm{y}^{(i)}。\\ \quad\quad 计算梯度估计:\bm{g} \leftarrow \frac{1}{m}\nabla_{\bm{\theta}}\sum_{i}L(f(\bm{x}^{(i)};\bm{\theta}),\bm{y^{(i)}})\\ \quad\quad t \leftarrow t+1\\ \quad\quad 更新有偏一阶矩估计:\bm{s}\leftarrow \rho_{1}\bm{s}+(1-\rho_{1})\bm{g}\\ \quad\quad 更新有偏二阶矩估计:\bm{r}\leftarrow \rho_{2}\bm{r}+(1-\rho_{2})\bm{g}\odot\bm{g}\\ \quad\quad 修正一阶矩的偏差:\hat{\bm{s}}\leftarrow\frac{\bm{s}}{1-\rho_{1}^{t}}\\ \quad\quad 修正二阶矩的偏差:\hat{\bm{r}}\leftarrow\frac{\bm{r}}{1-\rho_{2}^{t}}\\ \quad\quad 计算更新:\Delta\bm{\theta} \leftarrow -\epsilon\frac{\hat{\bm{s}}}{\sqrt{\hat{\bm{r}}+\delta}}\\ \quad\quad 应用更新:\bm{\theta}\leftarrow\bm{\theta}+\Delta\bm{\theta}\\ \quad \rm end\;while\\ \hline \end{array}
算法3RMSProp算法Require:步长ϵ(建议默认为:0.001)Require:矩估计的指数衰减速率,ρ1和ρ2在区间[0,1)内,建议分别默认为0.9和0.999Require:小常数δ,建议默认为10−8Require:初始参数θ初始化一阶和二阶矩变量s=0,r=0初始化时间步t=0while没有达到停止准则do从训练集中采包含m个样本{x(1),⋯,x(m)}的小批量,对应目标为y(i)。计算梯度估计:g←m1∇θ∑iL(f(x(i);θ),y(i))t←t+1更新有偏一阶矩估计:s←ρ1s+(1−ρ1)g更新有偏二阶矩估计:r←ρ2r+(1−ρ2)g⊙g修正一阶矩的偏差:s^←1−ρ1ts修正二阶矩的偏差:r^←1−ρ2tr计算更新:Δθ←−ϵr^+δs^应用更新:θ←θ+Δθendwhile