Sentence Embedding

一、Paragraph Vector[2014]

  1. 文本分类和文本聚类在许多应用中发挥着重要作用,例如,文档检索、web 搜索、垃圾邮件过滤。这些应用的核心是机器学习算法,如逻辑回归或 Kmeans 。这些算法通常需要将 text input 表示为一个固定长度的向量。对于文本,最常见的固定长度的 vector representationbag-of-words: BOWbag-of-n-grams: BONG ,因为它简单、高效,而且通常具有令人惊讶的准确性。

    然而,BOW有很多缺点:

    • 单词的顺序丢失了,因此只要使用相同的单词,不同的句子可以有完全相同的 representation

    • 即使 bag-of-n-grams 考虑了 short context 中的单词顺序,它也受到了数据稀疏和高维度的影响。

    • bag-of-wordsbag-of-n-grams 对单词的语义(正式地说,是单词与单词之间的距离)没有什么感觉。这意味着 "powerful""strong""Paris" 等单词的距离相同,尽管从语义上来说,"powerful" 应该更接近 "strong" ,而不是更接近"Paris"

    在论文《Distributed Representations of Sentences and Documents》 中,作者提出了 Paragraph Vector ,这是一个无监督的框架,可以为文本段学习连续分布式向量表示 continuous distributed vector representation 。这些文本可以是句子、段落、或者文档。Paragraph Vector 这个名字是为了强调这个方法可以应用于不同长度的文本段,从一个短语或句子到一个大文档。

    在作者的模型中,vector representation 被训练成有助于预测段落中的单词。更确切地说,作者将当前段落的 paragraph vector 与当前段落中的一些 word vector 拼接起来,并预测给定context 中的 following wordword vectorparagraph vector 都是通过随机梯度下降和反向传播来训练的。 paragraph vector 在段落之间是唯一的,而 word vector 在段落之间是共享的。在预测时, paragraph vector 是通过固定 word vector 并训练新的 paragraph vector (直到收敛)来推断的。

    论文的技术受到最近使用神经网络学习 word vector 的工作的启发。在 word vector 的工作中,每个单词由一个向量表示,该向量与context 中的其他word vector 拼接或取平均,结果向量用于预测 context 中的其他单词。其结果是,在模型被训练后,word vector 被映射到一个向量空间中,从而使语义相似的单词具有相似的 vector representation (例如,"strong""powerful" 相近)。

    在这些成功的技术之后,研究人员试图将模型扩展到 word-level 之外,实现 phrase-levelsentence-levelrepresentation 。例如,一个简单的方法是使用文档中所有单词的 word vector 的加权平均值。一个更复杂的方法是使用 matrix-vector 操作,将 word vector 按照一个句子的解析树给出的顺序进行组合。这两种方法都有不足之处:

    • 第一种方法,即 word vector 的加权平均法,与标准的 BOW 模型一样,失去了单词的顺序。

    • 第二种方法,使用解析树来组合 word vector ,已经被证明只对句子有效,因为它依赖于解析。

    Paragraph Vector 能够构建长度可变的输入序列的 representation 。与之前的一些方法不同,它是通用的,适用于任何长度的文本:句子、段落和文档。它不需要对 word weighting 函数进行 task-specific 调优,也不依赖于解析树。在论文中,作者将进一步介绍在几个基准数据集上的实验,以证明Paragraph Vector 的优势。例如:

    • 在情感分析任务中,Paragraph Vector 取得了新的SOTA ,比复杂的方法更好,在错误率方面有超过 16% 的相对改善。

    • 在文本分类任务中,Paragraph Vector 击败了 BOW 模型,产生了约 30% 的相对改进。

  2. 相关工作:略。(技术过于古老,不用花时间研究相关工作)。

1.1 模型

  1. 我们首先讨论了以前的学习 word vector 的方法。这些方法是我们 Paragraph Vector 方法的灵感来源。

1.1.1 学习 Word Vector

  1. 一个众所周知的学习 word vector 的框架如下图所示。其任务是根据上下文中的其他单词来预测一个单词。在这个框架中,每个单词都被映射成一个 unique vector ,用矩阵 WRd×|V| 中的一列来表示,其中 demebdding sizeVvocabularyW 的列是以单词在 vocabulary 中的位置为索引的。然后,上下文中所有单词的 word vector 的拼接或sum,用于预测句子中下一个词。

    正式而言,给定单词序列 (w1,w2,,wT)word vector modelobjective 是最大化平均对数概率:

    (1)1Tt=kTklogp(wtwtk,,wt1,wt+1,,wt+k)

    其中:k 为上下文窗口大小,T 为单词序列长度,p(wt) 为给定上下文的条件下预测 wt 的概率。

    预测任务通常是通过 multiclass 分类器(如 softmax)来完成的:

    (2)p(wtwtk,,wt1,wt+1,,wt+k)=exp(ywt)iexp(yi)

    其中:yi 是每个输出单词 i 的未归一化对数概率:

    (3)yi=bi+uih(wtk,,wt+k;W)

    其中:uibisoftmax 参数;h() 是从 W 中提取的 word vector 的拼接或均值池化来构建的。

    在实践中,可以使用 hierarchical softmax 用于加速训练。

  2. 基于神经网络的 word vector 通常使用随机梯度下降进行训练,梯度是通过反向传播获得的。这种类型的模型通常被称为 neural language model 。 在 code.google.com/p/word2vec/ 上有一个基于神经网络的训练 word vector 算法的具体实现。 训练收敛后,具有相似含义的单词被映射到向量空间中的相似位置。例如,"powerful""strong" 彼此接近,而 "powerful""Paris"则比较遥远。

    word vector 之间的差值也具有意义。例如,word vector 可以用简单的向量代数来回答类比问题:"King" - "man" + "woman" = "Queen"

