作者机构:Google Research
原文链接
论文主要是提出了一个统一的句子编码框架,句子级别的encode比Word2vec使用起来会更加的方便,因为可以直接拿来做句子分类等任务。
本文主要提出了两个句子encode的框架,一个是之前《attention is all you need》里面的一个encode框架,另一个是DAN(deep average network)的encode方式。两个的训练方式较为类似,都是通过多任务学习,将encode用在不同的任务上,包括分类,生成等等,以不同的任务来训练一个编码器,从而实现泛化的目的。
Transformer:
第一个句子编码模型使用了transformer里面的一个子图,这个子图通过attention来一个句子中词语的context表示,同时考虑所有的词并将其转化为一个fixed length向量。具体了解可以去看那篇论文,这篇论文本身也没有给出具体的图。
DAN:
第二个句子编码模型使用了较为简单的一个DAN模型(Mohit Iyyer),通过对embedding求平均后输入到feed-forward network,然后不加softmax即可得到隐层表示,然后把这个向量类似于上面的方法,用多任务来进行训练模型。
论文之所以提出两个是考虑到模型的准确度和复杂程度,以及训练的资源消耗。
attention那个encode模型准确率高,但是模型复杂度高,训练时间长,消耗gpu资源多
而DAN模型虽然准确度低,但是训练快,模型复杂度低。
文中也给出了样例,有了一个初始训练好的模型,用户可以根据自己的需求再加入一些文本进行再次训练。(使用地址)
文中还提出了比较两个句子向量之间的相似度时候不用原生的cos距离,而是转化为弧度之后计算,效果要好于原生的: