一、conditional sequence generation
使用RL来增强seq2seq model
chat-bot在与人的互动中逐渐变强。比如人跟机器说How are you?机器回答bye bye,我们会给他一个很低的分数。
如果我们跟机器说hello,机器回一个hi,我们会给他一个较高的分数。
人来代替discriminator
使得reward值最大。
在实际应用中不会有人跟chat-bot互动那么多次,因此有人想出用alpha go来训练chat-bot
训练两个chat-bot
使用discriminator代替人,即给Discriminator大量人的对话。
事实上这是一个seq2seq model,因此Generator是一个RNN结构,RNN将生成的每个词丢到Discriminator这样能做吗?
答案是不能!!
这是图像和seq的一个区别。它是无法微分的,因为红框部分有一个sample processing。这是序列模型与图像的一个巨大的差别,图像是可以直接丢进discriminator的。
有三种解决方式
Gumbel-softmax用的还不多,不做详细讲解。让本来不能微分的东西可以微分。
continuous input for discriminator,即给discriminator一个连续的输入,我们不再做sampling process,直接把word distribution丢进discriminator。
但是事情没有那么简单
现在的问题是,我们会发现real sentence和Generated是不一样的,real sentence是one hot向量。discriminator可以很容易发现二者的差异,即不关语义信息,会直接将二者区分开,这样的句子是不make sense的。因此这样做是不够的。
可以使用WGAN来训练。
第三种方法是强化学习。
在实践中你会发现可能有10%的情况输入一个句子会输出I’m sorry或者I don’t know。类比图像生成,相当于生成来模糊图像。因为同一个输入可能有很多种答案,比如火车有好多朝向,如果不用GAN,可能会生成它们的平均,使得图像模糊;文本也是如此,输入一句话,有多种回答,取了它们的平均。
因此可以使用GAN来解决。使用GAN后倾向于产生较长的句子。
二、Unsupervised conditional sequence generation
至少要100w+ training data。
联想Domain