ChenChengKuan / SeqGAN_tensorflow

SeqGAN tensorflow implementation
MIT License
106 stars 37 forks source link

generator #2

Closed ZNZHL closed 8 months ago

ZNZHL commented 6 years ago

您好,有些疑问,生成模型中def build_sample_network(self):函数的输入是什么?不太理解函数里面的sample_word?麻烦您讲讲

ChenChengKuan commented 6 years ago

Hi 他不需要input,只是用来输出给定start token 后产生的序列。

ZNZHL commented 6 years ago

那么在对抗训练的过程中,我看到生成模型输入的数据是sample(就是给定start token后产生的序列)而不是positive_file。并且判别模型的输入是positive_flie和nagetive_flie(这个序列也是build_sample_network函数生成的)。我想问的是生成模型的输入为什么不是positve_file?判别模型的输入为什么不是positive_flie和positive_flie输入到生成模型得到的生成序列?我不知道我表达清楚了吗?最近在研究SeqGAN,看到楼主代码很好,想深入研究研究,还望解答,谢谢

ChenChengKuan commented 6 years ago

Hi 我简单提一下GAN的框架。G只负责产生negative example, D负责分辨negative 和positive example。G只负责学习如何生成negative来骗过D,所以不需要透过输入pos来产生sample。 这部分建议可以参考这个连结,一般的GAN的G的input也是noise而已。

SeqGAN虽然有GAN,但比较不一样的是: 他比较像是AlphaGO下棋,每走一步(output一个token) 就去计算走的这步的reward来评价这一步走的好不好。这个reward是从Discriminator来提供(Discriminator 则跟原本的GAN一样接受negative和positive example)。 当每一步的reward变得愈高,代表G愈接近positive example。希望有回达到你的问题

ZNZHL commented 6 years ago

您好,我有一个idea想听听您的意见,将一份主题集中的语料分成三份,一部分作为生成模型的输入获得negative_file,另一部分作为positve_file,然后判别模型进行判别。经过多次对抗训练后,把模型保存下来,然后用最后的那份作为测试集,输入到生成模型中是否可以获得相似文本?

ChenChengKuan commented 6 years ago

理论上可以,但其实我不太明白为什麽生成模型需要有具体的资料输入。撇开这部分不谈的话,你提到的情况就是你从G sample出来的文本资料会跟原始类似

ZNZHL commented 6 years ago

您好,之前网上有用LSTM做唐诗,小说生成的项目,他们的输入采用的具体的语料,所以我想用SeqGAN结构做会不会效果更好一些。

ChenChengKuan commented 6 years ago

很难说,SeqGAN训练起来是相当不稳定的,有时候可能会比MLE更糟

zhazl commented 5 years ago

您好!如果SeqGAN训练之后,所得的reward在降低,那可能是什么原因呢?

ChenChengKuan commented 5 years ago

有很多种原因,可能是pretrain不够 或是G和Dupdate的频率让他坏掉,或是你应用的task本身太难。

zhazl commented 5 years ago

如果是频率让他坏掉的话 频率参数较大会有啥影响呢 ?