Cross-Lingual Transfer Learning for POS Tagging without Cross-Lingual Resources

无跨语言资源下的序列标注跨语言迁移学习

Posted by WeiYang on 2017-12-19

论文链接:D17-1302

摘要


本文介绍了一个跨语言的序列标注迁移模型,和以往不同的是,不需要大量的跨语言语料。

1 介绍


之前正好才看过一篇Yang et al. (2017)的论文Transfer Learning for Sequence Tagging with Hierarchical Recurrent Networks,还写了博客笔记[传送门]。然而本文上来就说,他的模型不好!因为他的模型共享了字符层,其他层都是独立的,这样就导致了两种字符没有交集的语言迁移会很困难。
于是本文提出了基于一个公有LSTM和一个私有LSTM的模型。不过,我还是没明白这个字符层和前文批判的那个有啥区别。。。

2 模型


模型结构如下图所示:

跨语言训练

整体训练过程是这样的:首先输入一个句子,对于每个单词中的每个字符,输入到双向LSTM中,取前向后向LSTM的最后一个隐含层输出,连接到一起来作为词的表示。然后输入到公有和私有LSTM中训练,最后的损失函数有三个。
图中蓝色部分是公有部分,红色部分是私有部分。紫色部分是不同语言预测出的结果,三个红色方框是三个损失函数。
其中softmax层的损失函数定义为:

\(S\)是句子个数,\(N\)是当前句子单词数,\({p_{i,j}}\)第\(i\)个句子的第\(j\)个标签,\({\hat p_{i,j}}\)是预测标签。

语言对抗训练

为了让公有的LSTM部分变得语言无关,所以要对他进行语言对抗训练。
首先对公有LSTM的输出进行CNN/MaxPool编码(其实就是每一个维度取最大值),三个卷积层,得到三个向量,再连接到一起得到最终的向量表示,经过一个梯度反转层,最后输入到语言鉴别器。
这个语言鉴别器就是一个单隐含层的全连接的神经网络,激活函数用的是Leaky ReLU,具体就是当x>=0时,f(x)=x;当x<0时,f(x)=ax,这里a取0.2。 最后得到的损失函数定义为:=""
其中\({l_{i}}\)是第i个句子的语言,\({\hat l_{i}}\)是预测出的语言(原文说的是softmax输出的标签???这里不是很理解)。
由于经过了梯度反转层,所以这个语言鉴别器并不能鉴别出是哪一种语言,反而对两种语言的界限混淆了,使得它变得越来越语言无关了。

双向语言模型

这个就不用多说了,很多地方都用到了,之前的两篇半监督序列标注的论文也都提到了加入语言模型来提升效果,而且注意的是,就算是没有标注的数据也可以加入进语言模型的训练。
语言模型的损失函数定义为:

其中f和b分别代表前向和后向LSTM输出。
最终,三个损失函数合并起来定义一个总的损失函数:

其中\(\lambda \)随着训练进行缓慢的从0上升到1,这是为了增加额外损失函数的训练稳定性。
而\(w_{s}\)是为了给源语言和目标语言不同的权重的,当训练目标语言是,权重为1,否则权重为目标语言训练集大小/源语言训练集大小。

3 实验

实验针对目标语言训练句子数为1280、320和32分别做了对比。
其中1280个句子的结果如下:

可以看出加入迁移学习后结果提升还是比较大的,表格中c表示公有LSTM,l表示语言模型,p表示私有LSTM,a表示语言对抗训练。本文的模型(c,p,l+a)结果是最好的。
320个句子的结果如下:

依然有提升,但是提升很不明显了,而且有几种语言直接采用私有LSTM+语言模型效果反而最好。原因就是目标语言的训练数据太少了,不足以训练出完美的公有和私有模型。
32个句子的训练数据就没有放出具体结果,结果依然有略微提升的,但是已经可以忽略不计了。
反过来思考,如果用上全部的目标语言训练数据,那么出来的结果会怎么样?事实是反而下降了,还不如直接用私有LSTM。
最后还做了一个实验,就是用多种不同的源语言+目标语言来训练模型,发现效果比用单种源语言效果好。