摘要:
这篇文章的主要idea就是如何用现在已经有的语言模型,稍微引导一下生成基于某些条件的话语。如给个情感,生成一个带情感的句子。作者在GPT2的结构上稍微修改了self-attention机制,命名为Pseudo-Self,在decoder的时候引入外部控制,并且这样做能够尽量小的影响GPT2之前的训练参数,达到的很好的效果。
模型:
作者主要对比了前面两种工作,关于这两种工作不做阐述。如图,右一是作者的工作。
他的主要思路是什么呢,主要是改变一下self-attention,本来attention是要将一个X,分别用三个维度为[D,D'],[D,D'],[D',D]的矩阵分别相乘得到key,value,query的,如截图所示:
可以看到前两个相乘是【T*D】 * 【D*D'】 * Transpose(【T*D】 * 【D*D'】) = 【T * D'】 * 【D' * T】 = 【T * T】
然后乘上后一个 【T* T】 * 【T*D】*【D*D'】 = 【T*D'】 (Transpose表示转置)
作者改进以后呢?变成了:
可以看到,其实际上是改变了中间两个步骤的乘积,最后结果的维度还是没有改变,为原来的【T*D'】
中间这个矩阵维度为Transpose【(Tx+Ty)* D'】其中Tx是X的长度,Ty是y的长度(也就是上面式子的T)
作者说这样就只是在做self-attention的时候把condition加进去了,完全没有影响GPT2正常的参数运行(论文有实验证明这中结构相对于其他结构对于GPT2参数的影响是最小的)。当然,这个加进去的X是我们的condition的embedding或者是hidden。与X相乘的那几个矩阵随机初始化。
主要工作:
主要就是改了改self-attention的结构,并且做了大量的实验。
1.上图上三种模型的效果对比 PPL和cls 基于情感生成影评
2.与bert,elmo等集成模型在生成摘要数据集上对比
3.故事生成
4.看图说话。
5.不同大小的GPT2对效果的影响。
6.human evalution
7.后面微调的时候,不同数据量对结果的影响。(当然是数据越多越好)
一句话总结:
提出了一种Pseudo-Self的结构,站在预训练语言模型的基础上生成有前提条件的对话。可以考虑将前提条件换为dialogue的对话历史,然后知道生成,这样对对话系统的NLG部分将大有裨益。
资源:
论文:https://openreview.net/pdf?id=H1eFXO0WpV
作者的workshop:http://nlp.seas.harvard.edu/slides/Pre-training%20for%20Generation.pdf