ESN-Autoencoder可视化时间序列
这篇论文是发表在neurocomputing上的Model-Coupled Autoencoder for Time Series Visualisation,提出了通过结合Echo State Network (ESN)和Autoencoder来可视化时间序列的方法。可视化是将不同种类的时序数据映射(压缩)到低维(如二维)空间上,同一类的距离近,而不同类的距离远。
文章提出的序列降维方法分为两个阶段:
- 用ESN训练每一个序列,得到对应的输出层权重(readout weights),这个权重作为序列的表达;
- 对第一步得到的权重用一个Autoencoder降维,得到二维的表达
序列经过12降维后的就可以用一个二维图展示出来。
在介绍方法之前,需要先解释ESN,Autoencoder等:
1. 预备知识
Echo State Networks
ESN是一个循环神经网络rnn,由三个基本的组件组成:输入层,内部稀疏连接的循环层(called the reservoir, 蓄水池,水库),输出层。一般的结构如图:
用D,N,L分别表示三个层的神经元个数,输入层到中间层的权重表示为Win,中间层的内部连接权重为N*N的Wres,中间层到输出层Wout。其中权重Win和Wres是随机初始化的,固定的,不训练的,只有最后一层的Wout需要训练。
Formula
这里的z(t)应该改为z(t+1)才对。
x(t)就是echo state,保存了当前状态和过去的信息(记忆)。
与RNN对比:
- ESN是对输入的一个高维的投射,来捕捉输入的动态信息,有证明其类似于一个核函数的作用;
- reservoir是核心,一般100-1000维,内部是稀疏连接,且权重是不需要训练的;
- 输出是对中间state的线性变换,权重Wout可以很容易计算出来。
权重初始化
- Win:均匀分布 [-IS, IS]
- Wres: 具体如图
α是非零的概率,表示这个循环连接是稀疏的。
其中提到了ESN的一个很重要的性质Echo State Property,好像是指echo state具有短时记忆的作用。
权重计算
考虑一个简单情况,去掉输入层到输出层的连接,fout函数取线性函数,可得:
我们把x(t)用矩阵表示:X (大小为T*N,T为数据个数,N为中间层神经元个数),y(t) 用向量y (大小为T)表示,则我们可以得到loss函数:
对w求导,导数=0,得
可以看出,w权重的求解简单,不需要梯度下降等的方法。
更加具体的ESN可以参考article
确定性的ESN(Deterministically Constructed ESN)
原始的ESN的权重是随机初始化的,为了避免随机性,就有了确定性的ESN。
- 输入权重Win为v或者-v,v是大于0的随机数,正负号是随机的。
-
reservoir的内部连接是确定的,即神经元i+1连i, 1连N。权重就是W_i+1,i=u,W_1,N = u,u>0, 其他权重为0。用图表示为:
Autoencoder
自编码器学习的是从输入x到输出也为x(identical map),分为编码器encoder和解码器decoder。encoder将x映射到想要的编码(维数Q),decoder将编码转换为原来的输入。
优化目标:最小化reconstruction mse:
最简单编码器可以是一个三层的只有一个隐含层神经网络,中间层为编码层。其他AE有sequence to sequence(lstm),VAE等。
2. 论文提出的模型 (Model Formulation)
论文提出的方法有两个阶段:一是将时序用ESN得到Wout表示(后面用w表示),二是对w进行降维,可视化。
Embedding time series in the space of readout weights
Deterministic ESN 对所有序列用输出层权重w表示,注意embedding时对于不同序列D-ESN是固定参数,D, v, u。
w能很好的表达序列的特征,捕捉关于序列y的重要信息,好的预测y的能力,同时具有时移不变性(time-shift invariance 即不随时间变化),能适应不同长度的序列。
为了得到预测能力最好的固定的reservoir,论文对v, u取十个候选值 [10^-2, ..., 1.0],一共100中组合,做如下操作:
- 将所有序列y分为两半,得ytrain和ytest
- 根据上面提到的权重计算方法得到每个序列对应的w
-
算测试误差
最后选择具有最小测试误差的参数,另外参数D, μ也是这样取最优的。
ESN-coupled Autoencoder
序列用w表达后,需要将w进行降维才能可视化,所以使用Autoencoder的方法降维。
直接的做法就是f(w) -> w,最小化
这种重构误差测量的是L2范数。一个更好的表示重构误差是在序列空间中测量,将重构得到近似w' 使用Xw'=y'得到对应的序列y'。新的目标函数为
可以理解为是另外一个loss函数,更容易优化。这里对重构的w'没有限制,是不是会让w'偏离原来的w呢?从实验结果看是不会的,其实应该是对于Xw=y只有一个最优值w,这样w'会向着一个w趋近,而这个目标函数是会比前一个函数更容易优化,减少了重构的误差。
Data Projection
训练得到Autoencoder后,将w投射到二维z。至此,我们将序列从y到w,再从w到z的低维表达。
二值序列
前面针对的序列都是连续,这一部分讲了如何将ESN应用到二值序列中,y(t) in {0, 1}。
ESN:
y(t)-0.5是因为函数h是tanh函数。输出使用了sigmoid函数,表示输出1的概率,后面就可以用交叉熵来算loss:
Autoencoder的loss:
放大因子 Magnification Factors
这个有些地方不懂,大概意思是每个点z(空间V)会有一个对应w=f_dec(z)。假定观测y是包含高斯噪声的,则得到概率分布p(y; f_dec(z)):
放大倍数应该是指在V空间中的距离Δz与对应的概率模型p(y;w)间的距离的放大的倍数。然后里面的计算方法没有看懂 -. -!
直观理解就是z的改变对所表示的y的分布的改变有多大。
3. 实验
数据集
- NARMA
- Cauchy: 柯西分布
- X-ray
- Wind:不同地方的风速数据
- Textual data(符号):三种不同语言的文本,用01表示文字,得到三种序列。
降维算法
- PCA
- t-SNE
- Standard AE
- ESN-AE
AE的层数没有给出,只给了编码器和解码器的隐藏层H=10,权重正则系数v=1。
实验结果
可视化结果
可以看出ESN-AE能较好的降维表示,能更好的区分不同类。(如果我们对序列降维后进行聚类,可以得到更好的聚类结果)
重构误差
4. 总结
论文提出的ESN-coupled AE方法将序列用ESN的w表示,然后再用ESN-AE对w降维。降维后的可视化展示了这个方法能较好的区分开不同类。