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)进行采样,因此对期望做一个转化
最后这个
J
J
J就是新的目标函数
4. PPO/TRPO
θ
\theta
θ和
θ
′
\theta'
θ′的分布要差不多,因此要进行一种操作,使得两者相似,在原基础上减一个值,作为constraint,这就是PPO
PPO的前身是TRPO,
实际操作中,PPO更容易。PPO减掉的哪一项表示的是两者行为上的距离(没懂)
具体的操作:
这里面
β
\beta
β需要动态调整(蓝色方框里面)
这里面据说算
K
L
KL
KL的时候很复杂,然后对PPO做了改进
这里面
c
l
i
p
clip
clip的功能是对第一项作一个截断,小于
1
−
ϵ
1-\epsilon
1−ϵ就输出
1
−
ϵ
1-\epsilon
1−ϵ,大于
1
+
ϵ
1+\epsilon
1+ϵ就输出
1
+
ϵ
1+\epsilon
1+ϵ