本篇博文主要总结下台大教授李宏毅深度学习课程中关于 s e q G A N seqGAN seqGAN 的相关内容,并且添加了自己的一些思考。
Policy Gradient
众所周知,强化学习的目标就是 M a x i m i z i n g E x p e c t e d R e w a r d Maximizing\ Expected\ Reward Maximizing Expected Reward,在 s e q G A N seqGAN seqGAN 中,如下图:
上图中生成器是一个 s e q 2 s e q seq2seq seq2seq 的模型,判别器就是所谓的 H u m a m Humam Humam。那么不同的 e n c o d e r _ i n p u t h encoder\_input\ h encoder_input h 能生成不同的 x x x,我们把 h , x h,x h,x 喂给判别器,让其进行评价评估,得到其 r e w a r d reward reward 。
我们的目标就是希望最大化的这个
M
a
x
i
m
i
z
i
n
g
E
x
p
e
c
t
e
d
R
e
w
a
r
d
Maximizing\ Expected\ Reward
Maximizing Expected Reward
上面公式中的 ∑ p ( h ) \sum p(h) ∑p(h) 可以理解为 e n c o d e r _ i n p u t encoder\_input encoder_input 的分布, p θ ( x ∣ h ) p_\theta (x|h) pθ(x∣h)表示在当前 e n c o d e r _ i n p u t encoder\_input encoder_input 下生成的所有 x x x 的分布,注意因为有随机性,相同的 h h h 不一定能生成相同的 x x x。 θ \theta θ 是 s e q 2 s e q seq2seq seq2seq 的模型参数。我们的就是不断的最大化上面的 R θ R_{\theta} Rθ 来更新 θ \theta θ 然后更新生成器。
显然,我们可以将上式子理解成期望的形式:
因为不可能穷举所有的训练数据,故只能采用 s a m p l e sample sample 近似的方式
由此产生了一个问题,我们需要更新生成器的参数 θ \theta θ,如果采用 s a m p l e sample sample 的方式,则无法找到参数,参数是隐藏其中的,影响生成的 x x x。
好,此时采用
p
o
l
i
c
y
g
r
a
d
i
e
n
t
policy\ gradient
policy gradient 的方法:
然后我们用已经求得的 R R R 对 θ \theta θ 的导数,利用 g r a d i e n t _ a s c e n d gradient\_ascend gradient_ascend 来更新 θ \theta θ。
显然:
- 当 R ( h i , x i ) R(h^i, x^i) R(hi,xi) 为正时,通过更新 θ \theta θ,更新后的 p ( x i ∣ h i ) p(x_i|h_i) p(xi∣hi) 会增大。
- 当 R ( h i , x i ) R(h^i, x^i) R(hi,xi) 为负时,通过更新 θ \theta θ,更新后的 p ( x i ∣ h i ) p(x_i|h_i) p(xi∣hi) 会减小。
经典的是 p o l i c y g r a d i e n t policy\ gradient policy gradient 与 M L E MLE MLE 的比较:
上面表格的总结非常精辟,强化学习的目标函数实际上就是MLE的每一项的前面加了个权重而已,这个权重就是 r e w a r d reward reward;并且在 M L E MLE MLE 的目标函数中,其 x x x 为 t r u e t a r g e t true\ target true target,而在 R L RL RL 中, x x x 为生成所生成的。(避免 b i a s e x p o s u r e bias\ exposure bias exposure 问题)
在实际实现中,也很简单,在已知上面表格中的 R L RL RL 目标函数,利用深度学习框架即可自动的求导使其最大化。 也可以理解为只是在 M L E MLE MLE 的每一项前添加一个 r e w a r d reward reward 权重即可,至于 r e w a r d reward reward 如何得到,之前的博文中已讲过。