キカベン
機械学習でより便利な世の中へ
G検定対策
お問い合わせ
   

深層強化学習

thumb image

1. 学習目標🔝

強化学習にディープラーニングを組み込んだ深層強化学習の基本的な手法とその応用分野について理解する。

  • 深層強化学習の基本的な手法と発展
  • 深層強化学習とゲームAI
  • 実システム制御への応用

キーワードDQNダブルDQNデュエリングネットワークノイジーネットワークRainbowモンテカルロ木探索アルファ碁アルファ碁ゼロアルファゼロマルチエージェント強化学習OpenAI Fiveアルファスター状態表現学習連続値制御報酬成型オフライン強化学習sim2realドメインランダマイゼーション残差強化学習

2. 深層強化学習の基本的な手法と発展🔝

2.1. DQN🔝

2013年にDeepMindが深層強化学習(deep reinforcement learning)であるDQN(deep Q-network)を発表した。Atari2600のゲームのいくつかは人間以上のスコアで攻略できることが示された。

画像元:論文

Q学習ではある状態$s$における行動$a$に対する行動価値$Q(s, a)$を学習するが、ゲームの状態は画像から抽出する必要があるのでCNNを使う。DQN以前にもニューラルネットワークを行動価値関数として使う試みはあったが、学習が不安定になるのが問題だった。これは強化学習では一連の経験(状態、行動)に相関があり学習データが偏ってしまうせいだ。

例えば、時刻$t$のある状態$s_t$で行動$a_t$を実行して環境から報酬$r_t$を受け、次の状態$s_{t+1}$に遷移したとする。続いて次の行動$a_{t+1}$を行い報酬$r_{t+1}$を受けて状態$s_{t+2}$に移る、などを繰り返すと一連の経験が得られる。

$(s_t, a_t, r_t, s_{t+1}) \rightarrow (s_{t+1}, a_{t+1}, r_{t+1}, s_{t+2}) \rightarrow (s_{t+2}, a_{t+2}, r_{t+2}, s_{t+3}) \rightarrow …$

これをそのまま学習に使うとデータがお互いに関連しており偏った学習データになってしまう。これを教師あり学習で例えるなら100の動物を識別する学習の際にある時はネコの画像ばかりを与え、他の時は犬の画像ばかりを与えるようなものなので学習が安定しない。

その上、ニューラルネットワークをステップごとに更新していたら行動価値関数が変化し続けることになり学習をさらに不安定する。これは、ニューラルネットワークの重みの更新はある特定の$s$と$a$だけでなく全ての行動価値に影響を与える可能性があるからだ。

そこで、DQNは経験再生(experience replay)とターゲットネットワーク(target network)を使って学習の安定性を向上させた。

経験再生ではエージェントが集めた経験($s, a, r, s’$)を蓄積しておき、学習するときにランダムに引き出した経験を再生して使う。訓練データ間の相関が少なくなり、時間軸に沿った一連の行動で学習するよりも安定しやすくなる。

ターゲットネットワークを$Q_{tgt}$とすると、$Q_{tgt}$は$Q$ネットワークの重みを定期的にコピーしたもので、教師役のネットワークのように使われる。これによって価値推定のターゲットとなる値を計算する関数(ネットワーク)が一定期間固定化されるので学習が安定する。

以下は論文から引用したDQNのアルゴリズム。

画像元:論文

2.2. ダブルDQN🔝

DQNでは行動価値を過剰評価しがちという問題がありました。これは$Q_{tgt}$で行動価値を計算する際に最大値である$\max Q_{tgt}(s, a)$を使うためです。この行動価値の計算で使われている行動$a$は必ずしも$Q$ネットワークが実際に選んだものとは限りません。特に学習初期ではターゲットネットワークが返す値には信頼性もなく最大値を常に選んでいると行動価値が過剰評価されがちになってしまいます。

下図で赤がDQNが推測した価値の値(濃い線は中央値)で青がダブルDQNによるもの。

画像元:論文

ダブルDQNでは、Qネットワークが選んだ行動$a (= \arg\max_a Q(s,a))$をターゲットネットワークに渡して行動価値$Q_{tgt}(s, a)$を計算します。必ずしもターゲットネットワークからの最大値を返すことにはならないので過剰評価が少なくなります。

2.3. 優先度付き経験再生🔝

優先度付き経験再生(prioritized experience replay)は、行動価値の誤差が大きいものを優先して経験再生するものでエラーを速く減らすことに貢献する仕組み。DQNとDouble DQNの両方で使える。

下図ではDQNを0%として相対的なスコアの差を表している。ほとんどのゲームで優先度付き経験再生を使った方がスコアが高くなっている。

画像元:論文

2.4. デュエリングネットワーク🔝