1.1.2 PV-DM

  1. 我们学习 paragraph vector 的方法受到学习 word vector 方法的启发。其灵感在于, word vector 被用于预测句子中的下一个单词。我们的 paragraph vector 的思想也是类似的:paragraph vector 被用于预测句子中的下一个单词。

    如下图所示,在我们的 Paragraph Vector framework 中,每个 paragraph 被映射到一个 unique vector (由矩阵 DRd×|P| 中的一列来表示),每个单词也被映射到一个 unique vector (由矩阵 WRd×|V| 中的一列来表示)。其中,dembedding 维度,Dparagraph 集合,Vvocabulary 。在实验中,我们拼接这些向量。

    paragraph vector 类似于 BERT 中的 CLS token 。但是在 BERT 中,CLS token 是全局共享的;而在 paragraph vector 中,每个句子都有自己的 CLS token 。那么,是否可以有折中的方案:

    • 同一篇文档的 CLS token共享、不同文档的 CLS token 不共享,这样 CLS token 捕获到整篇文档的语义。

    • 同一个段落的 CLS token 共享、不同段落的 CLS token 不共享,这样 CLS token 捕获到了该段落的语义。

    即,global CLS tokenlanguage id (捕获不同语言的信息)、domain id (捕获不同领域的信息)、document id (捕获不同文章的信息)、paragraph id(捕获不同段落的信息)、sentence id(捕获不同句子的信息)。

    此外,BERT 中通过多层的 Transformer Layer,可以使得 CLS token 能够捕获到整个序列的语义。而 paragraph vector 是一个浅层的网络,paragram id 没有信息融合使得无法捕获整个序列的意义。

  2. 更正式地,与 word vector framework 相比,这个模型的唯一变化是通过 WD 来构建 h()

    (4)yi=bi+uih(wtk,,wt+k;W,D)

    paragraph token 可以被认为是另一个单词。它就像一个 memory ,可以记住当前context 中缺少的东西,或者说记住段落的主题。由于这个原因,我们通常把这个模型称为 Distributed Memory Model of Paragraph Vector: PV-DM

    context 是固定长度的,它是利用滑动窗口在段落上采样而得到的。paragraph vector 在同一段落产生的所有context 中共享,但没有在不同段落中共享。然而,word vector 矩阵W 是跨段落共享的。也就是说,"powerful"vector representation 在所有段落中是相同的。

  3. paragraph vectorword vector 是用随机梯度下降训练的,梯度是通过反向传播获得的。在预测时,人们需要执行一个推理步骤来计算一个新段落的 paragraph vector 。这也是通过梯度下降得到的。在这个步骤中,模型其他部分的参数,即word vector Wsoftmax 参数 {ui,bi}i=1|V|,是固定的。

    经过训练后,paragraph vector 可以作为段落的特征。我们可以将这些特征直接馈入传统的机器学习技术,如逻辑回归、支持向量机或 K-means

    总之,该算法本身有两个关键阶段:

    • 在训练数据集上训练 word vector Wsoftmax 权重 {ui}i=1|V|softmax bias {bi}i=1|V|paragraph vector D

    • 在推断时,通过在 D 中增加更多的列,并在保持 {W,{ui}i=1|V|}不变的情况下对 D 进行梯度下降,以获得新段落的 paragraph vector

    推断时还需要重新训练,成本太高了。

  4. paragraph vector 的优势:paragraph vector 的一个重要优点是它们是从未标记的数据中学习的,因此可以很好地用于没有足够标记数据的任务。

    paragraph vector 也解决了 BOW 模型的一些关键弱点:

    • 首先,paragraph vector 继承了 word vector 的一个重要属性:单词的语义。在语义空间,"powerful""Paris" 更接近于 "strong"

    • 其次,paragraph vector 考虑到了单词顺序,至少在 small context 中是这样的,就像具有较大 n 值的 n-gram 模型。

      paragraph vector 仅考虑部分的单词顺序(通过上下文窗口)而没有像 GPT 那样完全地考虑单词顺序。

1.1.3 PV-DBOW

  1. 上述方法考虑了paragraph vectorword vector 的拼接来预测文本窗口中的下一个单词。另一种方法是忽略输入中的 context word ,但强迫模型预测从段落中随机抽取的单词,如下图所示。我们把这个版本命名为 Distributed Bag of Words version of Paragraph Vector: PV-DBOW ,与上一节的 Distributed Memory version of Paragraph Vector: PV-DM 相对应。

    除了概念上的简单外,这个模型需要存储更少的数据。我们只需要存储 softmax 参数 {ui,bi}i=1|V| ,而不是之前模型中的 softmax 参数和 word vector 。这个模型也类似于 word vector 中的 Skip-gram 模型。

  2. 在我们的实验中,每个paragraph vector 是两个向量的组合:一个是由 PV-DM 学习的、另一个是由 PV-DBOW 学习的。单独的 PV-DM 通常对大多数任务都很有效,但它与 PV-DBOW 的组合通常在我们尝试的许多任务中更加一致的改善,因此强烈推荐。

1.2 实验

略。(技术过于古老,不用花时间研究实验细节)。

二、Skip-Thought Vectors[2015]

  1. 近年来,已经开发了几种方法来学习将 word vector映射到 sentence vector ,包括 RNNCNN 等。所有这些方法产生的 sentence representation 都被传递给一个有监督的任务,并依赖于一个类别标签。因此,这些方法学习高质量的 sentence representation ,但只针对各自的任务进行调优。

    paragraph vector 是上述模型的一个替代方案,因为它可以通过引入 distributed sentence indicator 作为神经语言模型的一部分来学习无监督的 sentence representation 。缺点是在测试时,需要进行推理来计算一个新的paragraph vector

    在论文 《Skip-Thought Vectors》 中,作者抛弃了 composition method ,并考虑一个替代的损失函数。论文考虑以下问题:是否存在一个任务和相应的损失函数,使我们能够学习高度通用的 sentence representation ?论文通过提出一个学习高质量 sentence vector 的模型来证明这一点,而没有考虑到特定的监督任务。以 word vector 学习为灵感,作者提出了一个目标函数,将 《Efficient estimation of word representations in vector space》skip-gram 模型抽象到 sentence level 。也就是说,不是用一个单词来预测它的 surrounding context ,而是对一个句子进行编码来预测它的 surrounding sentence 。 因此,任何 composition operator 都可以被替换为 sentence encoder,只需要修改目标函数。模型如下图所示。论文称这个模型为 skip-thoughts ,而模型得到的向量被称为 skip-thought vector

    模型依赖于连续文本的训练语料库。论文选择使用一个大型的小说集合,即 BookCorpus 数据集来训练模型。这些是由尚未出版的作者写的免费书籍。该数据集有 16 种不同类型的书籍,例如,浪漫类(2865本)、幻想类(1479本)、科幻类(786本)、青少年类(430 本),等等。下表给出了 BookCorpus 的汇总统计。

    除了记叙文之外,BookCorpus 还包含对话、情感、以及人物之间的广泛互动。此外,有了足够大的集合,训练集就不会偏向于任何特定的领域或应用。下表显示了在 BookCorpus 数据集上训练的模型的句子的最近邻。这些结果表明,skip-thought vector 学会了准确捕获它们所编码的句子的语义和句法。

    作者在一个新提出的 setting 中评估了skip-thought vector :在学习了 skip-thoughts 之后,冻结模型并将编码器作为一个通用的特征提取器用于任意的任务。在论文的实验中,作者考虑了 8 个任务:语义相关性、转述检测paraphrase detectionimage-sentence ranking 、以及 5 个标准的 classification benchmark 。在这些实验中,论文抽取 skip-thought vector 并训练线性模型来直接评估这些 representation ,而不需要任何额外的微调。事实证明,skip-thoughts 产生了通用的 representation ,在所有考虑的任务中都表现得很鲁棒。

    这样的实验设置导致的一个困难是:难以构建一个足够大的 word vocabulary 来编码任意的句子。例如,Wikipedia 文章中的一个句子可能包含一些极不可能出现在 book vocabulary 中的名词。作者通过学习一种映射来解决这个问题,该映射将 word representation 从一个模型迁移到另一个模型。利用 word2vec representation ,作者学习从 word2vec 空间到编码器空间的线性映射。经过训练,任何出现在 word2vec 中的单词都可以在编码器的 word embedding 空间中得到一个向量。

