异策略与重要性采样
因为异策略中的行动策略和目标策略不一样,也就是说行动策略产生的数据分布与目标策略的数据分布存在偏差,即即行动策略的轨迹概率分布和改善策略的轨迹概率分布不一样,因此在使用数据进行目标策略评估的时候需要考虑该影响,常用的方法是重要性采样。(重要性采样的原理见文末图片)
重要性采样评估目标策略的值函数
在目标策略下,一次实验的概率为:
P r ( S t , A t , S t + 1 , . . . S T ) = ∏ k = t T − 1 π ( A k ∣ S k ) p ( S k + 1 ∣ S t , A t ) Pr(S_t,A_t,S_{t+1},...S_T) = \prod _{k=t}^{T-1} \pi(A_k|S_k)p(S_{k+1}|S_t,A_t) Pr(St,At,St+1,...ST)=∏k=tT−1π(Ak∣Sk)p(Sk+1∣St,At)
在行动策略下,该实验出现的概率为:
P r ( S t , A t , S t + 1 , . . . S T ) = ∏ k = t T − 1 μ ( A k ∣ S k ) p ( S k + 1 ∣ S t , A t ) Pr(S_t,A_t,S_{t+1},...S_T) = \prod _{k=t}^{T-1} \mu(A_k|S_k)p(S_{k+1}|S_t,A_t) Pr(St,At,St+1,...ST)=∏k=tT−1μ(Ak∣Sk)p(Sk+1∣St,At)
因为很难获得明确的目标策略 π \pi π的概率分布,因此使用一个替代分布进行估计,对应为行动策略分布 μ \mu μ。因此重要性权重为:
ρ t T = ∏ k = t T − 1 π ( A k ∣ S k ) p ( S k + 1 ∣ S t , A t ) ∏ k = t T − 1 μ ( A k ∣ S k ) p ( S k + 1 ∣ S t , A t ) = ∏ k = t T − 1 π ( A k ∣ S k ) μ ( A k ∣ S k ) \rho _t^T= \frac{\prod _{k=t}^{T-1} \pi(A_k|S_k)p(S_{k+1}|S_t,A_t)}{\prod _{k=t}^{T-1} \mu(A_k|S_k)p(S_{k+1}|S_t,A_t)}=\prod _{k=t}^{T-1} \frac{\pi(A_k|S_k)}{\mu(A_k|S_k)} ρtT=∏k=tT−1μ(Ak∣Sk)p(Sk+1∣St,At)∏k=tT−1π(Ak∣Sk)p(Sk+1∣St,At)=∏k=tT−1μ(Ak∣Sk)π(Ak∣Sk)
普 通 重 要 性 采 样 的 值 函 数 估 计 为 {\color{red}{普通重要性采样的值函数估计为}} 普通重要性采样的值函数估计为:
V ( s ) = ∑ t ∈ T ( s ) ρ t T ( t ) G t ∣ T ( s ) ∣ V(s)= \frac {\sum_{t\in T(s)} \rho_{t}^{T(t)}G_t} {|T(s)|} V(s)=∣T(s)∣∑t∈T(s)ρtT(t)Gt
将上式编程递推的方式:
令 w n = ρ n T ( n ) , ∣ T ( s ) ∣ = n w_n=\rho_{n}^{T(n)},|T(s)|=n wn=ρnT(n),∣T(s)∣=n,那么值函数为
V ( n ) = ∑ k = 1 n − 1 w n G n n V(n)= \frac {\sum_{k=1}^{n-1} w_n G_n} {n} V(n)=n∑k=1n−1wnGn
递推公式很容易获得为:
V ( n + 1 ) = V ( n ) + w n G n − V ( n ) n V(n+1)= V(n) + \frac {w_n G_n - V(n)} {n} V(n+1)=V(n)+nwnGn−V(n)
加 权 重 要 性 采 样 的 值 函 数 为 {\color{red}{加权重要性采样的值函数为}} 加权重要性采样的值函数为:
V ( s ) = ∑ t ∈ T ( s ) ρ t T ( t ) G t ∑ t ∈ T ( s ) ρ t T ( t ) V(s)= \frac {\sum_{t\in T(s)} \rho_{t}^{T(t)}G_t} {\sum_{t\in T(s)} \rho_{t}^{T(t)}} V(s)=∑t∈T(s)ρtT(t)∑t∈T(s)ρtT(t)Gt
令 w n = ρ n T ( n ) , c n = ∑ t ∈ T ( s ) ρ t T ( t ) = c n − 1 + w n w_n=\rho_{n}^{T(n)},c_n=\sum_{t\in T(s)} \rho_{t}^{T(t)}=c_{n-1} + w_n wn=ρnT(n),cn=∑t∈T(s)ρtT(t)=cn−1+wn,那么值函数为
V ( n ) = ∑ k = 1 n − 1 w n G n c n V(n)= \frac {\sum_{k=1}^{n-1} w_n G_n} {c_n} V(n)=cn∑k=1n−1wnGn
递推公式很容易获得为:
V ( n + 1 ) = V ( n ) + w n c n ( G n − V ( n ) ) V(n+1)= V(n) + \frac {w_n} {c_n} (G_n - V(n)) V(n+1)=V(n)+cnwn(Gn−V(n))
代码实现【强化学习笔记】4.4 无模型的强化学习方法-蒙特卡罗算法与重要性采样代码实现
重要性采样(转载https://blog.csdn.net/minenki/article/details/8917520)
参考书籍:
欢迎关注微信公众号:AITBOOK