SeqGAN论文阅读笔记

本文是2017年发表于AAAI的论文《SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient》的阅读笔记。

想要解决的问题(动机)

GAN模型的两个缺点:

  1. GAN是设计用来生成实值连续数据的,在直接生成离散序列方面有些困难,表现不好;
  2. GAN只能给生成的完整序列打分,对于生成的部分序列,平衡现在的好坏和将来作为整个序列的得分是很重的。

原因:我们知道,GAN中生成网络参数的优化是需要依赖于判别网络的,如果输出是离散序列的话,就很难将梯度更新从判别网络传给生成网络。

怎么理解这个离散序列?即输出不是一个值域里所有的值(例如y \in [0, 1]),而是可枚举的数值(例如y \in \{0, 1\})。

由于生成模型的核心是拟合数据的密度分布,而只有连续的数据才有密度分布,离散的数据是没有密度分布的。

解决的方法

  • 问题:梯度更新无法从判别网络传给生成网络
    • 解决方法:将序列生成过程看成序列决策过程,引入强化学习,将生成网络看成强化学习机,所生成的部分离散序列看成是当前的状态(state),动作(action)就是决定下一个字符是什么。
    • 这样一来,生成网络只需要接受由判别网络对生成的输出序列打分的分数作为奖励(reward)来进行参数调整,而不需要通过梯度计算。
  • 问题:GAN只能给生成的完整序列打分
    • 解决方法:使用Monte Carlo Search(蒙特卡洛搜索)方法来从当前的序列状态搜索得到完整序列,然后由判别网络打分,得到的分值作为奖励(reward)

上述两种方案的结合,就是所谓的SeqGAN模型架构。

模型

图1 SeqGAN模型架构

目标函数

  • 生成网络的目标函数
    由于生成网络现在使用的是强化学习来实现的,而强化学习的目标就是使得奖励(reward)尽可能大。于是,生成网络的目标函数如下:
    J(\theta) = \mathbb{E} [R_T | s_0, \theta] = \sum_{y_1 \in \gamma} G_{\theta}(y_1 | s_0) \cdot Q_{D_{\phi}}^{G_{\theta}}(s_0, y_1) \qquad (1)
    这里,action-value函数(即上式中的Q函数)也至关重要。我们知道,reward是将完整序列输入到判别网络D中所得到的,因此:
    Q_{D_{\phi}}^{G_{\theta}}(a = y_T, s = Y_{1:T-1}) = D_{\phi}(Y_{1:T}) \qquad (2)
    这里只是讨论了完整序列的情况,还有非完整序列的情况,此时就需要用到Monte Carlo Search(蒙特卡洛搜索)来从当前非完整序列状态搜索得到完整的序列状态,其搜索过程定义如下(一共搜索了N次,得到了N个完整的序列):
    \{ Y_{1:T}^1, ..., Y_{1:T}^N \} = MC^{G_{\beta}} (Y_{1:t}; N) \qquad (3)
    中间状态序列的reward是这N个搜索得到的完整序列的reward均值,从而得到完整的action-value函数定义:
    Q_{D_{\phi}}^{G_{\theta}}(a = y_t, s = Y_{1:t-1}) = \begin{cases} \frac{1}{N} \sum_{n=1}^N D_{\phi}(Y_{1:T}^n), \quad Y_{1:T}^n \in MC^{G_{\beta}} (Y_{1:t}; N) \quad for \quad t < T \\ D_{\phi}(Y_{1:T}) \quad for \quad t = T \end{cases} \qquad (4)
  • 判别网络的目标函数
    判别网络的目标不变(还是GAN中的那一套),还是最小化交叉熵:
    min_{\phi} - \mathbb{E}_{Y \sim p_{data}} [log D_{\phi}(Y) ] - \mathbb{E}_{Y \sim G_{\theta}} [log (1 - D_{\phi}(Y)) ] \qquad (5)

这里的目标函数并不像GAN中的一样可以结合成为一个整体的目标函数,因为两个目标函数的梯度是不互通的

算法

图2 SeqGAN算法

图中的公式(8)如下:
\theta \leftarrow \theta + \alpha_h \Delta_{\theta} J(\theta) \qquad (8)

由于作者发现来自预训练的判别器的监督信号能够很有效地调整生成网络,在实现过程中,先预训练了判别网络;而且为了使得生成的负样本更可靠,在预训练判别器之前,使用极大似然估计(MLE)先预训练了生成器。

评价生成模型

当训练得到最终的生成模型,我们就需要评价其性能。

在本文中,采用了一个能够捕获到字符依赖关系的语言模型作为真实数据的模型(称为oracle),使用该模型生成SeqGAN的训练数据,并且能够用该模型评价SeqGAN中生成模型的性能。

评价采用的指标是负对数似然:
NLL_{oracle} = - \mathbb{E}_{Y_{1:T} \sim G_{\theta}} [\sum_{t = 1}^{T} log G_{oracle}(y_t | Y_{1:t-1})] \qquad (6)
其中G_{\theta}G_{oracle} 分别表示生成模型和oracle模型。

上式其实是一个熵,当生成模型生成一个序列(x_1, x_2, x_3)的概率是p时,我们计算一下oracle模型生成该序列的概率是q,然后计算一下熵- p \ log \ q,所有可能生成的序列的熵之和为\sum_i^n p_i \ log \ q_i,即为- \mathbb{E}_{p} \sum_i^n log \ q_i,当熵越小,说明p和q的散度越小,p和q的分布就越相似。

NLL_{oracle}越小就说明生成模型性能越高,越接近数据的真实分布。

讨论

本文还对算法中一些超参(g-step,d-step,k等)的设置。
实验结果如下:


图3 SeqGAN超参设置实验

从这个实验中可以得出:

  • 设置g-step比d-step和k值大很多(花更多时间用来训练生成网络)时,能够快速收敛,但是它会导致判别网络没训练好,从而会误导生成网络进行更新,收敛性会不稳定;(图3.a)
  • 增大d-step和k的设置(d-step相较于g-step比值有提升)时,收敛性会稳定很多;(图3.b)
  • 将d-step \times k 设置的略大于g-step时,意味着我们一直保证判别网络的准确性(在判别网络被混淆之前就使用更真实的负例来训练它),此时SeqGAN会比较稳定;(图3.c)
  • 将d-step \times k进一步增大,发现其收敛的更快;(图3.d)

上面的实验证明了:在训练过程中将判别网络的性能训练得略高于生成网络是有利于模型的收敛。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容