Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

王肖作者

中国人工智能大赛机器阅读理解任务冠军方案出炉

【飞桨开发者说】王肖,中国科学院信息工程研究所研究生在读,自然语言处理技术爱好者,研究方向为文本匹配、文本分类、本文对抗、知识蒸馏、模型压缩、推荐系统、多任务学习等。

参赛背景

在研一深度学习课程中首次接触飞桨,并有幸在研二时对PALM (PArallel Learning from Multi-tasks) [2] 这一开源的、灵活通用的NLP大规模预训练和多任务学习框架作出部分贡献。在本次中国人工智能大赛·语言与知识技术竞赛的是非观点型机器阅读理解任务中,我借助数据增广、ERNIE[6]、RoBERTa [1] 等多预训练模型微调、对抗训练、k折模型融合等方法,利用PALM框架 [2],形成基于鲁棒性优化的多模型融合学习策略,在本次个人赛最终获得冠军,测试集中达到85.55的准确率。

比赛介绍

机器阅读理解无论是在工业界还是学术界都有着很高的研究价值。本次大赛任务中所使用的DuReader [3] 数据集克服了以往 SQuAD [4] 等数据集的数据依赖人工合成、任务简单、应用领域有限等缺点。在竞赛中,竞赛者对数据集的理解至关重要。本文认为,竞赛中使用的一切方法和优化都应当是建立在竞赛者充分理解数据集这一前提下的,都应当是充分适配当前比赛任务的。此外,适当的数据增强是扩充数据规模的有效方法之一。在保证数据质量的前提下增大数据规模可以使得模型具备更好的泛化能力。

预训练的方法最初在图像领域提出,近年来,NLP领域中也涌现出越来越多的性能优异的预训练模型。基于预训练模型在下游NLP特定任务中进行微调往往能迅速得到理想效果。本文基于飞桨PaddlePaddle开源深度学习平台[5],利用了RoBERTa [1]、BERT [7] 各自具备不同特性的预训练模型在本次竞赛中的是非观点型阅读理解任务上分别进行了微调。

虽然基于预训练模型的微调可以在是非观点型机器阅读理解任务中达到较优性能,但模型的鲁棒性仍有待提高,对于一些细粒度的语义差别,模型仍难以准确捕捉。近年来,诸多研究表明机器阅读理解模型对于对抗攻击是非常脆弱的,导致其在很多应用场景上出现效果鲁棒性问题甚至安全问题。对抗训练是提高模型鲁棒性的重要方式。和图像领域不同,文本中的词语是离散的,而非连续的 RGB 值。这就导致,如果我们直接在原始本文上进行扰动,则极有可能扰动的方向和大小都没有任何明确的语义对应。但 [8] 认为 word embedding 的表示是可以认为是连续的,在word embedding上的扰动一定程度上是有意义的。本文中使用的对抗训练对word embedding添加扰动,以避免模型过拟合。

此外,模型融合借鉴集成学习的思想,在一定程度上提升模型的稳定性与泛化能力 [9]。Bagging主要在于优化variance,即模型的鲁棒性,boosting主要在于优化bias,即模型的精确性。本文中所述方法借助模型融合的方法进一步提升模型在本次竞赛任务中的表现。

综上,本文所述基于鲁棒性优化的多模型融合的是非观点极性分析方法包含数据增强、多预训练模型微调、对抗训练、模型融合等方法,具备较好的稳定性与泛化能力,在中国人工智能大赛 · 语言与知识技术竞赛 · 个人赛的最终测试集中达到85.55的准确率。

基于鲁棒性优化的多模型融合

的是非观点极性分析方法

A. 任务描述

对于给定的用户输入的观点型问题q、对应候选文档d、答案段落摘要a,给出答案段落摘要所包含的是非观点极性p,其中,是非观点极性的所有极性均在{“Yes”, “No”, “Depends”}集合中,对应的含义为:

  • Yes:肯定观点,肯定观点指的是答案给出了较为明确的肯定态度。有客观事实的从客观事实的角度出发,主观态度类的从答案的整体态度来判断。
  • No:否定观点,否定观点通常指的是答案较为明确的给出了与问题相反的态度。
  • Depends:无法确定/分情况,主要指的是事情本身存在多种情况,不同情况下对应的观点不一致;或者答案本身对问题表示不确定,要具体具体情况才能判断。

B. 数据预处理与数据增强

首先将训练集、开发集、测试集样本由json格式转为tsv格式。其中,将answer、question 与yesno_answer分别提取到tsv格式的文件中,并将yesno_answer表示为数字标签形式。label中的“0”、 “1”、“2”分别对应原数据集中yesno_answer的“Yes”、 “No”、“Depends”。原训练集的标签分布如表I中所示。

