【E資格不合格から学ぶ】A3C(強化学習)のポイントを解説!

  • 「A3C(強化学習)」について学びたいけど理解できるか不安・・・
  • 「A3C(強化学習)」を使うメリットが分からない?
  • 「A3C(強化学習)」を体系的に教えて!

 「A3C」は複数のエージェントが同一の環境で非同期に学習する強化学習法の一つで、DQN(深層Qネットワーク)より短い演算時間で高い性能が得られるモデルすが、よく理解できないケースが非常に多いです。ここでは、「A3C」について要点を解説します。

 私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。現在、「E資格」にチャレンジ中ですが3回不合格になり、この経験から学習の要点について学ぶ機会がありました。

 そこでこの記事では、「A3C」のポイントについて解説します。

 この記事を参考に「A3C」のポイントを押さえることができれば、E資格に合格できるはずです。

<<「A3C」の学習のポイントを今すぐ知りたい方はこちら

目次

1.A3Cとは?

A3C開発の背景

強化学習の長年の課題
経験の自己相関が引き起こす学習の不安定化

DQN(DeepーQ Network) による課題解決策

経験再生(Experience Replay)機構を用いる。
経験(バッファに蓄積)をランダムに取り出すことで経験の自己相関を低減


経験再生はオフポリシー手法でしか使えない

A3Cによる課題解決策

