导读:序列数据指的是一种按照先后顺序排列的离散数据,这类数据虽然不如图像数据那么直观,但其实在实际生活中非常常见。比如我们平时浏览网站的行为其实就是序列数据,我们会不断地在各种不同的网页链接之间跳转,从而形成一个序列的网页链接列表;又比如我们平时使用的自然语言,就是由一系列按照顺序排列的文字所构成。
作者:史丹青
来源:华章计算机(hzbook_jsj)
GAN的模型直接用于训练是一个非常自然的想法,只需要能够收集大量真实的序列数据就可以通过生成器和判别器的对抗来完美实现对与离散数据的生成。这个想法看似十分美好,但是在实践过程中会发现两个致命的问题。首先,是离散数据的可导性。GAN的创造者IanGoodfellow之前曾表示由于GAN需要计算生成器输出的梯度,因此在有连续输出的地方才能很好的工作,而像文本这样离散的数据不具备可导性很难使用GAN进行生成。其次,是如何去判断一个还没有生成完毕的序列数据是“真”或“假”。在实际的生成过程中,序列数据是一个一个逐步产生的,除了最终状态之外的大部分情况都是一个未完成的序列,比如一句还没有说完的话,或是一系列没有完成的网页操作。在这个未完成的状态下,如何让判别器判断当前的序列是“真”是“假”就变成了一个棘手的问题。
SeqGAN
SeqGAN首先提出了GAN在序列生成上的方法。为了解决在之前提到的那些问题,SeqGAN把序列数据生成的过程看作是一个序列决策的过程,在生成数据的过程中一步一步决定下一个元素是什么。
SeqGAN使用了一种基于强化学习的方法,它的生成器正是强化学习中的代理&#x