十七、PTE

  1. 传统的词袋模型bag-of-word:BOW 忽略了不同单词之间的语义相关性,因此存在诸如数据稀疏性sparsity 、一词多义polysemy、同义词synonymy 之类的问题。单词的分布式 representation 通过在低维空间中嵌入单词来有效缓解该问题。

    单词的embedding 有两种方式:

    • 基于无监督学习的文本 embedding 通用性更强,可应用于各种类型的任务中。典型的无监督文本 embedding 方法包括 SkipGramParagraph Vector 等。
    • 基于监督学习的文本 embedding 效果更好,因为它可以充分利用task-specific 的标记信息。典型的监督学习方法有 CNN 神经网络。

    无监督文本 embedding 方法具有很多优点:

    • 首先,深度神经网络,尤其是 CNN,在训练中需要大量的计算。
    • 其次,CNN 网络通常需要大量的标记数据,而这在很多任务中是不现实的。
    • 最后,CNN 的训练需要对很多超参数进行调优,这对专家而言非常耗时、对非专家而言甚至不可行。

    但是和监督学习相比,无监督文本 embedding 方法在 task-specific 上的预测效果较差。原因是这些文本 embedding 在学习文本embedding 过程中没有利用任务中的任何标记信息。

  2. 论文 《PTE:Predictive Text Embedding through Large-scale Heterogeneous Text Networks》 提出了 Predictive Text Embedding:PTE 方法,它同时具有无监督文本 embedding 计算量小、标记数据需求低、无需复杂调参的优点,同时也利用了task-specific 标记信息。

    PTE 是一种半监督学习方法,它可以从有限的标记数据和大量的未标记数据中共同学习单词的有效低维 representation

  3. PTE 首先通过 word-wordword-docword-label 不同level 级别的共现构建一个大规模的异质文本网络 Heterogeneous Text Network ,然后将该异质网络嵌入到低维向量空间。PTE 通过在低维向量空间中保持顶点之间的二阶邻近度来学习顶点的 embedding

    这种低维 embedding 不仅保留了单词和文档之间的语义关系,还对task-specific 具有很好的预测能力。

    一旦学到单词的 embedding,我们可以将句子/文档中单词 embedding 的均值作为句子/文档的 embedding

    我们在真实语料库上进行广泛实验,结果表明:

    • 在各种文本分类任务中,PTE 的文本 embedding 都远远优于最新的无监督 embedding 方法
    • 在和 CNN 的对比中,PTE 在长文本上效果更好、在短文本上效果和 CNN 相差无几。但是 PTE 计算效率更高、可以有效应用大规模未标记数据,并且对模型的超参数敏感性较低。
  4. 监督学习方法和无监督学习方法的主要区别在于如何在学习阶段利用标记信息和未标记信息。在 representation learning 阶段:

    • 无监督学习不包含任何标记信息,仅在学到数据的representation 之后,才使用标记信息来训练下游的分类器。

    • 监督学习直接在学习过程中使用标记信息。

      另外,监督学习也可以间接地使用未标记数据:通过无监督方法来预训练单词的 embedding

    和这两种方式相比,PTE 通过半监督方法来学习文本 embedding :在学习阶段直接利用少量的标记数据和大量的未标记数据。

  5. DeepWalkLINE 均为无监督学习方法,它们只能处理同质网络。PTE 扩展了 LINE 方法从而能够处理异质网络,并且能够融合监督信息。

17.1 模型

  1. PTE 的基本思想是:在学习文本 embedding 时同时考虑标记数据和未标记数据。为了达到该目的,我们采用统一的表达形式来对这两种类型的数据进行编码。

    为此,我们提出了三种不同类型的网络,它们分别捕获了不同级别 level 的单词共现信息 :

    • word-word 共现网络: 网络 十七、PTE - 图1 ,其中 十七、PTE - 图2 为词表集合,十七、PTE - 图3 为单词之间的边的集合。定义单词 十七、PTE - 图4 之间的权重 十七、PTE - 图5 为:给定窗口大小的上下文窗口中,单词 十七、PTE - 图6十七、PTE - 图7 之间的共现次数。

      十七、PTE - 图8 捕获了局部上下文中单词的共现信息,即word 级别的信息。

    • word-doc 共现网络:网络 十七、PTE - 图9 ,其中 十七、PTE - 图10 为文档集合,十七、PTE - 图11 为单词和文档之间的链接。定义单词文档 十七、PTE - 图12 之间的权重 十七、PTE - 图13 为:单词 十七、PTE - 图14 出现在文档 十七、PTE - 图15 中的次数。

      十七、PTE - 图16 是一个二部图,它捕获了文档中单词的共现的信息,即 doc 级别的信息。

    • word-label 共现网络:网络 十七、PTE - 图17 ,其中 十七、PTE - 图18 为标签集合, 十七、PTE - 图19 为单词和标签之间的链接。定义单词标签 十七、PTE - 图20 之间的权重 十七、PTE - 图21 为:单词 十七、PTE - 图22 出现在类别为 十七、PTE - 图23 的所有文档中的总次数。

      十七、PTE - 图24 也是一个二部图,它捕获了相同标签中单词的共现信息,即 label 级别的信息。

    定义异质文本网络 Heterogeneous Text Network十七、PTE - 图25 的组合,它们捕获了不同级别的单词共现,并且同时包含了标记信息和未标记信息。

  2. 异质文本网络也可以泛化为:集成不同level 信息的网络,如word-word 网络、 word-sentence 网络、word-paragraph 网络、word-doc 网络、doc-label 网络、word-label 网络等。但是论文中我们仅以三种典型的网络为例。并且,我们重点关注word 网络,以便将 word 嵌入到低维空间中。然后我们可以通过聚合wordembedding 来计算其它文本单元(如 sentence,paragraph,doc )的表示。

  3. 给定大量为标记数据和部分已标记数据的文本数据, Predictive Text Embedding:PTE 问题的目标是:通过将数据集合构成的异质文本网络嵌入到低维向量空间中,从而学习单词的低维表示。

    由于异质文本网络由三个二部图组成,因此我们首先介绍单个二部图的 embedding 方法。我们复用 LINE 模型来学习二部图的 embedding ,基本思想是:假设具有相似领居的顶点彼此相似,因此它们在低维空间中应该 embed 在一起。

    给定一个二部图 十七、PTE - 图26 ,其中 十七、PTE - 图27十七、PTE - 图28 是两组不同顶点类型、且不相交的顶点集合, 十七、PTE - 图29 为二部图的边。

    令顶点 十七、PTE - 图30embedding十七、PTE - 图31 ,定义给定 十七、PTE - 图32 的条件下生成顶点 十七、PTE - 图33 的概率为:

    十七、PTE - 图34

    对于每个顶点 十七、PTE - 图35 ,我们定义了一个条件概率分布 十七、PTE - 图36 ,这个条件概率分布的经验分布函数为:

    十七、PTE - 图37

    其中十七、PTE - 图38 为顶点 十七、PTE - 图39 的度。

    为了在低维空间中保留二阶邻近度,我们最小化目标函数:

    十七、PTE - 图40

    其中 十七、PTE - 图41 为两个分布之间的距离函数,通常选择为 KL 散度; 十七、PTE - 图42 为顶点 十七、PTE - 图43 在网络中的重要性,通常选择为顶点 十七、PTE - 图44degree

    如果忽略常数项,则我们得到目标函数:

    十七、PTE - 图45

    我们可以采用带边采样edge sampling 和负采样 nagative sampling 的随机梯度下降法来求解该最优化问题。在梯度下降的每一步:

    • 首先以正比于权重 十七、PTE - 图46 的概率随机采样一条二元边 binary edge 十七、PTE - 图47 ,即 edge sampling
    • 然后通过noise distribution 十七、PTE - 图48 来随机采样若干条负边,即 nagative sampling
  4. word-word 网络、word-doc 网络、word-label 网络都可以使用上述目标函数来优化学习。事实上对于 word-word 网络我们可以将无向边视为两条有向边,十七、PTE - 图49 定义为有向边的源点、十七、PTE - 图50 定义为有向边的重点,则word-word 网络就成为一个二部图。

    因此,异质文本网络由三个二部图组成,其中单词顶点在这三个网络之间共享。要学习异质文本网络的 embedding,最直观的方法是将三个二部图共享单词 embedding

    十七、PTE - 图51

    其中 十七、PTE - 图52 为相应的条件概率, 十七、PTE - 图53 为相应的边权重。

    该目标函数可以通过不同的方式优化,这取决于如何利用标记信息,即 word-label 网络。

    • 一种方法是同时使用标记信息和未标记信息,我们称之为联合训练。

      在联合训练过程中,我们同时训练三种不同类型的网络。在梯度更新过程中,我们轮流从三种类型的边中交替采样,从而更新模型。

    • 另一种方法是:先从未标记信息中无监督学习word embedding,然后在 word-label 中利用预训练的 embedding 对网络进行微调 fine-tuning 。该方法是受到深度学习中预训练pretrain 和微调 fine-tuning 思想的启发。

  5. PTE 联合训练算法:

    • 输入:

      • 异质文本网络 十七、PTE - 图54
      • 迭代次数 十七、PTE - 图55 (也称作采样次数,或训练样本数量)
      • 负采样数 十七、PTE - 图56
    • 输出:所有单词的 embedding 十七、PTE - 图57

    • 算法步骤:

      循环迭代,直到迭代了 十七、PTE - 图58step 。迭代过程为:

      • 十七、PTE - 图59 采样一条正边和 十七、PTE - 图60 个负边,更新单词 embedding
      • 十七、PTE - 图61 采样一条正边和 十七、PTE - 图62 个负边,更新单词 embeddingdoc embedding
      • 十七、PTE - 图63 采样一条正边和 十七、PTE - 图64 个负边,更新单词 embeddinglabel embedding
  6. PTE 预训练和微调算法:

    • 输入:

      • 异质文本网络 十七、PTE - 图65
      • 迭代次数 十七、PTE - 图66 (也称作采样次数,或训练样本数量)
      • 负采样数 十七、PTE - 图67
    • 输出:所有单词的 embedding 十七、PTE - 图68

    • 算法步骤:

      预训练阶段:循环迭代,直到迭代了 十七、PTE - 图69step 。迭代过程为:

      • 十七、PTE - 图70 采样一条正边和 十七、PTE - 图71 个负边,更新单词 embedding
      • 十七、PTE - 图72 采样一条正边和 十七、PTE - 图73 个负边,更新单词 embeddingdocument embedding

      微调阶段:循环迭代,直到迭代了 十七、PTE - 图74step 。迭代过程为:

      • 十七、PTE - 图75 采样一条正边和 十七、PTE - 图76 个负边,更新单词 embeddinglabel embedding

17.2 实验

  1. 数据集:我们选择了长文本、短文本两种类型的数据集:

    • 长文本数据集:

      • 20newsgroup 数据集:广泛使用的文本分类数据集,包含 20 个类别。

      • wiki 数据集:20104 月的维基百科数据集,包含大约 200 万篇英文文章。

        我们仅保留 2010 年维基百科中出现的常见词汇。我们选择了七种不同类别,包括 Art, History, Human, Mathematics, Nature, Technology, Sports 。每种类别我们随机选择 9000 篇文章作为带标签的文档来训练。

      • Imdb 数据集:一个情感分类数据集。为避免训练数据和测试数据之间的分布偏差,我们随机混洗了训练数据和测试数据。

      • RCV1 数据集:一个大型文本分类基准语料库。我们从数据集中抽取了四个子集,包括 Corporate, Economics, Government and Market 。在 RCV1 数据集中,文档已经被处理为 BOW 的格式,因此单词的顺序已经被丢失。

    • 短文本数据集:

      • DBLP 数据集:包含来自计算机科学领域论文的标题。我们选择了六个方向的论文,包括 database,arti cial intelligence, hardware, system,programming languages, theory 等。对于每个方向,我们选择该方向具有代表性的会议并收集该会议中发表的论文作为带标签的文档。
      • MR 数据集:一个电影评论数据集,每条评论仅包含一句话。
      • Twitter 数据集:用于情感分类的 Tweet 语料库,我们从中随机抽取了 120Tweets 然后拆分为训练集和测试集。

    我们并没有在原始数据上执行进一步的文本归一化,如删除停用词或者词干化。下表给出了数据集的详细统计信息。

    十七、PTE - 图77

  2. 对比模型:

    • BOW:经典的 BOW 方法。每篇文档使用一个 十七、PTE - 图78 维的向量来表达,向量第 十七、PTE - 图79 个元素为单词 十七、PTE - 图80TFIDF 值。

    • SkipGram:根据 SkipGram 训练得到单词的 embedding,然后我们使用单词embedding 的均值来作为文档的 embedding

    • PVDBOW:一种 paragraph embedding 版本,其中文档内单词的顺序被忽略。

    • PVDM :另一种paragraph embedding 版本,其中文档内单词的顺序被考虑。

    • LINE:我们使用 LINE 模型分别学习 word-word 网络和 word-doc 网络,分别记作 十七、PTE - 图81。另外,我们也考虑联合学习 word-word 网络和 word-doc 网络,记作 十七、PTE - 图82

    • CNN:基于 CNN 模型来监督学习文本 embedding。尽管原始论文用于建模句子,我们这里将其改编为适用于长文本在内的一般单词序列。

      CNN 也可以通过预训练无监督单词的embedding 从而利用未标记数据。

    • PTEPTE 有多种变体,它们使用 word-wordword-docword-label 的不同组合。

      • 十七、PTE - 图83 为仅使用 word-label 的版本
      • 十七、PTE - 图84 为使用 word-wordword-label 的版本
      • 十七、PTE - 图85 为仅使用 word-docword-label 的版本
      • 十七、PTE - 图86 为使用 word-wordword-doc 进行无监督训练,然后使用 word-label 来微调的版本
      • PTE(joint) 为联合训练异质文本网络的版本
  3. 实验配置:

    • SkipGram,PVDBOW,PVDM,PTE,PTE 模型:

      • 随机梯度下降的 mini-batch size 设为 1
      • 学习率设为 十七、PTE - 图87 ,其中 T 为总的迭代步数,十七、PTE - 图88
      • 负采样次数为 K=5
    • SkipGram, PVDBOW,PVDM,PTE 模型:共现窗口大小为 5

    • CNN 模型:我们使用 《Convolutional neural networks for sentence classi cation》 中的 CNN 结构。该结构使用一个卷积层,然后是最大池化层和全连接层。

      • 卷积层的窗口大小设为 3
      • feature map 数量设为 100
      • 随机选择训练集的 1% 作为验证集来执行早停
    • 所有embedding 模型的词向量维度为 100
  4. 评估方式:我们首先学习文档的 embedding,然后对不同的模型使用相同的训练数据和测试数据来执行分类任务。

    训练集中的所有文档都在representation learning 阶段和分类学习阶段使用。

    • 如果使用无监督 embedding 方法,则在 representation learning 阶段不使用这些文档的类别标签,这些类别标签仅在分类学习阶段才使用。
    • 如果使用predictive embedding 方法,则在representation learning 阶段和分类学习阶段都使用文档的类别标签。

    测试集中的所有文档在 representation learning 阶段和分类评估阶段使用。注意:在 representation learning阶段保留所有测试数据的标签,即这一阶段模型看不到测试数据的标签。

    在分类阶段我们使用 LibLinear 软件包的 one-vs-rest 逻辑回归模型。最终我们通过分类的 micro-F1macro-F1 指标来衡量模型效果。

    每一种配置我们都执行十次,并报告指标的均值和方差。

17.2.1 实验结果

  1. 我们在 20NG,Wiki,IMDB 数据集上的长文本效果对比如下。

    首先我们比较无监督文本 embedding 方法,可以看到:

    • 十七、PTE - 图89 的效果最好
    • PVDM 性能不如 PVDBOW,这和原始论文中的结论不同。不幸的是我们始终无法得出他们的结论。

    然后我们比较 predictive embedding 方法,可以看到:

    • 十七、PTE - 图90 或者PTE(joint) 效果最好。

    • 所有带 word-label 网络PTE 方法都超越了对应的无监督方法(即 LINE 模型),这表明了在监督学习下 PTE 的强大能力。

    • PTE(joint) 超越了 十七、PTE - 图91 ,这表明了使用未标记数据可以显著改善监督学习的质量。

    • PTE(joint) 也超越了PTE(pretrain),这表明联合训练未标记数据和标记数据,要比将它们分别独立训练更有效。

    • PTE(joint) 始终优于 CNN 模型。

      另外我们通过 十七、PTE - 图92 学到的单词 embedding 来对 CNN进行预训练,然后使用 label 信息对其进行微调。出乎意料的是:预训练 CNN20NGIMDB 数据集上显著提高,并且在 Wiki 上几乎保持不变。这意味着训练良好的无监督 embeddingCNN 预训练非常有用。

      但是,即使是预训练的 CNN,其性能仍然不如 PTE(joint) 。这可能的因为 PTE 模型可以联合训练未标记数据和已标记数据,而 CNN 只能通过预训练和微调两阶段来各自独立的使用它们。

    • PTE(joint) 也始终优于经典的 BOW 模型,经管 PTE(joint)embedding 向量维度远小于 BOW 的向量维度。

    十七、PTE - 图93

  2. 我们在 RCV1 数据集上的长文本效果对比如下。由于单词之间的顺序丢失,因此要求保留单词顺序信息的 embedding 方法不适用。这里我们观察到了类似的结论:

    • predictive embedding 方法超越了无监督 embedding
    • PTE(joint) 方法比 PTE(pretrain) 方法更有效。

    十七、PTE - 图94

  3. 我们比较了 CNNPTE(joint)IMDB 数据集上的训练实践。我们采用异步随机梯度下降算法,在 1T 内存、2.0G HZ40CPU 上执行。平均而言 PTE(joint) 要比 CNN10 倍以上。

    在使用 pretrain 时,CNN 虽然训练速度加快,但是仍然比 PTE(joint) 慢 5倍以上。

  4. 我们在短文本上比较了模型性能如下。

    首先我们比较无监督文本 embedding 方法,可以看到:

    • 十七、PTE - 图95 效果最好。

    • 使用局部上下文级别单词共现的 十七、PTE - 图96 要优于使用文档级别单词共现的 十七、PTE - 图97 。这和长文本实验中结论相反。

      这是因为在短文本中,文档级别的单词共现非常稀疏。我们在主题模型中也观察到了类似的结果。

    • PVDM 性能仍然不如 PVDBOW 性能,这和长文本中结论一致。

    然后我们比较 predictive embedding 方法,可以看到:

    • PTEDBLP,MR 数据集上性能最佳,CNNTwitter 数据集上性能最好。

    • 融合了word-label 网络的 PTE 方法超越了对应的无监督embedding 方法(即 LINE 模型),这和长文本中结论一致。

    • PTE(joint) 超越了 十七、PTE - 图98 ,这证明了融合未标记数据的有效性。

    • PTE(joint) 超越了 PTE(pretrain),这证明了对标记数据和未标记数据联合训练的优势。

    • 我们观察到 PTE(joint) 并不能始终超越 CNN。原因是单词歧义 ambiguity 问题,这类问题在短文本中更为严重。

      CNN 通过在卷积核中使用局部上下文的单词顺序来减少单词歧义问题,而 PTE 抛弃了单词顺序。我们认为:如果利用了单词顺序,则 PTE 还有很大提升空间。

    十七、PTE - 图99

