Adversarial Dynamic Shapelet Networks(对抗动态shapelet网络)
文章目录
Adversarial Dynamic Shapelet Networks(2020AAAI)
之前的工作:使用随机梯度下降进行shapelet的学习,但是学出的shapelet可能与任何实际的子序列都不相似(LTS)且学到的shapelet是静态的,无法动态更新
贡献
- 我们提出了一个shapelet生成器,以动态生成特定于样本的shapelet,从而提高了建模灵活性和分类性能。
- 为了防止生成的小波产生任意形状,采用对抗训练策略以确保生成的小波类似于时间序列的实际子序列。
- 我们在大量时间序列数据集上的实验结果表明,提出的模型达到了最先进的性能,并且通过可视化分析证明了模型的有效性。
方法阐述
ADSN的一般结构如图1所示。shapelet生成器用于生成一组以输入时间序列的子序列为条件的shapelet。然后,对输入的时间序列执行动态shapelet变换,以提取判别特征,并使用softmax层来计算每个类别的最终概率分布。多样化正则项约束生成的shapelet彼此不同,而对抗训练策略确保生成的shapelet与实际子序列相似。
shapelet生成
为了生成以输入时间序列为条件的长度为 L L L的shapelet,我们首先使用步长为1的 L L L长度滑动窗口提取时间序列的子序列,然后使用一个卷积层来生成小波。
给定时间序列 $\mathbf{T}=\left{\mathbf{t}{1}, \mathbf{t}{2}, \ldots, \mathbf{t}_{n}\right} $
每个 t i t_i ti包括 m m m个真实值定义为 ( t i = t i , 1 , t i , 2 , … , t i , m ) T \left( t_i=t_{i, 1}, t_{i, 2}, \ldots, t_{i, m}\right)^{T} (ti=ti,1,ti,2,…,ti,m)T
使用长度为
L
L
L,步长为1的滑动窗口可以
P
P
P个子序列,然后拼接起来得到
O
i
,
\mathbf{O}_{i},
Oi, where
O
i
∈
R
L
×
P
\mathbf{O}_{i} \in \mathbf{R}^{L \times P}
Oi∈RL×P
O
i
=
t
i
,
1
:
L
⊕
t
i
,
2
:
L
+
1
⊕
⋯
⊕
t
i
,
P
:
m
\mathbf{O}_{i}=\mathbf{t}_{i, 1: L} \oplus \mathbf{t}_{i, 2: L+1} \oplus \cdots \oplus \mathbf{t}_{i, P: m}
Oi=ti,1:L⊕ti,2:L+1⊕⋯⊕ti,P:m
在
O
i
O_i
Oi的长度方向上进行步长为1的卷积,
s
i
,
j
∈
R
L
×
1
\mathbf{s}_{i, j} \in \mathbf{R}^{L \times 1}
si,j∈RL×1代表在第i个时间片段上生成的第j个shapelet
s
i
,
j
=
W
j
∗
O
i
+
b
j
\mathbf{s}_{i, j}=\mathbf{W}_{j} * \mathbf{O}_{i}+b_{j}
si,j=Wj∗Oi+bj
W
j
∈
R
w
×
P
\mathbf{W}_{j} \in \mathbf{R}^{w \times P}
Wj∈Rw×P定义了宽度为
w
w
w的第
j
j
j个filter,为了生成和原始数据尽可能相似的shapelet,不使用**函数,然后生成i时刻的topk个shapelet如下
S
i
=
{
s
i
,
1
,
s
i
,
2
,
⋯
,
s
i
,
j
,
⋯
,
s
i
,
k
}
\mathbf{S}_{i}=\left\{\mathbf{s}_{i, 1}, \mathbf{s}_{i, 2}, \cdots, \mathbf{s}_{i, j}, \cdots, \mathbf{s}_{i, k}\right\}
Si={si,1,si,2,⋯,si,j,⋯,si,k}
动态shapelet变换
在生成之后,特殊采样的shapelet将原始时间序列转化为新的表示,每个属性是原始序列和生成某个序列的距离,其中
h
∈
R
n
,
k
h \in R^{n,k}
h∈Rn,k,定义了shapelet转换表示,定义如下:
h
i
,
j
=
min
p
=
1
,
⋯
,
P
∑
l
=
1
L
(
t
i
,
p
+
l
−
1
−
s
i
,
j
,
l
)
2
h_{i, j}=\min _{p=1, \cdots, P} \sqrt{\sum_{l=1}^{L}\left(t_{i, p+l-1}-s_{i, j, l}\right)^{2}}
hi,j=p=1,⋯,Pminl=1∑L(ti,p+l−1−si,j,l)2
其中
s
i
,
j
,
l
s_{i,j,l}
si,j,l为shapelet
s
i
,
j
s_{i,j}
si,j 的第
l
l
l个值,由于使用的shapelet是根据输入动态生成的,所以表示称为动态shapelet表示
最后,变换表示被输入到softmax层得到标签分布:
y
^
i
=
W
o
u
t
h
i
P
(
C
∣
t
i
)
=
softmax
(
y
^
i
)
\begin{aligned} \hat{\mathbf{y}}_{i} &=\mathbf{W}_{o u t} \mathbf{h}_{i} \\ P\left(C \mid \mathbf{t}_{i}\right) &=\operatorname{softmax}\left(\hat{\mathbf{y}}_{i}\right) \end{aligned}
y^iP(C∣ti)=Wouthi=softmax(y^i)
其中
h
i
h_i
hi是上述表示的输出,
W
o
u
t
W_{out}
Wout是权重参数,
P
(
C
∣
t
i
)
P\left(C \mid \mathbf{t}_{i}\right)
P(C∣ti) 表示标签分布,其中使用dropout来避免过拟合
对抗训练策略
将shapelet约束为和实际的子序列相似,但不和子序列完全相同
使用对抗生成网络,训练shapelet生成器生成类似子序列的shapelet用来欺骗判别器D,交替更新ADSN和D的参数,通过最小化以下损失来进行训练:
L
D
=
−
∑
i
∑
p
log
(
D
(
t
i
,
p
:
p
+
L
−
1
)
)
−
∑
i
∑
j
log
(
1
−
D
(
s
i
,
j
)
)
L_{D}=-\sum_{i} \sum_{p} \log \left(D\left(\mathbf{t}_{i, p: p+L-1}\right)\right)-\sum_{i} \sum_{j} \log \left(1-D\left(\mathbf{s}_{i, j}\right)\right)
LD=−i∑p∑log(D(ti,p:p+L−1))−i∑j∑log(1−D(si,j))
其中
D
(
⋅
)
D(\cdot)
D(⋅)代表判别器的结果,为了优化判别器,
D
(
t
i
,
p
:
p
+
L
−
1
)
D\left(\mathbf{t}_{i, p: p+L-1}\right)
D(ti,p:p+L−1)为1,而
D
(
s
i
,
j
)
D\left(\mathbf{s}_{i, j}\right)
D(si,j)为0
多样性正则化
思想:相同的shapelet将会造成相同的时间序列表示,而对抗训练的模式崩溃会造成生成shapelet的相似,需要增加shapelet的多样性。
使用Frobenius正则化的shapelet相似矩阵,对于第i个时间片段间shapelet的相似性被定义为一个矩阵
G
i
∈
R
k
×
k
\mathbf{G}_{i} \in \mathbf{R}^{k \times k}
Gi∈Rk×k,其中每个元素定义了不同shapelet之间的相似度
G
i
(
s
i
,
j
,
s
i
,
j
′
)
=
exp
(
−
d
(
s
i
,
j
,
s
i
,
j
′
)
σ
2
)
\mathbf{G}_{i}\left(\mathbf{s}_{i, j}, \mathbf{s}_{i, j^{\prime}}\right)=\exp \left(-\frac{d\left(\mathbf{s}_{i, j}, \mathbf{s}_{i, j^{\prime}}\right)}{\sigma^{2}}\right)
Gi(si,j,si,j′)=exp(−σ2d(si,j,si,j′))
其中
d
(
s
i
,
j
,
s
i
,
j
′
)
d\left(\mathbf{s}_{i, j}, \mathbf{s}_{i, j^{\prime}}\right)
d(si,j,si,j′)是是欧氏距离,是
σ
\sigma
σ是RBF核参数,这里默认为1
总LOSS
L c l s = − 1 n ∑ i = 1 n ∑ r = 1 c 1 { y i , r = 1 } log exp ( y ^ i , r ) ∑ l = 1 c exp ( y ^ i , l ) L d i v = ∥ G 1 ⊕ G 2 ⊕ ⋯ ⊕ G n ∥ F 2 L a d v = − 1 n × k ∑ i = 1 n ∑ j = 1 k log ( D ( s i , j ) ) L A D S N = L c l s + λ d i v L d i v + λ a d v L a d v \begin{array}{c} L_{c l s}=-\frac{1}{n} \sum_{i=1}^{n} \sum_{r=1}^{c} 1\left\{y_{i, r}=1\right\} \log \frac{\exp \left(\hat{y}_{i, r}\right)}{\sum_{l=1}^{c} \exp \left(\hat{y}_{i, l}\right)} \\ L_{d i v}=\left\|\mathbf{G}_{1} \oplus \mathbf{G}_{2} \oplus \cdots \oplus \mathbf{G}_{n}\right\|_{F}^{2} \\ L_{a d v}=-\frac{1}{n \times k} \sum_{i=1}^{n} \sum_{j=1}^{k} \log \left(D\left(\mathbf{s}_{i, j}\right)\right) \\ L_{A D S N}=L_{c l s}+\lambda_{d i v} L_{d i v}+\lambda_{a d v} L_{a d v} \end{array} Lcls=−n1∑i=1n∑r=1c1{yi,r=1}log∑l=1cexp(y^i,l)exp(y^i,r)Ldiv=∥G1⊕G2⊕⋯⊕Gn∥F2Ladv=−n×k1∑i=1n∑j=1klog(D(si,j))LADSN=Lcls+λdivLdiv+λadvLadv
L c l s L_{cls} Lcls是分类误差, L d i v L_{div} Ldiv是多样性正则化, L a d v L_{adv} Ladv是对抗生成误差, ∥ ⋅ ∥ F 2 \|\cdot\|_{F}^{2} ∥⋅∥F2代表frobenius范数, λ d i v \lambda_{div} λdiv和 λ a d v \lambda_{adv} λadv是正则化参数
试验部分
可以看出使用动态生成shapelet的方法的效果很好
在使用生成的shapelet对时间序列进行表示的过程中分类效果也是最好的
critical thinking:
- 动态生成的shapelet是否可以对长时间的时间序列建模,属于同类的时间序列生成的shapelet是否相似,能够代表该类所有代表性子序列
- 生成的shapelet是最优shapelet吗,是否能够证明最优问题