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