Ref. 李宏毅强化学习课程
Tips of Q-learning
1. Double DQN
Q value 往往是被高估,double DQN可以环节这个问题
· 为什么会高估?我们想让
Q
(
s
t
,
a
t
)
Q(s_t,a_t)
Q(st,at)尽可能接近target
r
t
+
m
a
x
a
Q
(
s
t
+
1
,
a
)
r_t + max_a Q(s_{t+1},a)
rt+maxaQ(st+1,a), 在estimate network中,由于误差,被高估的actor就会被选择出来
· double DQN是将target换成
r
t
+
Q
′
(
s
t
,
a
r
g
m
a
x
a
Q
(
s
t
+
1
,
a
)
)
r_t + Q'(s_t,argmax_a Q(s_{t+1},a))
rt+Q′(st,argmaxaQ(st+1,a)) , Q只负责提案,Q’负责执行,互相制约兜底。Q’是不动的
2. Dueling DQN
改network的架构
先output一个scaler v(s) , 假设是1.0,在output A(s,a) 并相加
这样的好处是,更新v就可以把Q都更新了,而不用动A;但是网络倾向更新A,把V都学成0怎么办?给A增加一些constrain,比如先normalize A 再和V相加,相当于削弱A的权重。
Prioritized reply
在buffer里采样的时候,取更有用的
Multi-step
平衡MC和TD
Noisy Net
除了greedy之外,还可以在网络参数上加noise
注意,是在每个episode开始的时候去sample noise network,直到这一轮游戏结束,才再去sample新的。
openAI 直接加了高斯噪声
deep mind 由参数控制的一组noise
Distributional Q-function
Qvalue其实是一个分布的期望值。但是,不同的distribution可能是同样的average值,所以只用qvalue来代表是不足够的。可以变成输出这个action的q值落在每个bin里面的概率;