【读论文】一种通用句子编码:Universal Sentence Encoder

USE

  • 目标
  • 模型结构
  • 训练

通用句子编码器是google在2018年提出的将句子编码成嵌入向量的模型,这些嵌入向量专门针对将学习转移到其他NLP任务。文章中指出,对于许多NLP任务,可用的训练数据有限。这对数据饥渴的深度学习方法提出了挑战。由于注释有监督的训练数据的成本很高,对于大多数研究或行业NLP任务,通常无法使用非常大的训练集。许多模型通过使用隐式执行有限的迁移学习来解决如word2vec,Glove等,都有不错的效果。作者发现,他们的句子嵌入的迁移学习往往优于单词级迁移。通过句子嵌入的迁移学习,他们观察到,在迁移任务中,在最少的有监督训练数据下,表现出奇地好。

原论文:Universal Sentence Encoder
代码实现:https://tfhub.dev/google/universal-sentence-encoder/1
作者还给出了简单的调用方式:
【读论文】一种通用句子编码:Universal Sentence Encoder_第1张图片
下图为作者列出的使用USE方法后的句子相似度的热力图:
【读论文】一种通用句子编码:Universal Sentence Encoder_第2张图片
从主观来看的话,效果还是不错的。

目标

一种简单的句子嵌入方法是将句子中单词的词嵌入向量平均,将平均值作为整个句子的表示,但这种方法有缺陷。其中一个典型的缺陷就是没有考虑词与词的顺序,如“i eat pigs” 和 “pigs eat i”明显是不同的含义,但在使用简单平均的时候它们的句向量是完全一样的,即相似度是100%。第二个缺陷就是信息损失,如“i eat pigs”与“i”的句向量在使用简单平均时的相似度会很高,然而事实并不是这样。
通用句子编码的想法是设计一个编码器,使我们可以使用他的嵌入解决多个NLP任务,这将是一个通用的句子嵌入。

模型结构

文章介绍了两种编码模型的模型体系结构。文章的两个编码器有不同的设计目标,一种基于transformer架构的方法以更高的模型复杂度和资源消耗为代价来实现高精度,另一个目标是有效的推理DAN,但精确度略有降低。下面来依次介绍这两种模型encoder结构。
Transformer
transformer使用注意力来计算句子中单词的上下文感知表示,同时考虑所有其他单词的顺序和身份。作者将句子作为输入,使用transformer将每个词(中文应该是字)表示成512维的词嵌入,该结构由6层堆叠的transformer层组成,每一层的结构如下:
【读论文】一种通用句子编码:Universal Sentence Encoder_第3张图片

整体结构如下:
【读论文】一种通用句子编码:Universal Sentence Encoder_第4张图片
这里作者将6层transformer层输出的词嵌入平均的时候,为了句子之间的差异就不会受到句子长度效应的影响,将所有词嵌入加起来除以句子长度的平方根(length normalization)。
作者在文章中验证了基于变压器的编码器实现了最佳的整体传输任务性能。但是这是以计算时间和内存使用量随句子长度急剧增加为代价的。以下作者则提出了另一种模型结构,它在精度上不如transformer,但在资源消耗上少于transformer,该结构就是深度平均网络(DAN)。
DAN
该编码器基于lyyer等人提出的深度平均网络DAN,有兴趣的可以看一下这篇文章https://aclanthology.org/P15-1162.pdf
它将一个单词的嵌入与bi-grams(即大小为2的滑动窗口的词)平均在一起,这时就已经是单个向量了,然后通过4层DNN,得到512维的嵌入输出,单词和bi-grams的嵌入是在训练中学习得到的。
这是DAN模型结构:
【读论文】一种通用句子编码:Universal Sentence Encoder_第5张图片
第二种通用句子编码结构如下:
【读论文】一种通用句子编码:Universal Sentence Encoder_第6张图片

训练

作者使用斯坦福自然语言推理(SNLI)语料库来训练上述两个模型参数,并将模型转移在一些其他任务上评估效果。下图为部分任务:
【读论文】一种通用句子编码:Universal Sentence Encoder_第7张图片
在迁移学习上,对于下游任务为分类任务,可以将transformer和DAN句子编码器的输出被提供给特定于任务的DNN,输出类别即可;对于语义相似性任务,可以直接评估两个编码器产生的句子嵌入的相似性。
文章中将余弦距离转换为角距离(因为作者发现使用基于角度距离的相似度平均比原始余弦相似度表现更好),公式如下:
在这里插入图片描述
接下来,作者加入word2vec词嵌入,结合以上transformer和DAN结构,另外还有CNN,将不同模型组合起来在不同的上述任务上对比,如下图:
【读论文】一种通用句子编码:Universal Sentence Encoder_第8张图片
其中USE_D表示使用的是DAN的编码器,USE_T表示使用的是transformer的编码器,w2v w.e.表示使用word2vec作为词嵌入(该模型在新闻数据语料库上进行训练),lrn w.e.表示使用随机初始化的词嵌入,让模型自己在某一任务的特定数据集上去学习。
关于模型的更多细节可以去看源代码。


参考文章:
[1]https://mp.weixin.qq.com/s/T89ZJmscvhfnEZwo6CrGug
[2]https://arxiv.org/pdf/1803.11175.pdf


NLP学习笔记2022/03/30

你可能感兴趣的:(Paper,Reading,nlp,自然语言处理,迁移学习)