©PaperWeekly 原创 · 作者|苏剑林
单位|追一科技
研究方向|NLP、神经网络
最近,笔者入了一个新坑:基于离散优化的思想做一些文本生成任务。简单来说,就是把我们要生成文本的目标量化地写下来,构建一个分布,然后搜索这个分布的最大值点或者从这个分布中进行采样,这个过程通常不需要标签数据的训练。
由于语言是离散的,因此梯度下降之类的连续函数优化方法不可用,并且由于这个分布通常没有容易采样的形式,直接采样也不可行,因此需要一些特别设计的采样算法,比如拒绝采样(Rejection Sampling)、MCMC(Markov Chain Monte Carlo)、MH 采样(Metropolis-Hastings Sampling)、吉布斯采样(Gibbs Sampling),等等。
有些读者可能会觉得有些眼熟,似乎回到了让人头大的学习 LDA(Latent Dirichlet Allocation)的那些年?没错,上述采样算法其实也是理解 LDA 模型的必备基础。本文我们就来回顾这些形形色色的采样算法,它们将会出现在后面要介绍的丰富的文本生成应用中。
明确目标
很多时候,我们需要根据一些特定的信息 来生成目标文本 ,用数学的话说就是条件语言模型 ,不过我们无法得到足够多的语料对 去直接监督训练一个条件语言模型,而是只能训练一个无条件的语言模型 ,但我们又可以人为地设计一个指标来定量描述 和 之间的联系。
那么在这种情况下,如何根据无条件的语言模型 和 之间的联系来做有条件的文本生成,便成为了我们的研究对象。我们可以称之为“受限文本生成(Constrained Text Generation)”
举例来说,用关键词造句,那么 就是关键词的集合,我们可以定义示性函数:
继而定义:
保证了生成句子的流畅性, 保证了生成句子包含所要求的关键词,那么问题就可以变成最大化操作 或采样操作 。当然,这里的 还不是概率分布,要完成归一化后才是真正的概率分布:
但分母通常是难以显式计算出来的。那也就是说,我们对待采样分布也只了解到它正比于某个函数 ,而不知道精确的分布表达式。
类似的例子并不少,比如说文本摘要。什么是文本摘要呢?其实就是用更少的文字 尽可能表达出跟原文 一样的意思,这时候我们可以定义:
这里的 是某个文本相似度函数,而