个人博客地址:https://travis1024.github.io/
基于稀疏关联结构对齐的时间序列域自适应,关键词:域自适应,领域自适应是迁移学习中的一种代表性方法,他的定义是将不同领域(比如两个不同的数据集)的数据特征映射到同一个特征空间,这样可利用其它领域数据来增强目标领域训练。举个例子来说,
商品评论情感分析的例子,两个不同的产品领域:books 图书领域和 furniture 家具领域;在图书领域,通常用“纸张较好”、“字体清晰”等词汇来表达正面情感,而在家具领域中却由“稳固”、“重量适中”等词汇来表达正面情感。可见此任务中,不同领域的不同情感词多数不发生重叠、存在领域独享词、且词汇在不同领域出现的频率显著不同,因此会导致领域间的概率分布失配问题。
有时在一个感兴趣的领域中有一个分类任务,但是在另一个感兴趣的领域中只有足够的训练数据,在这种情况下,如果成功地进行知识迁移,就可以避免昂贵的数据标记工作,从而大大提高学习性能。
再次举例来说明,假设训练数据集是各种英短蓝猫,而想训练得到可以区分田园猫的模型,该模型相比于英短蓝猫识别情况性能会下降。当训练数据集和测试数据集分布不一致的情况下,通过在训练数据集上按经验误差最小准则训练得到的模型在测试数据集上性能不佳,因此引入了域适应技术。
源域(source domain)和目标域(target domain)共享相同的特征和类别,但是特征分布不同,如何利用信息丰富的源域样本来提升目标域模型的性能。源域表示与测试样本不同的领域,具有丰富的监督标注信息;目标域表示测试样本所在的领域,无标签或者只有少量标签。源域和目标域往往属于同一类任务,但是分布不同。
目前的技术在解决领域自适应的问题中最广泛使用的技术为提取源域和目标域的共同特征,也将其称为”邻域不变特征“,邻域不变特征可以让源域和目标域的分布最大限度相同,所以找到领域不变特征,就可说明找到了源域和目标域一个共同的表示空间。提取邻域不变特征的技术在非时间序列数据中取得了很好的性能,使用的较多的方法有递归神经网络RNN、LSTM等来进行特征的提取,这些方法应用在静态的、非时间序列的数据具有很好的性能,但是对于时间序列数据却难以达到很好的性能。以下图为例:
图中的B表示的是体内血糖变化趋势,G表示的为胰高血糖素,胰高血糖素的作用是增加血糖,I表示的为胰岛素,胰岛素的作用是降低血糖。体内血糖的降低会使胰高血糖素升高,以增加体内的血糖,所以我感觉图中由体内血糖引起的胰岛素和胰高血糖素的变化趋势有些问题,但是这并不影响后续的分析,所以也不必纠结,假设源域为老年人体内的变化趋势,目标域为年轻人体内的变化趋势,由图可知,老年患者的响应时间比年轻患者长。机体内相同的机制引起的变化却发生在不同的起始点,在这里体现的就是图中红色双箭头的不同长度。对于这种情况,如果仍然简单地采用神经网络作为特征提取器来提取领域不变特征,就不能排除时间滞后和偏移的负面影响,并且不能进一步提取关联结构。所以本文需要解决的问题之一就是对于时间序列数据,面对时间滞后和时间偏移的影响,如何进行邻域不变特征的提取。
下面这个图展示的是六个时间序列中各种结构的图解:
受图中(a)的启发,论文作者认为来自源域和目标域的数据共享相同的稳定的因果结构,这就说明在之前的体内血糖的例子中也可以进行解释,即体内血糖的变化会导致胰高血糖素和胰岛素含量的变化。图(b)不仅考虑了基本的关联结构,还考虑了冗余关系,这实际上是一种过拟合的情况。因为来自不同领域的因果结构是相同的,所以来自源领域和目标领域的时间经验数据也具有相似的关联结构。图©的例子表明了可以考虑提取领域间稳定的关联结构、去除领域间较为稀疏的关联结构。这与之前考虑的来自不同邻域的因果结构是相同的,所以来自源领域和目标领域的时间经验数据也具有相似的关联结构的想法是相吻合的,这放在之前的例子中解释就是只要是健康的身体,不论是老年人还是年轻人,体内血糖的变化机理和其可能引起的激素的变化都是一致的,老年人和年轻人对应的就是不同的邻域,身体变化机理的一致性对应的是因果结构的相同。
根据以上对于现有技术应用在时间序列数据中的缺陷,这篇论文提出了一种新的基于稀疏关联结构对齐的时间序列域自适应技术,这个技术主要解决的问题有两个:(1)如何摆脱时间滞后和偏移的阻碍提取稀疏关联结构?(2)如何提取常见的关联结构,进一步提取邻域不变特征?
为了更容易的理解论文中的内容,首先需要了解一些先验知识,就是无监督领域自适应和基于MMD的领域自适应方法。
无监督领域自适应的任务是利用源域中已有的知识或者说标签信息去学习目标域的样本的类别;源域Ds和目标域Dt的数据经验分布不一样,在UDA任务中,同样需要寻找一种源域和目标域之间的共有特征。
假设现在有一个特征抽取器
f : X ↦ Z f:\mathcal{X}\mapsto \mathcal{Z} f:X↦Z
可以抽取出“共有特征”,则根据这个f,可以构建出两个新的数据集,
D s = { ( z i s = f ( x i s ) , y i s ) } i = 1 m D t = { z j t = ( x j t ) } j = 1 n \mathcal{D}_s=\{(z^s_i=f(x^s_i),y^s_i)\}_{i=1}^{m}\\ \mathcal{D}_t=\{z^t_j=(x^t_j)\}_{j=1}^{n} Ds={(zis=f(xis),yis)}i=1mDt={zjt=(xjt)}j=1n
采用这个特征抽取器的原因就是要找到一种共有特征
( z i s ) ( z j t ) \mathcal(z^s_i) \mathcal(z^t_j) (zis)(zjt)
这些共有特征符合共同的经验分布,下面这是一个特征分类器:
此方法的整体流程图如下:
模型的基本结构很简单,包括一个特征抽取器和一个特征分类器
G f : X ↦ Z G y : Z ↦ Y G_f:\mathcal{X}\mapsto \mathcal{Z} G_y:\mathcal{Z}\mapsto\mathcal{Y} Gf:X↦ZGy:Z↦Y
输入源域数据xs,经过Gf变成特征zs,然后经过Gy变成分类概率ys,源域有真实的标签ys,所有可以构建一个分类loss函数,其中L是交叉熵损失。这个与传统的分类任务没有任何区别。
L y = 1 m ∑ i = 1 m L ( f ( x i s ) , y i s ) L_y=\frac{1}{m}\sum_{i=1}^{m}L(f(x_i^s),y_i^s) Ly=m1i=1∑mL(f(xis),yis)
在这方法中比较重要的一部分就是特征提取器部分,即对于邻域不变特征的提取,经过特征抽取器Gf,需要把所有的源域样本和目标域样本映射到特征空间,
Z s = { z 1 s , z 2 s , ⋯ , z m s } ∼ P Z t = { z 1 t , z 2 t , ⋯ , z n t } ∼ Q Z^s=\{z^s_1,z^s_2,\cdots,z^s_m\}\sim P\\ Z^t=\{z^t_1,z^t_2,\cdots,z^t_n\}\sim Q Zs={z1s,z2s,⋯,zms}∼PZt={z1t,z2t,⋯,znt}∼Q
目标是寻找一种领域不变特征,即让分布P和Q之间的“距离”越来越少,让两个分布一样,即可说明找到了源域和目标域一个共同的表示空间。过程就如下图所示。
可以用MMD来衡量P和Q之间的距离,并希望在训练过程中,GfGf能学习这样一组特征,使得MMD越来越小,所以可以构造这样一个loss函数,联合以上两个loss,可以联合训练一个简单的领域自适应模型。
L A = M M D ( Z s , Z t ) L = 1 m ∑ i = 1 m L ( f ( x i s ) , y i s ) + λ M M D ( Z s , Z t ) L_A = MMD(Z^s,Z^t)\\ L=\frac{1}{m}\sum_{i=1}^{m}L(f(x_i^s),y_i^s) + \lambda MMD(Z^s,Z^t) LA=MMD(Zs,Zt)L=m1i=1∑mL(f(xis),yis)+λMMD(Zs,Zt)
整个方法主要分为两个部分:即特征提取和特征分类部分,论文中的方法也同样类似。
现有的三大特征提取器包含RNN、CNN、Transformer,其中RNN中包含传统RNN和长短期记忆网络(LSTM);
RNN模型最主要的特性,即当前时间的状态不仅受到当前信息的影响,还受到之前状态的影响,传统RNN的做法是将的所有知识全部提取出来,不作任何处理的输入到下一个时间步进行迭代。而我们更加希望的是对重要的知识或者状态给予更高的权重,重点记忆,不那么重要的就忘掉,LSTM模型就通过其内部的输入门、输出门、遗忘门做到了这一点。
下图展示的就是最简单的LSTM单元模型,其中一个LSTM单元包含着3个sigmoid层、tanh激活函数、点乘运算,一个sigmoid层和一个点乘运算组成一个门,LSTM通过三个门来进行保护和控制细胞状态。LSTM的输入由上一层输出的隐藏状态ht-1、Ct-1以及输入数据x三个变量组成,输出 为状态ht和Ct,其中细胞状态的更新和信息的处理公式也在图中展示出来。在这里,主要关注LSTM的输入和输出,以及知道LSTM模型可以实现信息记忆保留以及选择性遗忘即可
论文主要解决的问题有两个:(1)如何摆脱时间滞后和偏移的阻碍提取稀疏关联结构?(2)如何提取常见的关联结构,进一步提取邻域不变特征?,对于这两个问题,论文是分为三部分进行解决的;
SASA的整体框架如下图所示:
自适应分段的目的是为了消除时间滞后和偏移带来的偏差,目前现有的方法是将整个时间序列数据直接作为输入,所以说无法准确的捕捉某一段数据是从什么时候开始的,也无法准确的确定对其他因素例如胰岛素造成影响的准确时间节点,所示说现有的方法无法解决时间滞后和偏移的问题。
自适应分段为了解决此问题,对于每个变量X都构造了多个具有不同时间长度的片段,可以从框架图中更加清晰的看出,并且为每个时间片段都分配一个独立的LSTM,即每个时间片段的数据x都作为输入变量,输入到独立的LSTM模型中,在这里对LSTM模型进行一下介绍,见先验知识③
将每个时间片段的数据输入到LSTM中,可以得到状态的输出h,其中公式中这个函数f对应的就是特征提取器,在本文中对应的就是LSTM模型,
所以到目前为止得到了多个参数多个时间片段的状态h,下面就开始进行到第二部分了。
在这一部分中,论文介绍了如何实现精确的片段表示以及如何分别借助变量内注意机制和变量间注意机制来重建关联结构。
首先需要使用自注意力机制,自注意力机制实际上被广泛应用在自然语言处理中,是注意力机制的一种特殊情况,在这一部分中,论文用到了较多的自注意力机制中的知识或者公式,所以需要研读一下《Attention is all you need》这篇论文,以便能够更加深入的了解自注意力机制和本文中公式的含义,注意力机制(Attention)简单来说就是给定一个查找(query)和一个键值表(key-value pairs),将查找映射到正确的输入的过程,由于查找、键、值和最后的结果都是向量的形式,所以输出常为加权求和的形式。
论文在这一部分借助自注意力机制计算出每个参数中各个时间片段所占的权重,公式如下所示,其中根号下dh分之一表示缩放因子,实际上就是进行了归一化,其中W代表的是三种线性映射矩阵,最后的α表示的就是时间片段的概率,为了获得清晰的表示特定片段的稀疏权重,公式中采用了稀疏概率激活函数sparsemax,sparsemax是一种替代softmax的新方法,在进行多类分类任务中比较希望得到一个更加稀疏的输出时,可以采用sparsemax函数,他输出的多项式的稀疏概率,它会为某些分类分配恰好为0的概率值,所以从他的分布上看可以过滤掉一些噪声。关于sparesemax更加详细的介绍可以研读《From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification》
最终得到了参数xi的加权时间片段,除此之外,论文还考虑了某个给定的变量的时间片段持续时间随着域的改变而变化的情况,在这种情况下,为了更精确地重建关联结构,论文最小化了来自源域和目标域的α之间的最大平均差异(MMD),以消除时间偏移带来的影响。在训练过程中,特征提取器就是要学习特征,能够使得MMD越来越小.
在上一步中,通过自注意力机制提取了加权时间片段Zi,在这一步中,论文的目标是实现变量之间的稀疏关联结构的挖掘,论文采用的“参照”注意力机制来计算两个变量之间的相关程度,在这里需要注意的是,需要考虑时间滞后的因素来计算变量相关度,公式如下图所示:
在这里再一次使用sparsemax激活函数对参数相关度进行归一化,由此就得到了两个变量之间对于某个时间片段的关联强度。
到这里,第二部分就告一段落了,可以看到框架图中和第二部分的对应关系,通过变量内部注意机制进行片段表征选择对应的是上面这一部分,主要是在变量X1内部,基于变量间注意机制的稀疏关联结构重构主要对应的下半部分。主要是在变量x2和x3之间。
为了提取领域不变的关联结构,需要限制源域和目标域之间的结构距离,在上一步中求得的β的含义是两个参数之间的关联强度分布,所以可以将源域和目标域之间的结构距离测量转换成分布距离测量。论文中采用了领域混淆网络的思想,再次采用了MMD进行了关联结构的对比。(关联结构相邻矩阵)
在实验验证阶段,论文使用了锅炉故障检测数据集、空气质量预测数据集、住院死亡率预测数据集三种数据集,论文将提出的方法与另外四种目前较为广泛使用的方法的实验结果进行对比。实验结果表明本论文提出的模型在所有任务上的都明显优于其他方法。
为了验证模型的每个组件的有效性,论文还进一步设计了以下模型变体。SASA-α:移除α来验证片段长度限制损失的有效性。SASA-β:移除β来验证稀疏关联结构对齐损失的有效性。实验结果表明,SASA-β的实验结果要比标准的SASA模型要差,论文给出的解释是因为已经提取了稀疏关联结构,而且提取的稀疏关联结构也比普通特征提取器更具健壮性和鲁棒性,但是此结构保留了特定领域的关联关系,所以才出现了变差的结果。