37

CMRC2018 评测任务冠军队伍分享: 如何从数据、模型和训练角度提升阅读理解系统性能?

 5 years ago
source link: https://www.leiphone.com/news/201811/3KC2OSaNQDzhTDDJ.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2018 年 10 月 19 日,第十七届中国计算语言学大会(CCL2018)在长沙召开,追一科技团队作为中文机器阅读理解(CMRC2018)评测任务的冠军队伍,在评测研讨会上分享了本次参赛系统的报告。

机器阅读理解(Machine Reading Comprehension)指的是,让机器像人一样去读懂一段文字,并回答相应问题。常见的机器阅读理解形式有完形填空式,选择题式和知名度最广的抽取式,从抽取文档篇数又可细分为多文档(如 MS MARCO)和单文档(SQuAD)。

CMRC 比赛与最流行的英文数据集 SQuAD 形式类似,文档来源于中文维基百科,问题由人工撰写,根据给定的一篇文档和一个问题,参赛者需要解决的是,如何建立并训练 model,使其能更好地理解 context 与 query,并找到相应答案。下图为实际比赛数据的一个示例。

数据

在数据方面,主要工作集中在数据的归一化和去噪音。CMRC 比赛训练集包含大约一万条数据,总体数据量偏少,这种情况下数据的标注一致性尤为重要。通过分析错误样例,参赛队员发现了标注的不一致问题,通过分析筛选最终对少量答案分布不一致的训练数据进行了清洗。

(1963 年)

范廷颂是什么时候被任为主教的?

VS 

九广铁路小童储值票是何时停止使用的?

(1990 年 9 月停止使用)

上面的数据样例展示了这种标注不一致问题,同样为时间点的询问,但是不同标注有后缀区别,这种标注不一致问题会使模型的最终预测 EM 指标降低。

除了标注不一致的噪音,参赛队员还对文本进行了归一化,比如繁简转换,中英文标点转换等数据归一化操作。

模型

在模型方面,追一此次参赛采用了经典的端对端阅读理解系统,整体框架参考微软的模型结构 R-Net,示意图如下:

7NRVR3R.png!web

文本向量化表达

文本的向量化表达一直是深度学习系统效果的重中之重,本次参赛追一代表队使用了预训练的中文 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。

R3Anmum.png!web

经过数据清洗,模型优化,多次训练,最终的系统在正式测试集上,EM 和 F1 分别达到了 74.178 和 88.145,仅靠单模型(single),在所有队伍中排名第一。

下周二,追一科技语义算法研究员巨颖将在雷锋网的公开课上分享 阅读理解进阶三部曲——关键知识、模型性能提升、产品化落地 ,欢迎大家准时收看。 雷锋网雷锋网 (公众号:雷锋网)

zuuu2qY.jpg!web

雷锋网原创文章,未经授权禁止转载。详情见 转载须知


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK