RL – DQN Deep Q-network

Atari game

コンピュータが人間のようにビデオゲームをプレイできるのか? 2015年、DQNは多くのアタリゲームで人間の専門家に勝った。 しかし、いったん複雑な戦争戦略ゲームになると、AIはうまくいかない。 2017年、プロチームがスタークラフト2でDeepMindのAIプログラムを簡単に打ち負かした。

DeepMindの論文から引用すると:

これは複数のプレイヤーが相互作用するマルチエージェント問題であり、部分的に観測された地図による不完全な情報があり、数百のユニットの選択と制御を含む大きなアクション空間があり、生の入力特徴面のみから観察しなければならない大きな状態空間を持っていて、数千ステップにわたる長期戦略を必要とする遅延クレジット割り当てを持っています。

Deep Q-Network DQN に戻って、旅を再開しましょう。 下のシークエストゲームでは、DQNはスコアの読み方、敵の撃ち方、ダイバーの救出方法を生映像から独力で学習しています。 また、潜水艦の酸素補給のタイミングなど、戦略として参考になる知識も発見しています。 例えば、下の碁盤の位置に対して、ポーンを2歩先に動かすのがどれだけ良いか、である。 文字通り、そのような行動をとることの利点をスカラー値で表す。

Qは行動値関数(本稿ではQ値関数)と呼ばれる。

Q学習ではメモリテーブルQを作って、sとaの考えられるすべての組み合わせに対するQ値を格納します。チェスなら最善手のカンニングペーパーとなりますね。 上の例では、2手先のポーンを動かすことが、他のすべてのポーンよりもQ値が高いことに気づくかもしれない。 (チェスではメモリ消費量が多すぎるでしょう。 しかし、このアプローチにもう少しこだわってみましょう。)

専門的に言えば、現在の状態から行動をサンプリングします。 我々は報酬R(もしあれば)と新しい状態s’(新しいボードの位置)を見つける。 メモリテーブルから、最大 Q(s’, a’) を持つ次の行動 a’ を決定する。

source

ビデオゲームで、敵を撃墜してポイント(報酬)を獲得する。 チェスゲームでは、勝てば+1、負ければ-1の報酬が得られます。 だから与えられる報酬は1つだけで、それを得るには時間がかかる。

Q学習はカンニングペーパーQを作ることだ。

一つの手aを取ってどんな報酬Rが取れるか確認できる。 これによって一歩先が見えてくる。 R+Q(s’,a’)がQ(s,a)の望む目標になる。 例えば、今Qの値がすべて1に等しいとする。 ジョイスティックを右に動かして2点取ったら、Q(s, a)を3(つまり2+1)に近づけたい。

演奏を続けながら、Qの実行平均値を維持するのです。 値は良くなり、いくつかのトリックを使えばQの値は収束する。

Q学習アルゴリズム

以下は、サンプリングした報酬でQを適合させるアルゴリズムである。 γ(割引率)が1より小さければQは収束する可能性が高い。

Source

しかし状態と行動の組み合わせが大きすぎるとメモリやQの計算要求値が高くなりすぎてしまう。 その対策として、Q(s, a)を近似するディープネットワークQ(DQN)に切り換える。 この学習アルゴリズムはDeep Q-learningと呼ばれる。 新しいアプローチでは、解を記憶するのではなく、Q値関数の近似を一般化する。

RLがDLと比較して直面している課題とは?

