这是一篇发表在AAAI2020上的一篇文章,附上链接:https://aaai.org/ojs/index.php/AAAI/article/view/6233
方法名为LAMBADA(Language Model Based Data Augmentation),核心思路为:
下面看一下每个步骤具体实施的过程:
- 选用一个分类算法在训练集上训练一个分类器。分类算法文中用了BERT,SVM和LSTM。记住这个分类器,第四步的时候要用。
- 这一步得到一个用于生成句子的模型:把训练集的数据组织成ySEPxEOS的格式,y是类别标签,SEP作为分隔符,x是需要分类的句子,EOS作为结束符。然后微调一个预训练好的语言模型,论文中使用的是GTP-2。这一步的主要目的是,微调之后给定一个类别标签,这个微调过的语料模型就能把后面的内容补全,从而生成对应类别标签y的句子x。
- 在上一步得到模型之后,每给模型一个ySEP。这个语言模型就能生成相应类别的句子。这样做的好处是每个类别都能生成数量相当的句子,不会造成类别上的不平衡。这样就可以得到合成的(synthesized)训练集。
- 利用第一步得到的分类器,过滤合成训练集中质量比较低的样本,提高构造数据的质量,得到我们最终需要的样本。
总结:
让我感到比较新奇的地方就是:我们之前都是给一个句子,判断句子的类别。这篇文章实现了给一个类别,能生成相应的句子。可能之前也有工作做了这个东西,不过我是没看到。