巨颖作者

如何从数据、模型和训练角度提升阅读理解系统性能?

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),在所有队伍中排名第一。

机器阅读理解技术应用领域广泛,现已在信息提取等多个产品功能上投入应用,也是追一未来重点投入的研究方向之一。

追一科技
追一科技

主攻深度学习和自然语言处理,以技术之美,融合场景,共创更美好AI世界。

https://zhuiyi.ai/
理论语言模型Word2Vec深度学习NLP追一科技机器阅读理解
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

噪音技术

噪音是一个随机误差或观测变量的方差。在拟合数据的过程中,我们常见的公式$y=f(x)+\epsilon$中$\epsilon$即为噪音。 数据通常包含噪音,错误,例外或不确定性,或者不完整。 错误和噪音可能会混淆数据挖掘过程,从而导致错误模式的衍生。去除噪音是数据挖掘(data mining)或知识发现(Knowledge Discovery in Database,KDD)的一个重要步骤。

word2vec技术

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

推荐文章
暂无评论
暂无评论~