2.1 模型

  1. 我们利用 encoder-decoder 框架来实现 skip-thoughts

    • 一个编码器将句子映射到一个 sentence vector

    • 一个解码器根据 sentence vector 来生成周围的句子。

    人们已经探索了一些 encoder-decoder ,如 ConvNet-RNNRNN-RNNLSTM-LSTM 。在我们的模型中,我们使用一个带有GRURNN encoder 和一个带有 conditional GRURNN decoder 。这种模型组合几乎与神经机器翻译中使用的 RNN encoder-decoder 相同。GRU 已经被证明在序列建模任务上与 LSTM 表现得一样好,而在概念上却更简单。

    2023 年最热门的、用于 NLPencoder-decoder 框架是 Transformer

  2. 给定关于句子的一个三元组 (si1,si,si+1),其中 si1si 位于文档中紧挨着的前一个句子,si1si 位于文档中紧挨着的后一个句子。令 wit 表示句子 si 的第 t 个单词,xitwitword embedding 。我们的模型包含三个部分:编码器、解码器、目标函数。

    • Encoder:令句子 si 的单词序列为 (wi1,,wiN) ,其中 N 为句子 si 中的单词的数量。在每个 time step ,编码器产生一个隐状态 hit ,它可以被解释为单词序列 (wi1,,wit)representation。因此,隐状态 hiN 就代表完整句子的 representation

      为了编码一个句子,我们递归地执行如下方程(去掉下标 i ):

      (5)rt=σ(Wrxt+Urht1)zt=σ(Wzxt+Uzht1)h¯t=tanh(Wxt+U(rtht1))ht=(1zt)ht1+zth¯t

      其中:h¯tt 时刻的 proposed state updateztupdate gatertreset gate 为逐元素乘法;σ()sigmoid 函数;Wr,Ur,Wz,Uz,W,U 为模型权重。

    • Decoder:解码器是一个神经语言模型,它以编码器的输出 hi 为条件来输出周围的句子。第一个解码器用于下一个句子 si+1,第二个解码器用于上一个句子 si1 。每个解码器都使用单独的参数,但共享 vocabulary matrix V 。下面我们描述用于下一个句子si+1 的解码器(用于 si1 的解码器也是类似的)。令 hi+1d,tt 时刻解码器的隐状态,那么解码器递归地执行如下方程(去掉下标 i+1 ):

      (6)rd,t=σ(Wrdxt1+Urdhd,t1+Crhi)zd,t=σ(Wzdxt1+Uzdhd,t1+Czhi)h¯d,t=tanh(Wdxt1+Ud(rd,thd,t1)+Chi)hd,t=(1zd,t)hd,t1+zd,th¯d,t

      其中:hi=hiN 为句子 sirepresentation

      给定句子 sirepresentation hi 、以及给定句子 si+1 的前面 t1 个单词的条件下,预测句子 si+1 的第 t 个单词为 wi+1t 的概率为:

      (7)P(wi+1tsi+1<t,hi)exp(vwi+1thi+1d,t)

      其中:si+1<t 表示句子 si+1 的前面 t1 个单词组成的序列;vwi+1t 为目标单词的 output word embedding ,它对应于 V 的行。

      前一个句子 si1 的解码器也是类似的。

    • Objective:给定三元组 (si1,si,si+1),优化目标是:前面句子、后面句子的对数条件概率之和,即:

      (8)tlogP(wi+1tsi+1<t,hi)+tP(wi1tsi1<t,hi)

    这种方法是 Transformer-based 中典型的 encoder-decoder 方法,并非常类似于 GPT 预训练的思想。Skip-Thoughts 无法区分前一个句子、后一个句子。在 Transformer-based 方法中也仅仅考虑 next sentence generation

    可以通过编码器中添加一个 indicator token 来指示:是生成前一个句子还是后一个句子。使用时联合考虑这两种情况(考虑前一个句子和后一个句子)下的 representation

    GPT 预训练是根据文本顺序来依次预测,而并没有考虑逆序预测(即这里的 P(wi1tsi1<t,hi) )。逆序预测是否有用?可以通过实验观察。读者认为,逆序预测可以使得模型能够具备更好的 “往回看” 的能力。

  3. vocabulary expansion:我们现在描述一下如何将我们编码器的 vocabulary 扩展到它在训练期间没有见过的单词。假设我们有一个 word vector 模型,如 word2vec。令 Vw2v 为这些 word representationword embedding space。令 VrnnRNN word embedding space 。我们假设 Vw2vvocabulary 要远远大于 Vrnnvocabulary 。我们的目标是构建一个映射 f:Vw2vVrnn ,使得 v=Wv ,其中:vVw2vvVrnnW 为待学习的参数矩阵。

    我们学习 f 为一个线性映射来求解 W 。现在 Ww2v 中的任何单词都可以映射到 Vrnn 中从而用于编码句子。

2.2 实验

略。(技术过于古老,不用花时间研究实验细节)。

三、FastSent[2016]

  1. distributed representation 在当今的 NLP 研究中无处不在。对于单词或 word-like entity ,人们已经提出方法从自然发生的(未标记的)训练数据中获得这种representation ,这些方法基于相对而言 task-agnostic objective (如预测相邻的单词)。相比之下,学习短语或句子的 distributed representation 的最佳方法还没有定论。 随着更先进的语言处理技术的出现,将短语或句子表示为连续值向量的模型比较常见。 虽然人们已经非正式地观察到这种模型的内部 sentence representation 可以反映语义直觉,但不知道哪些架构或目标可以产生 “最佳” 的或最有用的 representation 。解决这个问题最终会对语言处理系统产生重大影响。事实上,正是短语和句子,而不是单个的单词,编码了 human-like 的通用世界知识(或 "常识 common sense "),这是目前大多数语言理解系统的一个关键缺失部分。

    论文 《Learning Distributed Representations of Sentences from Unlabelled Data》 通过对学习句子 distributed representation 的前沿方法的系统性比较来解决这个问题。论文将比较的范围限制在不需要为训练模型而收集标记数据的方法上,因为这种方法更具有成本效益,而且适用于各种语言和领域。作者还提出了两个新的短语或句子的 representation learning objectiveSequential Denoising Autoencoder: SDAEFastSent (一个 sentence-level log-linear bag-of-words model)。作者在在两种类型的任务(监督评估和非监督评估)上比较了所有的方法。

    • 在监督评估任务上,representation 被用于分类器或回归模型。

    • 在非监督评估任务上,representation 用于余弦距离从而进行查询。

    作者观察到,根据评估指标的性质,不同方法存在明显的差异。具体而言,更深或更复杂的模型(需要更多的时间和资源来训练)通常在监督任务中表现最好,而浅层对数线性 log-linear 模型在无监督的 benchmark 上效果最好。具体而言:

    • SkipThought Vectors 在大多数监督评估任务中表现最好,但 SDAE 在转述识别 paraphrase identification 任务中表现最好。

    • 相反,在(无监督的)SICK 句子关联性基准上,FastSent ,一个简单的 SkipThought objective 的对数线性变体,比所有其他模型表现得更好。

    • 有趣的是,在有监督基准和无监督基准中表现出最强性能的方法是一个bag-of-word 模型,该模型被训练从而组合 word embedding (即,学习 word emebdding 的线性组合)。