观察到,在给出的问题相关文档中包含多组段落摘要和标题,标题和question是强相关的,段落摘要与回答强相关,因此,可以借助相关文档中的段落摘要与标题对原数据集进行扩充。训练集样本中title个数分布情况如表Ⅱ所示。其中,段落摘要与回答的极性往往存在较多差别,若将段落摘要纳入数据扩充的依据,需要更耗时的人工检查与标注。

这里仅考虑了将段落标题作为question,将其所在样本的answer作为其答案,将其所在样本的是非观点极性作为标签,对原数据集进行扩充。此外,需特别注意是否有空title,扩充后的标签分布是否与原数据集标签分布保持一致。此外,还需人工检查扩充后的数据集质量如何。只有在保证数据质量的前提下进行的数据集规模扩充才是对任务真正有效的。利用段落标题扩充后的不同规模的数据集分布情况如表Ⅱ所示。

C. 多模型微调

多模型微调涉及对RoBERTa [1]、ERNIE [6]、BERT [7]中的RoBERTa-zh-wwm-large、RoBERTa-zh-wwm-base、ERNIE-v1-base-max-len-512、BERT-zh-base这4个预训练模型利用PALM框架 [2] 在本次是非观点型阅读理解任务上的微调。模型的微调结构如图1所示。

1) 整体流程

首先,将question、answer、yesno_answer读入reader进行预处理,生成backbone网络所需的token_ids、position_ids、segment_ids、input_mask、label_ids、task_ids(仅在使用ERNIE作为backbone网络时需要)。其中,每行是一条样本,token_ids的每个元素为文本中的每个token对应的单词id,question-answer对使用`[SEP]`所对应的id隔开;position_ids的每个元素为文本中的每个token对应的位置id;segment_ids在question的token位置,元素取值为0,在answer的token位置,元素取值为1;input_mask的每个元素为0或1,表示该位置是否是padding词(为1时代表是真实词,为0时代表是填充词);label_ids的每个元素为该question-answer对的类别标签;task_ids为全0矩阵。

经过backbone网络后,取其生成的sentence_pair_embedding作为微调任务层的输入。sentence_pair_embedding表示encoder对当前batch中相应样本的句子向量(sentence embedding)。

微调任务层在训练阶段的输入为sentence_pair_embedding和label_ids,分别来自backbone网络层和reader层,经过全连接层和softmax层得到loss、probs、label等用于后处理。

2) 不同的backbone网络

RoBERTa [1]、ERNIE [6]、BERT [7]中使用的encoder均为Transformer [10] encoder。

Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。其中,基于query (Q), keys (K)和values (V) attention的计算方式如下:

图 1. 预训练模型微调结构图

多头attention的计算方式如下:



更多细节参照 [10]。不同backbone网络的特性如下:

  • BERT [7] : 使用Transformer [10] 作为算法的主要框架,更彻底地捕捉语义关系,使用了Mask Language Model(MLM) [11] 和 Next Sentence Prediction(NSP) 的多任务训练目标,相较于较早的预训练模型,BERT使用更强大的算力训练了更大规模的数据。
  • RoBERTa [1] : 相较BERT,RoBERTa不再使用Next Sentence Prediction(NSP)任务,使用更大更多样性的数据,且数据从一个文档中连续获得。在mask方面,使用动态掩码机制每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。
  • ERNIE [6] : 在BERT的基础上做优化,主要改进点在于,在pretrainning阶段增加了外部的知识,由三种level的mask组成,分别是basic-level masking(word piece)+ phrase level masking(WWM style) + entity level masking,引入了DLM (Dialogue Language Model) task,中文的ERNIE还使用了各种异构数据集。

综合多个backbone网络的能力,在下游任务中快速微调,融合不同backbone的微调模型,可使得整体模型具备多样性、鲁棒性,获得更佳性能。

3) 损失函数

使用交叉熵作为损失函数。

其中,K为标签数量(本任务中为3),y为真实标签,第i个样本预测为第K个标签的概率为pi,k,样本总数为N。

4) 优化器

本文涉及到的所有训练均使用Adam作为优化器,其具备计算高效、易收敛等特点。

D. 对抗训练

使用对抗训练的方式来增强模型鲁棒性。这里最终保留了对抗训练和非对抗训练的模型进行预测与融合。如图2所示,本文根据loss求梯度对word embedding的参数矩阵添加扰动,且用来添加扰动的loss不用来优化更新。完成干扰后,使用新的loss执行常规的优化更新 [12]。

图 2. 对抗训练流程图

本文中应用对抗训练后的损失函数如下所示:

该函数表示,对输入样本施加ϵ∇word embedding Loss(x,y;θ) 的对抗扰动,一定程度上等价于在loss里边加入“梯度惩罚”。