17.2.2 标记数据 & 未标记数据

  1. 我们考察标记样本规模的变化对 CNNPTE 的影响。我们考虑两种模式:

    • 监督学习:不包含未标记数据。如 十七、PTE - 图100CNN
    • 半监督学习:包含未标记数据。如 PTE(joint)CNN 等。

    在半监督学习中,我们还比较了讲点的半监督方法:带 EM 的朴素贝叶斯NB+EM、标签传播算法 label propagation:LP

    可以看到:

    • CNNPTE 随着标记数据规模的增加,性能持续改善。
    • 在监督学习的 CNN十七、PTE - 图101 之间,十七、PTE - 图102 均优于CNN 或可与 CNN 媲美。
    • 在半监督学习的 CNN(pretrain)PTE(joint) 之间,PTE(joint) 始终优于 CNN(pretrain)
    • PTE(joint) 还始终优于经典的 NB+EMLP 方法。

    另外我们还注意到:

    • 当标记数据规模不足时,使用无监督 embeddingCNN 预训练非常有效,尤其是在短文本上。
    • 当标记数据规模增加时,对 CNN 的预训练并不总是能够改善其性能,如 DBLPMR 数据集。
    • 对于 SkipGram 模型,增加标记数据规模几乎不会进一步改善其性能。
    • DBLP 数据集上,当标记样本太少时 PTE 性能甚至不如 SkipGram 。原因是当标记数据太少时,word-label 网络的噪音太多。PTEword-label 网络与噪音较少的 word-word, word-doc 网络同等对待。一种解决办法是:在标签数据不足时,调整 word-label, word-word,word-doc 网络的采样概率。

    十七、PTE - 图103

  2. 我们考察未标记样本规模的变化对 CNN(pretrain)PTE 的影响。由于篇幅有限,这里我们仅给出 20NGDBLP 数据集的效果。

    20NG 数据集上,我们使用 10% 文档作为标记数据,剩余文档作为未标记数据;在 DBLP 数据集上,我们随机抽取其它会议发表的 20 万篇论文的标题作为未标记数据。

    我们使用 十七、PTE - 图104 作为 CNN 的预训练模型。可以看到:

    • 当未标记数据规模增加时,CNNPTE 性能都有改善。
    • 对于 PTE 模型,未标记数据和标记数据联合训练的效果要优于单独训练。

    十七、PTE - 图105

