下町データサイエンティストの日常

下町データサイエンティストの成果物

OpenAIのかくれんぼ強化学習の論文を読んだ

f:id:pira_nino:20200330173129p:plain

論文: Emergent Tool Use from Multi-Agent Interaction

昨年 2019/09/17にOprnAIが出したかくれんぼ(hide and seek)強化学習論文を読んだので、備忘がてらブログにメモ。
メモなので、正確に書いていないことだけはご了承ください。。。
タイトルは"Emergent Tool Use from Multi-Agent Interaction" という論文。
かわいいagent君達がかくれんぼを学習していく様子からは想像つかないタイトルですね(小並)

arxiv.org

openai.com

www.youtube.com

また、「そもそも強化学習とは?」といった基礎的な話題は割愛させていただくことをご了承ください。。。

(余談) 白金鉱業fmのコンンツのために読んだ

白金鉱業fm という有志メンバーでのpodcastを定期的に収録しています。
「ちゃんと技術を語る回を定期的に録ろう」となり、nino_piraも何か話そうとの流れになり、「そういや、かくれんぼ強化学習の論文とかリスナーにウケそう」と思い論文をまとめることにしました。
収録drivenラーニング」ですね(小声)

技術回のとしては初回のNGBoost回、なかなか良かったので宜しければ聞いてください。機械学習に少し精通している方ならば、NGBoost完全に理解したレベルまでいけると思います。

shirokane-kougyou.fm

shirokane-kougyou.fm

アブスト

  • かくれんぼというシンプルなタスクにおいて、マルチエージェントのセルフプレイで6段階の複数段階の戦略を学習できた
  • 段階的戦略の例:隠れる側のagentが箱を使い見つける側のagetの侵入を防ぐ -> 見つける側のagentがジャンプ台を使って乗り越える
  • このように見つける側と隠れる側の戦略が相互関係を持って学習が進んでいった
  • 評価:かくれんぼを事前学習とし、他タスクにfine-tuneさせた際に0からの学習や内発的報酬との比較を行なった

気なったこと / メモ
アブストではモデルの話はしていないんですね。(確かにモデル自体はシンプルです。)

1. イントロダクション

近年の強化学習の取り組みの限界

  • 長年、人間の物理的な世界の物体を感知して、相互作用を行うagentの強化学習の研究が取り組まれている。
  • 特定のタスク(環境)下で強化学習を行うアプローチが知られている
  • しかし、報酬設計の難しさや教師となるデモンストレーション獲得のために莫大な時間とコストがかかる問題がある
  • さらに、一つの環境で学習してしまうとさらなる向上性は見込むことは難しい(汎化性能の話)
  • 直接的な教師あり学習(環境から与えられる外部報酬)のみでは、スケーリング性が乏しいので、教師なし学習や内発的報酬のアプローチがある
  • しかし、教師なし学習は環境の複雑性に合わせた拡張性が乏しく、ドーキンスのnatural selection的ではない(急に壮大な話)
  • バックギャモン / 囲碁 といった古典的な離散ゲーム、Dotaのようなリアルタイムマルチエージェントタスクでは強化学習の成功事例があるが、現実の物理的世界におけるタスクとは異なる。

気になったこと / メモ
「物理環境でのタスクを解くぞ」という意思表明に感んじた。
ヒューマノイドを走らせるる研究は、走らせる場所が変化(例:平面を走るか、斜面を走るか)してもイケるので、その論文の紹介例も出せばいいのにと思った(小並)

本研究では、、、

  • かくれんぼの環境を導入する
  • agentの可視性に基づく(例:見つける側が隠れる側を視認できているか)報酬を元に学習を行う
  • ドアやバリケードなどの物理オブジェクトをagentが自身のニーズに合わせて動かせるので、環境も動的に変化する。
  • 学習を進めると、より複雑な環境になっていくことが確認された。
  • 人間が解釈可能な行動になっていくことも示された。

f:id:pira_nino:20200330122651p:plain

解釈可能な6段階の学習
(a) 見つける側(赤)隠れる側(青)を追いかけることを学び、隠れる側は見つける側からに逃げることを学習
(b) 隠れる側は壁などの道具の使い方を学習し、シェルターを作るようになった
(c) 見つける側はスロープを使ってジャンプし、る隠れる側のシェルターに飛び込むことを学習
(d) 隠れる側は、スロープを隠すことを学習
(e) 見つける側は、スロープを使わずとも、固定されていない箱の上に乗り慣性でジャンプできる(Box surfing = 箱サーフィン)ことを学習
(f) 隠れる側は、固定されていない箱を固定することを学習する