教師あり学習では、入力はi.i.d.(独立かつ同一分布)であってほしい。すなわち、サンプルはバッチ間でランダムにされ、したがって各バッチは同じ(または同様の)データ分布となる。

  • サンプルは同じバッチ内で互いに独立している。
  • そうでなければ、モデルは異なる時間でのサンプルのいくつかのクラス(またはグループ)に対してオーバーフィットする可能性があり、解は一般化できない。

    さらに、同じ入力に対して、そのラベルは時間の経過と共に変化することはない。 このように入力と出力が安定していることが、教師あり学習がうまくいく条件となる。

    強化学習では、入力も目標も途中で常に変化し、学習が不安定になる。

    目標が不安定になること。 Qの値を学習するためにディープネットワークを構築するが、物事がよく分かるようになるとその目標値が変化していく。 下図のように、Qの目標値はQそのものに依存するため、非定常な目標を追いかけていることになる。

    Source

    i.i.d. :軌道内の相関に関する別の問題がある。 学習反復の中で、Q(s、a)をグランドトゥルースに近づけるために、モデルパラメータを更新する。 この更新は他の推定値に影響を与えます。

    例えば、報酬を獲得してQ-ネットワークを調整したとしよう。 次に、別の動きをする。 新しい状態は、状態を表現するために生の画像を使用する場合、特に最後の状態に類似しているように見えます。 このとき新たに取り出されたQ(s’, a’)はより高くなり、Qの新しい目標も新しい行動の良し悪しに関わらずより高く移動することになる。 同じ軌跡を描く一連の行動でネットワークを更新すると、意図した以上に効果が大きくなってしまう。 これは学習プロセスを不安定にし、まるで犬が尻尾を追いかけているようなものです。 RLでは、行動のサンプリングに政策関数や価値関数に依存することが多い。 しかし、これは何を探索すべきかがよくわかるので、頻繁に変更されます。 ゲームをプレイするにつれ、我々は状態や行動のグランドトゥルース値についてより良く知ることができる。 したがって、我々の目標出力も変化している。 さて、我々は常に変化する入力と出力に対するマッピングfを学習しようとする!

    幸運なことに、入力と出力の両方が収束することができる。 そこで、入力と出力の両方の変化を十分に遅くすれば、fを進化させながらモデル化するチャンスがあるかもしれない。

    解決策

    経験値再生。 例えば、過去100万回の遷移(またはビデオフレーム)をバッファに入れ、このバッファからサイズ32のミニバッチをサンプリングして、ディープネットワークを学習させるのである。 これにより、学習に十分な安定性を持つ入力データセットが形成される。 リプレイバッファからランダムにサンプリングするため、データはより互いに独立し、i.i.d.

    ターゲットネットワークに近くなる。 2つのディープネットワークθ-とθθを作成し、前者はQ値の取得に、後者はすべての更新を学習に含める。 この目的は、Q値のターゲットを一時的に固定することで、追いかけるべきターゲットが移動しないようにするためです。 また、パラメータの変更はすぐにθ-に影響を与えないため、入力が100%i.i.d.でなくてもよい。

    Experience replayとターゲットネットワークの両方を使えば、ネットワークを訓練するための入力と出力がより安定し、より教師付き訓練に近い振る舞いができるようになりました。 ターゲットネットワークの改善は重要であるが、再生ほどには重要ではない。 しかし、ネットワークの容量が小さいとより重要になる。

    Deep Q-learning with experience replay

    以下はそのアルゴリズムです:

    Source

    ここでϕは状態を表す最後の4画像フレームの前処理をするのだそうです。 4988>

    実装の詳細

    損失関数

    パフォーマンスを向上させるために、もう少し実装の詳細を見ていきましょう。 DQN では、損失が a の小さな値では 2 次、大きな値では 1 次となる Huber 損失 (緑色の曲線) を使用しています。

    緑がHuber損失、青が2次曲線損失 (Wikipedia)

    Huber lossの導入により、しばしばRLを傷つける劇的変化を少なくすることができるようになった。

    最適化

    RLのトレーニングは最適化手法に敏感である。 単純な学習率のスケジュールは、学習中の入力の変化に対応できるほどダイナミックではない。 多くのRL訓練ではRMSPropやAdam optimizerが使われている。 DQNはRMSPropで学習され、Policy Gradient法における事前最適化法の利用も盛んに研究されている。

    ϵ-greedy

    DQNでは最初の行動の選択にϵ-greedyを使用している。

    Q-learning: modified from source

    学習を改善するためにϵを1から始めて0までアニールする。4988>

    ここでmは可能なアクションの数である。 学習開始時は可能な行動を一律に選択するが、学習が進むにつれて最適な行動a*を選択する頻度を高くする。 これにより、初期には最大限の探索を行い、最終的には探索に切り替える。

    ただし、テスト中でもϵを0.05などの小さな値に維持することができる。 決定論的な政策は局所最適に留まるかもしれません。

    Modified from source

    Architecture

    ここでDQNアーキテクチャを紹介します。 過去4つのビデオフレームを取得し、畳み込み層と完全連結層に送り込み、各動作のQ値を計算します。

    下の例では、フレーム 3 でパドル を上げなければ、ボールは外れることになります。 DQNから予想されるように、パドルを上に動かす場合のQ値は、他の動作に比べて非常に高くなります。

    DQN 改良点

    DQNにも多くの改善がなされている。 ここでは、大きな改善を示すいくつかの方法を紹介する。

    Double DQN

    Q学習では、Qの目標値について次の式を用いる。

    しかし、max演算はQ推定値に対して正のバイアスを発生させる。

    上の例から、max Q(s, a) は収束値1より高いことがわかる。理論的にも実験的にも、オンラインネットワークθで行動を貪欲に選択し、ターゲットネットワークθ-でQ値を推定すれば、DQN性能は向上する。

    Prioritized Experience Replay

    DQNはリプレイバッファから遷移を一様にサンプルしている。 しかし、すでにターゲットに近いサンプルにはあまり注意を払わない方がよい。 ターゲットとのギャップが大きい遷移をサンプリングする必要があります。

    そこで、

    • 上記の誤差値に基づいてバッファから選択するか(誤差値が大きい方を頻繁に選択)、
    • 誤差値に従ってランク付けしてランクで選択(上位の者をより多く選択)すればよいのです。

    サンプリングデータに関する式の詳細については、Prioritized Experience Replayの論文を参照してください。

    決闘DQN

    決闘DQNでは、Qは以下の価値関数Vと状態依存の行動優位関数Aで、以下の別の式で計算される。

    Source

    Q を学習しない代わりに、VとAを別々の頭を使って計算しています。 実証実験では、性能が向上することが示されている。 DQNは特定の行動に対してのみ、状態のQ値関数を更新する。 Dueling DQNは他のQ(s, a’)の更新も利用できるようにVを更新する。 そのため、Dueling DQNの学習反復はより大きな影響を与えると考えられる。

    Noisy Nets for Exploration

    DQNは行動の選択にϵ-greedyを使用する。 あるいは、NoisyNetは、探索を助けるために線形層にパラメトリックノイズを追加することによって、それを置き換える。 NoisyNetでは、ε-greedyは使用されない。 Q値関数からアクションを選択するために貪欲法を用いる。 しかし、Q近似器の完全接続層については、下に学習可能なパラメタライズドノイズを追加して、アクションを探索します。 ディープネットワークにノイズを加えることは、ϵ貪欲法のようなアクションにノイズを加えることと同等かそれ以上のことが多い。

    Source

    More thoughts

    DQNはRLの一つの重要なクラス、価値学習というクラスに属し、そのクラスはRLと呼ばれる。 実際には、現実の問題を解決する際に、政策勾配と価値学習法を組み合わせることが多い。

    Leave a Reply