论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling

https://arxiv.org/pdf/2002.12530.pdf

代码:https://github.com/haohy/TCAN

用于序列建模的基于注意力的时序卷积网络

 

作者提出一种时序卷积注意力网络 Temporal Convolutional Attention-based Netword(TCAN),包括两部分:Temporal Attention(TA)捕捉序列内部的相关特征;Enhanced Residual(ER),提取浅层的重要信息并传递到深层。

TCAN 受 Temporal Convolutional Network(TCN)的启发,利用膨胀级联网络提取输入之间的关系,并结合自注意机制提取内部信息、学习位置的依赖。TCAN由两部分组成:

TA的第 l 隐层在 t 时间步的输入是之前所有输入 x_{1:T} 的函数,保证了隐层内部不会泄露未来的信息(而自注意力则会捕捉所有时间步的信息);

ER从TA中得到每个时间步的权重,与普通的残差相加,作为当前层的最终残差。

 

论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling_第1张图片

 

TCAN包含 encoder 和 decoder,encoder 和 decoder之间有L个隐层。

Encoder将长度为T的输入序列 x_{1:T}=x_{1},x_{2},...,x_{T} 编码为隐层(0) 的输入 S_{1:T}^{(0)}=\textup{Encoder}(x_{1:T})

使用不同膨胀率的卷积核对每个隐层进行卷积。

Decoder使用最后一个隐层的结果生成输出序列 \hat{y}_{1:T}=\hat{y}_{1},\: \hat{y}_{2},\: ..., \: \hat{y}_{T}

通过四个步骤计算 t 时间步第 l+1 隐层的 s_{1:T}^{\: (l+1)} 

(1)使用TA得到 l 隐层的 sa_{1:T}^{(l)}: sa_{1:T}^{(l)} = \textbf{TA}(s_{1:T}^{(l)}) 

论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling_第2张图片

使用三个线性函数得到 d_{k} 维的:keys k_{1:T}^{(l)} = f(s_{1:T}^{(l)}),queries q_{1:T}^{(l)} = g(s_{1:T}^{(l)}) 和 values v_{1:T}^{(l)} = h(s_{1:T}^{(l)}),计算 W_{i,j}^{(l)}Wl_{\: i,j}^{\:(l)}(i, j = 1, 2, ..., T):

            W_{\: i,j}^{\:(l)}=\frac{​{k_{i}^{(l)}}^{T}\cdot q_{j}^{(l)}}{\sqrt{d_{k}}}                   Wl_{\: i,j}^{\:(l)}=\left\{\begin{matrix} W_{\: i,j}^{\:(l)}, & \textup{if} \; \:i\geqslant j\\ 0, & \textup{if} \; \: i<j \end{matrix}\right.

这样可以屏蔽未来时间步的权重,从而达到不使用未来信息的目的。将softmax用于 Wl^{\:(l)} 的第一个维度得到黄色块 Wa^{\:(l)},每一列的权值之和可能大于1。得到可用于卷积输入的加权输出 sa_{\: t}^{(l)} (t = 1, 2, ..., T):

            sa_{\: t}^{(l)}=\sum_{i=0}^{t}Wa_{\:i}^{(l)} \cdot s_{\: i}^{\:(l)}

(2)对 l 隐层的每个 sa_{ 1:T}^{\:(l)} 进行膨胀卷积,得到 sc_{ 1:T}^{\:(l)};膨胀的大小随网络的深度呈指数增长, 第 l 层为 d=2^{\:l}

为了保持每一层的长度相同,在图(a)中每层的左侧添加了长度为 (k-1)2^{(l-1)} 的 padding(白色的s)。这样,输入的左侧相关信息就会逐渐向右侧累积。

            sc_{1:T}^{(l)} = \textbf{Conv1d}(sa_{1:T}^{(l)})

(3)在将特征图通过激活函数得到 s_{1:T}^{\: (l+1)} 之前,加入三个分量 s_{1:T}^{\: (l)}, sc_{1:T}^{\: (l)}, sr_{1:T}^{\: (l)}(增强残差 ER):

            sr_{1:T}^{(l)} = \textbf{ER}(s_{1:T}^{(l)})

Wa^{\:(l)}_{\:1:T} 的每一行的权值之和来表示每个时间步的重要程度,得到时间步 t 的重要程度:

            M_{t}=\sum_{i=0}^{t}Wa^{\:(l)}_{\:i}

M_{t} 和 S^{\: (l)} 的Hadamard乘积得到增强残差 Sr^{\: (l)}

        

论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling_第3张图片

 

实验结果

论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling_第4张图片

 

消融实验表明,TA)层比卷积层更有效,另一个是证明应用在Wl的第一维上的softmax比应用在第二维上的softmax更好。

将第一个维度上的 softmax 定义为 vertical softmax,第二个维度上的 softmax 定义为 horizontal softmax,mixed(第一个维度和第二个维度的均值)定义为 vertical+horizontal softmax。实验表明,vertical softmax 比 mixed softmax 效果好,mixed softmax 比 horizontal softmax 效果好。由于Wl是一个下三角矩阵,所以权值集中在图的左下方,第 i 行和第 j 列的权值表示第 j 个时间步对第 i 个时间步的贡献。从图4(a)可以看出,在25 - 80的时间步中,当前数据前面的3个时间步的贡献最大,除此之外,前30个左右的时间步也起到了一定的作用。相比而言,从图4(b)中可以看出,horizontal softmax 使得TA更多地集中在之前的数据上,这是不合理的,因为对于预测来说,最近的几个元素贡献最大。因此,horizontal softmax 的性能较差。对于 mixed softmax,它将过多的注意力放在第一个和最近的时间步上,而不是其他的时间步。

论文阅读——Temporal Convolutional Attention-based Network For Sequence Modeling_第5张图片

你可能感兴趣的:(NLP)