查看原文
其他

牛!AI大赛机器阅读理解任务冠军方案

The following article is from 飞桨PaddlePaddle Author 王肖

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


参赛背景




在研一深度学习课程中首次接触飞桨,并有幸在研二时对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.


·飞桨官网地址·
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

推荐阅读

PostgreSQL 13发布

Flutter开始支持Windows

华为开源OpenJDK发行版“毕昇”

一人之力,毁掉一个开发者活动

前有WSL,现在又有DSL

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存