転移学習 / fine-tuning

  • 環境の多様性が大きくなりすぎると、学習が進みづらくなる
  • そこで、ターゲットを絞って事前学習を行ったagentを用いることで、0からの学習するagent / 内発的動機で学習されたagentよりも、早く学習 or 高いパフォーマンスが得られた

本研究のコントリビューション

(1) マルチエージェントのセルフプレイが、お互いの戦略を加味した戦略を学習する可能性があることを示した
(2) 物理的な環境では、道具を使うなど実世界で人間が行いそうな戦略を学習することを示した
(3) 転移学習 / fine-tuningの有効性を示した
(4) これらのコードをオープンソースで公開した

気になったこと / メモ
雰囲気を掴めたと思うので、アルゴリズムに興味ない方は6.評価まで飛ばしても良いいと思う。
6章のfine-tinningの話は非常に面白いので、MUSTで読んで欲しいです。

2. 関連研究

(省略気味で)

  • マルチエージェントの歴史
  • 内発的動機の話
  • 道具使用の話(本研究では、エージェント間の戦略を見てでツールの使い方を学習していく)

3. かくれんぼのタスク説明

かくれんぼの設定

  • チームベースの報酬
    • 隠れる側のagent全員が見つける側の視界に入っていなければ、隠れる側に+1点、見つける側-1点
    • 逆に隠れる側のagentが1人でも見つける側の視界に入っていれば、隠れる側に-1点、見つける側+1点
  • 無限に逃げられても困るので、18m四方のエリア外に逃げ出したら-10点
  • agentが掴んで動かせるオブジェクトが散財している
  • 動かせない壁や部屋もランダムに散財している
  • 1ゲームは240stepsだが、最初の40%(=96step)は隠れる側だけが動け、オブジェクトを動かしたりたりできる準備時間が用意されている(準備時間の報酬は0)

環境設定

  • MUJOCO(物理エンジン)で実装
  • ステージ設定
    • 見つける側1~3人
    • 隠れる側1~3人
    • 3~9個の可動する箱(最低3個は細長い形状)
    • 2個の可動スロープ
    • ランダムに生成された動かせない壁と部屋
  • agentが観測できる変数
    • 物体と他agentの、、、
      • 位置
      • 速度
      • 大きさ(形がランダムな箱)
    • 視界は135度(視界外の物体や他agentの情報はマスキング)
  • 残り準備時間

  • agentが取れる行動

    • 自身が動く:x, y軸で離散化された力とz軸方向のトルク
    • 物体を掴む or 離す
    • 可動な物体を固定する(最初に固定したagentのみ固定解除可能)

4. 方策の最適化

  • セルフプレイで学習される
  • 1つのagentが学習するネットワークは2つ
    • 方策ネットワーク:ある状態で、とるべき行動を推定するネットワーク(正確には分布)
    • criticネットワーク:割引報酬和を予測するネットワーク (Q値とかのこと)
  • 方策ネットワーク
    • Proximal Policy Optimization (PPO):方策勾配法にKL情報量の制約をかけたTRPOに対し、さらに方策の更新量の項にclipをかける手法
    • Generated Advantage Estimatio (GAE)(一般化報酬):どう説明するべきか分からないが、TD-ラムダっぽい目的関数に変更する手法
  • 分散学習
    • 学習時には中央集権で各agentの履歴を元にに学習
  • ネットワークは下図
    • 各要素をembedding化
    • agentから見えていない要素のembeddigはマスキング
    • concatしてself-attentionレイヤーに突っ込み、poolingしてLSTM f:id:pira_nino:20200330142044p:plain

気になったこと / メモ
ネットワークは単純だが、ここにもattention登場してくるのか、、、、

5.自動カリキュラムと創発的行動

  • 上記6つの戦略の学習は、Multi agentが道具を使ったりなど勝手に創発的に学習が行われている
  • それぞれの戦略を学習するのに、数千万epidodeかかったことが書いてある
  • チームプレイを学習した(隠れる側1人のときよりも、2人, 3人チームにすると、箱サーフィン防止のための箱をロックする個数が25, 36%up )
  • 隠れる側と見つける側の相互作用で創発的戦略が生まれる(例:見つける側がスロープの移動と使用を学習すると、ゲームのメインフェーズでのスロープの動きが増加し、「箱サーフィン」を学習すると、ゲームのメインフェーズでの箱の動きがわずかに増加)
  • バッチサイズを大きくすると、学習効率がよくなる(8K、16Kでは収束せず)
  • 学習中に環境を変えることでロバストな学習ができた

6. 評価

  • 単純に報酬の履歴を見ることは、エージェントが均等に学習しているかの評価を示せないので不十分な評価指標

