句向量的表示(上)—无监督

参考:https://www.cnblogs.com/llhthinker/p/10335164.html

目录

1)基于词向量的词袋模型

      — 平均词向量与TFIDF加权平均词向量

      — SIF加权平均词向量   

           发表于2016年的论文A simple but tough-to-beat baseline for sentence embeddings提出了一种非常简单但是具有一定竞争力的句子向量表示算法。算法包括两步,第一步是对句子中所有的词向量进行加权平均,得到平均向量grevsvs;第二步是移出(减去)vsvs在所有句子向量组成的矩阵的第一个主成分(principal component / singular vector)上的投影,因此该算法被简记为WR(W:weighting, R: removing)。

第一步主要是对TFIDF加权平均词向量表示句子的方法进行改进。论文提出了一种平滑倒词频 (smooth inverse frequency, SIF)方法用于计算每个词的加权系数,具体地,词ww的权重为a/(a+p(w))a/(a+p(w)),其中aa为平滑参数,p(w)p(w)为(估计的)词频。直观理解SIF,就是说频率越低的词在当前句子出现了,说明它在句子中的重要性更大,也就是加权系数更大。事实上,如果把一个句子认为是一篇文档并且假设该句中不出现重复的词(TF=1),那么TFIDF将演变成IF,即未平滑的倒词频。但是相较于TFIDF这种经验式公式,论文通过理论证明为SIF提供理论依据。对于第二步,个人的直观理解是移出所有句子的共有信息,因此保留下来的句子向量更能够表示本身并与其它句子向量产生差距。算法描述如下(其中vs,uvs,u的shape均为[d, 1],uuTuuT为[d,d]的矩阵,d为词向量维度):

2)doc2vec

3)基于Encoder-decoder的Skip-Thought Vectors

      思想:是word2vec的skip-gram在句子上的推广,用中间句子预测上下的句子。

4)基于AutoEncoder的序列去噪自编码器(SDAE)

5)基于词袋模型的fastsent

             2016年发表的论文Learning Distributed Representations of Sentences from Unlabelled Data提出的第二种模型称为FastSentSkip-Thought模型采取语言模型形式的编码解码方式,导致其训练速度会很慢。FastSent采取了BoW(词袋)形式的编码方式,使得模型训练速度大幅提高,因此称为FastSent。具体地,给定一个连续的句子三元组Si−1,Si,Si+1Si−1,Si,Si+1,对中间的句子SiSi进行编码,编码方式是SiSi中所有词的词向量之和,即si=∑w∈Siuwsi=∑w∈Siuw,然后根据sisi对w∈Si−1∪Si+1w∈Si−1∪Si+1​进行预测,这与word2vec模型中的skip-gram基本一致,而无需像Skip-Thought一样按照句子中词的顺序生成(预测)。因此FastSent的损失函数如下:

 

                                          ∑w∈Si−1∪Si+1ϕ(si,vw)∑w∈Si−1∪Si+1ϕ(si,vw)


其中ϕ(v1,v2)ϕ(v1,v2)为softmax函数,vwvw为目标句子中的词ww的embedding。论文还提出了一种变体模型FastSent+AE,该变体不光是预测前后两个句子中的词,还预测本身句子的词,损失函数即为:

                                         ∑w∈Si−1∪Si∪Si+1ϕ(si,vw)∑w∈Si−1∪Si∪Si+1ϕ(si,vw)


模型训练后,测试阶段,FastSent能够通过计算句子中所有词向量的和迅速得到句子embedding,即:s=∑w∈Suws=∑w∈Suw​。

论文通过两种类型的下游任务来评测句子分布式表示的质量,分别为监督类型(包括释义识别,文本分类)和非监督类型(语义相关性:SICK数据集与STS数据集,直接计算句子向量的余弦相似度并与人类打分进行比较)。实验结果为SDAE模型在监督类型评测上比CBOW(将CBOW类型词向量直接相加得到句子向量)和Skipgram等简单模型要好,但是在非监督类型评测上结果却相反。类似地,Skip-Thought模型在监督类型评测上比FastSent模型效果好,但在非监督类型评测上,FastSent要好于Skip-Thought。实验结果表明,最佳方法主要取决于预期的应用。 更深,更复杂的模型(同时也需要更多的计算资源和训练时间)更适用于监督类型评测,但浅的对数线性模型更适合无监督类型评测