3.1 模型

  1. 为了限制分析,我们比较了从无标签的、自然产生的数据中计算 sentence representation 的神经语言模型,就像 word representation 的主要方法一样。同样,我们也不关注 "bottom up" 的模型,其中 phrase representationsentence representation 是由单词(这些单词组成了短语或句子)的 word vector 上的固定数学运算建立的,尽管我们确实考虑了一个典型的案例,如 CBOW

  2. 文本上的现有方法:

    • SkipThought Vectors:对于文档中的连续句子 si1,si,si+1SkipThought 模型被训练为,给定 source sentence 的条件下,预测 target sentence si1si+1 。与所有的 sequence-to-sequence 模型一样,在训练中, source sentence 被一个具有 GRU 单元的 RNN 网络所 “编码”,然后依次 “解码” 到两个 target sentence 中。重要的是,由于 RNN 在每个 time-step 采用了一组 update weights ,编码器和解码器都对 source sentence 中的单词顺序很敏感。

      对于 target sentence 中的每个位置,解码器计算 vocabularysoftmax 分布。训练目标是 target sentence si1si+1 中每个 correct word 的负对数似然之和。当训练之后,编码器可以将单词序列映射到单个向量。

    • Paragraph Vector《Distributed representations of sentences and documents》 提出了两个关于 sentence representation 的对数线性模型:

      • DBOW 模型为训练语料库中的每个句子 s 学习一个向量 s ,该向量与 word embedding vw一起定义了一个 softmax 分布,该分布被优化以预测给定句子 s 中的单词 wsword embedding vw 在语料库的所有句子中共享。

      • DM 模型中,连续单词的 k-gram {w1,,wi+ks} 被选中,然后它们的 word embeddings 拼接起来从而预测 wi+k+1

      我们使用了 Gensim 的实现,按照作者的建议,将训练数据中的每个句子视为一个"paragraph" 。在训练过程中,DMDBOW 模型都为训练语料库中的每一个句子(以及单词)存储 representation 。因此,即使在大型服务器上,也只能训练 representation size = 200 的模型,以及 combination 操作为均值池化(而不是拼接)的 DM 模型。

    • Bottom-Up Method:我们在 Books 语料库上训练 CBOW word embeddingSkip-Gram word embedding ,并执行 sum 池化从而得到 sentence representation

      我们还与 CPHRASE 进行了比较,后者是利用基于句法解析的(监督)解析器来推断分布式 semantic representationC-PHRASE 在本文中使用的几个 evaluation 中取得了 distributed representationSOTA

    • Non-Distributed Baseline:我们实现了一个 TFIDF BOW model ,在这个模型中,句子 srepresentation 编码了一组 feature-words 中的数量,并以它们在语料库C 中的 TFIDF 来加权。这些 feature-wordC 中最常见的 20 万个单词。

  3. 在结构化资源上训练的模型:下面的模型依赖于更加结构化的数据(相比较于 raw text 而言):

    • DictRep:训练神经网络模型从而将 dictionary definition 映射到单词的 pre-trained word embedding ,这些单词都是由 dictionary definition 所定义的。他们试验了 BOWRNN (带 LSTM 单元)编码架构和变体,其中 input word embedding 是学到的或 pre-trained 的(+embs )从而匹配 target word embedding 。我们使用现有的代码和训练数据实现他们的模型。

    • CaptionRep:使用与 DictRep 相同的整体架构,我们训练了(BOWRNN )模型,将 COCO 数据集中的caption 映射到图片的 pre-trained vector representation 上。image representation 由深度卷积网络编码,该网络是在 ILSVRC 2014 年的 object recognition 任务中训练的。

    • NMT:我们考虑由神经机器翻译模型学到的 sentence representation 。这些模型具有与 SkipThought 相同的架构,但在 sentence-aligned translated text 上进行训练。我们在 2015 WMT 的所有可用的 En-FrEn-De 数据上使用标准架构。

  4. 新的 test-based 模型:我们引入两种新的方法来解决现有方法的某些不足:

    • Sequential (Denoising) AutoencoderSkipThought objective 需要具有连贯的句子间叙述coherent inter-sentence narrative 的训练文本,这使得它在移植到社交网络、或由符号知识产生的人工语言等领域方面存在问题。 为了避免这一限制,我们试验了一种基于 denoising autoencoder: DAErepresentation-learning objective 。在 DAE 中,高维输入数据根据一些噪声函数被破坏,模型被训练为从 corrupted version 中恢复原始数据。作为这个过程的结果,DAE 学会通过解释其variation 的重要因子的特征来表达数据。将数据转化为 DAE representation (作为 "pre-training" 或初始化步骤)可以在深度前馈网络中获得更强大的(监督)分类性能。

      最初的 DAE 是前馈神经网络,应用于固定尺寸的(图像)数据。在这里,我们通过噪声函数 N(s|po,px) 来适配可变长度的句子,该函数由自由参数 po,px[0,1] 来决定。

      • 首先,对于 s 中的每个单词 wN (独立地)以概率 po 删除 w

      • 然后,对于 s 中的每个non-overlapping bigram wiwi+1N 以概率 px 交换 wiwi+1

      • 然后,我们训练与 NMT 相同的 LSTM-based encoder-decoder 架构,但使用 denoising objective 从而在给定 scorrupted version N(s|po,px) 的条件下来恢复原始句子。

      训练好的模型可以将新的单词序列编码为 distributed representation 。我们称这个模型为 Sequential Denoising Autoencoder: SDAE 。注意,与 SkipThought 不同,SDAE 可以在任意顺序的句子集上训练。

      • 我们给没有噪音的情况(即 po=px=0N() 为恒等映射)命名为 Sequential Autoencoder: SAE 。这种 setting 对应了 《Semi-supervised sequence learning》 应用于文本分类任务的方法。

      • p00 对应了 word dropout ,它在有监督的语言任务中也被用作深度网络的正则化器。

      • 对于较大的 pxobjective 类似于 word-level debagging

      对于 SDAE ,我们在验证集上调优了 po,px 。我们还尝试了一个变体(+embs ),其中单词由(固定的)pre-trained embedding 来表示。

      SDAE 类似于 BERTBART 等预训练方法。

    • FastSentSkipThought 的表现表明,丰富的句子语义可以从相邻句子的内容中推断出来。该模型可以说是利用了一种 sentence-level Distributional Hypothesis 。尽管如此,像许多深度神经语言模型一样,SkipThought 的训练速度非常慢。FastSent 是一个简单的 additive (log-linear) sentence model ,旨在利用相同的信号,但计算成本要低得多。

      给定某个句子在上下文中的 BOW representation ,该模型只需预测相邻的句子(也表示为 BOW )。更正式地说,FastSentvocabulary 中的每个单词 w 学习一个 source embedding uwtarget embedding vw 。对于连续句子构成的训练样本 (si1,si,si+1) ,句子 siembedding 为构成它的单词的所有 source embedding 之和:

      (9)si=wsiuw

      损失函数为:

      (10)wsi1si+1ϕ(si,vw)

      其中:ϕ(,)softmax 函数。

      SkipThoughts 相比,FastSent 用均值池化代替了编码器,同时剔除了解码器。FastSent 类似于 CBOW,只是 FastSent 用整个句子作为上下文,而不是固定长度的上下文窗口。

      我们还试验了一个变体(+AE ),在这个变体中,除了相邻的句子作为目标之外,encoded (source) representation si 还必须预测它自己包含的那些单词。因此 FastSent+AE 的损失函数为:

      (11)wsi1sisi+1ϕ(si,vw)

      在测试期间,训练好的模型(非常快速地)将 unseen 单词序列编码到 distributed representations=wsuw

  5. 模型训练和调优:除非另有说明,否则所有模型都是在 Toronto Books Corpus 上训练的,该语料库具有 SkipThoughtFastSent 所需的语义连贯性。该语料库由 7000 多本书中的 70M 个有序句子组成。

    • log-linear modelSkipGram, CBOW, ParagraphVec, FastSent )在一个 CPU core 上训练了一个 epoch 。这些模型的 representation 维度 d 是在验证集上调优的,搜索空间 d{100,200,300,400,500}。所有其他模型都在一个 GPU 上训练。

    • S(D)AE 也训练了一个 epoch8 天)。SkipThought 模型训练了两个星期,覆盖了不到一个 epoch

    • 对于 CaptionRepDictRep 来说,性能是在 held-out training data 上监测的,并且在损失函数达到一个 plateau (大约 24 个小时)后停止训练。

    • NMT 模型的训练时间为 72 小时。

