2018年10月19日,第十七届中国计算语言学大会(CCL2018)在长沙召开,追一科技团队作为中文机器阅读理解(CMRC2018)评测任务的冠军队伍,在评测研讨会上分享了本次参赛系统的报告。
机器阅读理解(Machine Reading Comprehension)可以说是近两年NLP领域的大热点,顾名思义,就是让机器像人一样去读懂一段文字,并回答相应问题。常见的机器阅读理解形式有完形填空式,选择题式和知名度最广的抽取式,从抽取文档篇数又可细分为多文档(如MS MARCO)和单文档(SQuAD)。CMRC比赛与最流行的英文数据集SQuAD形式类似,文档来源于中文维基百科,问题由人工撰写,根据给定的一篇文档和一个问题,参赛者需要解决的是,如何建立并训练model,使其能更好地理解context与query,并找到相应答案。下图为实际比赛数据的一个示例。
数据
在数据方面,主要工作集中在数据的归一化和去噪音。CMRC比赛训练集包含大约一万条数据,总体数据量偏少,这种情况下数据的标注一致性尤为重要。通过分析错误样例,参赛队员发现了标注的不一致问题,通过分析筛选最终对少量答案分布不一致的训练数据进行了清洗。
(1963年)
范廷颂是什么时候被任为主教的?
VS
九广铁路小童储值票是何时停止使用的?
(1990年9月停止使用)
上面的数据样例展示了这种标注不一致问题,同样为时间点的询问,但是不同标注有后缀区别,这种标注不一致问题会使模型的最终预测EM指标降低。
除了标注不一致的噪音,参赛队员还对文本进行了归一化,比如繁简转换,中英文标点转换等数据归一化操作。
模型
在模型方面,追一此次参赛采用了经典的端对端阅读理解系统,整体框架参考微软的模型结构R-Net,示意图如下,
文本向量化表达
文本的向量化表达一直是深度学习系统效果的重中之重,本次参赛追一代表队使用了预训练的中文ELMo代替传统的word2vec,单此一项,EM提升了1.8个点。传统的词向量word2vec是上下文无关的,无法对一词多义的情况进行建模,比如常举例的 “我想吃【苹果】”和 “我的【苹果】手机摔坏了”。近期AllenAI提出了ELMo,即Embeddings from Language Models,这种词表征不再是固定的向量,而是以语言模型为基础获得的一个上下文相关的词表征。
英文ELMo是基于字符级别的编码,对中文并不适用。针对中文文本追一团队实验了两套方案,第一版是采用词级别进行输入,第二版是将词改进为笔划级别的编码,两者都通过双层LSTM变换来进行语言模型预训练。经过多次实验,效果最好的词级别与笔划级别的ELMo效果相差不大,最后采用了基于维基百科与新浪新闻组合语料训练的512维词向量ELMo模型作为下游任务的输入。
除ELMo外,模型还加入了描述问题类型的one hot特征,即按提问方式将问题归为who, where, when等八类,并转换为one-hot向量。POS信息与词共现特征也作为额外的输入传入了模型。
编码层
采用多层双向RNN对文档和问题分别进行编码
交互层
Attention机制是融合文档内容和问题信息的主要方法,是众多模型中比较通用的部分。在传统attention基础上,我们对问题输入添加了额外一个基于gate机制的过滤层,让模型去倾向注意核心词汇,忽略无关信息。改进的attention将EM/F1分别提升了0.6/0.3。
答案抽取层
和众多参赛队类似,追一的参赛队员采用了Pointer-network来作为模型的输出层。PointerNetwork通过预测答案的起始与终止位置,得到最终输出。
训练
由模型压缩思想衍生出的自我蒸馏(self-distill)训练方法在此次比赛中起到了很好的效果,其思想来源于论文《Born-Again Neural Networks》。蒸馏通常用在模型压缩方面,即采用预训练好的复杂模型(teacher model)输出作为监督信号去训练另一个简单模型(student model),从而将teacher学习到的知识迁移到student。自我蒸馏就是不改变模型大小,循环进行teacher-student的训练,直到效果不再改进。CMRC比赛中,teacher model是已经训练好的一版模型,student 和teacher 模型相同,仅重新初始化。训练student时,模型要同时学习真实label和teacher的输出。 self-distill效果显著,最终模型比初始teacher的EM/F1分别可以增长0.88/0.94。
经过数据清洗,模型优化,多次训练,最终的系统在正式测试集上,EM和F1分别达到了74.178和88.145,仅靠单模型(single),在所有队伍中排名第一。
机器阅读理解技术应用领域广泛,现已在信息提取等多个产品功能上投入应用,也是追一未来重点投入的研究方向之一。