返回介绍

数学基础

统计学习

深度学习

工具

Scala

一、Paragraph Vector [2014]

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

  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|$ \mathbf W\in \mathbb R^{d\times |\mathcal V| } $ 中的一列来表示,其中d$ d $ 为 emebdding sizeV$ \mathcal V $ 为 vocabularyW$ \mathbf W $ 的列是以单词在 vocabulary 中的位置为索引的。然后,上下文中所有单词的 word vector 的拼接或sum,用于预测句子中下一个词。

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

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

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

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

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

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

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

    其中:ui$ \mathbf {\vec u}_i $ 和bi$ b_i $ 为 softmax 参数;h()$ h(\cdot) $ 是从W$ \mathbf 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|$ \mathbf D\in \mathbb R^{d\times |\mathcal P|} $ 中的一列来表示),每个单词也被映射到一个 unique vector (由矩阵WRd×|V|$ \mathbf W \in \mathbb R^{d\times |\mathcal V|} $ 中的一列来表示)。其中,d$ d $ 为 embedding 维度,D$ \mathcal D $ 为 paragraph 集合,V$ \mathcal V $ 为 vocabulary 。在实验中,我们拼接这些向量。

    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 相比,这个模型的唯一变化是通过W$ \mathbf W $ 和D$ \mathbf D $ 来构建h()$ h(\cdot) $ :

    (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$ \mathbf W $ 是跨段落共享的。也就是说,"powerful"vector representation 在所有段落中是相同的。

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

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

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

    • 在训练数据集上训练 word vectorW$ \mathbf W $ 、softmax 权重{ui}i=1|V|$ \left\{\mathbf{\vec u}_i \right\}_{i=1}^{|\mathcal V|} $ 、softmax bias{bi}i=1|V|$ \left\{ b_i\right\}_{i=1}^{|\mathcal V|} $ 、paragraph vectorD$ \mathbf D $ 。

    • 在推断时,通过在D$ \mathbf D $ 中增加更多的列,并在保持{W,{ui}i=1|V|}$ \left\{\mathbf W, \left\{\mathbf{\vec u}_i \right\}_{i=1}^{|\mathcal V|}\right\} $ 不变的情况下对D$ \mathbf 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|$ \left\{\mathbf{\vec u}_i,b_i\right\}_{i=1}^{|\mathcal V|} $ ,而不是之前模型中的 softmax 参数和 word vector 。这个模型也类似于 word vector 中的 Skip-gram 模型。

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

1.2 实验

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

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

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

发布评论

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