NeurIPS 2021 神经主题模型的对比学习 Contrastive Learning for Neural Topic Model

简介

以往的对比主题模型虽然能通过区别文章和与其不相似的生成文章来很好地捕获文章的语义,但也存在两个问题,其一是这种判别生成结构不涉及到相似的生成文章,相似的文章往往也有相同的文档-关键词分布。其二是其限制了模型整合外部信息的能力,例如文章的情感,已有证明这个信息对神经主题模型的训练是有利的。为了解决这两个问题,文章中提出了一种将判别目标重新表述为优化问题的新方法,并且设计了一种新的采样方法以助于整合外部变量。第一个问题的解决方法能将相似样本中的联系进行合并,并对不相似样本中的相似性强制地施加约束。第二个问题的解决方法能够使得模型更容易提取出包含对主题有重要贡献的单词的主题。

对抗主题模型(ATM)采用生成器和判别器相结合的对抗性机制。通过寻求生成器和判别器之间的平衡,生成器能够学习文档的有意义的语义模式。然而,这种模型有两个限制。第一点,ATM依赖于利用真实分布与假(负)分布的区别来指导培训,因为从假分布中进行采样不依赖于真实分布,生成器几乎不会产生正样本,极大地保存了真实样本的语义信息。但这样就限制了正样本与真实样本相互信息的行为,这个相互信息被证明是在无监督学习中学习有用表征的关键驱动因素。第二点,ATM从先验分布中随机抽取样本给生成器。先前的研究表明,结合元数据或情感等附加变量来估计主题分布有助于一致主题的学习,ATM依赖于预先定义的先验分布,有碍于融合这些变量。

为了解决以上的问题,文章提出了一种全新的方法用于对样本间的关系进行建模,特别是,文章中将目标函数表述为一个优化问题,旨在使输入(或原型)的表示更接近共享语义内容的表示,即正样本,文章也考虑了负样本和原型之间的关系,通过施加一个辅助的约束去迫使模型将负样本的表示推得离原型更远。文章中的数学框架以一个对比目标结束,该目标将于神经主题模型的证据下界共同优化。

现在需要考虑另外一个问题,如何在神经主题模型的框架下高效生成正样本和负样本,文章引入了一种新的采样方法,该方法模仿人类抓住一对文档相似性的方式,基于以下假设:

假设1:原型和正样本的共同主题可以通过其显著词的相对频率来实现

假设认为人们之所以会分辨原型和正样本的相似性,是因为原型中的显著词的出现频率与正样本中的对应词成正比,在另一方面,原型与负样本的可以通过是否有显著词,尽管都包含了相同的单词,但这些单词不是显著的,即出现频率不高。

文章的贡献可以总结如下:

文章的目标是通过从新的数学角度建模样本之间的关系来捕获有意义的表示并提出了一种与神经主题模型证据下界联合优化的对比目标。利用原型及其正样本之间的相互信息为构建一致的主题提供了坚实的基础。

基于人类区分不同文章的行为提出了一种采样的策略。通过重构输出,使采样适应模型的学习过程,产生比其他采样策略信息量最大的样本。

模型方法
符号以及问题的设置

这篇文章的首要任务是优化神经主题模型(NTM),优化的指标通过主题一致性来度量。假设词汇表有V个独立的单词,而每篇文章可以表示为这些单词的计数向量x\in R^V以及T个主题上的潜在分布,z\in R^T,NTM假设向量z由先验分布p(z)产生,而向量x由解码器\phi产生的条件分布p_\phi(x|z)生成,模型的目标是在给定文章单词计数向量的条件下给出这篇文章的主题分布。换而言之,模型必须借助编码器\theta建模的变分分布q_\theta(z|x)去近似后验概率分布p(z|x),模型需要优化的目标函数如下

L_{VAE}(x)=-E_{q_{\theta}(z|x)}[\log{p_\phi(x|z)}]+KL[q_{\theta}(z|x)||p(z)]

对比目标的推导

假设\chi = \{x\}是整个文档集词袋向量的符号表示,每个词袋向量x有一个负样本x^-和正样本x^+,假设存在一个潜在类C的离散集合,使得(x,x^+)有相同的类,而(x,x^-)没有,在这个推导中,使用语义点积的形式来度量原型x和抽取的样本之间的相似性,

