datawhalechina/easy-rl

Dueling DQN 实现中的可能错误

ShuhuaGao opened this issue · 1 comments

在这个jupyter notebook的In[7]中,有一行

return value + advantage  - advantage.mean()

我对dueling DQN的理解是,给定一个状态s,求取其各个advantage值A(s) = [A(s, a0), A(s, a1), ...],然后从这些值中减去A(s)的平均值,但是不同s对应的平均值是无关的。而上述这行代码,是把所有s的advantage的值求了总平均,然后减去这一个标量值。

换句话说,正确的写法应该用 advantage.mean(dim=1).

value + advantage  - advantage.mean()

这个advantage对应的输入就是给定的状态s,可以debug看下advantage的变量类型和结构