MLエージェント1.0 -明確なガイド


Unityはマシンの学習フレームワークのバージョン1.0をリリースしました.ML-Agents . このガイドでは、MLエージェントの概要とどのように強化学習アルゴリズムを訓練するために使用することができます.
詳細については、MLdocumentation .

統一MLエージェントとは何か


The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. Agents can be trained using reinforcement learning, imitation learning, neuroevolution, or other machine learning methods through a simple-to-use Python API. - ML-Agents README Features


機能

  • 15 +example Unity environments
  • 複数の環境構成とトレーニングシナリオのサポート
  • あなたのゲームまたはカスタムUnityシーンに統合されることができる柔軟な統一SDK
  • 二つの深層強化学習アルゴリズム,近位方針最適化(PPO)およびソフトアクター評論家(SAC)を用いた訓練
  • 行動クローニングまたは生成的敵対模倣学習による模倣学習のための組み込み支援
  • 敵対的シナリオにおける訓練エージェントのための自己プレイ機構
  • 複雑なタスクのシナリオを学習
  • 環境ランダム化を用いた列車ロバストエージェント
  • オンデマンド意思決定による柔軟なエージェント制御
  • 複数同時同値環境インスタンスを用いた列車
  • 利用するUnity Inference Engine ネイティブクロスプラットフォームサポートを提供するには
  • 統一環境control from Python
  • ラップユニティ学習環境gym
  • キーコンポーネント


    MLエージェントには5つの高レベルコンポーネントが含まれます.

  • 学習環境- Unityシーンとすべてのゲームキャラクタを含みます.Unity場面は、エージェントが観察して、行動して、学ぶ環境を提供します.MLエージェントには、任意のUnityシーンを学習環境に変換することができる統一SDKが含まれます.

  • Python低レベルAPI - Pythonのインターフェイスを対話し、学習環境を操作する.このAPIはdedicated Python package トレーニング中にアカデミーとコミュニケーションをとり、コントロールするのに使われます.

  • 外部コミュニケーター- Pythonの低レベルAPIで学習環境を接続します.

  • Pythonトレーナー-すべてのマシン学習アルゴリズムが含まれます.Pythonパッケージとして利用可能mlagents これはMLagentエージェントと呼ばれるコマンドラインユーティリティを公開します.

  • ジムラッパー-オープンAIジムは、開発と強化学習アルゴリズムを比較するためのツールキットです.そのリリース以来、ジムは本当に強化学習エンジニアの下で人気となっている.MLのエージェントは、ジムのラッパーを提供していますgym-unity python package .

  • 始める


    この節では、MLエージェントをインストールする方法を示しますexample environment , そして、エージェントを訓練します.
    このガイドのために、我々は3 Dバランスボール環境を使用します.各エージェントキューブのいずれかを水平方向または垂直方向に回転して落下からそのボールを維持しようとします.

    インストールとセットアップ


    MLエージェントで動作するには、Unity 2018.4をインストールする必要があります.まだUnityをインストールしていないならば、あなたはそれからダウンロードすることができますhere .
    次に、新しいプロジェクトを作成し、Unity package manager .

    Note: If the package doesn't show up, enable "Show preview packages" under Advanced, next to the search bar.


    例の環境は、残念ながら、パッケージマネージャを介してインストールすることはできませんので、する必要がありますdownload the repository , それを解凍して、プロジェクト/資産の下で見つかるMLエージェントフォルダをあなたのプロジェクトの資産フォルダーにコピーしてください.例/3 dball/シーンの下で、3 dballシーンを見つけることができます.

    統一環境の理解


    Unityの文脈では、環境はエージェントがインタラクションする1つ以上のエージェントと他のGameObjectを含む場面です.

    エージェント


    エージェントは、環境を観察し、それに応じて行動をとるアクターです.3 Dバランスボール環境の場合、エージェントはボールをバランスさせようとするキューブです.

    Unityでは、あらゆるエージェントはふるまいを持たなければなりません.この動作はエージェントが決定する方法を決定します.
    動作の3種類があります.

  • ヒューリスティック:これは、環境をテストするために使用されるハードコード化された動作です.また、プログラマは、AIの代わりにゲームをプレイさせるために使用することができます.

  • トレーニング:このモードは、AIが現在トレーニング中です.デフォルトでは、Pythonのトレーニングスクリプトは、それがトレーニングを開始する再生ボタンを押すとアクティブです.それ以外の場合は推論を実行します.

  • 推論:推論は、学習モデルが決定をするために使用されるときです.
  • 事前訓練モデルの実行


    すべてのMLエージェントの例環境は、事前にモデル化されたモデルが付属しています.エージェントGameObjectに付けられた動作パラメータースクリプトを見ると、TfModelフォルダー内のモデルがモデルプロパティに接続されていることがわかります.

    動作型が既定または推論に設定されている場合、モデルをクリックすると、エージェントがコントロールします.

    強化学習による新しいモデルの訓練


    あなたが事前に訓練されたモデルを実行する方法を知っている今、私はカスタムモデルを作成する方法をあなたに示す時間です.MLエージェントツールキットのトレーニングは、専用のPythonパッケージによって供給されます.mlagents .
    パッケージはPIPを使用してインストールできます:
    pip install mlagents
    
    このパッケージは、すべてのトレーニングのワークフローのための単一のエントリポイントであるコマンドMelagentの学習を公開します.
    Melagentのすべての受け入れられた引数の説明を見るには、-- help引数を使います.
    mlagents-learn --help
    
    usage: mlagents-learn.exe [-h] [--env ENV_PATH]
                              [--curriculum CURRICULUM_CONFIG_PATH]
                              [--lesson LESSON] [--sampler SAMPLER_FILE_PATH]
                              [--keep-checkpoints KEEP_CHECKPOINTS] [--resume]
                              [--force] [--run-id RUN_ID]
                              [--initialize-from RUN_ID] [--save-freq SAVE_FREQ]
                              [--seed SEED] [--inference] [--base-port BASE_PORT]
                              [--num-envs NUM_ENVS] [--no-graphics] [--debug]
                              [--env-args ...] [--cpu] [--version] [--width WIDTH]
                              [--height HEIGHT] [--quality-level QUALITY_LEVEL]
                              [--time-scale TIME_SCALE]
                              [--target-frame-rate TARGET_FRAME_RATE]
                              [--capture-frame-rate CAPTURE_FRAME_RATE]
                              trainer_config_path
    ...
    
    モデルを訓練するには、少なくともトレーナーの設定ファイルとRun - IDを指定する必要があります.
  • Trainer config fileトレーナー構成YAMLファイルへのファイルパスを指定します.すべてのパラメータが含まれます.すべてのハイパーパラメータを徹底的に調べるにはtraining configurations sectiontraining readme .
  • run idは、トレーニング実行を識別するために使用される一意の名前です.
  • MLエージェントは、以前にダウンロードしたRPOの設定ディレクトリにあるすべてのサンプル環境の設定ファイルを提供します.
    モデルを訓練するには、ダウンロードしたリポジトリに移動して実行します.
    mlagents-learn config/trainer_config.yaml --run-id=3DBall1
    
    すべてが予想通りに行ったならば、あなたは「ユニフォームエディタで遊びボタンを押すことによって、トレーニングを開始します.」コマンドライン内.メッセージに記載されているように遊びボタンを押してください.
    Tensorboardを起動してトレーニングの進捗状況を監視できます.
    tensorboard --logdir=summaries
    

    ジム・ラッパー


    OpenAIのジムを開発し、強化学習アルゴリズムを比較するためのツールキットです.そのリリース以来、ジムは本当に強化学習エンジニアの下で人気となっている.MLのエージェントは、ジムのラッパーを提供していますgym-unity python package .

    インストール


    ジムラッパーを使用してインストールできます.
    pip3 install gym_unity
    

    ジムラッパーを使用する


    ジムのインターフェイスは、ジムの統一から入手可能です.環境管理環境使用を開始するには、次の手順に従います.
    from gym_unity.envs import UnityToGymWrapper
    
    env = UnityToGymWrapper(unity_environment, uint8_visual, allow_multiple_obs)
    
    詳細についてはofficial documentation .

    結論


    MLエージェントは、ゲームとシミュレーションをインテリジェントエージェントを訓練するための環境として機能させるオープンソースプロジェクトです.この記事では、MLエージェントの基礎を学びました.あなたがカスタムゲームをチェックアウトすることに興味があるならMaking a New Learning Environment '.
    これがこの記事です.あなたが質問をするか、ちょうど私とチャットしたいならば、以下のコメントを残して自由に感じてください、さもなければ、ソーシャルメディアで私に連絡してください.あなたが私のブログに関して連続的な最新版を得たいならば、確かめてくださいjoin my newsletter .