LoginSignup
30
25

More than 5 years have passed since last update.

ML-Agents v0.3のImitation Learning(模倣学習)サンプルで個性的なAIを作成してみた

Last updated at Posted at 2018-05-15

はじめに

ML-Agents v0.3からImitation Learning(模倣学習)が追加されたということで、このサンプルを使って個性的なAIを作成してみました。
まだあまり日本語のドキュメントがなく、TensorFlowによる学習環境の作成も必要なため、サンプル実行のための手順も合わせて簡単に説明します。

Imitation Learning(模倣学習)とは

Unite2018のML-Agentsに関する講演資料(リンク)を読んで理解して程度ですが、Reinforcement Learning(強化学習)とImitation Learning(模倣学習)は以下のような違いがあります。

・強化学習:報酬に対して最適な行動をするように学習する。報酬の仕組みによっては人間の思いもよらないような行動も可能。
・模倣学習:教師となる人間の行動をもとに学習する。人間の失敗を含めて学習するので、人間臭い動きになる(教師の個性が出る)。

環境

・Windows10(64-bit)
・Unity 2018.1.0f2 (64-bit)
・ML-Agents Beta 0.3.1b
・Miniconda3

TensorFlowによる学習環境を作成する

  1. Minicondaをインストールし、conda create --name mlagent python=3.5でpython3.5の環境を作成します
  2. conda activate mlagentで作成した環境をアクティベート
  3. {ML-Agentsの解凍パス}\ml-agents-0.3.1b\にカレントディレクトリを移動
  4. pip install -r ./requirements.txtで必要なモジュールをインストール

後続の手順で引き続きこのコンソールで作業するのでコンソールは閉じずに残してください。
閉じてしまったら、conda activate mlagentでアクティベート後に、{ML-Agentsの解凍パス}\ml-agents-0.3.1b\にカレントディレクトリを移動してください。

Imitation Learning(模倣学習)のサンプルのビルド

  1. {ML-Agentsの解凍パス}\ml-agents-0.3.1b\unity-environmentをUnity 2018.1.0f2で開きます。(バージョンが違いますが、そのまま開いて大丈夫)
  2. Assets\ML-Agents\Examples\BananaCollectorsにあるBananaImitationを開きます。 image.png
  3. あとはそのままBuild Settingsでビルド(出力先のフォルダ名はBananaImitationとしました。)
  4. 以下のファイルが出力されればOKです。

image.png

模倣学習させる

先ほど作成したTensorFlowによる学習環境で開いたコンソールに戻り、python python/learn.py {BananaImitationの出力先ディレクトリ\BananaImitation.exe --train --slowのコマンドを実行します。

コマンドが成功すればUnityのアプリが起動します。起動したらキーボードのWASDキーで黄色いバナナを頑張って獲得してください。
周りにいる生徒役のAIは最初はうまく動いてくれませんが、そのうち学習し、動いてくれるようになります。
image.png

学習したモデルを組み込む事前準備①(モデルのインポート)

数分間ゲームをプレイすると学習が完了し、自動的にアプリが終了します。ml-agents-0.3.1b\models\ppo配下に学習したモデルデータ(BananaImitation_ppo.bytes)が作成されているので、これをml-agents-0.3.1b\unity-environment\Assets\ML-Agents\Examples\BananaCollectors\TFModelsにコピーします。

学習したモデルを組み込む事前準備②(TensorFlowSharp in Unityのインポート)

Unity上で作成したモデルを動かすためにTensorFlowSharp in UnityのUnitypackageをダウンロードし、インポートします。
インポート後にPlayer Settings→Other Setttingsを開き、Scripting Define SymbolsにENABLE_TENSORFLOWの文字列を追加します。

学習したモデルを組み込む

  1. BananaImitationのシーンを開きます
  2. ヒエラルキービューのAcademyオブジェクトの子オブジェクトのStudentBrainを選択
  3. インスペクターでBrain TypeをInternalに設定
  4. 下にでてくるGraph Modelにインポートしたモデルを設定

image.png

実行結果

あとはPlayボタンを押せばAIが動きだします。私がやった結果はこんな感じになりました。まだ賢いとはいえませんが、バナナをとってくれていますね。
ダウンロード (2).gif

個性を出してみる

最初のモデルの学習時は紫色のバナナを取らないように、慎重に操作して学習させてみましたが、今度はアグレッシブに操作して学習させてみました。結果は以下のとおりです。元気ですね!
ダウンロード (3).gif

終わりに

今回は詳細な学習の設計まで踏み込めてはいませんが、サンプルを動かすだけで簡単に結果を得ることができました。
教師役のふるまいによって個性を持つので、是非自分だけのAIをつくってみて下さい!

30
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
25