デュエリングネットワークは行動価値$Q(s, a)$を状態価値$V(s)$と行動のアドバンテージ$A(s, a)$に分けて考えます。

$Q(s, a) = V(s) + A(s, a)$

この式では、ある状態においてどの行動を取ったとしても、その状態そのものに対する共通の価値があると捉えている。例えば、どんな手を打ってもゲームに負けると分かっている盤面の状態など。

状態価値はどの行動にも共通で重要であり、状態価値を専門に予測する部分とその状態における行動価値の相対的価値を予測する部分とに分けることでQ学習を効率的にできると考える。分けないと、全ての状態と行動の組み合わせを別々に学習しているのと同じなので無駄が多いことを避けるのが狙い。

ただし、上式ではある$Q(s, a)$に対して$V(s)$と$A(s,a)$が一意に決まらない。例えば、$Q(s,a)=3$だった場合、$V(s)=1, A(s,a)=2$かもしれないし、$V(s)=2, A(s,a)=1$かもしれない。小数点まで考えると無限の組み合わせが存在する。これでは、学習に支障が出るため、以下のような変形を使う。

$Q(s, a) = V(s) + A(s, a) \, – \frac{1}{N} \sum\limits_{i=1}^N A(s, a_i)$

これでアドバンテージの平均が0になるため、各アドバンデージの数値が一意に決まる。結果として選択できる行動の数が多いほど通常のDQNよりも学習が速く進むようになる。また、デュエリングネットワークの手法はダブルDQNでも使える。

画像元:論文

(上図のSEはsquared errorの略)

2.5. カテゴリカルDQN🔝

カテゴリカルDQN(categorical deep q-network)またはDistributional DQNは行動価値の期待値(平均値)ではなく、分布を計算します。行動価値の分布の分散が大きい場合は平均値以外の値を受けるリスクも高くなります。

ターゲットネットワーク$Q_{tgt}$と$Q$ネットワークの両方とも分布を出力するので交差エントロピーを計算し誤差逆伝播をします。それ以外は他のDQNと仕組みは同じです。基本的に行動価値の期待値が最大になるように行動を選択します(ε-greedyなどで探索していない時は)。

それでも、行動価値の分布を推定することでネットワークが行動価値関数の近似をよりよく学べるようになっている、というのが実験の結果からも見えます。後述するRainbowでもカテゴリカルDQNは優先度付き経験再生とともに性能向上に最も貢献した要素であることがわかっています。

下図はカテゴリカルDQN(51の分布ビン)をダブルDQNと比較した結果です。

画像元:論文

2.6. ノイジーネットワーク🔝

DQNを含むQ学習ではε-greedy法によってランダムに行動選択する探索の要素を取り入れている。これは初めから行動価値が高いものだけを選ぶと別の行動を取る可能性がなくなり十分な探索が行えないからだ。

ノイジーネットワークでは探索を行うためにネットワークの重さ自体に正規分布からくる乱数を与えている。学習可能なパラメータによってネットワークは必要に応じて乱数の大きさをコントロールできる。よって、DQNやその他の派生DQNに適用すればε-greedy法を使う必要がなくなり、常に最高価値の行動を選ぶことで必要に応じて探索行動を取れるようになる。

乱数は全結合層に追加した形で与えられる。

$y = (b + W x) + (b_\text{noisy} \odot \epsilon^b + (W_\text{noisy} \odot \epsilon^w)x)$

上式の$b + W x$が通常の全結合層の部分で、$b_\text{noisy} \odot \epsilon^b + (W_\text{noisy} \odot \epsilon^w)x$が乱数の部分。$\epsilon^b$と$\epsilon^w$は乱数で$b_\text{noisy}$と$W_\text{noisy}$は学習可能なパラメータになっている。$\odot$は要素ごとの積。

ノイジーネットワークはオリジナルのDQNやデュエリングネットワークよりも高得点を出すことができた。

画像元:論文

2.7. Rainbow🔝

Rainbowは上述したDQNとその派生の全てを組み合わせたもので、性能が飛躍的に上がっている。

画像元:論文

上図のA3C(Asynchronous Advantage Actor-Critic)は分散方強化学習を取り入れたもので、複数のCPU・GPUを使って非同期・並列に学習を行うため学習が収束する速度が速くなっています。

また、Rainbowの論文では課題として内発的報酬(intrinsic reward)などを取り入れていきたいと語られています。内発的報酬は赤ん坊の好奇心の自発的に生じる報酬を強化学習に取り入れたものです。

2.8. Agent57🔝

DQNを開発したDeepMindの強化学習の研究はさらに進み、内発的報酬や記憶能力を加えてさらに発展しました。

画像元:DeepMind

