保留初心,砥砺前行
这是上一次GAN for NLP的讨论记录,需要的同学拿去享用:
记录一次与大神们的关于GAN应用于NLP的讨论
这次的讨论可能是因为题目不够大众,或者是做这方面的同学们太过羞涩,因此讨论的内容基本偏题,最后形成了大家自由讨论的局面。但是只要仔细观察,是可以看到其中是有着耀眼的闪光点的,至少对于我来说是这样的。
重申以下观点:
下边的讨论问题与解答有些是文不对题的,首先是因为按照发言顺序整理,难免有插话的存在;第二,因为在讨论中大家的关注点比较集中,很多问题的讨论最后都会归纳到几个矛盾点上;还有就是有些内容关注的人并不是很多,因此也没有讨论出什么结果。另外,下边的问题有主题人按照议程提出的,有的是在讨论过程中同学们提出的。
最后,以下记录不代表本人立场,也不代表正确的解答。只是讨论记录。
那,继续GAN
今天的主题是GAN4NLP~~~```
A: 第一个话题是GAN for 对话系统
首先,我要问一下,这个话题的研究现状,有哪些方法?
(直接偏题)...
B: 大家有做对话评价的吗,gan能不能用在评价里面呢?
C: 对话评价感觉可以用gan做,嗯对话评价是其中一个子问题,能不能说下目前主流用什么方法做,是类似BLEU这些指标么?
D: 对,现在主要还是套用机器翻译的评价指标,居多
E: 那gan理论上应该可以学到一个更自然的评价指标
F: 生成式对话的评价,做的人好像不多
G: 问题是这样不好比较啊,不同的人训练的评价器/判别器不一样,得到的评分没法对比
H: 我没想明白怎么应用gan到评价里面
I: 或许可以这样:D判断对话是否“自然”,G生成对话,D的输出可以当做评价指标
J: D输出的概率值可以作为评价指标
K: 评价指标不能单从通顺来判断吧
L: 的确不能单靠通顺,还要看是否符合当前上下文
M: 不只是通顺吧,D学到最后应该具有判断上下文符合程度的能力
N: 但是最主要的问题是,凭什么用你训出来的 D 评价不用我的呢
O: nlp的世界中有一个跟imagenet一样令人信服的数据集,跑出一个类似inception network的模型,搞一个类似inception score的指标,除非这种情况不然的确很难统一
P: 对话系统,Adversarial Learning for Neural Dialogue Generation 之前搜到这篇比较符合, 读过的相关论文同学能共享下最近的paper吗(有一个同学回到了主题)
Q: 判断是否符合上下文,其实是一个conditional generation的问题,gan做conditional generation有一些套路,比如把那个condition(label啊上下文啊)跟生产的内容一起给判别器,要求判别器判断是否匹配
R: 用GAN的方法做评价,只能说,它是适合当前的数据集的,换一个数据集不一定适用呢,毕竟还有文本风格的问题在里面
S: 如果你问的是能不能作为一个评价指标,那gan应该是不行的,但是你说在一次训练中用来评价对话的好坏,进而辅助对话模型的训练,这是可以的
T: 我觉得gan用在对话上就是把重点放在做生成上,gan做不了评价指标。基本上gan训练完我们是把判别器扔掉的,没有用到
因为判别器是会过拟合到当前训练任务的
U: 我见过唯一一个有用到判别器的case,应该是gan做半监督学习,不知道有没有别的
V: gan的判别器是用BLEU+RL嘛?或者其他指标+RL
W: GAN的判别器是可以替代BLEU,变成GAN+RL吧
X: 纯粹RL做文本生成的话,是用BLEU没错,但是如果用上gan,那gan判别器的输出就代替了BLEU的角色
Y: Adversarial Learning for Neural Dialogue Generation应该是比较经典的一篇
Z: 其实后面各种文本生成+gan都是用seqgan那一套做法吧。哦不对,**还有另一套做法,是在文本自编码器中间的编码层做对抗训练。**(划重点)是两种套路,但是gan做nlp的一个主要套路就是用rl的形式训练
Q: 编码层怎么做对抗训练?大概讲一下思路?
A: 让编码层像一个高斯分布,编码分布为生成分布,高斯分布为真实分布,用gan对抗拉近,放个图
![](http://upload-images.jianshu.io/upload_images/6274743-662534f5c40e9f7b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Q: 判断编码层是真实的编码还是直接生成器产生的?
A: 对
Q: 这个用VAE是不是更合适?
Q: AAE
A: 对就是AAE,它的好处是避开了文本的离散形式
Q: 可能VAE和这种方式差不多,但AAE好像容易理解点
A: 嗯,编码是连续的
A: 本来文本是离散的,不可微,没法直接用gan训练,只好用RL的形式来做,但是AAE直接跑到中间编码层去做对抗训练,避开了这个问题
Q: 用aae主要解决什么问题?
A: 最重要的就是解决离散样本不可微的问题
Q: 但是AAE最后也要把编码翻译成句子吧?这个还是避免不了离散的问题,是这样吗?
A: 但是不需要在句子那边求导了
Q: AAE感觉就像一种对编码方分布的正则而已
A: 是这样的,原始gan的思路是从一个高斯分布映射到文本分布,要求生成的文本逼真,但是不好求导,AAE是建立真实文本分布到一个未知分布的可逆映射,然后要求这个未知分布像高斯分布,把思路颠倒过来了,再次上图
![](http://upload-images.jianshu.io/upload_images/6274743-5ac6133f64fd0227.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
A: 可以对比一下这张图里面的AAE和GAN
B: 真实数据不一定符合高斯分布吧
C: 编码可以啊,我们让它符合高斯分布就让它符合呗,这很合理
D: 为什么要让中间层逼近高斯啊
E: 编码可以要求是高斯分布的,VAE就是那么干的,把未知分布映射到高斯分布
F: 只是一个选择,逼近别的分布比如uniform分布也可以,具体哪个更好得看实验结果吧
G: 可能高斯分布比较好优化
H: 这种自编码器如何应用呢
I: 我觉得可以把gan训练做为一个辅助任务,放在正常对话生成模型旁边,然后让对话生成的decoder跟AAE的decoder共享参数
J: Adversarially Regularized Autoencoders for Generating Discrete Structures这篇好像就跟AAE略有不同,是用一个生成器去生成中间层编码,而不是直接要求中间层编码满足高斯分布
A: 如果从文本生成图像,是不是都不把编解码放在GAN中,最近看了相关的几篇paper,对文本都是先用RNN做编码,然后直接当做条件做生成
B: 文本生成图像,文本的编码是作为条件输入的
C: 这也是一个套路,conditional generation
D: 这个思路我之前做过,但是解释不通
E: 是用上下文做为condition吗,可以具体说说方案吗
D: 是的,和老师聊了,理论上过不去,效果不好,就没有调参
F: 这样子,为什么理论上过不去
D: 因为你编码器得到的是输入句子的编码,解码之后还是原始句子
G: 而现在input 和output sequence不是同一个?所以有问题?
D: 嗯,对话生成不是这样的,我当时做的比这个复杂,我做了3个模块,一个是上下文编码,一个是自编码,一个是解码
H: 如果你是在中间编码层加对抗,那的确不合理,但是在output sequence上用RL加对抗,就讲得通吧
I: 如果说把文本也做一个编解码器,用GAN和VAE联合的那个框架,不知道有没有搞头😂
A: 我想讨论 关于 训练集很少的情况下,是否可以用GAN来提高模型
B: 你这个是半监督学习的问题
C: 有用gan,或者应该说是对抗训练,来做文本分类的半监督学习,也算gan for nlp吧
A: 我觉得比较关键的问题是为什么gan能比原来的方法获得提高?
B: 也就是今天的第五个话题,既然讨论到这里,不如先顺带把它也讨论了,GAN相比其他文本方法(如MLE,BLEU+RL)的好处
C: 话说gan究竟为什么比mle训练文本生成要好,有没有什么说法,不仅mle,还有BLEU+RL
D: 因为rl的reward,不是固定的某个度量,d可以根据场景学习reward 倒逼g
E: 而认为是一个比较“自然”的度量?
F: 我觉得他的reward很灵活 而且随着g的改变d也会训练适应
G: 就是找到了一个更好的supervise信号,不过这个信号很不稳定啊
H: 不是固定的,嗯 有得有失
I: 以前是深度学习替代了feature engineering,现在有可能gan替代loss engineering吗
somebody: 这可能是一个趋势哈哈
somebody: 感觉还是要设计 loss
... ...
...
第二个讨论的话题:GAN for 标题生成。首先,谁来讲一下标题生成是个什么任务?
A: 类似于summary吗?
B: 根据摘要生成标题
C: GAN用于摘要生成,现有的摘要生成评价体系也没有统一的吧,如何来设计判别函数。
D: 我觉得论文标题生成倒有戏,1,数据好找,2,abstract质量高,数据直接遍历arxiv
E: Abstractive Text Summarization using Sequence-to-sequence RNNs andBeyond(划重点)
F: 想过是不是他的rl改成gan。 不是固定用rouge l 不知道大家有没有方法,他其实还是常用的加rl方法 但论文每周读的兄弟提了 rl的reward用最终的评价函数。有点为跑分而跑分
G: 这种训练时直接用评价指标当reward的做法感觉很不好
H: 设计个d来reward?
I: 我觉得如果有n个指标可以用,应该训练用一个指标,评价用其他n - 1个指标,类似k fold cross validation
J: 嗯 其实他也这么做了,这样做会鲁棒一些
K: 是不是以前用rl的方法 如果能设计d来做的话就有机会提升?
L: 感觉是,BLEU也会过拟合吧
M: 不妨试试标题生成,数据集也有了
N: 可能可以哦 找个d 区分生成的标题和真正的标题,有点像seqgan 但d不用cnn用rnn可能可以试试
That's all...大神们说话听不懂吗,(默默地掩面哭泣其实我有些内容也是不怎么听得懂)。那没有问题,总有一个从0到1的过程。
接下来,
下一篇关于GAN的文章就是一篇入门类型的、关于GAN的基础的科普类文章,需要的同学们请期待吧。(我会尽量在这周末之前放上来的)
![](http://upload-images.jianshu.io/upload_images/6274743-19251801cf2e20c9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)