求同存异,共创双赢 - 基于对抗网络的利用不同分词标准语料的中文分词方法 | 论文访谈间 #06

https://mp.weixin.qq.com/s/P-a-n1PsBL5hLZWVxyuLQw

「论文访谈间」是由 PaperWeekly 和中国中文信息学会青工委联合发起的论文报道栏目,旨在让国内优质论文得到更多关注和认可。 这是第 6 期「论文访谈间」

论文作者 | 陈新驰、施展、邱锡鹏、黄萱菁(复旦大学)

特约记者 | 郑华滨(中山大学)

 

 

在中文信息处理中,分词(word segmentation)是一项基本技术,因为中文的词汇是紧挨着的,不像英文有一个天然的空格符可以分隔开不同的单词。虽然把一串汉字划分成一个个词对于汉语使用者来说是很简单的事情,但对机器来说却很有挑战性,所以一直以来分词都是中文信息处理领域的重要的研究问题。 

 

如今 90% 乃至 95% 以上的中文分词准确率已不是什么难题,这得益于模型和算法上的不断进步。在传统 CRF 中,特征需要人工设定,因此大量繁杂的特征工程将不可避免。近几年深度学习的发展给很多研究问题带来了全新的解决方案。在中文分词上,基于神经网络的方法,往往使用“字向量 + 双向 LSTM + CRF”模型,利用神经网络来学习特征,将传统 CRF 中的人工特征工程量将到最低,如下图所示,其中: 

 

  • 字向量层(对应 Embedding Layer)能够把离散的汉字符号转化为连续的向量表示 

  • 双向 LSTM 网络(对应 Feature Layer)能够在考虑时序依赖关系的同时抽取有用的文本特征 

  • 最后的 CRF 模型(对应 Inference Layer)则建模了两个相邻输出的概率制约关系 强大的样本表示、特征抽取和概率建模能力,使它成为如今最主流的中文分词模型。

 

▲ 图 1:分词模型

 

除了模型和算法,中文分词准确率的提高更得益于丰富的公开训练语料集。然而,因为中文分词这个问题本身并不存在一个完全统一的标准,众多语料集之间都或多或少存在不一致的地方。由于语言学家定义了分词的多种不同标准,因此对于同一串汉字,不同的人可能会给出不同的切分结果。比如“姚明进入总决赛”这句话,在 CTB 和 PKU 两个语料集中就是不同的切分标准,前者认为“姚明”和“总决赛”是一个整体,后者却认为姓和名应该分开、“总”和“决赛”应该分开:

 

▲ 图 2:语料不一致

 

中文分语料丰富,每一份中文分词语料都是经过昂贵而耗时的人工标注得到的。又因为每份语料间的标准多少有些不一致,因而以往在训练一个分词模型的时候只会用一份语料,而置其他语料于不顾,这无疑是浪费,弃之可惜。所以现在一些研究者就在思考怎么同时利用多个语料集。如果能够想办法利用多个分词标准语料集的信息,就能让模型在更大规模的数据上训练,从而提升各个分词标准下分词的准确率。最近,来自复旦大学的陈新驰同学、施展同学、邱锡鹏老师和黄萱菁老师就提出了一个新框架,可以利用多标准的中文分词语料进行训练。实验在 8 个语料集上进行训练,并在 8 份语料上都提升了准确率。他们的论文 Adversarial Multi-Criteria Learning for Chinese Word Segmentation 发表在今年的 ACL2017 上。值得一提的是,这四位作者中的陈新驰同学、邱锡鹏老师、黄萱菁老师同时也是上述“字向量+双向 LSTM+CRF”中文分词模型最初原型的提出者。

 

