Implicitly-Defined Neural Networks for Sequence Labeling

关注公众号【算法码上来】,每日算法干货马上就来!

论文链接:P17-2027

摘要


这篇论文介绍了一种新奇的、隐式定义神经网络,并且描述了计算它的方法。

1 介绍


传统的双向RNN只能单独计算两个方向的隐含层,现在介绍一种新的机制,将两个方向的信息直接结合起来计算。

2 INN


2.1 传统的RNN

经典的RNN给定一个输入序列$[{\xi _1},{\xi _2}, \ldots ,{\xi _n}]$和初始隐含层状态${h_s}$,然后迭代产生后续的隐含层状态:
\[\begin{array}{l}{h_1} = f({\xi _1},{h_s})\\{h_2} = f({\xi _2},{h_1})\\ \cdots \\{h_n} = f({\xi _n},{h_{n - 1}})\end{array}\]LSTM、GRU和其他的相关变体计算方法也都类似,都是像下图这样线性计算,每一时刻的状态只依赖于当前输入和前一时刻的状态。

2.2 改进结构

这篇论文中这样计算隐含层状态:
\[{h_t} = f({\xi _t},{h_{t - 1}},{h_{t + 1}})\]这样整个隐含层状态序列的等式就是隐式的,记为:
\[H = [{h_1},{h_2}, \ldots ,{h_n}]\]在这个神经网络中,定义如下变量:数据$X$、标签$Y$、参数$\theta$,定义如下函数:
输入层变换:
\[\xi = g(\theta ,X)\]隐式隐含层:
\[H = F(\theta ,\xi ,H)\]损失函数:
\[L = \ell (\theta ,H,Y)\]定义${h_s}$和${h_e}$为边界状态,$n$为输入序列长度,$F$函数构造出了一系列非线性等式:
\[\begin{array}{l}{h_1} = f({h_s},{h_2},{\xi _1})\\ \cdots \\{h_i} = f({h_{i - 1}},{h_{i + 1}},{\xi _i})\\ \cdots \\{h_n} = f({h_{n - 1}},{h_e},{\xi _n})\end{array}\]INN结构如下图:

2.3 计算前向传播

为了计算等式$H = F(H)$,采用拟牛顿法。
令$G = H - F(H)$,转化为计算等式$G = 0$。
\[\begin{array}{l}{H_{n + 1}} = {H_n} - {({\nabla _H}G)^{ - 1}}G\\{H_{n + 1}} = {H_n} - {(I - {\nabla _H}F)^{ - 1}}({H_n} - F({H_n}))\end{array}\]注意到$(I - {\nabla _H}F)$是一个稀疏矩阵,所以采用Krylov子空间方法,具体是稳定双共轭梯度法(BICG-STAB)算法来计算。

2.4 梯度

为了训练模型,采用随机梯度下降,定义损失函数:
\[{\nabla _\theta }L = {\nabla _\theta }\ell + {\nabla _H}\ell {\nabla _\theta }H\]其中
\[{\nabla _\theta }H = {\nabla _\theta }F + {\nabla _H}F{\nabla _\theta }H + {\nabla _\xi }F{\nabla _\theta }\xi \]所以
\[{\nabla _\theta }H = {(I - {\nabla _H}F)^{ - 1}}({\nabla _\theta }F + {\nabla _\xi }F{\nabla _\theta }\xi )\]所以整个梯度就是
\[{\nabla _\theta }L = {\nabla _\theta }\ell + {\nabla _H}\ell {(I - {\nabla _H}F)^{ - 1}}({\nabla _\theta }F + {\nabla _\xi }F{\nabla _\theta }\xi )\]

2.5 转换函数

回忆在GRU中,有如下转换函数:
\[\begin{array}{l}{h_t} = (1 - {z_t}){ {\hat h}_t} + {z_t}{ {\tilde h}_t}\\{ {\tilde h}_t} = \tanh (W{x_t} + U({r_t}{ {\hat h}_t}) + \tilde b)\\{z_t} = \sigma ({W_z}{x_t} + {U_z}{ {\hat h}_t} + {b_z})\\{r_t} = \sigma ({W_r}{x_t} + {U_r}{ {\hat h}_t} + {b_r})\end{array}\]其中在GRU中${ {\hat h}_t} = {h_{t - 1}}$,在INN中做一个替代:
\[\begin{array}{l}{ {\hat h}_t} = s{h_{t - 1}} + (1 - s){h_{t + 1}}\\s = \frac{ { {s_p}}}{ { {s_p} + {s_n}}}\\{s_p} = \sigma ({W_p}{x_t} + {U_p}{h_{t - 1}} + {b_p})\\{s_n} = \sigma ({W_n}{x_t} + {U_n}{h_{t + 1}} + {b_n})\end{array}\]

3 实验


序列标注

如下图所示,这个模型的效果甚至比标准的序列标注器还要好!

4 结论


介绍了一种隐式定义神经网络,应用到了序列标注任务上,效果比双向LSTM、双向GRU等还要好。
还有一些工作可以改进,比如可以在双向LSTM上面改造INN,加速计算${(I - {\nabla _H}F)^{ - 1}}$等等。


   转载规则


《Implicitly-Defined Neural Networks for Sequence Labeling》 韦阳 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Transfer Learning for Sequence Tagging with Hierarchical Recurrent Networks Transfer Learning for Sequence Tagging with Hierarchical Recurrent Networks
关注公众号【算法码上来】,每日算法干货马上就来! 论文链接:链接 摘要 探索一种神经序列标注的迁移学习方法,适用于源任务有大量标注标签,但是目标任务标注标签很少的情况,主要有三个方面:跨领域、跨应用、跨语言。 1 介绍 序列标注任务的
2017-11-13
下一篇 
Semi-supervised sequence tagging with bidirectional language models Semi-supervised sequence tagging with bidirectional language models
关注公众号【算法码上来】,每日算法干货马上就来! 论文链接:P17-1161 摘要 从未标注文本中学习到的预训练词向量已经成为NLP任务神经网络结构的重要组成部分。但是大多数情况下,现在的循环神经网络还是从极少的标注数据中学习上下文相
2017-10-03
  目录