实际上对word embedding添加扰动极大可能并不能映射到一个真实存在的词语上,这和图像中 RGB 的扰动能够产生人眼无法分辨区别的对抗样本是不一样的。这种对抗训练更类似于一种 Regularization 的手段,目的是提高 word embedding 的质量,避免过拟合问题,从而优化模型。

E. 模型融合

挑选表现最佳的多个模型进行模型融合,一次预测结果的生成流程如图3所示。

每次挑选出的n个模型分别求出各自的预测结果,即probs,再对概率进行加权求和后,基于最终的probs生成一次预测结果。其中,每个模型的预测结果分别是其5次预测probs的加和,以此提高模型稳定性。


得到每次的预测结果后,可再对不同的预测结果进行进一步的bagging。

图 3. 5折融合预测流程图

实验分析

本文所用方法最终在中国人工智能大赛 · 语言与知识技术竞赛 · 个人赛的最终测试集中达到85.55的准确率。在实验中,作者进行了大量反复的模型训练、模型挑选、参数优化过程。在实验过程中,对实验过程和结果的分析至关重要。分析结论往往影响方法与参数的优化方向。本节中总结分析实验中的部分现象与规律。

A. 不同维度的多样性

从数据多样性来说,数据增强在保证数据质量的同时增加了数据的规模,一定程度上也增加了数据的多样性,使得模型能够学习到更高质量的知识。

从模型多样性的角度来说,在集成学习中,我们希望分类器具有多样性。在本文所述方法中,基于backbone网络为BERT、ERNIE、RoBERTa_base的模型性能虽不如基于backbone网络为RoBERTa_large的模型,但往往能在模型融合中带来多样化的信息,提高融合后模型的性能及鲁棒性。

对抗训练,即扰动的添加,也是一种多样性增强的手段,也可以提升模型的稳定性。

B. 对抗训练的有效性

NLP中的对抗训练似乎不如CV领域更加直观有效。本文中,对word embedding添加扰动的对抗训练方式在一定程度上是有效的。

我们可以这样来看,例如,“好”和“差”,其在语句中扮演的语法角色是往往是相近的,同为形容词,并且上下文的语境也是相似的,例如:“雪花秀气垫粉底好吗”和“雪花秀气垫粉底差吗”。对人而言,这两个形容词的含义是有着天壤之别的,但这些词的 Word Embedding 在神经网络中有时是非常相近的,这对于各类NLP任务尤其是是非观点极性分析类型的机器阅读理解任务有很大影响。

对抗训练有效的原因可能在于,在 Word Embedding 上添加的 Perturbation 有可能会导致原来的“好”变成“差”,导致预测结果的类别错误,从而导致 Adversarial Loss 变大,而计算 Adversarial Loss 的部分是不参与梯度计算的,模型只能通过改变 Word Embedding Weight 来努力降低Adversarial Loss。因此,这些含义不同而语言结构角色类似的词能够通过这种 Adversarial Training 的方法而被分离开,从而提升了 Word Embedding 的质量,帮助模型取得更佳性能,提升模型的鲁棒性。

C. 难例分析

本节对部分有难度的样例进行分析,来解释说明部分参数调整和部分方法有效的原因。整理的部分样例如表Ⅲ所示。

对于样例1的情况,一些模型将该样例预测为“No”,是因为没有捕捉到后面“还是可以驾驶小轿车的”这部分的信息,考虑是max_len设置得不够大,在增大了max_len参数后,模型性能有所上升;对于样例2的情况,回答中只包含单一条件,未包含关于“Depends”的一些关键词,模型更大程度地根据文本匹配的程度去判断,一些模型将该样例误标为“Yes”,忽略了版本信息,模型融合与对抗训练可能可以改善该问题;对于样例3的情况,模型预测的标签似乎比较随机。

对于样例4的情况,大部分模型都预测为“Yes”,考虑原因是question与answer中相似的关键词较少,可见模型没有很好的理解语义信息。样例5对人来讲应该是很简单的,但不少模型会预测错,模型可能并不认识“霍建华”,甚至不知道这部分是一个命名实体;对于样例6的情况,训练集中给出的标签是“Yes”,个人感觉应该是“Depends”,训练集的质量对模型性能也有很大影响。

从这些样例来看,任务对模型的泛化能力、鲁棒性、对语义的理解能力要求还是比较高的,本文部分方法的应用及优化也是从提高模型鲁棒性的角度入手。

结论

对于是非观点型阅读理解任务,本文重点关注于基于鲁棒性优化的多模型融合的是非观点极性分析方法。鲁棒性的提升即是模型稳定性、泛化能力的提升,在真实的应用场景中具有重要意义。真实场景下,存在着更多的领域外知识、更多的噪声等,这些都对模型的鲁棒性作出了更高的要求。

