一种用于序列建模的轻量级递归网络
一种用于序列建模的轻量级递归网络
- 摘要:
递归网络由于并行性较差,导致计算效率低下,一种解决方式是将自循环结构移到结构外。本文提出了一种轻量级递归网络(LRN),使用输入门和遗忘门来处理长期依赖以及梯度消失和爆炸。而且LRN中的递归只操作分配给每个token的权重,将LRN与自关注网络紧密连接。在6个NLP任务上的大量实验表明,使用LRN作为现有循环单元的替代,新模型时间开销降低且性能几乎没有损失。
2. 介绍
各种自然语言处理(NLP)任务可以被归类为序列建模任务,其中递归网络(RNNs)得到了广泛应用。为了避免梯度消失或爆炸造成的优化瓶颈,门结构诞生以方便信息从远处传播到当前位置。然而,由于RNNs的顺序性质,计算开销是沿着token位置累积的,所以集成这些传统的门不可避免地增加了计算开销。
最近的研究为这个问题提出了不同的解决方案。通过引入了加减双门控循环单元(ATR),开发参数共享双门机制来减少矩阵运算的数量,又有引入简单递归单元(SRU),通过将矩阵计算移到递归之外,改进了模型的并行化.
本文提出了的模型LRN结合了ATR和SRU的优点,它的结构很简单: 一个输入门和一个遗忘门分别用于加权当前的输入和以前的隐藏状态。与SRU相比,LRN具有更少的参数;与ATR相比,LRN将自循环结构移到结构外,在没有任何仿射变换的情况下,基于先前的隐藏状态生成门。通过这种方式,获得了更好的并行化和更快的速度。
3.LRN
给定一个长度为n的输入序列\(X=[X_1^T;X_2^T;...;X_n^T]\)∈Rn×d。LRN的作用方式如下: \[ Q,K,V=XW_q,XW_k,XW_v \]
\[ i_t=\sigma(k_t+h_{t-1}) \]
\[ f_t=\sigma(q_t+h_{t-1}) \]
\[ h_t=g(i_t\odot v_t+f_t\odot h_{t-1}) \]
其中Wq,Wk,Wv∈Rd×d是模型参数,g(·)是激活函数。和σ(·)分别表示元素的乘法和sigmoid激活函数。qt、kt和vt对应于Q、K、V的第t行。
如式(1)所示,所有与矩阵相关的运算都移到递归之外,并且可以预先计算,从而使递归计算的复杂度由O(d2)降低到O(d),简化了模型的并行化。
输入门it和遗忘门ft的设计灵感来自ATR中的双门机制。然而,与ATR不同的是,本文避免了对先前隐藏状态的仿射变换,而是将先前的隐藏状态作为输入门的正反馈,为遗忘门提供负反馈,从而确保这两个门之间的负相关性。
当前隐藏状态ht是当前输入和先前隐藏状态的加权平均值。当g(·)使用恒等函数时,本文的模型表现出与ATR相似的性质,优化不稳定。本文用tanh函数来代替恒等函数,简单而有效的。
4.结构剖析
在本节中,通过分析递归结构来深入分析LRN。通过使用恒等激活函数,第t个隐藏状态可以展开如下: \[ h_t=\sum_{k=1}^{t}i_k \odot(\prod_{l=1}^{t-k}f_{k+l})\odot v_k \] 其中,当前token的表示由所有以前的token计算得出。
在对这些门进行分组之后可知,每个权重都可以看作是从当前token ft到第k个输入token ik的查询。这个查询链可以分解为两部分:一个由ik表示的键和一个由query(Q)表示的查询。由键和查询生成的权重被分配给由vk表示的值,最终通过权重矩阵Wv实现计算。与自关注网络的不同之处在于,自关注网络中的权重在所有输入token中都是标准化的,而在LRN中的权重是单向的、非标准化的,并且跨越所有信道。 \[ h_t=\sum_{k=1}^{t} \underset{key(K)}{\underbrace{i_k} }\odot\underset{query(Q)}{\underbrace{f_{k+1}\odot...\odot f_t} }\odot\underset{value(V)}{\underbrace{v_k} } \] 在LRN中,可以将LRN中的选通机制看作是逐渐忘记信息的存储器。给定第k时间步骤vk处的值表示,在LRN中传递到后面时间步骤t(k<t)的信息如下: \[ \underset{short term}{\underbrace{i_k} }\odot\underset{forget chain(long term)}{\underbrace{f_{k+1}\odot...\odot f_t} }\odot v_k \] 输入门ik表示LRN第一次访问输入token xk时的状态,其值反映该token允许的信息或知识量,较大的输入门对应于较强的输入信号。然后,这些信息通过遗忘链传递,在遗忘链中,记忆的信息在每一个时间步上都被遗忘门逐渐衰减。当一个新进的信息量更大时,遗忘将增强,从而删除先前的知识,以便为记忆中的新知识让路。相反,无意义的tokens将被忽略。
- 梯度分析
梯度消失和爆炸是阻碍vanilla RNN训练的瓶颈。一个vanilla RNN模型可表示如下: \[ h_t=g(Wx_t+Uh_{t-1}) \] 从第t步向后传播的梯度很大程度上取决于以下一步推导: \[ \frac{\partial h_t}{\partial h_{t-1} }=U^t{g}' \] 由链式规则,递归权重矩阵U将沿序列长度重复相乘。梯度消失/爆炸源于具有小/大范数的权重矩阵。
在LRN中,递归权重矩阵被移除。当前隐藏状态是通过直接加权当前输入和以前的隐藏状态而生成的: \[ \frac{\partial h_t}{\partial h_{t-1} }=\underset{A}{\underbrace{ {\sigma_i}'\odot v_t-h_{t-1}\odot{\sigma_f}'+f_t} }\odot{g}' \] 式中,σi’和σj’分别表示式(2)和式(3)。
于(9)相比,式(10)将递归权重矩阵表示为A,A的范数依赖于输入,并且随位置的不同而动态变化。对输入的依赖性使得LRN避免梯度消失/爆炸。
- 实验结论
本文验证了LRN在六种NLP任务中进行了实验。对于每一个任务,本文采用当前最优的的神经网络模型。比较了LRN和一些前沿的递归单元,包括LSTM、GRU、ATR和SRU。在所有比较中,保持了神经结构的完整性,只改变了递归单元。另外除非有特殊说明说明,同一任务的不同模型共享同一组超参数。二试验结果验证了猜想:新模型时间开销降低且性能几乎没有损失。