接下来我们就来一步步走近这个框架。首先,在多份语料上训练可以看成一个多任务学习(Multi-task Learning)问题,在 8 份语料上的模型训练就是 8 个任务。这些任务之间显然存在着很大的共性,所以可以设想用单独一个“字向量 + 双向 LSTM + CRF”模型来训练,但是如前所述,这些任务之间存在不一致,所以又必须考虑用一部分模块来建模它们之间的差异部分。论文中具体采取的方案是再拿出 8 个特定于具体任务的私有 LSTM 模块,跟原来共享的 LSTM 网络模块一同构成图 1 中的特征抽取层,变成如图 3 所示的结构。在图 3 中,两个灰色的私有 LSTM 模块分别负责捕捉 TaskA 和 TaskB 的任务私有特征,中间黄色的共享 LSTM 模块负责捕捉任务共享特征,然后再把私有特征与共享特征拼接到一起,输入每个任务私有的 CRF 模块。整个框架总共有:

 

  • 1 个共享的字向量模块 

  • 1 个共享的 LSTM 模块 

  • 8 个私有的 LSTM 模块 

  • 8 个私有的 CRF 模块

 

 

▲ 图 3:多任务框架

 

在尝试用以上多任务框架进行训练后,作者发现有 7 个语料上的分词准确率确实得到了提升,但是 MSRA 语料的准确率下降。为什么呢?作者分析认为这可能是由于共享 LSTM 模块所捕捉的特征并不“纯净”,里面可能混入了某个任务的私有特征,这些特征对 MSRA 语料没有用,甚至可能反倒有害,才导致其准确率下降。

 

根据上述假设,我们似乎应该想办法把私有特征从共享的 LSTM 模块中“剥离”出去,保证该模块仅仅抽取对所有语料都有用的特征,而论文作者就非常巧妙地利用了对抗网络来达到这个目的。

 

论文在上述多任务框架的基础应用对抗网络,提出了如下图所示的对抗多任务框架,它与之前框架的区别在于多了一个判别器(Discriminator)网络模块,负责检查共享特征中是否不小心混入了特定于某个任务的特征。

 

▲ 图 4:对抗多任务框架

 

具体来说,每当一个样本经过字向量层、共享 LSTM 层之后,我们会得到一个特征向量序列,该序列的长度与输入样本的字符长度相等。为了检查这些特征向量是否“纯净”,我们对它们求平均,得到一个固定长度的特征向量,再输入判别器网络模块,要求判别器预测该特征向量来源于 8 个语料中的哪一个。这是我们给判别器设定的目标。

 

假如判别器能够准确预测每一个共享特征向量的来源语料,则说明这些共享特征中混入了太多私有信息,这是我们不希望发生的事情。所以我们反过来给共享 LSTM 模块设定一个目标,让它跟判别器对抗,想办法让判别器预测不准。假如共享 LSTM 模块成功让判别器分不清特征向量来自哪个语料,意味着我们已经把私有特征剥离出去了,从而保证了共享特征向量的纯净性。

 

引入了上述对抗训练目标之后,新的对抗多任务框架在 8 个语料上都获得了准确率的提升。

 

回过头来看,这样神奇的结果似乎又很符合直觉。作者借鉴了多任务学习的思想,融合多个语料的数据来提升共享字向量模块、共享 LSTM 模块的泛化性能,又让多个私有 LSTM 模块、私有 CRF 模块分别负责各个语料之间标准不一致之处,还巧妙地利用了对抗网络把私有信息从共享模块中剥离到各个私有模块中去,既能充分享受到数据量增大带来的好处,又避免了不同语料之间相互掣肘,做到了“求同存异,共创双赢”。笔者相信这篇论文提出的对抗多任务框架不仅对中文分词有好处,也能够用在很多其他问题上,具有相当的普适应用价值。

 

欢迎点击「阅读原文」查看论文:

Adversarial Multi-Criteria Learning for Chinese Word Segmentation

 

 

关于中国中文信息学会青工委

 

中国中文信息学会青年工作委员会是中国中文信息学会的下属学术组织,专门面向全国中文信息处理领域的青年学者和学生开展工作。

 

 

关于PaperWeekly

 

PaperWeekly是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事AI领域,欢迎在公众号后台点击「交流群」,小助手将把你带入PaperWeekly的交流群里。

posted @ 2017-06-05 19:11  Django's blog  阅读(324)  评论(0编辑  收藏  举报