未来,在提升模型性能与鲁棒性方面,可以尝试更多的预训练模型作为backbone网络,例如ERNIE 2.0 [13] 、NEZHA [14]、XLNet [15]、Albert [16];可以在训练过程中尝试使用soft label的方式,即将高置信度的预测结果放到训练集中进行训练。对于模型融合的方式, 也可以做进一步的优化,例如,利用XGBoost [17] 学习模型融合时的权重,避免手动调参,也可以将每个模型的预测结果再次整合放入一个前馈网络层进行训练,将完全解耦的模型融合方式耦合化,或许能获得更佳表现。此外,还可探寻更加的数据增强方式。


参考文献:

  1. Liu Y, Ott M, Goyal N, et al. Roberta: A robustly optimized bert pretraining approach[J]. arXiv preprint arXiv:1907.11692, 2019.
  2. https://github.com/PaddlePaddle/PALM
  3. He W, Liu K, Liu J, et al. Dureader: a chinese machine reading comprehension dataset from real-world applications[J]. arXiv preprint arXiv:1711.05073, 2017.
  4. Rajpurkar P, Zhang J, Lopyrev K, et al. Squad: 100,000+ questions for machine comprehension of text[J]. arXiv preprint arXiv:1606.05250, 2016.
  5. https://github.com/PaddlePaddle/Paddle
  6. Sun Y, Wang S, Li Y, et al. Ernie: Enhanced representation through knowledge integration[J]. arXiv preprint arXiv:1904.09223, 2019.
  7. Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
  8. Miyato T, Dai A M, Goodfellow I. Adversarial training methods for semi-supervised text classification[J]. arXiv preprint arXiv:1605.07725, 2016.
  9. Dietterich T G. Ensemble methods in machine learning[C]//International workshop on multiple classifier systems. Springer, Berlin, Heidelberg, 2000: 1-15.
  10. Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
  11. Taylor W L. “Cloze procedure”: A new tool for measuring readability[J]. Journalism quarterly, 1953, 30(4): 415-433.
  12. Ross A S, Doshi-Velez F. Improving the adversarial robustness and interpretability of deep neural networks by regularizing their input gradients[C]//Thirty-second AAAI conference on artificial intelligence. 2018.
  13. Sun Y, Wang S, Li Y, et al. Ernie 2.0: A continual pre-training framework for language understanding[J]. arXiv preprint arXiv:1907.12412, 2019.
  14. Wei J, Ren X, Li X, et al. NEZHA: Neural Contextualized Representation for Chinese Language Understanding[J]. arXiv preprint arXiv:1909.00204, 2019.
  15. Yang Z, Dai Z, Yang Y, et al. Xlnet: Generalized autoregressive pretraining for language understanding[C]//Advances in neural information processing systems. 2019: 5754-5764.
  16. Lan Z, Chen M, Goodman S, et al. Albert: A lite bert for self-supervised learning of language representations[J]. arXiv preprint arXiv:1909.11942, 2019.
  17. Chen T, Guestrin C. Xgboost: A scalable tree boosting system[C]//Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. 2016: 785-794.

如在使用过程中有问题,可加入飞桨官方QQ群进行交流:1108045677。

·飞桨官网地址·

https://www.paddlepaddle.org.cn/

·飞桨PALM项目地址·

GitHub: 

https://github.com/PaddlePaddle/PALM 

Gitee: 

https://gitee.com/paddlepaddle/PALM


·飞桨开源框架项目地址·

GitHub: 

https://github.com/PaddlePaddle/Paddle 

Gitee: 

https://gitee.com/paddlepaddle/Paddle


飞桨PaddlePaddle
飞桨PaddlePaddle

飞桨(PaddlePaddle)是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。

https://www.paddlepaddle.org
专栏二维码
理论机器阅读理解
2
相关数据
深度学习技术

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

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

集成学习技术

集成学习是指使用多种兼容的学习算法/模型来执行单个任务的技术,目的是为了得到更佳的预测表现。集成学习的主要方法可归类为三大类: 堆叠(Stacking)、提升(Boosting) 和 装袋(Bagging/bootstrapaggregating)。其中最流行的方法包括随机森林、梯度提升、AdaBoost、梯度提升决策树(GBDT)和XGBoost。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

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

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

对抗训练技术

对抗训练涉及两个模型的联合训练:一个模型是生成器,学习生成假样本,目标是骗过另一个模型;这另一个模型是判别器,通过对比真实数据学习判别生成器生成样本的真伪,目标是不要被骗。一般而言,两者的目标函数是相反的。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

对抗样本技术

对抗样本是一类被设计来混淆机器学习器的样本,它们看上去与真实样本的几乎相同(无法用肉眼分辨),但其中噪声的加入却会导致机器学习模型做出错误的分类判断。

多任务学习技术

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

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