Unity を検索

ML-Agents Toolkit v0.6:ブレインと模倣学習のユーザビリティ改善

2018年12月17日 カテゴリ: Engine & platform | 3 分 で読めます
取り上げているトピック
シェア

Is this article helpful for you?

Thank you for your feedback!

ユーザーの皆様からのフィードバックに基づき、ML-Agents Toolkit v0.6 では新たに 2 つの改良を加えました。1 つ目はブレインを MonoBehaviour ベースから ScriptableObject ベースに移行してユーザビリティを向上させたこと。2 つ目は、エキスパートによるデモンストレーションを記録してオフライン学習に利用できるようになったことで ML-Agents Toolkit v0.3 の記事でご紹介した模倣学習を行う際のユーザーワークフローが改善されたことです。

ScriptableObject ベースのブレイン

以前のバージョンの ML-Agents Toolkit では、ブレインはアカデミーのゲームオブジェクトの子として、アカデミーにアタッチされるゲームオブジェクトでした。この仕様では、同じプロジェクトの複数の Unity シーンに渡ってブレインを再利用することが困難でした。この状況を改善するため、最新の v0.6 リリースではブレインを ScriptableObject として実装しなおし、標準の Unity アセットとして扱えるようにしました。この変更により、ブレインを複数のシーンにわたって再利用したり、またエージェントのプレハブにあらかじめブレインをアタッチしたりすることが容易になりました。この移行を完了させるために、私たちは新たに Learning Brain という名前の ScriptableObject を導入し、以前に存在した Internal Brain と External Brain を置き換えました。さらに移行を完全なものにするため、Player Brain と Heuristic Brain という名前の ScriptableObject を、Player と Heuristic の Brain Type をそれぞれ置き換えるものとして導入しました。

下の画像は「3DBall」環境におけるブレインの実装が移行前と後とでどのように変化するかを示したものです。

(左)ML-Agents v0.5 の Brain ゲームオブジェクト(右)ML-Agents v0.6 で導入された ScriptableObject ベースの Brain

ML-Agents v0.6 では、Brain Type ドロップダウンでブレインのタイプを変更することはできなくなりました。ブレインのタイプを変更するには、プレイヤーや学習に使うブレインを別に作る必要があります。ただし、ブレインのインスペクターにある「Copy Brain Parameters from」選択ボックスを使えば、あるブレインのパラメーターを別のブレインに簡単にコピーすることができます。新しく作ったブレインのインスペクターを開いて、このフィールドにすでにあるブレインをドラッグ・アンド・ドロップするだけで、そのブレインのパラメーターが新しく作ったブレインにコピーされます。

さらに、ブレインはシーンの一部ではなくなったので、Unity のメニューバーにある「Assets」メニューからブレインを作ることも可能になりました。

「Assets」メニューからブレインを作成

もうひとつの改良点は、どのブレインの学習を進めているかの追跡が容易になった点が挙げられます。この改良は Academy コンポーネントの BroadcastHub によって実現しました。このコンポーネントにブレインのアセットをドラッグすると、ブレインを外部の学習プロセスに渡すことができます。

「Control」チェックボックス

ブレインの「Control」チェックボックスをオンにすると、以前のバージョンの ML-Agents Toolkit で External Brain Type を使う場合と同等の動作になります。要するに、「Control」チェックボックスをオンにするということは、そのブレインが学習を行うブレインであるということを示すということです。学習を行わない場合は、BroadcastHub にあるすべてのブレインの「Control」チェックボックスをオフにするだけです。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

Demonstration Recorder

開発中のゲームの実行時にエージェントの行動や観測を記録したり、記録した内容をあとから模倣学習やデータ分析を通じてエージェントの学習に使ったりすることが可能になりました。これまでは学習を繰り返すときに毎回データを作る必要がありましたが、この改良によって学習データを複数の学習セッションにわたって再利用することが可能になりました。エージェントの記録を取りたいときに、Demonstration Recorder コンポーネントをエージェントに追加し、「Record」のチェックをオンにして、デモンストレーションに名前をつけるとその記録を取ることができます。

Demonstration Recorder コンポーネント

再生モードに入り、エージェントに取らせたい行動を実行してください。記録が終わったら再生モードを終了します。すると、デモンストレーションを記録したアセットが「Demonstrations」フォルダーの中に作成されます。

デモンストレーションのアセット

この記録を使ってエージェントに学習させるには、学習設定のハイパーパラメーターを調整します。

この調整に関する詳細については、Github のドキュメントを参照してください。

次のステップ

皆さまからのご意見は非常に重要です。Unity ML-Agents Toolkit を引き続き改良して育てていく上で、皆さまからのご意見やアイデアが必要不可欠です。ぜひアンケートにもご協力をいただき、皆さまの声をお寄せください。

ML-Agents Toolkit に関するフィードバックやご質問については、ML-Agents GitHub の Issues ページにお寄せください。また、直接 ml-agents@unity3d.com までメールでご連絡くださってもかまいません。

Unity で機械学習の開発に関わることにご関心がある方は、求人情報をチェックしてください。

2018年12月17日 カテゴリ: Engine & platform | 3 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

取り上げているトピック