UnityのML Agents でHumming bird (ハチドリ)が蜜を吸うゲームのTutorialを行ってみました。
このTutorialではハチドリ、花、障害物の以下の情報をインプットとして得て学習していきます。
- ハチドリの今の傾き
- 最も近い花への向き
- 最も近い花との距離
- ハチドリのクチバシと花との距離
- ハチドリのクチバシと花の正面との距離
- 複数のレーザー(raycast)で障害物を避ける能力
最初は、ハチドリは何も記憶がありません。つまり、花に蜜があることも知らず、何を目的に動くかも知らないため最初はランダムな挙動で動きます。
そのランダムな挙動をとるハチドリに対して「報酬」と「ペナルティー」を与えることで学習させていきます。
例えば、ハチドリが花に対して近く挙動を見せたら「報酬」を与えます。こうすることでハチドリには「花に近くといいことがある」と学習させます。
次に「ハチドリのクチバシが花の正面に向いているほど高い報酬」「ハチドリのクチバシが花に近いほど高い報酬」、「ハチドリが花から蜜をすえたことで高い報酬」を与えることで次第にハチドリは学習し、花を吸うように動くことが考えられます。
この時に大事なのは、ML-Agentsはどの行動をとれば高い報酬を得られるかを学習するまではランダムに動き続けます。もしもその課題がむずかしすぎた場合は学習が途中で失敗に終わります。そのためこの「報酬」をどのように設定するかが重要なのです。
このTutorialでは「花の花弁に近づけたら報酬」、「地面に着いたら大きなマイナスの報酬」を与えています。
ML-AgentsのTutorialのエラー
さて前置きが長くなってしまいましたが、このUnityのML-AgentsのTutorialを進める中で私がつまずいてしまったことがあります。
それが、ml-agentsでハチドリに学習をさせる場面でTutorialで言えばSection 7: Training Part 6:Trainingの項目でした。
この中の[mlagents-learn ./trainer_config.yaml –run-id hb_01]を動作させると、[The option default was specified in your YAML file, but is invalid.]と表示されてしまうのでした。
このエラーを回避するための方法がこちらのサイトに載っていました。
この記事は英語のため以下に和訳した物を載せております。
もう一つTutorialと私の画面でファイル名が異なっていた部分がありました。
それは、Section 7: Training Part 8:Tensorboardの項目でした。
実際の私のフォルダ名が[result]であったため、それをanaconda promptで入力することで無事にTutorial通りの結果となりました。
この方法を使うことでUnityのML-AgentsのTutorialをつまずくことなく続きを進めることができました。
最後に
UnityのML-Agents は面白く、またTutorial 用の動画講座も多数用意してありますが、私のような初学者の場合には一つのErrorでも大きなつまずきとなってしまいます。
私のようにErrorで悩む人が一人でも少なくなればと思いこの記事を書きました。
これからUnityはどんどん学んでいきますのでまた気付きなどえられたら紹介していきたいと思います。
コメント