1700540660
1700540661
问题2 训练序列生成器的优化目标通常是什么?GANs框架下有何不同?
1700540662
1700540663
难度:★★★★★
1700540664
1700540665
分析与解答
1700540666
1700540667
GANs框架下有一个生成器Gθ和一个判别器Dφ。对于本问题,生成器的目标是生成文字序列,高度地模仿真实句子;判别器的目标是区分哪些是生成器给的句子,哪些是真实数据集中挑的句子。通俗地讲,就是机器模仿人造句,一方面要让模仿尽可能像,一方面要辨认哪些是机器说的、哪些是人说的。前者工作由生成器负责,后者工作则交给判别器,生成器的工作成果要受到判别器的评判。判别器的优化目标为:
1700540668
1700540669
1700540670
1700540671
1700540672
(13.32)
1700540673
1700540674
这和原GANs中判别器的优化目标一样。
1700540675
1700540676
如果没有GANs,生成器是一个普通的序列生成器,通常会采取什么样的优化目标来训练它?熟悉语言模型的人,会想到最大似然估计,即:
1700540677
1700540678
1700540679
.
1700540680
1700540681
(13.33)
1700540682
1700540683
1700540684
这需要有一份真实数据集,表示数据集中第i个句子,生成器要最大化生成它们的总概率。从数据集到句子,可假设句子独立同分布,但是从句子到词,词与词在一句话内有强依赖性,不能假定它们相互独立,必须依链式法则做概率分解,最终得到:
1700540685
1700540686
1700540687
,
1700540688
1700540689
(13.34)
1700540690
1700540691
转变为最大化一个个对数条件概率之和。
1700540692
1700540693
GANs框架下,生成器的优化目标不再是一个可拆解的联合概率,在与判别器的博弈中,以假乱真欺骗判别器才是生成器的目标。判别器的评判针对一个完整句子,生成器欲知判别器的打分,必须送上整句话,不能在生成一半时就拿到判别器打分,故不能像最大似然估计那样拆解目标式,转为每个词的优化。而且,训练生成器时,也要训练判别器,对二者的训练交替进行。固定判别器,生成器的优化目标为:
1700540694
1700540695
1700540696
.
1700540697
1700540698
(13.35)
1700540699
1700540700
表面上看,这与原GANs中生成器的优化目标一样,问题在于生成器输出的是离散样本,一个由离散词组成的离散句子,不像原GANs中生成图片,每个像素都是一个连续值。原GANs用重参数化技巧构造生成器,直接对采样过程建模,不去显性刻画样本概率分布。
1700540701
1700540702
1700540703
1700540704
1700540705
上一节的IRGAN,生成器生成文档序号d这类离散数据,不能用原GANs的重参数化技巧。离散数据的特性,让我们无法求解目标函数对d、d对生成器参数θ的梯度。而且,期望的下脚标里包含参数θ,需对期望求梯度,不得不显式写出概率函数。
1700540706
1700540707
1700540708
1700540709
在SeqGAN中,生成器生成的文本序列更离散,序列每个元素都是离散的,如图13.19所示。联想强化学习理论,可把生成序列的过程看成是一连串动作,每步动作是挑选一个词,即动作at=yt,每步状态为已挑选词组成的序列前缀,即状态,最后一步动作后得到整个序列。接着,判别器收到一个完整句子,判断是真是假并打分,这个分数就是生成器的奖励。训练生成器就是要最大化奖励期望,优化目标为:
[
上一页 ]
[ :1.70054066e+09 ]
[
下一页 ]