将句子表示为向量(下):基于监督学习的句子表示学习(sentence embedding)

1. 引言

上一篇介绍了如何用无监督方法来训练sentence embedding,本文将介绍如何利用监督学习训练句子编码器从而获取sentence embedding,包括利用释义数据库PPDB、自然语言推理数据SNLI、以及综合利用监督训练数据和无监督训练数据。

2. 基于释义数据库PPDB

2015发表的论文Towards universal paraphrastic sentence embeddings提出使用PPDB(the Paraphrase Database)来学习通用的sentence embeddings。论文模型的基本流程是输入mini-batch的释义对\(<x_1, x_2>\)集合\(X_b\),并通过对\(X_b\)中的句子进行采样得到\(x_1,x_2\)对应的负样本\(t_1, t_2\),将这四个句子通过编码器(编码函数)\(g\)得到句子编码,然后使用一种 margin-based loss进行优化,损失函数的基本思想是希望编码后的释义对\(<x_1,x_2>\)能够非常相近而非释义对\(<x_1,t_1>\)和\(<x_2,t_2>\)能够有不小于\(\delta\)的间距。对于全体训练数据\(X\),目标函数如下,其中\(\lambda_c,\lambda_w\)为正则化参数,\(W_w\)为word embedding参数,\(W_{w_{initial}}\) 为word embedding初始化矩阵,\(W_c\)是除了\(W_w\)后的其他参数。
\[
\min _ { W _ { c } , W _ { w } } \frac { 1 } { | X | } \left( \sum _ { \left\langle x _ { 1 } , x _ { 2 } \right\rangle \in X } \max \left( 0 , \delta - \cos \left( g \left( x _ { 1 } \right) , g \left( x _ { 2 } \right) \right) + \cos \left( g \left( x _ { 1 } \right) , g \left( t _ { 1 } \right) \right) \right)\right. \\ + \max \left( 0 , \delta - \cos \left( g \left( x _ { 1 } \right) , g \left( x _ { 2 } \right) \right) + \cos \left( g \left( x _ { 2 } \right) , g \left( t _ { 2 } \right) \right) \right) \bigg) \\ + \lambda _ { c } \left\| W _ { c } \right\| ^ { 2 } + \lambda _ { w } \left\| W _ { w _ { i n i t i a l } } - W _ { w } \right\| ^ { 2 }
\]

论文实现了6种类型的编码函数\(g\),具体如下:

  1. 词向量平均;
  2. 词向量平均后通过一个线性层;
  3. DAN模型:词向量平均后通过多层带非线性函数的全连接层;
  4. Simple RNN,取最后一个隐状态向量;
  5. identity-RNN (iRNN), 一种特殊的simple RNN,其weight矩阵初始化为单位矩阵,bias初始化为0向量,激活函数为恒等函数,最终的句子编码向量为最后一个隐状态向量除以句子中词的个数。当正则化程度很高时(模型参数几乎不更新),iRNN将变成模型1(词向量平均),不同的是iRNN能够考虑词序,有希望能够比模型1效果好;
  6. LSTM,取最后一个隐状态向量。

论文通过大量实验来对比上述6种编码器的优劣,得到如下结论:

  • 对于无监督文本相似度任务,复杂的模型如LSTM在垂直领域数据集上表现更好,而对于开放域数据集,简单的模型如词向量平均比LSTM的效果更好;
  • 对于句子相似度,句子蕴含以及情感分析这三种有监督任务,词向量平均模型在句子相似度和句子蕴含两个任务上表现比LSTM的效果更好,而情感分析任务LSTM表现非常不错。

3. 基于自然语言推理的InferSent模型

2017年发表的论文Supervised Learning of Universal Sentence Representations from Natural Language Inference Data提出使用自然语言推理(natural language inference, NLI)数据集来学习通用的句子表示。选择NLI任务是因为NLI是一个high-level理解任务,涉及推理句子间的语义关系。模型整体架构如下:

论文对比了7种不同的句子编码器,包括:

  1. GRU,取最后一个隐状态
  2. LSTM,取最后一个隐状态
  3. BiGRU,前向GRU与反向GRU最后一个隐状态的连结
  4. BiLSTM+mean pooling
  5. BiLSTM+max pooling
  6. Self-attentive network: bi-LSTM+inner Attention with multiple views,Inner Attention机制如下:

    \[
    \overline { h } _ { i } = \tanh \left( W h _ { i } + b _ { w } \right) \\alpha _ { i } = \frac { e ^ { \overline { h } _ { i } ^ { T } u _ { w } } } { \sum _ { i } e ^ { \overline { h } _ { i } ^ { T } u _ { w } } } \u = \sum _ { t } \alpha _ { i } h _ { i }
    \]

    其中\(\{h_1,...,h_T\}\)为BiLSTM的隐状态输出,将它们输入到tanh变换层产生keys集合\(( \overline { h } _ { 1 } , \ldots , \overline { h } _ { T } )\),然后与可学习(可训练)的query向量(上下文向量)计算得到\(\{a_i\}\),然后进行加权得到句子表示\(u\),如下图所示:

    论文具体是采用4个上下文向量\(u _ { w } ^ { 1 } , u _ { w } ^ { 2 } , u _ { w } ^ { 3 } , u _ { w } ^ { 4 }?\)(multiple views),对应产生4个表示后进行连结作为最终的句子表示。

  7. Hierarchical ConvNet,多层卷积(4层),每层卷积的maxpooling输出进行连结得到最终句子表示,模型结构如下图:

论文实验表明:BiLSTM+maxpooling作为编码器,训练数据为SNLI,能够训练出比Skip-Toughts和FastSent等无监督方法更好的sentences embedding,在2017年达到state-of-the-art,代码见https://github.com/facebookresearch/InferSent

4. 我全都要:Universal Sentence Encoder

2018年发表的论文Universal Sentence Encoder在前人研究的基础上,综合利用无监督训练数据和有监督训练数据,进行多任务训练,从而学习一个通用的句子编码器。无监督训练数据包括问答(QA)型网页和论坛,Wikipedia, web news,有监督训练数据为SNLI。多任务模型设计如下图所示,其中灰色的encoder为共享参数的句子编码器。

论文对比了DANTransfomer这两种编码器。得出如下结论:

  • Transformer 模型在各种任务上的表现都优于简单的 DAN 模型,且在处理短句子时只稍慢一些。
  • DAN模型也能具有很不错的表现,并且相较于Transformer模型,训练时间和内存的开销都更小,尤其是当句子较长时。

更详细的介绍可以参考论文作者的博客Google AI Blog (中文版)

5. 总结

  • 基于监督学习方法学习sentence embeddings可以归纳为两个步骤:

    • 第一步选择监督训练数据,设计相应的包含句子编码器Encoder的模型框架;
    • 第二步选择(设计)具体的句子编码器,包括DAN、基于LSTM、基于CNN和Transformer等。
  • Sentence Embedding的质量往往由训练数据和Encoder共同决定。Encoder不一定是越复杂越好,需要依据下游任务、计算资源、时间开销等多方面因素综合考虑。

我的github仓库https://github.com/llhthinker/NLP-Papers包含了近年来深度学习在NLP各领域应用的优秀论文、代码资源以及论文笔记,欢迎大家star~

References

  1. Wieting et al. - 2015 - Towards universal paraphrastic sentence embeddings
  2. Conneau et al. - 2017 - Supervised Learning of Universal Sentence Representations from Natural Language Inference Data
  3. Cer et al. - 2018 - Universal Sentence Encoder
  4. Google AI - 2018 - Advances in Semantic Textual Similarity

原文地址:https://www.cnblogs.com/llhthinker/p/10341841.html

时间: 2024-11-08 05:43:49

将句子表示为向量(下):基于监督学习的句子表示学习(sentence embedding)的相关文章

大数据下基于Tensorflow框架的深度学习示例教程

近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较好的价值,而深度学习在大数据场景下更能揭示数据内部的逻辑关系.本文就以大数据作为场景,通过自底向上的教程详述在大数据架构体系中如何应用深度学习这一技术.大数据架构中采用的是hadoop系统以及Kerberos安全认证,深度学习采用的是分布式的Tensorflow架构,hadoop解决了大数据的存储问

将句子表示为向量(上):无监督句子表示学习(sentence embedding)

1. 引言 word emedding技术如word2vec,glove等已经广泛应用于NLP,极大地推动了NLP的发展.既然词可以embedding,句子也应该可以(其实,万物皆可embedding,Embedding is All You Need ^_^).近年来(2014-2018),许多研究者在研究如何进行句子表示学习,从而获得质量较高的句子向量(sentence embedding).事实上,sentence embedding在信息检索,句子匹配,句子分类等任务上均有广泛应用,并且

Linux下基于nw音乐电台

Linux下基于nw音乐电台,希望大神改进 百度云:下载

Linux下基于源码方式安装MySQL 5.6

MySQL为开源数据库,因此可以基于源码实现安装.基于源码安装有更多的灵活性.也就是说我们可以针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码,根据不同的软件平台环境调整相关的编译参数,选择自身需要选择不同的安装组件,设定需要的字符集等等一些可以根据特定应用场景所作的各种调整.本文描述了如何在源码方式下安装MySQL. 1.安装环境及介质#安装环境SZDB:~ # cat /etc/issueWelcome to SUSE Linux Enterprise Server 10 SP3

在windows环境下基于sublime text3的node.js开发环境搭建

首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了.目前我在使用的主要是Emmet.Python.还有一些格式化的插件(xml,json),加上这次安装的node.js. node.js的安装就不用多说了,直接http://nodejs.org/ 点击install下载window版本的安装程序后安装即可.默认的安装会将安装目录加到path环境变量

在Jena框架下基于MySQL数据库实现本体的存取操作

在Jena框架下基于MySQL数据库实现本体的存取操作 转自:http://blog.csdn.net/jtz_mpp/article/details/6224311 最近在做一个基于本体的管理系统.其中对本体的操作部分,我使用的是Jena框架:数据模型是基于本体的语义模型:数据存储则是MySQL 5.5.9版本.由此看来,将本体模型存入数据库和从数据库中取出模型是常用的操作,这里总结一下我学到的方法. 我使用的开发环境是Eclipse3.6,在开发前要将必要的与jena有关的类包加入java

windows下基于sublime text3的nodejs环境搭建

第一步:先安装sublime text3.详细教程可自行百度,这边不具体介绍了. 第二步.安装nodejs插件,有两种方式 第一种方式:直接下载https://github.com/tanepiper/SublimeText-Nodejs 压缩包,压缩后重命名为Nodejs放到package目录下.package打开方式:Preferences-> Browser Package 第二种方式:通过package control install package的方式下载 第三步:安装nodejs.

Windows下基于eclipse的Spark应用开发环境搭建

原创文章,转载请注明: 转载自www.cnblogs.com/tovin/p/3822985.html 一.软件下载 maven下载安装 :http://10.100.209.243/share/soft/apache-maven-3.2.1-bin.zip       jdk下载安装:          http://10.100.209.243/share/soft/jdk-7u60-windows-i586.exe(32位)         http://10.100.209.243/sh

Linux下基于Erlang的高并发TCP连接压力实验

[题解整理]二分题 题目类型: 二分查找: 二分答案. 大致解题思路: 查找注意有序和返回值: 浮点数注意精度: 整数注意返回值,建议另外维护一个变量,用于储存可行解. 题目 分类 传送门 WA点 poj 2785 二分查找 题解 lightoj 1088 二分查找 题解 lightoj 1307 二分查找 题解 longlong poj 2456 整数二分答案 题解 poj 3104 整数二分答案 题解 poj 3258 整数二分答案 题解 poj 3273 整数二分答案 题解 lightoj