オンポリシー手法であり、エージェント(サンプルを集めるを並列化
自己相関を低減

A3Cとは・・・
  • A3CAsynchronous Advantage Actor-Critic
  • 強化学習の学習法の1つ:DeepMindのVolodymyr Mnih(ムニ)のチームが提案
  • 特徴:複数のエージェントが同一の環境で非同期に学習すること
“A3C”の名前の由来とは・・・

3つの”A“とは・・・

  • Asynchronous ⇒ 複数のエージェントによる非同期な並列学習
  • ②Advantage ⇒ 複数ステップ先を考慮して更新する手法
  • Actor-Critic ⇒ 方策によって行動を選択状態価値関数に応じて方策を修正

Actor-Criticとは
 行動を決めるActor(行動器)を直接改善しながら、方策を評価するCritic(評価器)を同時に学習させるアプローチ

引用:Sutton,Berto,”Reinforcement Learningーan introduction.”1998

Actor-Criticの概要

【AC3による非同期(Asynchronous)学習の詳細】

  1. 複数のエージェントが並列に自律的に、rollout(ゲームプレイ)を実行し、勾配計算を行う
  2. その勾配情報をもって、好き勝手なタイミングで共有ネットワークを更新する。
  3. 各エージェントは定期的に自分のネットワーク(local network)の重みをglobal networkの重みと同期する。
  • 共有ネットワーク=パラメータサーバ
  • 非同期であるため、方策モデルにRNNモデルLSTMモデルを適用可。(時系列データに対応可)
AC3による非同期(Asynchronous)学習の詳細

参考論文:https://arxiv.org/abs/1602.01783

1.1 並列分散エージェントで学習を行うA3Cのメリット

A3Cのメリット
  • ①学習が高速化
  • ②学習が安定化

1.2 AC3のデメリット

  • Python言語の特性上、非同期並列処理を行うのが面倒
  • パフォーマンスを最大化するためには、大規模なリソースを持つ環境が必要

1.3 A2Cについて

  • A3Cの後にA2Cという手法が発表された。
    A2Cは同期処理を行い、Pythonでも実装しやすい。
  • 各エージェントが中央指令部から行動の指示を受けて、一斉に1ステップ進行し、中央指令部は各エージェントから遷移先状態の報告を受けて次の行動を指示する。
  • 性能がA3Cに劣らないことが分かったので、その後よく使われるようになった。

2.分岐型 ActorーCritic ネットワーク

〈一般的なActor-Critic〉方策ネットワークと価値ネットワークを別々に定義し、別々のロス関数(方策勾配ロス/価値ロス)でネットワーク更新



〈AC3〉
パラメータ共有型のActor-Critic:
1つの分散型のネットワークが、方策と価値の両方を出力し、1つの「トータルロス関数」でネットワーク更新

2.1 ロス関数

  • ロス関数は3項目で表せる:
    • ①アドバンテージ方策勾配
    • ②価値関数ロス
    • ③方策エントロピー
  • Total loss = アドバンテージ方策勾配 +α・価値関数ロス ーβ・方策エントロピー
    • 係数α:ハイパーパラメータ
    • 係数β:ハイパーパラメータ(探索度合いを調整

2.2 アドバンテージ方策勾配項

  • 方策勾配法では、θをパラメータに持つ方策nθに従ったときの期待収益ρθが最大になるように、θを勾配法で最適化する。
  • 方策勾配定理により、パラメータの更新に用いられる勾配Δθρθは、以下の式で表される。
勾配Δθρθの数式
勾配Δθρθの数式
  • Actor:方策
  • Critic:価値関数
  • b(s):価値の「ベースライン」のこと。これを引くことで、推定量の分散が小さくなり学習の安定化が期待できる。
REINFORCEアルゴリズムActor-Critic法
b(s)の取り扱いb(s)=0として、サンプルされた収益Qπθ(s,a)を推定パラメトリックな価値関数を用いて収益Qπθ(s,a)ーb(s)を推定
REINFORCEアルゴリズムとActor-Critic法の比較
  • (式1)の中の「Q(s,a)ーb(s)」にアドバンテージ関数を設定する
    具体的には勾配を推定する際に、
    b(s)の推定:価値関数 V(s)、
    Q(s,a)の推定:kステップ先読みした収益(式2)を用いる
kステップ先読みした収益を表した数式
kステップ先読みした収益を表した数式

つまり、下式(式3)の期待値が(式1)の勾配と等価

式1に式2を代入した時の方策勾配法の数式
式1に式2を代入した時の方策勾配法の数式

2.3 Atari 2600 における性能検証

A3Cの性能結果
  • Atari 2600において、人間のスコアに対して規格化した深層強化学習の結果で性能を検証
  • 結論:より短い訓練期間でGPUなしでも、A3Cのスコアが顕著に高い
    • A3C:16 CPUコアのみ使用、GPU使用なし (1~4日間の訓練
    • 他のエージェント:Nvidia K40 GPUを使用8~10日間の訓練
〈参考〉A3Cアルゴリズムの方策エントロピー項
方策エントロピーを表した数式
  • 方策のランダム性の高い(=エントロピーが大きい)方策ボーナスを与えることで、方策の収束が早すぎて局所解に停滞する事態を防ぐ効果がある。
  • 方策エントロピー項の追加は、方策関数の正則化効果が期待できる。
〈追記〉方策のランダムさの指標

ある状態sの入力について出力される行動の採用確率が下記の①②の場合、

  • ① (a1,a2,a3,a4)=[0.25,0.25,0.25,0.25]の場合
  • ② (a1,a2,a3,a4)=[0.85,0.05,0.05,0.05]の場合

①の場合の方が方策のエントロピーが大きい状態である。

※A3Cの実装の参考(TensorFlow Blogより)
https://blog.tensorflow.org/2018/07/deep-reinforcement-learning-keras-eager-execution.html

3.まとめ

【A3Cの特徴】
  • Asynchronous ⇒ 複数のエージェントによる非同期な並列学習
  • Actor-Critic法
    方策:Actor
    価値関数:Critic
    収益:Qπθ(s,a)ーb(s) ← パラメトリックな価値関数を用いてを推定
  • 方策勾配法の数式
方策勾配法の数式
方策勾配法の数式
  • Atari 2600において、マルチスコアCPUマシン にて「A3C」は「DQN」よりも短い演算時間で高い性能が得られる。

最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次