【Incorporating Effective Global Information via Adaptive Gate Attention for Text Classification 】
Introduction
本文的思路不复杂,也没有什么复杂的推导,但是其中使用的一些Trick的借鉴作用还是非常的有用的。下面我们来介绍一下,本文的主要思路是在深度模型的基础之上加入一些语义内在的信息,比如说词频(Word Frequency),在加入这些信息之后,作者发现这样子的处理极大的提升了模型的效果。然后整篇文章就是讲如何融入这些信息,这篇文章的思路和自己的那篇文章的思路其实是有些相似的,虽然单独统计层面的特征打架肯定很难打得过深度学习(因为还是基于BOW的假设会丢失很多东西),但是将这些统计层面的信息加入模型必然会使得模型学习到更多的信息,也就可以达到更好的效果。所以全文的展开思路就是如何更好的将统计信息嵌入之中。
我们看看嵌入的时候有什么问题,首先是两种特征的维度大小的不匹配的问题,在深度学习里面,一般的词向量之类的东西,都是一百维起步,几百维的数据都很常见,但是统计特征在相比之下就非常的小,每个词语的词频就只有1个维度特征。文章作者的解决方法是使用一个非线性的映射,将两种特征都丢到一个信息空间之中,获得他们在高维空间的表示。还有一个问题就是,在输入神经网络的Input有些已经是含有非常多的信息的了,甚至已经包含了统计上的特征,如果我们再加入这些统计特征进去,对于他反而是一种伤害。所以作者引入了一个概念叫做是 Additional Information,使用一个门控单元(Adaptive Gate Module)控制是否加入信息,加入多少信息。
文章之中害有一个非常Neat的发明就是Leaky Dropout,由于Dropout是使得神经元完全的失活,在完全的失活的状态下,可能会丢失一些很重要的信息,所以作者为了更大程度上的保留信息,就使用了Leaky Dropout 以保留更多信息。
Methodology
Global Information
首先给出Global Information的定义
Term-Count-Of-Labels(TCoL) is a global statistics of a term towards the labels.Given a word $w$ and a set of labels of $c$ classes ,the TCoL vector $w$ is
$$\zeta^{w } = [\zeta_1,\cdots ,\zeta_c] $$
其中$\zeta_{I}$是单词$w$在label$i$之中的数量,如果给定一个句子$s = \{ w_i \}^{c}_{i = 1} $,那么这个句子的TCoL 矩阵就是
$$\zeta^{s } = [\zeta^{w_1},\cdots ,\zeta^{w_c}] $$
这种TCoL的计数方法是有点LDA的意思的(这不就和我的那篇论文的思路有点不谋而合了吗?)每一类文章都有它的种子单词,就是那些最能够代表这一类文章的单词,在神经网络之中如果给这些词语赋予更高的权重,那么我们的决策过程就会更加的有效。
Adaptive Gate Attention Network
我们看看文章之中的使用的模型的架构
左侧进入的是词向量,通过LSTM或者CNN模型抽取特征,右侧进入的是词语的统计特征,经过归一化后进行投影操作。然后再混合两类特征。
假设输入模型的句子的长度为固定的长度$m$,句子的TCoL矩阵记作$\zeta$。首先将每一个单词映射进入$k$维的连续空间之中,获得其向量化表示$x_m \in R^k$(就是获得词向量),然后将所有的词向量连接起来,这样就可以获得了一个$k\times m$的矩阵,作为模型的左侧输入
$$x = [x_1,x_2,\cdots,x_m]$$
然后使用LSTM或者CNN抽取特征,得到矩阵$C$。
接下来就是重头戏了,将Global Information融入之中,我们在上一步获得了$C$,而$\zeta$是已知的,现在是将他们放进一个信息共享空间$H\in R^{d\times m}$之中,
$$H^C = W^{C}\cdot C+ b^C$$
$$H^{\zeta} = W^{\zeta}\cdot (\zeta^{s}/V) + b^{\zeta}$$
而$H^C,H^{\zeta}$则是上面的两种信息的隐含表示了。在获得这两个表示之后,通过AdaGate或者
$$\begin{split}H^O & = AdaGate(H^C,H^{\zeta},\epsilon \\ & = ReLU(H^C) + Valve(\sigma(H^C),\epsilon) \odot H^{\zeta}\end{split}$$
其中的Valve是一个类似于判别函数的函数
$$Valve(a,\epsilon) = \begin{cases} a , &\quad 0.5-\epsilon \leq a \leq 0.5+\epsilon \\ 0, & \quad otherwise \\ \end{cases} $$
如果$\epsilon$取0.5的话,就是对于所有的信息都附加统计信息了。
在加入统计信息之中,通过一个SoftMax函数获得Attention Weight $\alpha$
$$\alpha_i = \frac{\exp{(H_i^{O})}}{\sum_{j=1}^{m} \exp{(H_{j}^{O})}}$$
然后将这个Attention与$C$相乘获得最终的表示。然后就是正常的套路了。
文中还有一个非常Neat的发明就是Leaky Dropout,对于一个向量$x$而言,其经过Leaky Dropout的结果是
$$x’ = x\odot m$$
而$m$之中的每一个元素$m_i$的值由下面的公式给出
$$m_i = \begin{cases} \frac{1}{1-\beta} , &\quad z_i = 1 \\ \gamma, & \quad z_i =0 \\ \end{cases} $$
其中$z_i \sim Bernoulli(z)$,$\gamma = \frac{1 – \beta}{c^2}$.
Comments
这篇文章的很多思路和自己的文章还是有共同的地方,不过和我最终所选择的方向是有所不同的,比如说自己没有使用AdaGate这类的机制,只是一个普通的赋权的操作,不过这篇文章确实也学到了很多的东西,比如说Leaky Dropout自己就改了改丢进自己的模型之中了。不过在写下这篇笔记的时候自己的模型虽然收敛的特别的快,但是还是不Work真的是一个非常难受的事情。
Reference
Incorporating Effective Global Information via Adaptive Gate Attention for Text Classification
Comments
Leave a Comment