详解"/>
Universal Sentence Encoder 论文详解
Universal Sentence Encoder 论文详解
Abstract
提出了两个句向量模型(用于迁移学习,下同)。衡量了模型复杂度,资源消耗,迁移能力和任务效果。Baseline为词向量模型。句向量模型效果比较好,少量标记数据就可以有较好的效果。
Introduction
标记成本限制了NLP任务的效果,许多模型使用预训练词模型加上少量标记样本进行迁移学习,句向量模型效果更好。
本文提出了两种句向量模型,发现少量标记样本就可以取得很好效果。
同时我们也衡量了模型的工程特性。(时间开销,内存需求等)
Model Toolkit
模型一种使用了Transformer,一种使用了DAN。两种模型直接用与STS都取得了较好效果,还可以用于迁移学习
Encoders
Transformer(高准确,高开销),DAN(尽量保持准确,低开销)
3.1 Transformer
使用Transformer子图来进行encoder,词attention利用了词信息,位置信息和句子中其他词信息,最后通过求和来表示句子。
为了更好的通用性,模型被用于多个下游任务中,类似Skip-thoughts的无监督任务,对话任务,以及有监督的分类任务。(多种数据进行预训练)
效果好,计算开销大,对句子长度敏感(疑问A,没有提到decoder如何训练)
输入:小写的PTBtoken,输出512维向量
3.2DAN
DAN使用平均词向量+DNN来做,
输入输出与训练同transformer相同
DAN优势在于计算时间与句子长度成线性关系(疑问B,为什么平均还成线性?)
3.3 Encoder训练数据
预训练数据包括多个网站的无监督数据,和有监督数据SNLI,SNLI提升了迁移能力(疑问A,没有提到decoder如何进行有监督训练)
transfer tasks
迁移的任务有:文本分类,STS任务(疑问C:SNLI预训练,STS还有训练集,如何训练?,SBERT只用SNLI来fine-tune)
transfer learning models
句分类任务,我们加上一个DNN;对于STS任务,我们直接计算
baselines
包括两个baseline,都是词级别,使用word2vec预训练与直接embedding,然后加入到CNN或者DAN中转换成一个句向量
combined Transfer Models
将词级别和句级别concate做实验,看文本分类效果
(疑问E,STS没有用到词级别)
问题总结
1.疑问A,预训练:只看文章不看代码,最大的疑问就是只说了句向量的encoder,没有说decoder或者说如何训练。(例如skip-thoughts是预测上下文句子,bert是预测mask或者下文句子,AE是预测自己)。那这里面是如何训练的呢?无监督数据如何加入到训练中,SNLI这个有监督数据又如何加进来,是句对数据,难道这里面已经用到孪生来fine-tune?
2.疑问B,为什么DAN开销与句子长度成正比,不是取词平均嘛,不管多少词可以一次取平均啊
3.疑问C,迁移任务STS,包括训练集,即有监督数据,那么也就是无监督训练+SNLI有监督训练+STS有监督训练,而SBERT只用到无监督训练+SNLI有监督训练直接用在STS上了吧
4.疑问D,为什么在STS实验中没有用到词级别的句向量呢?只有纯USE_D和USE_T
更多推荐
Universal Sentence Encoder 论文详解
发布评论