TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Learning to Play Minecraft with Video PreTraining (VPT)を読む

OpenAIが発表したマインクラフトの操作を学習した「Learning to Play Minecraft with Video PreTraining (VPT)」の論文を読んだ際のメモです。

概要

  • 請負業者(フリーランス)に依頼して作成した7000時間分のキーボード・マウス操作のラベル付き動画からIDM(逆ダイナミクスモデルを学習
  • IDMモデルを使用してインターネット上にあるラベルなしの動画に疑似ラベルを付与
  • 疑似ラベルを付与した2万時間の動画から行動クローン(BC)モデル(VPTファンデーションモデル)を作成
  • VPTファンデーションモデルを、強化学習でファインチューニングすることで、ダイアモンドのつるはしを作成できるようになった


問題の難易度

マインクラフトは、報酬が階層的になっており、ダイアモンドのつるはしを作成できるようになるには、木を切って、作業台を作って、石のつるはしを作って、・・・・といった何段階もある目標を達成する必要があります。
通常の強化学習の手法で学習するのはほぼ不可能です。

数年前からマインクラフトの強化学習コンペティションが行われていましたが、ダイアモンドを獲得したエージェントはない状況でした。
去年インターン生がコンペティションに参加しましたが、石のつるはしを作るのがやっとでした。

手法の新しさ

少量のラベル付けした動画から、前後のフレーム間で何の操作が行われたかを予測するモデル(IDM)を構築しています。
過去フレームから次の操作を直接学習するのに比べて、未来のフレームを使うことで、問題の難易度が大きく下がるようです。

IDMモデルで、疑似ラベルを付与することで、ラベルなしの動画を活用できます。
ラベルなしの動画はインターネット上に大量にあるため、データ収集が容易になります。
疑似ラベルを付与した大量の動画から、行動を学習することで、人間が行うような基本動作(木を切る、クラフトする、作業台を作るなど)ができるエージェントを作ることができます。

インターネット上の動画

Youtubeから、キーワードで検索して収集しています。

動画からゲームのプレイ中の綺麗な範囲を取得するために、RN50x64 ResNet CLIP Modelの学習済みモデルを使用して、画像の埋め込みを取得し、SVMの分類器を学習しています。
分類のラベルは、Amazon Mechanical Turk (mTurk)で発注して付与しています。

発注の方法とか単価や1画像の作業時間とかも書かれていて、実務的な内容で参考になりました。

操作のラベル付け

UpWorkフリーランスプラットフォームで募集しています。
バグのために使用できなかったデータも含めると実験すべてで、16万ドルの費用が掛かっています。

強化学習の元になったモデル構築には、2000ドル相当データのみ使用したようです。

モデル構成

IDMモデル

IDMモデルは、入力層で時系列の画像を扱うため3D畳み込みを使用し、その後にResNetを使用し、出力はフレームごとのアクションになっています。
入力画像の解像度は、128×128です。内容が判別できる最小の解像度ということです。

ResNetブロックの後ろには、トランスフォーマーブロックがあり、出力層は、フレームごとに独立した全結合層になっています。

アクションは、マウスの動きをビンに分けて次元を抑えています。

モデルのパラメータ数は5億です。
参考までにdlshogiの20ブロック256フィルタのモデルは、約1億です。

IDMモデルの学習は、請負業者がラベル付けしたデータセットを20エポック学習して、32個のA100 GPUで4日かかっています。

ファウンデーションモデル

IDMモデルとほぼ同じですが、未来のフレームを見ることができないため、最初の層が除かれています。

トランスフォーマー層は、因果的にマスクが行われ、Transformer-XLスタイルの訓練を行います。

訓練のテクニックとして、人間は何もしない操作が35%を占めるため、連続して何も操作していしないフレームを除く、ヌルアクションフィルタリングが有効だったようです。

強化学習によるファインチューニング

強化学習アルゴリズムには、PPGとPPOを使用しています。

PPG(Phasic Policy Gradient)は、方策は同じデータを複数回学習すると過剰適合することを防ぐために、方策をフェーズと価値を学習するフェーズに分けて学習する方法です。
価値関数の最適化は、同じデータを複数回使用することに感度が低いという仮説に基づいた方法です。

強化学習により、人間の操作を忘却することが起きるため、事前学習したモデルの行動分布とのKLダイバージェンスを損失に加えています。
ただし、割合を徐々に減らして、新しい探索を促進しています。

報酬設計

ダイアモンドのつるはしを入手するまでの報酬は階層的に設計されています。
低い報酬のアイテムが大量に収集されることを防ぐため報酬獲得の最大回数が定められています。

強化学習には、80GPUと56,719CPUを使用して、約6日間(144時間)実行されています。

応用可能性

「木を切って木の斧を作りましょう」といったテキストによる指示による操作が可能になることを示唆しています。
ただし、現状では、この目標を達成するには至っていません。

まとめと感想

マインクラフトという難易度の高いタスクが、比較的少ないラベル付けされた動画と、ラベルなしの大量の動画により学習できることが示されました。
この技術が成熟すれば、RPAなど実務への応用範囲も広そうです。