目标是学习一个编码器\theta的映射函数f_\theta:R^V\rightarrow R^T,使得输入x转换为潜在分布z,对应地,x^+x^-转换为z^+z^-。这个映射函数需要满足两条规则才是合理的,即(1)x^+x需要被映射到相同的位置。(2)x^-x映射到的位置则需要尽可能地远。将目标1视为主要的目标函数,而目标2视为约束,强制模型学习不同样本之间的关系,将其表述为受限优化问题

\underset{\theta}{max}E_{x\sim \chi }(z\cdot z^+)subject to E_{x\sim \chi }(z\cdot z^-)< \epsilon

\epsilon指约束强度。

将其重写为KKT条件下的拉格朗日量

F(\theta,x,x^+,x^-) =\underset{\theta}{max}E_{x\sim \chi }(z\cdot z^+) - \alpha [E_{x\sim \chi }(z\cdot z^-)- \epsilon]

其中,正KKT乘数α是控制负样本对训练的影响的正则化系数。

进一步可以推导出加权对比损失

\displaystyle F(\theta,x,x^+,x^-) \geq L_{cont}(\theta,x,x^+,x^-) = E_{x\sim \chi }[\log{\frac{exp(z\cdot z^+)}{exp(z\cdot z^+)+\beta \cdot exp(z\cdot z^-)}}]

其中\beta =exp( \alpha ),推导公式如下图所示

在文章中,利用不同的\beta值来指导模型对样本的关注度。因此,合理的β值将使得数据集中主题得到明确分离。

对负样本影响的控制

但选择\beta的值时,需要解决以下问题,(1)\beta对于模型训练过程有何影响。(2)如何设计一种数据驱动的方式去估计\beta

为了解决问题(1),我们考虑对比损失中\beta的影响,对比损失对潜在分布z的梯度为

\displaystyle \frac{\partial L_{cont}}{\partial z} = E_{x\sim \chi }\frac{(z^+-z^-)exp(z\cdot z^-)}{exp(z\cdot z^+)/\beta+ exp(z\cdot z^-)}

推导过程如下,

最终梯度的表示说明了梯度与\beta存在比例关系,因此在进行训练时,需要注意参数更新,以避免在最小值附近跳跃或陷入局部最优。

为了解决问题(2),文中利用自适应方法构建了一个基于数据的过程来估计\beta

基于单词的采样策略

首先,对于每一篇文章的单词计数向量\chi = \{x\},计算各自的tf-if值,得到x^{tfidf},接着将x通过神经主题模型,得到重构的文章表示x^{recon}

这个采样策略是基于文章中tf-idf值高的单词在文章的主题中占比也应该较高。

对于负样本,我们先选取tf-idf值高的前k个单词,记为N=\{n_1,n_2,......,n_k\},在原始输入向量x中找到这些单词的位置,并使用重构向量对应的值x^{recon}替代,从而得到负样本。这样得到的负样本能极大地偏离文本的主要内容。(然而随着训练的进行,重构向量越来越接近输入向量,但由于负样本控制因子β在收敛到最后的训练步骤时会衰减其值,故这并不会影响负样本偏离文本主要内容)。

对于正样本,我们先选取tf-idf值低的前k个单词,记为P=\{p_1,p_2,......,p_k\},在原始输入向量x中找到这些单词的位置,并使用重构向量对应的值x^{recon}替代,从而得到正样本。这样得到的正样本由于修改了不重要单词的值,从而保留了文章中的主要主题。

训练目标

最终的训练目标可以描述为重构原始输入,使得NTM的推断网络近似于后验概率分布,同时结合一个对比学习的目标,使得模型发现的主题更加一致。目标函数可以写为:

\displaystyle L(x,\theta,\phi) = -E_{q_{\theta}(z|x)}[\log{p_\phi(x|z)}]+KL[q_{\theta}(z|x)||p(z)]- E_{x\sim \chi }\frac{(z^+-z^-)exp(z\cdot z^-)}{exp(z\cdot z^+)/\beta+ exp(z\cdot z^-)}

整体的算法过程可以描述为

个人总结

这篇文章的目标是借助了对比学习框架去优化NTM学习到的主题分布和词分布,并将这个框架以多重输入(正样本和负样本都要通过推断网络得到隐向量z)的形式融合到NTM的训练过程中,并没有额外地引入其他模块,同时,构建正样本和负样本的方式基于人类对相似文章的认知,关键词出现的次数越多越相似,先抽选出原文的关键词,负样本中关键词占比较少,正样本中不关键的词占比较少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值