关于代码实现请参考:【UWB】ELM,Extreme Learning Machine 极限学习机
简介
极限学习机(Extreme Learning Machine) ELM,是由南洋理工大学黄广斌教授提出来的求解单隐层神经网络的算法。
ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),在保证学习精度的前提下比传统的学习算法速度更快。
对于上图所示的一个单隐含层神经网络,假设有 N N N 个任意样本( x 1 , x 2 , ⋯ , x N x_1, x_2, \cdots, x_N x1,x2,⋯,xN), L L L 个隐藏层神经元, M M M 个输出神经元。其中样本的维度可以为任意,即 x i = [ x i 1 , x i 2 , ⋯ , x i n ] T ∈ R n x_i = [x_{i1}, x_{i2}, \cdots, x_{in}]^{\text{T}} \in \R^{n} xi=[xi1,xi2,⋯,xin]T∈Rn,期望输出假设为 y ^ i = [ y ^ j 1 , y ^ j 2 , ⋯ , y ^ j m ] T ∈ R m \hat{y}_i = [\hat{y}_{j1}, \hat{y}_{j2}, \cdots, \hat{y}_{jm}]^{\text{T}} \in \R^{m} y^i=[y^j1,y^j2,⋯,y^jm]T∈Rm,网络的实际输出为 y i = [ y j 1 , y j 2 , ⋯ , y j m ] T ∈ R m {y}_i = [{y}_{j1}, {y}_{j2}, \cdots, {y}_{jm}]^{\text{T}} \in \R^{m} yi=[yj1,yj2,⋯,yjm]T∈Rm。
对于上述含有 L L L 个隐含节点的单隐含层神经网络可以表示为
∑ k = 1 L β k ⋅ G ( W i ⋅ X i + b k ) = y j \sum_{k=1}^{L} \beta_k \cdot G(W_i \cdot X_i + b_k) = y_j k=1∑Lβk⋅G(Wi⋅Xi+bk)=yj
这里, β k \beta_k βk 为输出权重, G ( ⋅ ) G(\cdot) G(⋅) 为隐含层的激活函数, W i W_i Wi 为输入权重, X i X_i Xi 为输入样本, b k b_k bk 为第 k k k 个神经元的偏置, W i ⋅ X i W_i \cdot X_i Wi⋅Xi 表示 W i W_i Wi 和 X i X_i Xi 的内积, y j y_j yj 表示第 j j j 个样本的输出。
当隐藏层节点足够多时,ELM 可以逼近任何连续函数,为使得 ELM 具有更好的泛化能力,通常隐藏层神经元
L
L
L 个数应该大于输入神经元
N
N
N,单隐含层神经网络的学习目标是使得输出的误差最小,即
min
(
∑
j
=
1
N
∥
y
^
j
−
y
j
∥
)
\min (\sum_{j=1}^N \|\hat{y}_j - y_j\|)
min(j=1∑N∥y^j−yj∥)
即存在
β
k
,
W
i
\beta_k, W_i
βk,Wi 和
b
k
b_k
bk 使得
∑
k
=
1
L
β
k
⋅
G
(
W
i
⋅
X
i
+
b
k
)
=
y
^
j
\sum_{k=1}^{L} \beta_k \cdot G(W_i \cdot X_i + b_k) = \hat{y}_j
k=1∑Lβk⋅G(Wi⋅Xi+bk)=y^j
改写成矩阵的形式为:
H
β
=
Y
H \beta = Y
Hβ=Y
这里 H H H 为隐含层神经元的输出, β \beta β 为输出权重, T T T 为期望输出。
H = [ G ( w 1 x 1 + b 1 ) G ( w 2 x 1 + b 2 ) ⋯ G ( w L x 1 + b L ) G ( w 1 x 2 + b 1 ) G ( w 2 x 2 + b 2 ) ⋯ G ( w L x 2 + b L ) ⋮ ⋮ ⋱ ⋮ G ( w 1 x N + b 1 ) G ( w 2 x N + b 2 ) ⋯ G ( w L x N + b L ) ] N × L H= \left[\begin{matrix} G(w_1 x_1 + b_1) & G(w_2 x_1 + b_2) & \cdots & G(w_L x_1 + b_L) \\ G(w_1 x_2 + b_1) & G(w_2 x_2 + b_2) & \cdots & G(w_L x_2 + b_L) \\ \vdots & \vdots & \ddots & \vdots \\ G(w_1 x_N + b_1) & G(w_2 x_N + b_2) & \cdots & G(w_L x_N + b_L) \\ \end{matrix}\right]_{N \times L} H= G(w1x1+b1)G(w1x2+b1)⋮G(w1xN+b1)G(w2x1+b2)G(w2x2+b2)⋮G(w2xN+b2)⋯⋯⋱⋯G(wLx1+bL)G(wLx2+bL)⋮G(wLxN+bL) N×L
β = [ β 1 T β 2 T ⋮ β L T ] L × M , Y = [ y 1 T y 2 T ⋮ y M T ] N × M \beta = \left[\begin{matrix} \beta_1^\text{T} \\ \beta_2^\text{T} \\ \vdots \\ \beta_L^\text{T} \\ \end{matrix}\right]_{L \times M},~~~~ Y = \left[\begin{matrix} y_1^\text{T} \\ y_2^\text{T} \\ \vdots \\ y_M^\text{T} \\ \end{matrix}\right]_{N \times M} β= β1Tβ2T⋮βLT L×M, Y= y1Ty2T⋮yMT N×M
为了能训练单隐含层神经网络,希望得到
W
^
i
,
b
^
i
\hat{W}_i, \hat{b}_i
W^i,b^i 和
β
^
i
\hat{\beta}_i
β^i,使得
∥
H
(
W
^
i
,
b
^
i
)
β
^
i
−
Y
∥
=
min
W
,
b
,
β
∥
H
(
W
i
,
b
i
)
β
i
−
Y
∥
\|H(\hat{W}_i, \hat{b}_i) \hat{\beta}_i - Y\| = \min_{W,b,\beta} \|H(W_i, b_i)\beta_i - Y\|
∥H(W^i,b^i)β^i−Y∥=W,b,βmin∥H(Wi,bi)βi−Y∥
这等价于最小化损失函数
E
=
(
∑
j
=
1
N
∥
y
^
j
−
y
j
∥
)
E = (\sum_{j=1}^N \|\hat{y}_j - y_j\|)
E=(j=1∑N∥y^j−yj∥)
在 ELM 神经网络中,一旦输入权重
W
i
W_i
Wi 和隐含层偏置
b
i
b_i
bi 被随机确定,则隐含层的输出矩阵
H
H
H 就被唯一确定,训练过程则可以转化为求解一个线性系统
H
β
=
Y
H\beta = Y
Hβ=Y,因此输出权重
β
\beta
β 的最小二乘解则可以通过下式求得:
β
^
=
H
+
Y
\hat{\beta} = H^+ Y
β^=H+Y
这里 H + H^{+} H+ 是矩阵 H H H 的 Moore-Penrose 广义逆,且 β \beta β 的最小二乘解是唯一的。相较于传统前馈神经网络,ELM 保证了学习精度,具有良好的泛化性能,速度更快。