17.2.3 参数敏感性与可视化

  1. PTE 模型除了训练步数 T 之外,大多数超参数对于不同训练集都是不敏感的(如学习率、batch size ),所以可以使用默认配置。

    我们在 20NGDBLP 数据集上考察了 PTE(joint) 对于参数 T 的敏感性。可以看到:当 T 足够大时,PTE(joint) 性能会收敛。

    实际应用中,我们可以将 T 的数量设置称足够大。经验表明:T 的合理范围是异质文本网络中所有边的数量的几倍。

    十七、PTE - 图106

  2. 我们给出了无监督 embedding (以 十七、PTE - 图107 为代表)和 predictive embedding (以 十七、PTE - 图108 为代表)在 20NG 数据集上采用 tSNE 可视化的结果。

    我们对训练集和测试集的文档均进行了可视化,其中文档的 embedding 为文档内所有单词的平均 embedding。可以看到:在训练集和测试集上,predictive embedding 均比无监督 embedding 更好地区分了不同的类别。这直观表明了 predictive embedding 在文本分类任务中的效果。

    十七、PTE - 图109

17.2.4 讨论

  1. 无监督 embedding 使用的基本信息是局部上下文级别或者文档级别的单词共现。

    • 在长文本中,我们可以看到文档级别的单词共现比局部上下文级别的单词共现效果更好,并且二者的结合并不能进一步改善效果。

    • 在短文本中,局部上下文级别的单词共现比文档级别的单词共现效果更好,并且二者的结合可以进一步改善效果。

      这是因为文档级别的单词共现受到文本长度太短的困扰,即文本太稀疏。

  2. predictive embedding 中:

    • PTE 相比, CNN 模型可以更有效地处理标记信息,尤其是在短文本上。这是因为 CNN 的模型结构比 PTE 复杂得多,尤其时 CNN 可以在局部上下文中利用词序从而解决单词的歧义问题。

      因此,在标记数据非常稀疏的情况下,CNN 可以超越 PTE,尤其是在短文本上。但是这个优势是以大量的计算、详尽的超参数优化为代价的。

    • CNN 相比,PTE 训练速度更快、超参数调整更容易(几乎没有需要调整的超参数)。当标记数据更为丰富时,PTE 的性能至少和 CNN 一样好甚至更好。

      PTE 模型的一个明显优势是它可以联合训练标记数据和未标记数据。相比之下 CNN 只能通过预训练来间接利用未标记数据。当标记数据非常丰富时,这种预训练并不总是有帮助的。

  3. 实践指南:

    • 当没有标记数据时:

      • 在长文本上使用 十七、PTE - 图110 来学习无监督文本 embedding
      • 在短文本上使用 十七、PTE - 图111 来学习无监督文本 embedding
    • 当只有少量标记数据时:

      • 在长文本上使用 PTE 来学习文本 embedding
      • 在短文本上使用 CNN(pretrain) ,其中预训练采用 十七、PTE - 图112
    • 当有大量标记数据时:

      • 在长文本上使用 PTE(joint) 来学习文本 embedding
      • 在短文本上从 PTE(joint)CNN 或者 CNN(pretrain) 三者之间选择,其中主要考虑训练效率和模型效果之间的平衡