見出し画像

Unity ML-Agents Release 4 の変更点

Unity ML-Agents Release 4」がリリースされました。「カリキュラム学習」と「環境パラメータのランダム化」の「訓練設定ファイル」の書式が変更になりました。

1. パッケージのバージョン

「Unity ML-Agents Release 4」のパッケージのバージョンは、次のとおり。

・com.unity.ml-agents (C#) : v1.2.0
・ml-agents (Python) v0.18.0
・ml-agents-envs (Python) : v0.18.0
・gym-unity (Python) : v0.18.0
・Communicator (C#/Python) : v1.0.0

2. 主な改善

◎ ml-agents (Python)
・「環境パラメータのランダム化」がリファクタリングされ、「カリキュラム学習」と統合されました。これにより、エピソードごとに新しいパラメータをサンプリングして、堅牢性を向上させることができます。
「resampling-interval」パラメータが削除され、「訓練設定ファイル」の書式が変更されました。

・「カリキュラム学習」がリファクタリングされ、ビヘイビア単位ではなく環境パラメータ単位で指定するようになりました。 カリキュラム学習のレッスンでサンプラーを利用することも可能になりました。

3. 重大な変更

◎ ml-agents (Python)
・「訓練設定ファイル」の書式が変更されました。「カリキュラム学習」または「環境パラメータのランダム化」を使用するには、新しいセクション「environment_parameters」を使う必要があります。

この移行に役立つ更新スクリプトを提供しています。 スクリプトの使用状況を確認するには、最新バージョンで「python -m mlagents.trainers.upgrade_config -h」を実行してください。

4. バグ修正と小さな変更

◎ com.unity.ml-agents (C#)
・「SideChannelsManager」が「SideChannelManager」に名前変更しました。古い名前は引き続きサポートしていますが、非推奨です。
・RayPerceptionSensor.Perceive()に、レイでヒットしたGameObjectが追加で格納されるようになりました。
・タグのリストが空の場合、またはリスト内のタグが無効(不明、null、または空の文字列)の場合、RayPerceptionSensorが例外を発生させる問題を修正しました。
・Barracudaの依存関係が1.0.1になりました。

◎ ml-agents-envs (Python)
UnityEnvironmentの使用方法を示す新しいGoogle Colabノートブックを追加しました。

◎ ml-agents (Python)
・訓練設定ファイルのinitialize_fromをnullに設定する時のエラーを修正しました。
・スレッドトレーナーを使用しているときにStatsReporterでまれに発生するクラッシュを修正しました。

◎ Example Environments (C#)
・キーボードでプレイするときのFoodCollector、Soccer、WallJumpの問題を修正しました。

5. 既知の問題点

◎ com.unity.ml-agents (C#)
macOS 10.15で、ML-AgentsパッケージがWebサイトのダウンロードからインストールする場合、ML-Agentsを使用するシーンを実行すると、「ファイルを開くことができない」という問題が発生する場合があります。 回避策には、Unity Package Managerを使用したパッケージのインストール、またはこの記事の指示に従うことが含まれます。

【おまけ】 カリキュラム学習の訓練設定ファイルの変更点

「Release 3」までは「ビヘイビア単位」でカリキュラム学習の環境パラメータを設定しましたが、「Release 4」では「環境パラメータ単位」で設定するようになりました。

【 Release 3 】

    :
curriculum:
  CurriculumEx:
    measure: reward
    thresholds:
    - 0.7
    - 0.9
    min_lesson_length: 10
    signal_smoothing: true
    parameters:
      checkpoint_reward:
      - 0.3
      - 0.0
      - 0.0
      episode_reward:
      - 0.0
      - 1.0
      - 2.0
      step_reward:
      - 0.0
      - 0.0
      - -0.001

【 Release 4 】

    :
environment_parameters:
  checkpoint_reward: # 環境パラメータの名前
    curriculum:
    - Lesson0: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.7
        value: 0.3 # 環境パラメータの値
    - Lesson1: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.9
        value: 0.0 # 環境パラメータの値
    - Lesson2: # レッスンの名前
        value: 0.0
  episode_reward: # 環境パラメータの名前
    curriculum:
    - Lesson0: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.7
        value: 0.0 # 環境パラメータの値
    - Lesson1: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.9
        value: 1.0 # 環境パラメータの値
    - Lesson2: # レッスンの名前
        value: 2.0
  step_reward: # 環境パラメータの名前
    curriculum:
    - Lesson0: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.7
        value: 0.0 # 環境パラメータの値
    - Lesson1: # レッスンの名前
        completion_criteria: # 次のレッスンに進む条件
          measure: reward
          behavior: CurriculumEx
          signal_smoothing: true
          min_lesson_length: 10
          threshold: 0.9
        value: 0.0 # 環境パラメータの値
    - Lesson2: # レッスンの名前
        value: -0.001 # 環境パラメータの値

◎ environment_parameters:
「カリキュラム学習」を有効にするには、訓練設定ファイルに「environment_parameters:」を追加します。「environment_parameters:」の子に「環境パラメータの名前:」を追加します。

今回は「環境パラメータの名前:」として、「checkpoint_reward」「episode_reward」「step_reward」を追加しています。

environment_parameters:
  checkpoint_reward: # 環境パラメータの名前
          :
  episode_reward: # 環境パラメータの名前
          :
  step_reward: # 環境パラメータの名前
          :

◎ curriculum:
「環境パラメータ名:」の子に「curriculum:」を追加します。「environment_parameters:」の子に「レッスンの名前:」を追加します。「レッスンの名前:」の子には、「completion_criteria:」と「value:」を追加します。

今回は「レッスンの名前:」として、「Lesson0」「Lesson1」「Lesson2」を追加しています。

environment_parameters:
  checkpoint_reward: # 環境パラメータの名前
    curriculum:
     - Lesson0: # レッスンの名前
       completion_criteria:
         measure: reward
         behavior: CurriculumEx
         signal_smoothing: true
         min_lesson_length: 10
         threshold: 0.7
       value: 0.3 # 環境パラメータの値
     - Lesson1: # # レッスンの名前
        :
     - Lesson2: # # レッスンの名前
        :        

設定項目の意味は、次のとおりです。

・レッスンの名前 : レッスン変更時にコンソールに表示。
・completion_criteria : 次のレッスンに進む条件。最終レッスンでは必要なし。
・value : レッスン中の環境パラメータの値。floatまたはsampler。

「completion_criteria」の子には、以下を設定します。

・measure : レッスンの進捗条件の測定方法を指定。
 - reward:エピソード報酬
 - progress:ステップ数÷最大ステップ数
・behavior : カリキュラムを適用するビヘイビア名を指定。
・threshold: レッスンの進捗条件の閾値を指定。
・min_lesson_length : レッスンを進ませるために閾値を何エピソード越えるべきかを指定。「min_lesson_length」が100 の場合、100エピソードの平均値が閾値を越えた場合に、次のレッスンに進む。平均値は、「エピソード報酬」または「ステップ数÷最大ステップ数」の平均値になる。
・signal_smoothing : 以前の値で現在の値を重み付けするかどうかを指定。
 - true:重み付けは 0.75(新)、0.25(古)
 - false:重み付けなし
・require_reset : レッスンを変更するために環境をリセットする必要があるかどうかを指定(デフォルト : false)。

【おまけ】 環境パラメータのランダム化の訓練設定ファイルの変更点

「Release 3」までは「parameter_randomization」で「環境パラメータのランダム化」を設定しましたが、「Release 4」では「environment_parameters」で設定するようになりました。

【 Release 3 】

    :
parameter_randomization:
  mass:
    sampler_type: uniform
    sampler_parameters:
      min_value: 0.5
      max_value: 10
 scale:
    sampler_type: uniform
    sampler_parameters:
      min_value: 0.75
      max_value: 3

【 Release 4 】

environment_parameters:
  mass:
    sampler_type: uniform
    sampler_parameters:
      min_value: 0.5
      max_value: 10
  scale:
    sampler_type: uniform
    sampler_parameters:
      min_value: 0.75
      max_value: 3



この記事が気に入ったらサポートをしてみませんか?