1. policy gradient 从on policy到 off policy
policy gradient:
- 更新过程:actor与环境互动,生成轨迹 τ \tau τ, 之后按照梯度上升的方式更新policy network的参数。
- 问题:虽然使用相同轨迹执行多步优化看上去很秀,但是这样操作并不合理,实验证明它通常会导致破坏性的大策略更新
(感觉我的毕设是不是也存在这个问题???????) - 分析:按照公式,数据应该是从现在的policy θ \theta θ 的分布中采样出来,然而当每次结束一回合,更新了参数之后,原本的 θ \theta θ已经发生变化,原有采样出的数据就不能再使用了,需要重新获取数据,因此生成数据需要耗费大量的时间。
- 改进:使用另外的policy θ ′ \theta' θ′ 来与环境交互生成数据,来训练 θ \theta θ(数据可以多次用来做梯度上升更新网络)
2. importance sampling
E x ∼ p [ f ( x ) ] ≈ 1 N ∑ i = 1 N f ( x i ) E_{x\sim p}[f(x)]\approx\frac{1}{N}\sum_{i=1}^Nf(x^i) Ex∼p[f(x)]≈N1i=1∑Nf(xi)
从 p p p的分布中采样x,代入到f(x)中,计算f(x)的期望值, 其中 x i x^i xi是从 p ( x ) p(x) p(x)中采样得到的。
问题:如果现在无法从 p ( x ) p(x) p(x)中采样到 x x x, 只有从另一个分布 q ( x ) q(x) q(x)中采样的数据 x i x^i xi,该如何计算原目标表达式?
E x ∼ p [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] E_{x\sim p}[f(x)]= \int f(x)p(x)dx =\int f(x)\frac{p(x)}{q(x)}q(x)dx =E_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
按照上式,理论上来说,可以用另一个随机分布 q ( x ) q(x) q(x)替换 p ( x ) p(x) p(x)
但是, E x ∼ p [ f ( x ) ] = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] E_{x\sim p}[f(x)]=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Ex∼p[f(x)]=Ex∼q[f(x)q(x)p(x)]
V a r x ∼ p [ f ( x ) ] ≠ V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] Var_{x\sim p}[f(x)]\neq Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Varx∼p[f(x)]=Varx∼q[f(x)q(x)p(x)]
根据 V a r [ X ] = E [ X 2 ] − ( E [ X ] ) 2 Var[X]=E[X^2]-(E[X])^2 Var[X]=E[X2]−(E[X])2可得,
V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ ( f ( x ) p ( x ) q ( x ) ) 2 ] − ( E x ∼ q [ f ( x ) p ( x ) q ( x ) ] ) 2 = E x ∼ p [ f ( x ) 2 p ( x ) q ( x ) ] − ( E x ∼ p [ f ( x ) ] ) 2 Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]=E_{x\sim q}[(f(x)\frac{p(x)}{q(x)})^2]-(E_{x\sim q}[f(x)\frac{p(x)}{q(x)}])^2=E_{x\sim p}[f(x)^2\frac{p(x)}{q(x)}]-(E_{x\sim p}[f(x)])^2 Varx∼q[f(x)q(x)p(x)]=Ex∼q[(f(x)q(x)p(x))2]−(Ex∼q[