3.2 实验

  1. 略。(技术过于古老,不用花时间研究实验细节)。

3.3 讨论

  1. 不同的 objective 产生不同的 representation :这似乎是显而易见的,但是结果证实了应该对不同的 application 采用不同的学习方法。例如:

    • SkipThoughtTREC 上表现最好也许并不奇怪,因为这个数据集的标签是由紧随 question 之后的语言(即 answer )所决定的。

    • 另一方面,完全聚焦于句子内容的模型,如SDAE ,可能更有利于转述检测paraphrase detection

  2. 有监督的性能和无监督的性能之间的差异:许多在监督评估中表现最好的模型在无监督的环境中表现不佳。在 SkipThought、S(D)AENMT 模型中,损失函数的计算是基于内部 sentence representation 的非线性解码,因此,representation space 的几何信息可能不会反映在一个简单的余弦距离中。log-linear model 在这种无监督的情况下通常表现更好。

  3. 资源需求的差异:不同的模型需要不同的资源来训练和使用,这可能会限制它们的应用。

  4. 单词顺序的作用尚不清楚:

    • 在监督评估中,对词序敏感的模型(76.3 )和不敏感的模型(76.6 )的平均得分大致相同。

    • 然而,在无监督评估中,BOW 模型的平均得分是 0.55 ,而基于 RNN 的模型(顺序敏感)的平均得分是 0.42

    这似乎与广泛持有的观点不一致,即单词顺序在决定英语句子的意义方面起着重要作用。

    一种可能的原因是:大多数句子都可以被一个概念语义(可以在 distributed lexical representation 中进行编码)所区分,而这个概念语义与单词顺序无关。另一个可能的原因是:目前的评价标准没有充分反映 order-dependent

    2023 年,随着 Large Language Model 的兴起,单词顺序被证明是非常重要的。

  5. 评估结果的局限性:所有评价结果的内部一致性 internal consistency0.81 (略高于 "acceptable" )。当分别考虑监督任务(或无监督任务)时,一致性指标要高得多。这表明,就 sentence representation 的共同特性而言,有监督的基准和无监督的基准确实优先考虑了不同的属性。

四、InferSent[2017]

  1. 单词的 distributed representation (或 word embedding )已被证明可以为自然语言处理和计算机视觉中的各种任务提供有用的特征。虽然关于 word embedding 的有用性、以及如何学习 word embedding 似乎已经达成了共识,但对于承载完整句子意义的 representation 来说,这一点还不清楚。也就是说,如何在单个向量中捕获多个单词和短语之间的关系仍然是一个有待解决的问题。

    在论文 《Supervised Learning of Universal Sentence Representations from Natural Language Inference Data》 中,作者研究了学习句子的 universal representation ,即在大型语料库中训练得到的 sentence encoder 模型,并随后迁移到其他任务中。为了建立这样一个编码器,有两个问题需要解决,即:最好的神经网络结构是什么、如何以及在什么任务上训练这样一个网络。

    遵从现有的学习 word embedding 的工作,目前的大多数方法考虑以无监督的方式学习 sentence encoder ,如 SkipThoughtFastSent 。 在这里,作者研究是否可以利用监督学习来代替无监督学习,这是受到计算机视觉的结果的启发。在计算机视觉中,许多模型在 ImageNet 上进行预训练,然后迁移到下游任务。作者比较了在各种监督任务上训练的 sentence embedding ,并表明从自然语言推理(natural language inference: NLI )任务上训练的模型所产生的sentence embedding 在迁移准确性transfer accuracy 方面达到了最佳结果。作者假设,自然语言推理作为一项训练任务的适宜性是由以下事实造成的,即它是一项涉及推理句子内部语义关系的 high-level 的理解任务。

    与计算机视觉中卷积神经网络占主导地位不同,使用神经网络对一个句子进行编码有多种方式。因此,作者研究了 sentence encoding 架构对 representational transferability 的影响,并比较了卷积的、递归的、以及更简单的 word composition 的方案。

    论文的实验表明,在 Stanford Natural Language Inference: SNLI 数据集上训练的基于双向 LSTM 架构的编码器,与SkipThoughtFastSent 等所有现有的无监督方法相比,产生了 SOTAsentence embedding ,同时训练速度更快。作者在一组广泛且多样的迁移任务上证实了这一发现,这些任务衡量了 sentence representation 捕获通用的、有用的信息的能力。

  2. 相关工作:略。(技术过于古老,不用花时间研究相关工作)。

