ChenChengKuan
ChenChengKuan
NLL本身愈低不见得代表产生的样本品质愈好(e.g.,多样性 词汇丰富度),这个问题之前ACL还EMNLP有人讨论过。随机调整会有什麽影响只能自己试试看
如果你有真实的任务(Ex 文本翻译) 那就用那个任务的衡量指标就好(e.g., METEOR)。Target LSTM只是原始论文中的一个小实验(synthetic dataset)
Hi 這個實驗本身並沒有生成中文,這裡做的是[paper](https://arxiv.org/pdf/1609.05473.pdf)裡的synthetic experiment,所以也沒對照表。
对 最简单的方法就是padding 然后你在rollout时算出的reward 记得在padding的位置要加一个mask过滤掉
Hi 谢谢肯定。我的理解是,在这个实验中,我们希望新训练的generator产出的样本(负样本:0)能够长得像预训练好的LSTM(Target LSTM)(正样本:1)。 你说的取正确样本的accuracy其实就是希望generator 产生的负样本(0)能够尽可能地骗过分类器让他觉得是正样本,当generator愈来愈像target lstm的时候,理论上他产生的样本都会骗过分类器被归类为1。所以我们就用这个来当generator的reward。而REINFORCE的训练方法会最大化这个reward。
seqgan的训练是相当不稳定的,目前关于怎麽让训练变好还是一个在研究中的课题。简单的方法我建议可以在pretrain多一点epoch。pretrain的效果好不好对seqgan影响很大。
Hi 他不需要input,只是用来输出给定start token 后产生的序列。
Hi 我简单提一下GAN的框架。G只负责产生negative example, D负责分辨negative 和positive example。G只负责学习如何生成negative来骗过D,所以不需要透过输入pos来产生sample。 这部分建议可以参考这个[连结](http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/),一般的GAN的G的input也是noise而已。 SeqGAN虽然有GAN,但比较不一样的是: 他比较像是AlphaGO下棋,每走一步(output一个token) 就去计算走的这步的reward来评价这一步走的好不好。这个reward是从Discriminator来提供(Discriminator 则跟原本的GAN一样接受negative和positive example)。 当每一步的reward变得愈高,代表G愈接近positive example。希望有回达到你的问题
理论上可以,但其实我不太明白为什麽生成模型需要有具体的资料输入。撇开这部分不谈的话,你提到的情况就是你从G sample出来的文本资料会跟原始类似
很难说,SeqGAN训练起来是相当不稳定的,有时候可能会比MLE更糟