This commit is contained in:
qiwang067
2021-09-22 19:08:46 +08:00
parent cd88ce18e6
commit 4b984299d5

View File

@@ -81,7 +81,7 @@ $$
那可是接下来有人就会问说会不会最后 学习出来的结果是说,反正 machine 就学到 V 永远都是 0然后反正 A 就等于 Q那你就没有得到任何 Dueling DQN 可以带给你的好处, 就变成跟原来的 DQN 一模一样。为了避免这个问题,实际上你要给 A 一些约束,让 更新 A 其实比较麻烦,让网络倾向于会想要去用 V 来解问题。
举例来说,你可以看原始的文献,它有不同的约束 。一个最直觉的约束是你必须要让这个 A 的每一列的和都是 0所以看我这边举的例子列的和都是 0。如果这边列的和都是 0这边这个 V 的值,你就可以想成是上面 Q 的每一列的平均值。这个平均值,加上这些值才会变成是 Q 的 值。所以今天假设你发现说你在更新参数的时候,你是要让整个一起被更新。你就不会想要更新这边,因为你不会想要更新 这个矩阵。因为 A 这个矩阵的每一列的和都要是 0所以你没有办法说让这边的值通通都 +1这件事是做不到的。因为它的约束就是你的和永远都是要 0。所以不可以都 +1这时候就会强迫网络去更新 V 的值,然后让你可以用比较有效率的方法,去使用你的数据。
举例来说,你可以看原始的文献,它有不同的约束 。一个最直觉的约束是你必须要让这个 A 的每一列的和都是 0所以看我这边举的例子列的和都是 0。如果这边列的和都是 0这边这个 V 的值,你就可以想成是上面 Q 的每一列的平均值。这个平均值,加上这些值才会变成是 Q 的 值。所以今天假设你发现说你在更新参数的时候,你是要让整个一起被更新。你就不会想要更新这边,因为你不会想要更新 这个矩阵。因为 A 这个矩阵的每一列的和都要是 0所以你没有办法说让这边的值通通都 +1这件事是做不到的。因为它的约束就是你的和永远都是要 0。所以不可以都 +1这时候就会强迫网络去更新 V 的值,然后让你可以用比较有效率的方法,去使用你的数据。
![](img/7.6.png)