基于极限学习机的自编码器(ELM-AE)
1.算法原理
ELM基础原理请参考:https://blog.csdn.net/u011835903/article/details/111073635。
自动编码器 AE(Auto Encoder)经过训练可以将输入复制到输出。因为不需要标记数据,训练自动编码器是不受监督的。因此,将AE的思想应用到ELM中,使ELM的输入数据同样被用于输出,即输出Y=X。作为自编码器的极限学习机ELM-AE网络结构如图1所示。
若图1中m>L ,ELM-AE实现维度压缩,将高维度数据映射成低维度特征表达;若 m=L,ELM-AE实现等维度的特征表达;若 m<L ,ELM-AE实现稀疏表达,即原始数据的高维特征表达。
综上,ELM-AE是一个通用的逼近器,特点就是使网络的输出与输入相同,而且隐藏层的输入参数 ( a i , b i ) (a_i,b_i) (ai,bi)随机生成后正交。正交化后的优点有:
(1)根 据 J-L(Johnson-Lindensrauss) 定理,权重和偏置正交化可以将输入数据映射到不同或等维度的空间,从而实现不同功能的特征表达。
(2)权重和偏置的正交化设计可以去除特征以外的噪声,使特征之间均匀,且更加线性独立进而增强系统的泛化能力。
ELM-AE的输出可以用如下表达式表示:
x
j
=
∑
i
=
1
L
β
i
G
(
a
i
,
b
i
,
x
j
)
,
a
i
∈
R
m
,
β
i
∈
R
m
,
j
=
1
,
2
,
.
.
.
,
N
,
a
T
a
=
I
,
b
T
b
=
1
(1)
x_j=\sum_{i=1}^L \beta_iG(a_i,b_i,x_j),a_i\in R^m,\beta_i\in R^m,j=1,2,...,N,a^Ta=I,b^Tb=1 \tag{1}
xj=i=1∑LβiG(ai,bi,xj),ai∈Rm,βi∈Rm,j=1,2,...,N,aTa=I,bTb=1(1)
其中
a
a
a是
a
i
a_i
ai组成的矩阵,
b
b
b是
b
i
b_i
bi组成的向量。隐藏层的输出权重为:
β
=
(
H
T
H
)
−
1
H
T
X
\beta = (H^TH)^{-1}HTX
β=(HTH)−1HTX
其中,
X
=
[
x
1
,
.
.
.
,
x
N
]
X=[x_1,...,x_N]
X=[x1,...,xN]是输入数据。
2.算法实验
2.1 利用ELM-AE对单维数据进行自编码
生成模拟数据:
data = sin(0:0.1:3.14);
data = data + data.^2 - data.^3;
设置ELM-AE参数如下:
ActiveF = 'sig';%设置激活函数
number_neurons = 2;%节点数
算法结果:
从结果来看,ELM-AE输出的数据的确跟原始数据非常接近。
2.2 利用ELM-AE对图像进行编码与还原
实验对象为经典cameraman图像,利用ELM-AE设置不同的节点数,观察经过网络后,得到图像与原始图像的差异。设置结点数范围为1-50。数据输入维度为:256x256。
设置不同的结点数的结果如下:
节点数为1时:
节点数为10时:
节点数为20时:
节点数为50时:
可以看到随着隐藏层节点数的增加,输出图像越来越逼近原始图像,利用仅仅50个节点,就可以使得图像跟原始图像非常接近,原始图像的维度为256,也就是说利用ELM-AE降维到50维时,编码还原后仍然能与原始图像接近。
3.参考文献
[1]颜学龙,马润平.基于深度极限学习机的模拟电路故障诊断[J].计算机工程与科学,2019,41(11):1911-1918.