模型增强(1)利用NLG 增强QA 任务性能

更好的阅读体验请跳转至模型增强(1)利用NLG 增强QA 任务性能

背景

上周打算把UniLM在toolkit4nlp的基础上实现一下,又刷了一遍论文,发现作者提到用UniLM做问题生成,来增强QA任务的性能,觉得很有意思,所以想尝试一下。

UniLM

因为这篇 UniLM 是主角,所以简单介绍一下该模型。该模型是通过灵活使用 attention mask ,将 NLG 与 NLU 任务统一在来一起,所以叫 unified LM,
他的做法是将 left-to-right/right-to-left/masked lm/seq2seq lm/放在一个框架里训练,从而让模型兼具 NLU 与 NLG 的能力。


lm.png

而为了达到这个训练,只需要在 bert 的基础上根据不同的 lm 调整 attention mask 即可。所以利用 bert 做 NLG 时,只需要调整 attention mask
为 seq2seq lm 对应mask即可。

数据增强

通常增强都是同义词/近义词替换,subsequence的随机删除/重复/互换等,我之前在做百度比赛时尝试过随机删除和随机两个片段互换位置,提升不是
非常大而论文里大问题生成带来大提升还是相当大的:



仔细想一下,由于attention机制,互换只是改变了position embedding部分内容,而这部分的互换对模型的影响是很弱的;随机删除可能会破坏语义,
所以增加模型robust的同时可能会降低模型性能。而问题生成,则可以看作是同义词/近义词替换的句子级别替换,所以理论上能带来不错的提升。
从对抗的角度来看,生成的问题在语义上与原问题基本一致,这也正好符合<code>输入的微小改变</code>,从而让模型在这种带有微小扰动的前提下仍然能很好的预测。

实验

既然UniLM具有很强的NLG能力能力,那就有很多不同的玩法。首先,可以训练一个模型,来针对 context 和 answer 生成对应的问题,来对问题进行
<code>"换个问法"</code>,其次,既然可以对问题<cdoe>"换个问法"</code>,自然也可以<code>"换个问题"</code>,也就是根据 context 生成新的问题
和答案。另外,由于是扩增训练数据,所以有一个技巧是做生成是将 train data 与 dev data 互换,不过由于我用的是百度比赛数据,dev data 太少,
所以我是 train + dev。

问题生成

问题生成时,就是将 context 与 answer 拼接,然后生成对应的question。具体样本形如:<code> [CLS] answer + context [SEP] question [SEP]</code> .
模型直接用bert base权重按UniLM的seq2seq方式来构建,可以看到效果还是很不错的,比如:
<blockquote>
context:报雅思或者托付培训班,一般情况下要900元左右。 雅思和托福考试可以自学: 一、基础知识准备:单词、基本语法、长难句分析; 二、板块训练:听说读写,四个板块; 三、合理备考计划,可以参见中国上别人经验结合自己的自身条件; 四、效果强化跟踪,使用合理的备考软件或者是自测题目随时跟踪自己的学习状态
question:雅思班价格
answer: ['900元', '900元左右']
generate question: 雅思班报名多少钱
</blockquote>

<blockquote>context:USB电压有5伏 USB一般4根线, 中间两根是数据线, 左右各为 +- 线 只要不短路是不会烧主板该插口的 ,我想你应该这样做,手机的线的一端直接插入手提电脑,另一头剪掉头子,从线中分离出四根线, 用万用表测出(红色+和其它色如黑-)剩下两根用胶布包扎(不用)然后 在这两根线上(正电极中最好串一50到100欧电阻)后接入一支高亮度发光二极管就成功了.
question:usb线电压
answer: ['5伏']
generate question: usb线电压 </blockquote>

解码时,有两种选择:随机抽样与 beam search 。随机抽样可以增加问题的多样性,并且可以生成多个问题;beam search近似最优,得到一个最优的
问题。由于我们是使用 train data 训练模型,在对 train data 生成新的问题时,beam search 将可能产生很多一摸一样的问题,这样将降低新增
数据的量;而随机抽样能产生很多新的问题,但可能新生成的问题与答案并不配套,还需要一些后处理之后才能真正拿来用。这里两种方式都拿来做实验,
并对生成的问题做一个简单的过滤:新生成的问题与原问题中有70%以上的字是重合的。
\begin{array}{c|c|c} \hline \\ \text{base line} & \text{beam search} & \text{random sample}\\ \hline \\ 80.39\% & 81.0\% & 79.8\% \end{array}

random sample的样本经过了很多次过滤之后才能基本达到baseline的效果,所以生成的问题如果"问非所答",对最终的效果反而是不好的,这也符合预期。

问题答案对生成

问题答案对生成时,由于答案是在 context 内的,相对问题生成简单一些,所以我们先生成答案,再根据 context 和生成的 answer 来生成对应的
question。不过为了让问题答案对更丰富多样,解码答案时我们采用随机抽样,而生成问题时,为了让问题尽量准确,我们采用 beam search。
样本形如 <code>[CLS]context[SEP]answer[SEP][question][SEP]</code>,生成的效果如下:
<blockquote>
context:您好,孕妇整个孕期体重增加12.5公斤左右,在增加的这12.5公斤中,胎儿的体重占3公斤左右,胎盘和羊水约是2公斤左右。在孕早期(怀孕3个月以内)增加2公斤,中期(怀孕3-6个月)以及末期(怀孕7-9个月)各增加5公斤左右。所以怀孕6个月体重增加7公斤左右比较正常。希望我的回答对你有所帮助。
question:孕妇6个月体重增加多少
answer: 7公斤左右
generate question: 孕妇6个月体重增加多少
generate answer: 12.5公斤左右
</blockquote>
不过也由于train data 参与训练,所以很多生成的问题答案对与原始问题答案对一致,如果有更多的外部数据,可以利用外部数据来训练。
\begin{array}{c|c|c|c} \hline \\ \text{base line} & \text{beam search} & \text{random sample} & \text{question answer generation}\\ \hline \\ 80.39\% & 81.0\% & 79.8\% & 81.76\% \\ \hline \end{array}

总结

通过生成新的问题与新的问题答案对能在一定程度上提高qa 任务的性能,在生成问题时,用beam search 得到的新问题虽然量少但由于更准确,所以
能带来一定的提升;用随机采样生成的问题会有部分与答案无关的或者语义有点不通顺的问题,所以可能反而会导致性能降低;问题答案对的生成时,
先生成相对简单的回答再生成对应问题,能对性能带来不错的提升,在做qa相关任务时,可以尝试使用一下。
实验代码:
qa_baseline
qa_question_generation_seq2seq
qa_question_answer_generation_seq2seq

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容