返回介绍

数学基础

统计学习

深度学习

工具

Scala

六、QuickThoughts [2018]

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

  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()$ f(\cdot) $ 和g()$ g(\cdot) $ 为待学习的函数,它们分别将句子编码为一个固定维度的向量。令s$ \mathbf s $ 为一个给定的句子,Sctxt$ \mathcal S_\text{ctxt} $ 为训练数据中出现在s$ \mathbf s $ 的上下文中的句子集合(对于特定的context size)。令Scand$ \mathcal S_\text{cand} $ 为给定上下文句子sctxtSctxt$ \mathbf s_\text{ctxt} \in \mathcal S_\text{ctxt} $ 所考虑的候选句子集合。换句话说,Scand$ \mathcal S_\text{cand} $ 包含一个有效的上下文句子sctxt$ \mathbf s_\text{ctxt} $ (ground truth )和许多其他非上下文句子从而用于分类。

    对于s$ \mathbf s $ 的上下文中的一个给定的 sentence position(如,next sentence),一个候选句子sctxtSctxt$ \mathbf s_\text{ctxt} \in \mathcal S_\text{ctxt} $ 是该位置的正确句子(即出现在s$ \mathbf s $ 的上下文中)的概率为:

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

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

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

    (23)sDsctxtSctxtlogp(sctxts,Scand)

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

    我们选择同一个 mini-batch 中的所有 sentence 作为Scand$ \mathcal S_\text{cand} $ 。

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

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

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

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

6.2 实验

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

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

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

发布评论

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