2020年に発表されたAgent57はDeepMindにおける強化学習の成果を集結したもので、Atari2600の全てのゲーム(57個)で人間のスコアを初めて上回ることができた深層強化学習モデルです。

画像元:論文

3. ボードゲームAI🔝

深層強化学習の応用でボードゲームなどの攻略を行うゲームAIも盛んに研究されています。

囲碁、将棋、チェスなどのボードゲームでは以下の特徴があります。

  • 盤面や相手の持ち駒などが全て見えている
  • 偶然の要素がない(相手のコマを取る行動が偶然失敗することはない)
  • ゼロサム(ゼロ和)性。どちらか一方が勝ち、他方が負ける。
  • 時間が無限にあれば(つまり、理論的には)探索木を全て展開して必勝法を見つけられる

実際には時間に制限があるので探索木を効率的に探索する方法が必要となります。

3.1. モンテカルロ木探索🔝

モンテカルロ木探索は、ある局面からゲームが終了するまでを完全にランダムにシミュレーション(プレイアウト)し勝敗を決めます。このプレイアウトを何度も繰り返すことで、どの次の一手を打つと勝つ割合(確率)が高いのかがわかってきます。2000年代前半に考案され囲碁AIの分野で成果を出したが、まだトップ囲碁士に勝つ実力はなかった。

3.2. アルファ碁🔝

2016年にDeepMindが開発したゲームAIであるアルファ碁(AlphaGo)がトップ囲碁士のイ・セドル9段に勝利しました。アルファ碁はモンテカルロ木探索と深層強化学習を組み合わせたモデルです。

アルファ碁は盤面から勝率を計算するバリューネットワークと次の手を決めるポリシーネットワークがある。これらのネットワークは人間の棋譜データを使った教師あり学習を行なったの後にアルファ碁同士の自己対戦(self-play)による経験を使って深層強化学習で訓練された。

人間の棋譜を教師データとして、SL Policy(Supervised Learning Policy Network)が入力盤面から次の盤面を予測するよう教師あり学習を行います。SL Policyが人間の経験から学ぶことにより、強化学習における無駄な探索をする必要がなく効率的に学習できると考えられました。また、盤面の状態を取り入れるために19×19の値を扱うCNNを使用しました。

SL Policyで何手か先まで読んだ後に、終局までの盤面をシミュレーションするためのRollout Policyが必要になります。Rollout Policyはスピードが要求されるので単純なネットワークを使います。これも人間の棋譜で学習させておきます。精度が低いのですが、スピードが速いのでモンテカルロ木探索におけるプレイアウトに相当する部分を担当することができます。これによってSL Policyが読んだ手の良し悪しを予測することができます。

このようにしてSL PolicyとRollout Policyは盤面を入力として人間の棋士の次の手を予測できるようになります。

次にSL PolicyをコピーしてRL Policy(Reinforcement Learning Policy Network)を作ります。このRL Policyとランダムに選ばれた相手(これまでに学習されたもの)とを対戦させ、RL Policyに方策勾配法による強化学習をさせます。ランダムな相手を選ぶのは過学習を防ぐためです。これを繰り返すことでRL Policyはどんな相手と対戦しても、あらゆる盤面において常に最善の手を打つように訓練されます。

こうしてRL PolicyはSL Policyに対して8割以上の勝率を上げられるようになりました。次にRL Policy同士の対戦からたくさんの棋譜データを作りました。このデータでは全ての盤面での勝率がわかります。このデータを使ってValue Networkに教師あり学習をさせます。このValue NetworkはRollout Policyによる勝敗の予測を上まる精度を出しました。

論文によると、最終的にはSL PolicyとValue Networkの組み合わせをモンテカルロ木探索に組み込んだAlpha碁が最も勝率が高かったそうです。「人間はたくさんの良い展開を含めた次の手を指しているのに対し、RL Networkは一つのベストな展開だけを考えるからではないか」とのことです。人間は不確実性を見越してどう転んでも勝率が高くなるように次の手を打つからということだと思いますがはっきりとはよくわかりません。

…presumably because humans select a diverse beam of promising moves, whereas RL optimizes for the single best move.

引用元:論文

しかし、次のアルファ碁ゼロでは、SL Policy自体がなくなるので今となってはあまり追及する必要もないかもしれません。

3.3. アルファ碁ゼロ🔝

2017年10月にアルファ碁ゼロ(AlphaGo Zero)が発表されました。人間の棋譜データを学習で一切使わずに、アルファゼロ同士の自己対戦を繰り返して得たデータのみで深層強化学習を行いました。結果として、アルファ碁よりも強いゲームAIになりました。また、アルファ碁では複数のネットワークを訓練しましたが、アルファ碁ゼロでは一つのネットワークにまとめられており、学習にかかる時間が短縮されました。

