zoukankan      html  css  js  c++  java
  • 将句子表示为向量(下):基于监督学习的句子表示学习(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 _ { leftlangle x _ { 1 } , x _ { 2 } ight angle in X } max left( 0 , delta - cos left( g left( x _ { 1 } ight) , g left( x _ { 2 } ight) ight) + cos left( g left( x _ { 1 } ight) , g left( t _ { 1 } ight) ight) ight) ight. \ + max left( 0 , delta - cos left( g left( x _ { 1 } ight) , g left( x _ { 2 } ight) ight) + cos left( g left( x _ { 2 } ight) , g left( t _ { 2 } ight) ight) ight) igg) \ + lambda _ { c } left| W _ { c } ight| ^ { 2 } + lambda _ { w } left| W _ { w _ { i n i t i a l } } - W _ { w } ight| ^ { 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理解任务,涉及推理句子间的语义关系。模型整体架构如下:

    nli

    论文对比了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 } = anh left( W h _ { i } + b _ { w } ight) \ 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),如下图所示:

      inner-attn

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

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

      h_cnn

    论文实验表明: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为共享参数的句子编码器。

    multi-task

    论文对比了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
  • 相关阅读:
    优秀大整数
    洛谷—— P3908 异或之和
    洛谷—— P1869 愚蠢的组合数
    洛谷—— P1680 奇怪的分组
    洛谷—— P1609 最小回文数
    Something I like
    数学相关
    新博客测试中~
    P3369 【模板】普通平衡树
    2017 11.6 NOIP模拟赛
  • 原文地址:https://www.cnblogs.com/llhthinker/p/10341841.html
Copyright © 2011-2022 走看看