通常のQ学習(およびDQN)がQ値を過大評価するのはなぜですか?

Jan 10 2021

ダブルDQN(およびダブルQラーニング)を導入する動機は、通常のQラーニング(またはDQN)がQ値を過大評価する可能性があることですが、なぜ過大評価されるのかについて簡単な説明はありますか?

回答

3 DavidIreland Jan 11 2021 at 00:44

過大評価は、Q値の推定値のランダムな初期化に起因します。明らかに、これらは完全ではありません(もしそうなら、真のQ値を学ぶ必要はありません!)。SARSAやQ学習などの多くの価値ベースの強化学習方法では、アルゴリズムに次のようなものが含まれます。$\max$ターゲットポリシーの構築におけるオペレーター。あなたが言ったように、最も明白なケースはQ学習です。学習の更新は$$Q(s, a) = Q(s, a) + \alpha \left[r(s, a) + \gamma \max_a Q(s', a) - Q(s, a) \right] \;.$$検討している状態アクションタプルのQ関数は、次の状態で最大Q関数に向かってシフトします。$\max$ アクションに関して取られます。

ここで、前述のように、Q値の初期推定値はランダムに初期化されます。これは当然、誤った値につながります。これの結果は、私たちが計算するときに$\max_aQ(s', a)$大幅に過大評価されている値を選択している可能性があります。

Q学習(表形式の場合)は(いくつかの穏やかな仮定の下で)収束することが保証されているため、過大評価バイアスの主な結果は、収束が大幅に遅くなることです。もちろん、これはダブルQ学習で克服できます。

上記の答えは、表形式のQラーニングの場合です。考え方はDeepQ-Learningでも同じですが、Deep Q-learningには収束の保証がないため(関数近似器としてNNを使用する場合)、過大評価バイアスはパラメーターを意味する可能性があるため、より問題になります。ネットワークのが最適以下の値でスタックします。

誰かがコメントで常に値を非常に低い数値に初期化することについて尋ねたように、これは実際には機能しません。

サットンとバルトから取得した次のMDPについて考えてみます。状態Aから開始し、そこから報酬0で右に移動して終了状態にするか、左に移動して報酬0で状態Bに移動します。状態Bから、次のように取得できます。 100の異なるアクション。これらはすべて終了状態になり、平均-0.1および分散1の正規分布から報酬が引き出されます。

さて、明らかに状態Aからの最適な行動は正しく行くことです。ただし、左に移動して状態Bでアクションを実行すると、報酬が0より大きい(ほぼ)0.5の確率があります。ここで、Q値が次の方向にシフトしていることを思い出してください。$r(s, a) + \max_a Q(s', a)$; 状態Bから移行するときの確率的報酬と、正の報酬が表示される可能性が高いという事実のために、$\max_a Q(s', a)$ ポジティブになります。

これは、左のアクションを実行すると、Q値(Q(A、left))が正の値にシフトすることを意味します。つまり、状態Aにあるとき、左に移動する値は右に移動する値よりも高くなります(徐々に真の値0)に向かってシフトしているので、 $\epsilon$-欲張りポリシー欲張りアクションは、実際にはこれが最適ではない場合に左に移動することです。

もちろん、真のQ値が最終的に収束することはわかっていますが、たとえば100個のアクションがある場合、Q値が真の値に収束するのにかかる時間が潜在的にわかることがわかります。収束するまで、過大評価されたすべての値を選択し続ける必要があるため、長い時間がかかります。