ESN-Autoencoder可视化时间序列

ESN-Autoencoder可视化时间序列

这篇论文是发表在neurocomputing上的Model-Coupled Autoencoder for Time Series Visualisation,提出了通过结合Echo State Network (ESN)和Autoencoder来可视化时间序列的方法。可视化是将不同种类的时序数据映射(压缩)到低维(如二维)空间上,同一类的距离近,而不同类的距离远。
文章提出的序列降维方法分为两个阶段:

  1. 用ESN训练每一个序列,得到对应的输出层权重(readout weights),这个权重作为序列的表达;
  2. 对第一步得到的权重用一个Autoencoder降维,得到二维的表达

序列经过12降维后的就可以用一个二维图展示出来。
在介绍方法之前,需要先解释ESN,Autoencoder等:

1. 预备知识

Echo State Networks

ESN是一个循环神经网络rnn,由三个基本的组件组成:输入层,内部稀疏连接的循环层(called the reservoir, 蓄水池,水库),输出层。一般的结构如图:

ESN

用D,N,L分别表示三个层的神经元个数,输入层到中间层的权重表示为Win,中间层的内部连接权重为N*N的Wres,中间层到输出层Wout。其中权重Win和Wres是随机初始化的,固定的,不训练的,只有最后一层的Wout需要训练。

Formula


这里的z(t)应该改为z(t+1)才对。
x(t)就是echo state,保存了当前状态和过去的信息(记忆)。
与RNN对比:

  1. ESN是对输入的一个高维的投射,来捕捉输入的动态信息,有证明其类似于一个核函数的作用;
  2. reservoir是核心,一般100-1000维,内部是稀疏连接,且权重是不需要训练的;
  3. 输出是对中间state的线性变换,权重Wout可以很容易计算出来。

权重初始化

  1. Win:均匀分布 [-IS, IS]
  2. 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。

  1. 输入权重Win为v或者-v,v是大于0的随机数,正负号是随机的。
  2. reservoir的内部连接是确定的,即神经元i+1连i, 1连N。权重就是W_i+1,i=u,W_1,N = u,u>0, 其他权重为0。用图表示为:


    determined ESN

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中组合,做如下操作:

  1. 将所有序列y分为两半,得ytrain和ytest
  2. 根据上面提到的权重计算方法得到每个序列对应的w
  3. 算测试误差



    最后选择具有最小测试误差的参数,另外参数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。

实验结果

可视化结果


image.png

可以看出ESN-AE能较好的降维表示,能更好的区分不同类。(如果我们对序列降维后进行聚类,可以得到更好的聚类结果)

重构误差

4. 总结

论文提出的ESN-coupled AE方法将序列用ESN的w表示,然后再用ESN-AE对w降维。降维后的可视化展示了这个方法能较好的区分开不同类。

推荐阅读更多精彩内容