参考: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提出的第二种模型称为FastSent,Skip-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-thoughts和SDAE)不同的是,本文采用一种分类器的方式学习句子表示。具体地,模型的输入为一个句子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. 如何无监督地获得一个句子的向量表示?

    ©PaperWeekly 原创 · 作者 | 张成蹊 单位 | FreeWheel机器学习工程师 研究方向 | 自然语言处理 或许上过 NLP 或大数据课程的同学会想到课程小作业的王者:TF-IDF. ...

  2. SimCSE 对比学习句向量

    摘要 本文介绍了简单的对比学习框架SimCSE,一种无监督方法,使用一个输入句子,在一个对比目标中预测自己,只使用标准的dropout作为噪声,效果与监督学习相当.删除dropout(数据增强方式)会 ...

  3. 读论文:基于自监督知识的无监督新集域适应学习

    标题: 基于自监督知识的无监督新集域适应学习 作者: 汪云云 , 孙顾威 , 赵国祥 , 薛晖 文章目录 ==Abstract== ==Introduction== ==综述== 一.相关工作 1.1 ...

  4. 【无监督学习】1、MOCOv1 | 用于提升无监督学习效果的动量对比学习

    文章目录 一.背景 二.方法 2.1 对比学习(字典查表) 2.2 动量对比函数 2.3 Pretext Task 三.效果 3.1 数据集 3.2 训练细节 3.3 实验 四.代码 论文:Momen ...

  5. CVPR 2021 Oral | Transformer!UP-DETR:无监督预训练检测器

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨飞奔的啦啦啦@知乎(已授权) 来源丨知乎  编辑丨极市平台 AI博士笔记系列推荐 周志华<机器学习 ...

  6. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器

    点击上方"机器学习与生成对抗网络",关注星标 获取有趣.好玩的前沿干货! 作者:飞奔的啦啦啦   知乎 https://www.zhihu.com/question/4323211 ...

  7. CVPR 2021 Oral | Transformer再发力!华南理工和微信提出UP-DETR:无监督预训练检测器...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 本文作者:飞奔的啦啦啦   |  来源:知乎 https://zhuanlan.zhihu.com/p/31 ...

  8. bert获得词向量_无监督语义相似度匹配之Bert抽取文本特征实战

    今天记一次采用bert抽取句子向量的实战过程,主要是想感受一下bert抽取出来的句子特征向量是否真的具有不错的语义表达. 在此之前,我们来回顾一下,如果我们想拿到一个句子的特征向量可以采用什么样的方式 ...

  9. JoSE:球面上的词向量和句向量

    作者丨苏剑林 单位丨追一科技 研究方向丨NLP,神经网络 个人主页丨kexue.fm 这篇文章介绍一个发表在 NeurIPS 2019 的做词向量和句向量的模型 JoSE(Joint Spherica ...

最新文章

  1. leangoo V5.4.2版上线
  2. SpringJDBC的简单应用
  3. Linux下修改Mysql的用户(root)的密码
  4. 文件还原工具Foremost
  5. android tcp socket框架_最流行的 Web 框架 Gin 源码阅读
  6. 一文通俗了解对抗生成网络(GAN)核心思想
  7. 微信小程序 详解 小程序支付
  8. 2018年最实用机器学习项目Top 6(附开源链接)
  9. 机器学习中的数学(二)--梯度下降法
  10. jstl处理栏目与子栏目_深圳北易:网站SEO优化如何提高网站栏目页排名
  11. torch中的几种乘法。torch.mm, torch.mul, torch.matmul
  12. Sql Server函数全解一字符串函数
  13. 搜索python代码的软件_python小说爬虫工具,小说搜索下载软件附源码
  14. MySQL(2)----DDL语句之增、删、改、查操作
  15. win7一直显示正在启动_win7旗舰版升级后无法启动电脑的解决方法
  16. 425 Failed to establish connection.
  17. 深度学习七:GAN和DCGAN入门
  18. 【数据可视化】Echarts世界地图需要的数据 - JSON格式世界国家中英文对照表
  19. 2021年12月电子学会图形化四级编程题解析含答案:聪明的小猫
  20. Oracle问题处理——DBCA无法识别当前已有数据库实例

热门文章

  1. wpf datepicker 选择时分秒_[Angular 组件库 NG-ZORRO 基础入门] - DatePicker
  2. 双十一我们在作战室干什么?零点刚过,我偷偷提交了几行代码!
  3. 码码的土狼:架构的原则、范式及治理
  4. 这些AI大咖的实践干货,从事人工智能的你应该知道
  5. 技术团队的工程师文化:效率与价值
  6. 我要带徒弟学写JAVA架构,引路架构师之路
  7. 浅谈分布式消息技术 Kafka
  8. 我要带徒弟学JAVA架构 ( 写架构,非用架构 )
  9. JeeCG团队招聘啦!
  10. 实践中整理出tomcat集群和负载均衡