返回介绍

数学基础

统计学习

深度学习

工具

Scala

四、InferSent [2017]

发布于 2023-07-17 23:38:25 字数 36083 浏览 0 评论 0 收藏 0

  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 ,输出 premiseu$ u $ 和 hypothesisv$ v $ 的 representation (分别记做u,v$ \mathbf{\vec u}, \mathbf{\vec v} $ )。sentence vector 被生成之后,应用 3matching 方法来抽取u$ u $ 和v$ v $ 之间的关系:向量拼接(u,v)$ (\mathbf{\vec u}, \mathbf{\vec v}) $ 、逐元素乘法uv$ \mathbf{\vec u} * \mathbf{\vec v} $ 、逐元素差值的绝对值|uv|$ |\mathbf{\vec u} - \mathbf{\vec v}| $ 。

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

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

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

    • LSTMGRU :我们的第一个,也是最简单的编码器应用了 LSTMGRU 模块的 RNN 。给定包含T$ T $ 个单词的句子,单词序列为(w1,,wT)$ (w_1,\cdots,w_T) $ ,网络计算T$ T $ 个 hidden representationh1,,hT$ \mathbf{\vec h}_1,\cdots,\mathbf{\vec h}_T $ ,其中ht=LSTMt(w1,,wT)$ \mathbf{\vec h}_t = \overrightarrow {\text{LSTM}}_t(w_1,\cdots,w_T) $ (或者 GRU )。句子通过最后一个 hidden vectorhT$ \mathbf{\vec h}_T $ 来表达。这里LSTM$ \overrightarrow {\text{LSTM}} $ 表示从左到右 GRU ,而LSTM$ \overleftarrow{\text{LSTM}} $ 表示从右到左 GRU

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

    • 带均值池化/最大池化的 BiLSTM :给定包含T$ T $ 个单词的句子,单词序列为(w1,,wT)$ (w_1,\cdots,w_T) $ ,BiLSTM 计算T$ T $ 个 hidden representationh1,,hT$ \mathbf{\vec h}_1,\cdots,\mathbf{\vec h}_T $ ,其中:

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

      我们尝试用均值池化、或最大池化将{ht}t=1T$ \left\{\mathbf{\vec h}_t \right\}_{t=1}^T $ 组合成一个固定尺寸的向量。下图所示为最大池化。

    • 自注意力网络:self-attentive sentence encoderBiLSTMhidden states 上使用注意力机制来生成 input sentencerepresentationu$ \mathbf{\vec u} $ 。注意力机制定义为:

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

      其中:

      • {h1,,hT}$ \left\{\mathbf{\vec h}_1,\cdots,\mathbf{\vec h}_T\right\} $ 为 BiLSTMoutput hidden vector{αi}$ \{\alpha_i\} $ 为注意力权重。

      • W,b$ \mathbf W, \mathbf{\vec b} $ 为待学习的线性投影函数的参数,uw$ \mathbf{\vec u}_w $ 为待学习的 context query vector

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

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

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

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

      final representationu=[u1,u2,u3,u4]$ \mathbf{\vec u} = \left[\mathbf{\vec u}_1, \mathbf{\vec u}_2, \mathbf{\vec u}_3, \mathbf{\vec u}_4\right] $ 将输入句子的不同 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. 略。(技术过于古老,不用花时间研究实验细节)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文