takeda_san’s blog

KotlinとVRを頑張っていく方向。

ML-Agentsおさわり回

きっかけ

深層強化学習でリアアリスちゃんを己の力で歩かせたい!!!!

純粋な欲求をUnityとML-Agentsを使って叶えていきたい。
ML-Agentsとは、ゲームの敵AIの行動パターンなどをプログラミングではなく、深層強化学習と模倣学習を使って構築できるライブラリ。
Pythonの小難しい環境構築周りと、Unityとのコミュニケーションはうまいことラッピングされていて初学者でも比較的楽に使える印象。

今回は、目的の前段としてGetting StartedとシンプルなSceneを構築したときの感想を書いてみる。

環境

OS: Windows10
Unity: 2021.1
ML Agents: 1.0.7(Package Manager経由)
Python: Python 3.8(Anaconda)

基本的に書いている時点での最新を脳死で入れたら、エラー無く動きました。
Pythonは素でいれると毎回ハマるのでAnaconda使ってます。

やったことのおおまかな流れ

  1. Getting Started Guideで環境構築とサンプルの実行
    ml-agents/Learning-Environment-Create-New.md at main · Unity-Technologies/ml-agents · GitHub
  2. ML-Agents Toolkit Overviewでざっくり概要を把握
    ml-agents/ML-Agents-Overview.md at release_2_verified_docs · Unity-Technologies/ml-agents · GitHub
  3. Making a New Learning Environmentで自分でシンプルな構成のSceneを作っていろいろ実験してみる
    ml-agents/Learning-Environment-Create-New.md at release_2_verified_docs · Unity-Technologies/ml-agents · GitHub

基本的に公式のドキュメントが豊富かつ頻繁にメンテナンスされているので上のドキュメントを参考にすれば、最初の一歩は踏み出せそう。

サンプル実行の様子。
ちょこちょこ動いてて、めちゃくちゃかわいい・・・

f:id:takeda_san:20210328233354g:plain

ちょっとハマったところ

Making a New Learning EnvironmentのハイパーパラメータのYAMLの設定をそのまんまコピペしただけだとエラーが出て学習の実行途中落ちる。

ml-agents/Learning-Environment-Create-New.md at release_2_verified_docs · Unity-Technologies/ml-agents · GitHub

エラー内容

mlagents.trainers.exception.UnityTrainerException: The hyper-parameter sequence_length could not be found for the <class 'mlagents.trainers.ppo.trainer.PPOTrainer'> trainer of brain RollerBall.

書いてある通りなんですが、sequence_lengthを指定すればOKっぽい。
ここのコメントの通り。

Add needed indent to fix config file by awjuliani · Pull Request #3968 · Unity-Technologies/ml-agents · GitHub

なんのパラメータかはコード読むなり、NNのお勉強しないといけないっぽいので一旦、動いたからヨシ。
試行回数が増えるほど上達していくのが目で確認できるのが面白い。

f:id:takeda_san:20210328234404g:plain

学習回数を変えてみよう

Making a New Learning Environmentで作ったSceneの初期設定は50,000steps。
回数をいじってみて、それぞれのモデルの挙動の変化を見てみる。

まずは、デフォルトの50,000steps。
緑のボールが赤の立方体に触れれば成功、白色の床から落ちたら失敗。
(テスト的に手動で操作できるんだけど、慣性がすごくてめっちゃ難しい)

f:id:takeda_san:20210328235123g:plain

次に、回数1/10の5,000steps。
目標は達成するものの、そのあと慣性を制御しきれずに落ちたり、逆方向に動いてたりと不安定。
単純な目標でも、学習回数によって結構挙動が変わる。

f:id:takeda_san:20210329000022g:plain

次回

ここまでで、シンプルな構成のSceneで色々と実験できる環境ができたので引き続き各挙動の確認を進めていきます。
もしかして、歩行の学習って諸々設定難しいのでは…