4.1 模型

  1. 这项工作结合了两个研究方向:

    • 如何使用 NLI 任务来训练通用的 sentence encoding 模型。

    • sentence encoder 的架构。具体来说,我们研究了标准的RNN 模型,如 LSTMGRU 。对于这些模型,我们研究了 hidden representation 的均值池化和最大池化。

      我们还研究了一个自注意力网络,包含了对句子的不同视图;以及一个分层卷积网络,可以看作是一种基于树的方法,融合了不同层次的抽象。

  2. 自然语言推理 Natural Language Inference: NLI 任务:SNLI 数据集由 570k 个人类标注的英语 sentence pair 组成,人工标记为三个类别之一:蕴含 entailment 、矛盾 contradiction 、中性neutralSNLI 捕获了自然语言推理,也被称为Recognizing Textual Entailment: RTE ,并构成了显式构建的最大的高质量的带标记的资源之一,从而要求理解句子语义。我们假设,NLI 的语义性质使其成为以监督方式学习 universal sentence embedding 的良好候选。也就是说,我们的目标是证明在自然语言推理上训练的 sentence encoder 能够学习 sentence representation ,该 sentence representation 捕获了通用的、有用的特征。

    模型可以通过两种不同的方式在 SNLI 上进行训练:

    • 基于 sentence encoding 的模型,显式地将各个句子的编码分开。

      即,encoder 的输入是单个句子。

    • 联合方法,允许同时使用两个句子的 encoding (从而使用交叉特征、或跨句子的注意力)。

      即,encoder 的输入是 sentence pair

    由于我们的目标是训练一个通用的 sentence encoder ,我们采用第一种设置。如下图所示,这种典型的结构使用一个共享的 sentence encoder ,输出 premise uhypothesis vrepresentation (分别记做 u,v)。sentence vector 被生成之后,应用 3matching 方法来抽取 uv 之间的关系:向量拼接 (u,v)、逐元素乘法 uv 、逐元素差值的绝对值 |uv|

    注意,这里应用了人工的特征工程来进行特征交叉。

    得到的向量捕获了来自 premisehypothesis 的信息,并被馈入到一个由多层全连接层组成的 3 类分类器中,最终形成一个 softmax layer

  3. sentence encoder 架构:目前存在多种将句子编码为固定尺寸的representation 的神经网络,目前还不清楚哪种网络能最好地捕获通用的、有用的信息。我们比较了 7 种不同的架构:带有 LSTMGRU 的标准 recurrent encoder 、拼接从左到右 GRU 和从右到左 GRUlast hidden state 、带有均值池化或最大池化的 BiLSTM、自注意力网络、分层卷积网络。

    • LSTMGRU :我们的第一个,也是最简单的编码器应用了 LSTMGRU 模块的 RNN 。给定包含 T 个单词的句子,单词序列为 (w1,,wT),网络计算 Thidden representation h1,,hT ,其中 ht=LSTMt(w1,,wT) (或者 GRU )。句子通过最后一个 hidden vector hT 来表达。这里 LSTM 表示从左到右 GRU ,而 LSTM 表示从右到左 GRU

      我们还考虑了一个 BiGRU-last 模型,它将从左到右 GRU 的最后一个 hidden state 和从右到左 GRU 的最后一个hidden state 拼接起来。

    • 带均值池化/最大池化的 BiLSTM :给定包含 T 个单词的句子,单词序列为 (w1,,wT)BiLSTM 计算 Thidden representation h1,,hT ,其中:

      (12)ht=[ht,ht]ht=LSTMt(w1,,wT),ht=LSTMt(w1,,wT)

      我们尝试用均值池化、或最大池化将 {ht}t=1T 组合成一个固定尺寸的向量。下图所示为最大池化。

    • 自注意力网络:self-attentive sentence encoderBiLSTMhidden states 上使用注意力机制来生成 input sentencerepresentation u 。注意力机制定义为:

      (13)h~i=tanh(Whi+b),αi=exp(h~iuw)j=1Texp(h~juw)u=i=1Tαihi

      其中:

      • {h1,,hT}BiLSTMoutput hidden vector{αi} 为注意力权重。

      • W,b 为待学习的线性投影函数的参数,uw 为待学习的 context query vector

      遵从 《A structured self-attentive sentence embedding》 ,我们使用一个注意力网络,该网络对于输入的句子具有多个视图,使得模型能够学到句子的哪一部分对于给定的任务是重要的。具体而言,我们有四个 context vector uw1,uw2,uw3,uw4 从而生成四个 representation 。然后这四个 representation 拼接起来得到 sentence representation u

      如下图所示,给出了自注意力网络的架构(只有一个视图)。

      注意,这里只有一个 BiLSTMBiLSTMoutput hidden states 经过四个 context vector 的注意力,从而得到四个不同的 sentence representation

    • 分层卷积网络:目前在分类任务上表现最好的模型之一是被称为 AdaSent 的卷积架构,它在不同的抽象层次上拼接了不同的 sentence representation 。受这个架构的启发,我们引入了一个由 4 层卷积层组成的更快的版本。在每一层,通过对 feature map 执行最大池化从而计算出一个 representation ui ,如下图所示。

      final representation u=[u1,u2,u3,u4] 将输入句子的不同 levelrepresentation 拼接起来。因此,该模型在一个固定尺寸的 representation 中捕获到了输入句子的 hierarchical abstraction

  4. 训练细节:

    • 对于我们在 SNLI 上训练的所有模型,我们使用 SGD ,学习率为 0.1 ,权重衰减为 0.99 。在每个 epoch 中,如果验证集准确率下降,我们将学习率除以 5 。当学习率低于 10-5 的阈值时,训练就停止。我们使用 batch size = 64

    • 对于分类器,我们使用了一个多层感知器,其中隐层数量为 1 ,隐层维度为 512

    • 我们使用在 Common Crawl 840B 上训练的具有 300 维的开源 GloVe 向量作为 fixed word embedding

      这是早期的 pre-training 方法的应用:利用 pretrained word embedding

4.2 实验

  1. 略。(技术过于古老,不用花时间研究实验细节)。