6)利用n-grams embedding

            2017年发表的论文Unsupervised Learning of Sentence Embeddings using Compositional n-Gram Features 提出利用n-grams来学习句子表示模型Sent2Vec,是word2vec模型中CBOW形式的扩展:不仅仅使用窗口中的词(uni-gram)来预测目标词,而是使用窗口中所有的n-grams来预测目标词(uni-gram)。为了得到句子向量,将句子看成一个完整的窗口,模型的输入为句子中的n-grams,目标是预测句子中的missing word(目标词),而句子向量是所有n-grams向量表示的平均。本文的模型与论文Enriching word vectors with subword information(FastText)很类似,主要区别有两点,其一是本文的模型输入是词级别的n-grams序列而FastText是字符级别的n-grams序列,其二是本文最终的表示是对输入的n-grams embedding进行平均而FastText是相加。代码开源在https://github.com/epfml/sent2vec。

7)Quick-Thought vectors

           2018年发表的论文An efficient framework for learning sentence representations提出了一种简单且有效的框架用于学习句子表示。和常规的编码解码类模型(如skip-thoughtsSDAE)不同的是,本文采用一种分类器的方式学习句子表示。具体地,模型的输入为一个句子ss以及一个候选句子集合ScandScand,其中ScandScand包含一个句子sctxtsctxt是ss的上下文句子(也就是ss的前一个句子或后一个句子)以及其他不是ss上下文的句子。模型通过对ss以及ScandScand中的每个句子进行编码,然后输入到一个分类器中,让分类器选出ScandScand中的哪个句子是sctxtsctxt。实验设置候选句子集合大小为3,即ScandScand​包含1个上下文句子和两个无关句子。模型结构如下:

quick-thought

模型有如下两个细节需要注意:

  1. 模型使用的分类器(得分函数)cc非常简单,是两个向量内积,即c(u,v)=uTvc(u,v)=uTv,计算ss的embedding与所有ScandScand中的句子向量内积得分后,输入到softmax层进行分类。使用简单分类器是为了引导模型着重训练句子编码器,因为我们的目的是为了得到好的句子向量表示而不是好的分类器。
  2. 虽然某些监督任务模型如文本蕴含模型是参数共享的,ss的编码器参数和候选句子编码器参数是不同的(不共享),因为句子表示学习往往是在大规模语料上进行训练,不必担心参数学习不充分的问题。测试时,给定待编码句子ss,通过该模型得到的句子表示是两种编码器的连结 [f(s);g(s)][f(s);g(s)]。

论文将上述模型命名为quick thoughtsQT),意味着该模型能够迅速有效地学习句子表示向量。模型使用GRU作为Encoder,为了和Skip-Tought模型进行比较,模型包含三种变体,使用单向GRU称为uni-QT,双向GRU称为bi-QT,将uni-QT和bi-QT生成的sentence embedding进行concat称为combine-QT。此外,论文将同时使用预训练词向量和随机初始化词向量的模型称为MultiChannel-QT(MC-QT),这种设置是参照multi-channel CNN模型

论文通过多个句子分类任务证明QT模型了的优越性:

  • 相较于其他无监督句子表示学习方法,QT在训练时间较少的情况下(相较于Skip-Thought、SDAE),能够达到非常不错的效果,在大多数数据集上的效果都是最好的。
  • 与监督句子表示学习方法(如InferSent等)对比,QT(MC-QT)同样能够在大多数数据集上取得最优效果。
  • 与专门用于句子分类任务模型(如CNN)对比,QT使用ensemble,考虑模型类型(单向/双向),词向量(随机/预训练)以及数据集(BookCorpus/UMBC )三个方面进行训练不同的模型进行集成,也取得了有竞争力的效果。

论文还通过image-sentence ranking和nearest neighbors两个实验来为QT有效性提供依据。代码开源在https://github.com/lajanugen/S2V。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值