vs 内発的報酬

  • カウントベースの内発的報酬を与える解き方を行うと、1agentの時には箱の移動が最大になるが、2-3agentにすると移動が大幅に減少する。これは探索空間が大きくなりすぎるとagentが探索すべき次元を探すのが困難になり、カウントベースの内発的報酬の限界があることを示している。
  • また、RND(ランダムなターゲットネットワークの出力との差内発的報酬にする手法)を使うと若干良くはなる。

かくれんぼを事前学習とし、新しいタスクにfine-tune

  • かくれんぼで学習されたネットワークを用いて他タスクをfine-tune
  • 「認知/記憶タスク」と「操作タスク」の2種類のどちらかに分類される5つのタスクを準備(タスクの詳細は付録C参照)

    • 認知/記憶タスク

      • Object Counting:固定されたagentが、左右のステージ外まで動く箱を見て、左右にそれぞれ何個の箱が移動したかを数えるタスク(LSTM層から(多分)Denseで連続値を出力するネットワーク)
      • Lock and Return:6このランダムな部屋のうち1つからスタートしたagentが部屋外の箱を固定した後、同じ部屋に戻って来れるか
      • Sequential Lock :3つの部屋にランダムに配置された総計4つの箱を正しい順番通りにロックする(正しい順番を見つけることを学習)(部屋間の移動はジャンプ台を使う)
    • 操作タスク

      • Construction From Blueprint:8個の箱を1-4箇所設置されたtarget siteに配置する
      • Shelter Construct:3つの細長い箱、5つの立方体の箱を使って、1つの動かせないシリンダーの回しにシェルターを作る
  • 結果

    • 比較手法

      • (メイン)かくれんぼで学習済のネットワークを元にfine-tune
      • ゼロから学習
      • カウントベースの内発的報酬
    • かくれんぼを事前学習としてfine-tuneすると比較手法に比べ、、

      • 精度微向上: Lock and Return / Sequential Lock / Construction From Blueprint
      • 精度微低下:Object Counting (セロベースは精度低)
      • 最終的に同精度だが、遅い:Shelter Construct
    • 考察

      • 精度が向上したタスクはかくれんぼで学習した特徴量が有効であった
      • 低精度のタスクには、かくれんぼで学習した行動の応用(転用)が難しいと考えれる
      • →ある環境で訓練されたポリシーから別の環境へスキルを効果的に再利用する技術の開発の必要性を示している
        • さらに将来の環境が多様化し、agentがより多くの文脈でスキルを使用しなければならないようになれば、このように他タスクへの応用性を評価することで、より一般化可能なスキル表現を評価できる可能性
      • 例えばかくれんぼの解釈可能な6段階の学習の各段階を初期値として、Lock and Returnにfine-tuneさせることで、かくれんぼの学習が汎用的な学習を行えているかの評価が行える。
        • 付録A.5が面白かったので触れます
          • Lock and ReturnはPhase6を初期値とするとPhase1を初期値とした際よりも大幅に向上
          • Object CountingはPhase1がベストで、他Phaseでは全然ダメ。つまり物を数える能力は忘却されている可能性
          • 操作タスクはPhaseに依存しない。(へー。汎化性が学習されていないのか、Phase1で十分学習されていたのか、簡単なタスクだからだろうか?)

f:id:pira_nino:20200330181139p:plain

気になったこと / メモ

  • fine-tuneさせて、他タスクに適用できるかでモデルの評価を行うのは面白い
  • NLPや物理環境化での強化学習といった「人間の感覚」や「実世界で一般的な動作か」を評価する上で、fine-tuneで評価を行うことに勝手に納得した
    ( Bertも「pre-trainさせたモデルを他タスクにfine-tuneしても汎化的に精度が高くて凄いね」って主張しているし、まぁ自然なアプローチ)

7. ディスカッション / 今後の課題

  • 単純なルールのゲーム、マルチエージェント競争、標準的な強化学習アルゴリズムを用いてagentに複雑な戦略とスキルを学習させることができることを、大規模で実験で実証した
  • 評価指標とし、転移学習を用いたアプローチを提案した。
  • これらの結果は、マルチエージェントの自動カリキュラムが物理的に根拠のある人間に関連した行動につながることを示した。
  • 今後の課題
    • 莫大なepidsode回学習させたが、更に効率的な学習サンプルに取得方法
    • 箱サーフィンなど、物理シユレータの穴をついた行動をしてきたので、シミュレーターの改修

論文を読んでみて感想

論文のタスク自体は人間にも直感的で非常に面白かったです。また、デモ映像として公開されているyoutubeが可愛い&最後が意味深で凄く好きです。

また、毎回強化学習の論文を読むたびに

  • じゃぁ何に使えるの!?
  • 計算時間エグい

と思います。まだまだビジネス適用は難しい分野ですね。。。