五、Simple-But-Tough-To-Beat Baseline For Sentence Embedding [2017]

  1. word embedding 是自然语言处理和信息检索的基本构建模块。最近的工作试图计算能够捕获单词序列(短语、句子和段落)语义的 embedding ,其方法从简单的 word vectors 的组合,到复杂的架构(如 CNN, RNN)。最近,《Towards universal paraphrastic sentence embeddings》通过从标准的 word embedding 开始,并根据来自 Paraphrase pairs dataset: PPDB 的监督对其进行修改,通过训练一个简单的 word averaging model 来构建 sentence embedding ,从而学习了通用的、paraphrasticsentence embedding 。这种简单的方法在文本相似性任务上比各种方法有更好的表现,可以作为文本分类任务的良好初始化。然而,来自 paraphrase dataset 的监督似乎很关键,因为他们报告说, initial word embedding 的简单地取均值的效果并不理想。

    论文 《A Simple but Tough-to-Beat Baseline for Sentence Embeddings》 给出了一种新的 sentence embedding 方法:只需计算句子中 word vectors 的加权平均,然后把加权平均向量在句子的 word vectors 的第一个奇异向量上的投影移除("common component removal" )。这里,单词 w 的权重为:a/(a+p(w)) ,其中 a 为一个参数,p(w) 为词频 word frequency 。这个权重被称作 smooth inverse frequency: SIF 。该方法在各种文本相似性任务上取得了明显优于 unweighted average 的性能,在其中大多数任务上甚至击败了《Towards universal paraphrastic sentence embeddings》中测试的一些复杂的监督方法,包括一些 RNNLSTM 模型。该方法非常适用于 domain adaptation setting ,即把从不同语料库上训练好的 word vector 来计算不同任务的 sentence embedding 。它对加权方案也相当鲁棒:

    • 使用从不同语料库中估计的词频不会损害性能。

    • 参数 a 可以在较大范围内变化并且实现接近最佳的结果。

    这里的核心在于移除第一个奇异向量上的投影,因为这会改善 word embedding 的各向异性问题。

  2. 相关工作:略。(技术过于古老,不用花时间研究相关工作)。

5.1 模型

  1. 我们简单回顾一下 《A latent variable model approach to PMI-based word embeddings》 中的用于文本的 latent variable generative model 。该模型将语料库的生成视为一个动态过程,第 t 个单词在第 t 步产生。该过程由一个 discourse vector ctRd 的随机游走来驱动。vocabulary 中的每个单词 w 也有一个 d 维的emebdding 向量 vwRd,这些 embedding 向量就是模型的 latent variablediscourse vector 代表了 “正在谈论的东西”。discourse vector ctword embedding 向量 vw 之间的内积捕获了 discourse 和单词之间的相关性。在时刻 t ,观察到一个单词 w 的概率由 log-linear word production model 决定:

    (14)Pr[w emitted at time tct]exp(ctvw)

    discourse vector ct 做缓慢的随机游走(意味着 ct+1 是通过增加一个小的随机位移向量从 ct 中得到),所以附近的单词是在 similar discourse 下产生的。在 《A latent variable model approach to PMI-based word embeddings》 中显示,在一些合理的假设下,这个模型产生的行为(即,在 word-word 共现概率方面)符合 word2vecGlove 等经验性工作。

    random walk model 可以被 relaxed,即允许ct 中偶尔出现大的jump 。因为一个简单的计算表明,它们对单词的共现概率的影响可以忽略不计。

    实验报告表明,用这个模型计算出来的 word vectorGloveword2vec(CBOW) 计算得到的 word vector 相似。

  2. 我们改进的 RandomWalk 模型:显然,很容易将 sentence embedding 定义为:给定一个句子 s ,对支配这个句子的 discourse vector 做一个 MAP 估计。我们注意到,我们假设 discourse vector ct 在句子中的单词被 emitted 时不会有太大的变化,因此为了简单起见,我们可以用一个 discourse vector cs 代替句子 s 中所有的 discourse vector ct 。在 《A latent variable model approach to PMI-based word embeddings》 中, csMAP 估计值是句子中所有单词的 embedding 的均值(最多可乘以标量)。

    在本文中,为了更 realistic 的建模,我们对模型做了如下改变。该模型有两种类型的 “平滑项”,它们是为了说明这样的事实:有些单词是脱离上下文出现的、以及有些高频词(例如 "the""and " 等)在任何 discourse 中都经常出现。

    • 首先,我们在对数线性模型中引入一个附加项 αp(w),其中 p(w) 是单词的unigram 概率(在整个语料库中),α 是一个标量。这样,即使 word vector vwcs 的内积结果很小,该单词 w 也能出现。

    • 其次,我们引入了一个 common discourse vector c0Rd ,作为 most frequent discourse 的修正项,其中 most frequent discourse 通常与句法有关。

    具体而言,给定 discourse vector cs ,一个单词 w 在句子 s 中被观察到的概率为:

    (15)Pr[w emitted in sentence scs]αp(w)+(1α)exp(c~svw)Zc~sc~s=βc0+(1β)cs,c0cs

    其中: α,β 都是标量的超参数;Zc~s=wVexp(c~svw) 为归一化项。

    我们看到,该模型允许一个与 discourse cs 无关的单词 w 被观察到,原因有二:来自 αp(w) 的机会、如果 wcommon discourse vector c0 相关。

    上式的物理意义:单词的词频越大,则被观察到的概率越大(由 αp(w) 项所驱动);单词与 discourse vector 越相关,则则被观察到的概率越大(由 c~svw 项所驱动)。

    注意,由于 c0 是全局共享的,因此这要求每一个 cs 的方向与 c0 是正交的。

  3. 计算 sentence embeddingsentence embedding 被定义为 cs 的最大似然估计。( 在这个 case 中,MLEMAP 相同,因为先验分布是均匀的。) 我们借用 《A latent variable model approach to PMI-based word embeddings》 的关键建模假设,即单词 vw 的分布大致均匀,这意味着归一化项 Zc 在各个方向大致相同。因此,假设 Zc~s 在各个方向也大致相同。因此句子 s 的生成概率为:

    (16)p[scs]=wsp(wcs)=ws[αp(w)+(1α)exp(c~svw)Z]

    令:

    (17)fw(c~s)=log[αp(w)++(1α)exp(c~svw)Z]

    根据泰勒展开公式:

    (18)fw(c~s)fw(0)+fw(0)c~s=constant+(1α)/(αZ)p(w)+(1α)/(αZ)×(c~svw)

    因此在单位球上,c~s 的最大对数似然估计值(忽略归一化)为:

    (19)argmaxwsfw(c~s)wsap(w)+avw,a=1ααZ

    也就是说,MLE 近似于句子中单词的向量的加权平均。注意,对于词频较高的单词 w ,权重 a/(p(w)+a) 较小,所以这自然会导致高频词的权重下降。

    在实际应用中, a 是通过超参数调优来获得,而不是通过理论计算而得到。

    为了估计 cs ,我们通过计算一组句子的 c~s的第一主成分 first principal component 来估计方向 c0 。换句话说,final sentence embedding 是通过对 c~s 移除它在第一主成分上的投影而得到的。

  4. Sentence Embedding 算法:

    • 输入:word embedding {vw:wV},句子集合 S,参数 a , 估计的词频 {p(w):wV}

    • 输出:sentence embedding {vs:sS}

    • 算法步骤:

      • 对于 S 中的每个句子 s ,计算:

        (20)vs1|s|wsaa+p(w)vw
      • S 中的每个句子 svs 按列拼接,得到句子 XRd×|S| 。令 uXfirst singular vector (是一个单位向量)。

      • 对于 S 中的每个句子 s ,计算:

        (21)vsvs(uu)vs

        因为 u 是单位向量,因此 vsu 上的投影为:(vsu)×u 。它等价于 (uu)vs