3.4. アルファゼロ🔝

2017年12月にはアルファゼロ(Alpha Zero)が発表されました。囲碁だけでなく、将棋やチェスでも自己対戦のみで学習し人間より強いゲームAIを圧倒する性能を達成しました。

4. 複数エージェントのゲームAI🔝

マルチエージェント強化学習(multi-agent reinforcement learning、MARL)はチームでプレイするゲームにおいてゲームAIが複数のエージェントを操り、人間のチームと対戦するものです。

4.1. OpenAI Five🔝

2018年、OpenAIはOpenAI Fiveを発表しました。MOBA(multiplayer online battle arena)と呼ばれる多人数対戦型ゲームDota2で人間のチームに勝てるほどの実力を持つゲームAIです。

PPO(Proximal Policy Optimization)という強化学習アルゴリズムを使って学習した5つのエージェントのチームで世界トップレベルの人間のチームに勝利しました。

5万個以上のCPUと1000個以上のGPUを使って10ヶ月に渡って強化学習を行ったそうです。

4.2. アルファスター🔝

2019年にDeepMindはRTS(real-time strategy)の対戦型ゲームであるスタークラフト2でグランドマスターの称号をもつトッププレイヤーに勝てるゲームAIアルファスター(AlphaStar)を発表しました。

アルファスターはResNetLSTMPointer Networkトランスフォーマーなど画像処理や自然言語処理のモデルを取り入れたネットワークを使って学習を行いました。強化学習にはゲーム理論や自己対戦の発展形を使うなど人工知能技術の集大成的なアルゴリズムになっています。

5. 実システム制御への応用🔝

ロボット制御など深層強化学習を実システムに応用する取り組みが盛んになっています。ここではロボット制御における課題と対策をまとめます。

5.1. ロボット制御に応用する際の課題🔝

ゲームなどよりもより複雑な環境を扱う必要があるのが課題の根幹にある。

課題説明
状態表現学習(state representation learning)センサや制御信号のデータは高次元であり次元の呪い(curse of dimensionality)が生じる。ディープラーニングの特徴表現の学習能力をいかに活用するのかが課題。
連続値制御(continuous control)行動制御では(ゲームでの離散的な行動選択とは違って)行動表現が連続値(ロボットアームの間接角など)になっている。
報酬成型(reward shaping)実システムにはゲームスコアのような報酬関数が備わっていない。最終的な目標を達成するように学習を行うための報酬関数を設計する必要がある。
サンプル効率強化学習は学習時に多くのサンプルを必要としサンプル効率が悪い(報酬や価値といった弱い情報で学習するため)。実機で訓練すると時間がかかりすぎる。
安全性の担保ロボットが故障したり、人間に危害を与えるリスクがある。安全性を担保する仕組みを取り入れる必要がある。

5.2. 課題に対する解決策🔝

タスクに関する事前知識(ドメイン知識、domain knowledge)をいかに学習に組み込めるかが要点となる。

対応策説明
オフライン強化学習(offline reinforcement learning)オフラインデータ(事前に集められたデータ)で学習する。オンライン強化学習(環境からインタラクティブにデータを収集し学習する)よりも効率的な学習ができる。
模倣学習(imitation learning)人間の行動(デモンストレーション)を参考にして期待される行動(方策)を学ぶ。人間がロボットをコントロールして例を示す。人間が下手だとロボットも下手になるのが難点。
シミュレータの利用(sim2realシミュレータで学習した方策を現実世界に適用する手法は低いコストで大量のデータを生成できるのが利点。実世界では様々な変動性があるのでドメインランダマイゼーション(domain randomization)は複数のシミュレータから得た光源、テクスチャ、向きなどの情報をランダムに追加してネットワークが物体の本質を抽出できるように訓練する手法でOpenAIのルービックキューブを解く片手ロボットでも使われた。
残差強化学習(residual reinforcement learning)既存の制御手法と最適な方策の差分を強化学習によって学ぶ手法で、サンプル効率や安全性が高い。2019年にGoogleとプリンストン大学が発表したTossingBot(ロボットアームが様々な物体を掴んで指定された箱に投げ入れる)で運動方程式ベースの制御モジュールの出力を調整する残差強化学習が使われた。
環境モデルの学習環境に関する予測モデルを活用して方策の学習を行うことをモデルベース(model-based)強化学習と呼ぶ。なお、環境の遷移状態を明示的に学ばない場合はモデルフリー(model-free)と呼ばれる。モデルべース強化学習の方がサンプル効率が良いとする報告がある。エージェントが環境から得た情報を使って予測するモデルや枠組みを世界モデル(world model)と呼ぶ。

下記の動画はシミュレーション環境における模倣学習による運転の例です。



コメントを残す

メールアドレスは公開されません。