8

LAMBADA——用GPT-2来做文本数据增强

 2 years ago
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650429837&%3Bidx=3&%3Bsn=82f94ed690e6837d9881cfd5de8f802a
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.
neoserver,ios ssh client
640?wx_fmt=jpeg

Do Not Have Enough Data? Deep Learning to the Rescue!

640?wx_fmt=png

本文发表在AAAI-20上,作者是IBM AI团队。

一句话总结:
思路相当简单,利用GPT-2强大的生成能力来进行文本增强,从而在few-shot场景下达到很好的增强效果。

思路一览:

本文提出的方法称为language-model-based data augmentation(LAMBADA)。

分成四个步骤:

1. 用已有的有标签数据训练一个classifier .

这个A会被用来当做一个filter,用来筛选生成的样本的质量。

2. 在训练集上对 GPT-2 () 进行 fine-tune,得到 .

这一步就是整个文章的核心了。

我们知道,GPT-2实际上就是一个语言模型,使用的是Next-word-prediction的方式进行训练,这种语言模型称为causal language modeling (CLM) 。

为了生成我们需要的增强语料,这里的方式是使用我们的训练集,来构造一批语料,让GPT-2继续在该语料上进行Next-word-prediction的训练.

语料如何构建呢?假设我们有n个训练样本,那么就构造:

即使用两个特殊的token——[SEP]和[EOS]把训练样本和标签给拼起来。

然后,就使用常规的causal language modeling的损失函数来训练:

3. 使用进行增强样本生成

经过了上面的微调,让模型学习看到yi [SEP]就可以生成跟yi对应的句子xi,这里的yi [SEP]实际上就是所谓的prompt。

作者给出了几个生成的例子:

640?wx_fmt=png

上述例子,比方Flight time这个class,就是直接对GPT-2输入Flight time [SEP],然后GPT-2就输出后面这个句子。

在具体生成的时候,由于存在一些randomness(比方根据概率分布进行采样),所以给定一个prompt之后,模型每次可以生成不同的句子,所以理论上可以无限扩充训练样本。

4. 使用 对生成的样本进行筛选

很好理解,因为生成的句子质量是难以保证的,生成一大堆,可能会有很多噪音,所以我们就用前面的一个初级分类器对这批样本进行预测,挑选出那些置信度比较高的来作为我们真正使用的增强样本。

实验效果:

使用了三个数据集:

640?wx_fmt=png

说实话,数据集的选择挺weak的,你做NLP的为啥不用点常见的NLP数据集。

对比的baseline主要包括EDA、CVAE和CBERT:

640?wx_fmt=png

然后作者设计的低资源场景就是每个类别都只有5/10/20/50/100个样本,反正就是很平衡的情况,这其实也是不太现实的,现实的低资源场景往往是类别不平衡的。

这些槽点咱们也不多说了,看看它的实验效果吧:

640?wx_fmt=png

上图展示了不同的训练集大小下的效果,可见在每个类别只有5个样本的时候,LAMBADA的效果十分显著。而当每个类别样本量达到100的时候,效果就比较弱了,但是依然是可以提高的。

(有意思的是,当每类别样本量为5的时候,LSTM奇差无比,即使到了100也只比SVM高一点,这说明在小样本的情况下,LSTM这种没有预训练的深度学习模型很垃圾,BERT虽然更是深度学习模型,但是它有强大的预训练,而SVM这种机器学习模型就很适应小样本场景)

然后针对每个类别只有5个样本的情况,作者对比了各种baseline:

640?wx_fmt=png

效果还是比较明显的,我觉得这里主要归功于GPT-2巨大的预训练量。

然而,这个论文没有放出在样本量更多一些的时候的实验结果。。。我猜测是效果不好,不然为啥不放?另外我发现,上面那个表,其实主要是ATIS数据集效果很明显,其他的俩效果都只能说有提高,但是对于few-shot的场景下只有1-2个点的提高,说实话不是什么突破性提高。然后我发现作者的Figure1也是ATIS数据集的,心机啊!

看了实验结果之后,我发现并没有那么惊喜,但是从作者的写作上看,包括取的标题,我就感觉作者仿佛十分激动,仿佛发现了什么不得了的东西,搞得读者一开始也跟着瞎激动一番。

640?wx_fmt=png

但是呢,虽然实验效果没那么惊喜,数据集的选取、实验的设计也有很多槽点,但这里的方法还是给人一些启发的,告诉了我们NLG模型用于文本数据增强的更多可能。比方我们可以在prompt设计,在GPT-2微调的方式上进行更精细地设计,想办法让GPT-2针对给定的标签可以生成更加diverse的样本,都可以作为进一步改进的方向。

0?wx_fmt=png
AINLP
一个有趣有AI的自然语言处理公众号:关注AI、NLP、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试自动对联、作诗机、藏头诗生成器,调戏夸夸机器人、彩虹屁生成器,使用中英翻译,查询相似词,测试NLP相关工具包。
343篇原创内容
Official Account
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点
640?wx_fmt=jpeg

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

640?wx_fmt=jpeg

阅读至此了,分享、点赞、在看三选一吧🙏


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK