Quick thoughts:一种新型、有效的sentence vector模型

目录

 

一、概要

二、原理


一、概要

英文原文链接:https://pan.baidu.com/s/1FwqOzn7kdDAiYpOHACQzEQ 密码:sjsa

英文论文名称:《An efficient framework for learning sentence representations》

本文主要提出了一种新的方法来实现sentence2vec,实际上则是对skip thoughts的一种改进。从效果上来看,它训练得到的句向量在测试方面表现得也比较优异。而且他的另一个特点则是训练快,这是它非常具有吸引力的一个地方。

如果不了解skip thoughts,请去了解……

 

 

二、原理

Quick thoughts的原理实际上非常简单,就是将skip thoughts的预测行为修改成了分类问题。

(1)skip thoughts的原理简介(真的只是简介)

 

Skip thoughts采用的是encoder-decoder模型。所谓的coder,其实就是一个循环神经网络,无论采用lstm还是gru的方式。输入的是一个句子,经过encoder编码后,得到一个输出,这个输出作为decoder的输入,decoder的输出就是我们最终得到的东西。所以skip thoughts是用一个句子去预测另一个句子的模型。

(2)Quick thoughts模型

区别于skip thoughts的预测句子模型,quick thoughts在skip thoughts的模型基础上,略加修改,使得预测行为变成了分类行为。图解如下:

Quick thoughts:一种新型、有效的sentence vector模型_第1张图片

如上图所示,输入的是一系列句子的编码(或者叫句子的向量形式)。

1、f,g是带参数(需要训练)的函数,它们的作用是将句子变为定长的向量。(常用的包括RNN、LSTM等)

2、s表示一个句子

3、S_{ctxt}表示出现s周围的句子的集合(即s的上下文,context)

4、S_{cand}应该(据我的理解)是S_{ctxt}的子集,其中包含一个有效的上下文句子和许多无效的非上下文句子。模型的用处就是对这个集合进行分类。这部分的英文原文我贴出来:

模型的目标函数:

对于一个给定的句子s,一个s_{cand}\in S_{cand}是s的上下文的概率(上述4中有效的上下文句子)为:

                   

我们的训练目标则是最大化如下概率(D为训练集,就是让有效上下文的概率最大化):

                                    

其中函数c表示两个向量的内积(或许还有其他定义函数c的方法)。f和g通常用RNN。最后句子s的向量用f(s)和g(s)的拼接来表示。

你可能感兴趣的:(NLP)