5.2 实验

略。(技术过于古老,不用花时间研究实验细节)。

六、QuickThoughts[2018]

  1. 在语言领域,distributional hypothesis 在获得单词的 semantic vector representations 的学习方法的发展中是不可或缺的。这个 hypothesis 是说:一个单词的意义是由它出现的 word-context 所决定的。基于这个 hypothesis 的神经网络方法已经成功地从大型文本语料库中学习了高质量的 representation

    最近的方法将类似的思想用于学习 sentence representation 。 这些方法是 encoder-decoder 模型,学习预测/重构给定句子的 context sentence 。尽管它们很成功,但这些方法中存在几个建模问题:

    • 用句子的形式来表达一个概念有很多方式。理想的semantic representation 对表达意义的形式不敏感。现有的模型被训练来重建一个句子的表面形式,这就迫使模型不仅要预测其语义,还要预测与句子的语义无关的方面。

    • 与这些模型相关的另一个问题是计算成本。这些方法有一个 word level reconstruction objective ,涉及到对目标句子的单词进行顺序地解码。在整个 vocabulary 上用 output softmax layer 进行训练是训练速度慢的一个重要原因。这进一步限制了 vocabulary 和模型的大小。

    论文 《An efficient framework for learning sentence representations》 通过提出一个直接在 sentence embedding space 运行的 objective 来规避这些问题。 generation objective 被一个 discriminative approximation 所取代。在这个 discriminative approximation 中,模型试图在一组候选句子中识别出一个正确的目标句子。在这个背景下,我们将句子的 "意义" 解释为句子中的信息,这些信息允许它从上下文句子的信息中预测和被预测。作者将该方法命名为 quick thoughts: QT ,以表示对 thought vectors 的有效学习。

    论文贡献:

    • 提出了一个简单而通用的框架来有效地学习 sentence representation。 论文训练了广泛使用的编码器架构,比以前的方法快一个数量级,同时取得更好的性能。

    • 在涉及理解句子语义的几个下游任务中建立了一个新的 unsupervised sentence representation learningSOTA

  2. 相关工作:略。(技术过于古老,不用花时间研究相关工作)。

6.1 模型

  1. 先前的工作以不同的方式实现了 distributional hypothesis 。下图 (a) 展示了一种常见的方法,即 encoding 函数计算输入句子的 vector representation ,然后 decoding 函数试图生成以该 representation 为条件的目标句子的单词。

    • skip-thought model 中,目标句子是那些出现在输入句子附近的句子。

    • 解码器也有一些变体,比如预测 input sentence 而不是邻近句子的自编码器模型(FastSent)、以及预测input sentence 中的一个窗口的单词(Paragraph Vector)。

    我们没有训练一个模型来重建输入句子或其邻居的表面形式,而是采取了以下方法:使用当前句子的含义来预测相邻句子的含义,其中含义由encoding 函数计算出的 sentence embedding 来表示。尽管这种建模方法很简单,但我们表明,它有利于学习丰富的 representation 。 我们的方法如下图 (b) 所示。给定一个输入的句子,它像以前一样用一些函数进行编码。但模型不是生成目标句子,而是从一组候选句子中选择正确的目标句子。将 generation 视为从所有可能的句子中选择一个句子,这可以被看作是对generation problem 的一种 discriminative approximation 。这两种方法的一个关键区别是:在图 (b) 中,模型可以选择忽略句子中与构建 semantic embedding space 无关的方面。

    (a) 是生成式,图 (b) 是判别式。

  2. 正式地,令 f()g() 为待学习的函数,它们分别将句子编码为一个固定维度的向量。令 s 为一个给定的句子,Sctxt 为训练数据中出现在 s 的上下文中的句子集合(对于特定的context size)。令 Scand 为给定上下文句子 sctxtSctxt 所考虑的候选句子集合。换句话说, Scand 包含一个有效的上下文句子sctxtground truth )和许多其他非上下文句子从而用于分类。

    对于 s 的上下文中的一个给定的 sentence position(如,next sentence),一个候选句子 sctxtSctxt 是该位置的正确句子(即出现在 s 的上下文中)的概率为:

    (22)p(scands,Scand)=exp[c(f(s),g(scand))]sScandexp[c(f(s),g(s))]

    其中:c(,) 为一个评分函数(也叫做分类器)。

    training objective 是使训练数据 D 中每个句子识别正确上下文句子的概率最大化:

    (23)sDsctxtSctxtlogp(sctxts,Scand)

    该建模方法类似于 SkipGram 方法,区别在于在 SkipGram 方法中word 扮演了 sentence 的角色。在 SkipGram 中,encoding 函数是简单的 lookup tabletraining objective 是在给定一组负样本的情况下,最大化 source wordtarget word (位于 source word 上下文中)之间的相似度。

    我们选择同一个 mini-batch 中的所有 sentence 作为 Scand

  3. 另一种候选的 training objective 为:类似于 SkipGram 的负采样方法,我们使用二分类器的形式,将一组句子作为输入,并将它们分类为可信的和不可信的。然而我们发现前者的 objective 效果更好,可能是由于它施加了宽松的约束:它不要求将上下文句子分为正/负两类,而只要求 ground-truth contextcontrastive context 更可信。根据经验,前者的 objective 也比最大边际损失表现得更好。

  4. 在我们的实验中,c(,) 被简单地定义为内积 c(u,v)=uv。这是因为考虑到病态解,即模型学习了糟糕的 sentence encoder 和优秀的分类器(从而弥补编码器)。这是不可取的,因为分类器将被丢弃,只有句子编码器将被用来为下游任务提取特征。尽量减少分类器中的参数数量,鼓励编码器学习有用的 representation

    我们考虑 f()g() 具有不同的参数,尽管它们都是对句子进行编码。一个动机是使用不同的 input parameteroutput parameter 来学习 word representation 。由于这些模型是在大型语料库中训练的,因此参数共享不是一个重要的问题。在测试期间,对于一个给定的句子 s ,我们认为它的 representation 是两个编码器的输出的拼接 [f(s),g(s)]

    我们的框架允许使用灵活的编码函数。我们使用 RNN 作为 f()g() ,因为它们在最近的 sentence representation learning 方法中被广泛使用。句子的单词被依次馈入到 RNN ,最后的 hidden state 被解释为句子的representation 。我们使用GRU 作为 RNN 单元。

6.2 实验

略。(技术过于古老,不用花时间研究实验细节)。