1. 蒙特卡洛MC和时序差分TD的区别
蒙特卡洛(回合更新):一个序列产生之后计算总收益,然后再更新
时序差分(单步更新):每走一步进行一次更新
强化学习主要采用的是蒙特卡洛的回合更新的方式
2. 具体计算方法
具体代码为
计算输出action时用到类似交叉熵损失的方法,但由于真实的action未知,因此在交叉熵前乘一个权重(奖励分数),分数越高的输出这样的action概率越大,代码为
3.on policy 和 off policy
on policy:一边互动一边学习
off policy:先看别人下棋自己再学
主要采用off policy
由于预先不知道各action的出现概率分布p(x)p(x)p(x),只能以另一种概率q(x)q(x)q(x)进行采样,因此对期望做一个转化
最后这个JJJ就是新的目标函数
4. PPO/TRPO
θ\thetaθ和θ′\theta'θ′的分布要差不多,因此要进行一种操作,使得两者相似,在原基础上减一个值,作为constraint,这就是PPO
PPO的前身是TRPO,
实际操作中,PPO更容易。PPO减掉的哪一项表示的是两者行为上的距离(没懂)
具体的操作:
这里面β\betaβ需要动态调整(蓝色方框里面)
这里面据说算KLKLKL的时候很复杂,然后对PPO做了改进
这里面clipclipclip的功能是对第一项作一个截断,小于1−ϵ1-\epsilon1−ϵ就输出1−ϵ1-\epsilon1−ϵ,大于1+ϵ1+\epsilon1+ϵ就输出1+ϵ1+\epsilon1+ϵ