見出し画像

Unity ML-Agents Release 18 の学習設定ファイル

「Unity ML-Agents Release 18」の「学習設定ファイル」についてまとめました。

・Unity ML-Agents Release 18

前回

1. 学習設定ファイル

「Unity ML-Agents」ではPythonスクリプトで学習する時に、「学習設定ファイル」(*.yaml)で、学習時に必要なハイパーパラメータを設定します。

以下は、チュートリアルとして紹介したRollerBall環境の例です。

behaviors:
  RollerBall:
    # トレーナー種別
    trainer_type: ppo

    # 基本
    max_steps: 500000
    time_horizon: 64
    summary_freq: 1000
    keep_checkpoints: 5

    # 学習アルゴリズム
    hyperparameters:
      # PPOとSAC共通
      batch_size: 10
      buffer_size: 100
      learning_rate: 0.0003
      learning_rate_schedule: linear

      # PPO用
      beta: 0.005
      epsilon: 0.2
      lambd: 0.95
      num_epoch: 3

    # ニューラルネットワーク
    network_settings:
      normalize: true
      hidden_units: 128
      num_layers: 2
      vis_encode_type: simple

    # 報酬
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0

2. トレーナー種別

◎ trainer_type
・default=ppo
学習アルゴリズム。

・ppo : PPO(Proximal Policy Optimization)
・sac : SAC (Soft Actor-Critic)
・poca : MA-POCA (MultiAgent POsthumous Credit Assignment)

※「MA-POCA」は「PPO」と同じハイパーパラメータを使用。

3. 基本

基本のパラメータを設定。

◎ max_steps
・default=500000
最大ステップ数。

◎ time_horizon
・default=64
経験バッファに追加する前に、エージェント毎に収集する経験の数。

◎ summary_freq
・default=5000
統計情報を何ステップ毎に保存するか。

◎ checkpoint_interval
・default=500000
チェックポイントを何経験毎に保存するか。

◎ keep_checkpoints
・default=5
保存するチェックポイントの最大数。

◎ threaded
・default=false
スレッドの有効・無効。
trueの方が高速だが、PPOの厳格なオンポリシーは守られない。

◎ init_path
・default=None
既存モデルで初期化して新規訓練を開始するためのパス。

4. 学習アルゴリズム

hyperparameters: 下に学習アルゴリズムのパラメータを設定。

・PPOとSAC共通
・PPO用
・SAC用

4-1. PPOとSAC共通

◎ batch_size
・typical=
 ・Continuous+PPO:512~5120
 ・Continuous+SAC:128~1024
 ・Discrete:32~512
勾配降下1回に使用する経験数。

◎ buffer_size
・default=
 ・PPO:10240
 ・SAC:5000
・typical=
 ・PPO:2048〜409600
 ・SAC:5000〜1000000
ポリシー更新前に収集する経験数(batch_sizeの倍数)。

◎ learning_rate
・default=3e-4
・typical=1e-5〜1e-3
学習率。

◎ learning_rate_schedule
・default=
 ・PPO:linear
 ・SAC:constant
学習率の減衰方法。

・linear : 線形減衰させ、max_stepsで0
・constant : 一定に保つ

4-2. PPO用

hyperparameters: に以下のパラメータを指定。

◎ beta
・default=5.0e-3
・typical=1e-4〜1e-2
エントロピーのランダムさ。

◎ epsilon
・default=0.2
・typical=0.1〜0.3
旧ポリシーと新ポリシーの更新比率。

◎ lamdb
・default=0.95
・typical=0.9〜0.95
GAEの計算に使用する正則化パラメータ。

◎ num_epoch
・default=3
・typical=3〜10
ポリシー更新時の学習データの学習回数。

4-3. SAC用

hyperparameters: に以下のパラメータを指定。

◎ buffer_init_steps
・default=0
・typical=1000〜10000
学習開始前に何ステップのランダム行動を経験バッファに埋めるか。

◎ tau
・default=0.005
・typical=0.005〜0.01
モデル更新中のターゲットの更新の大きさ。

◎ steps_per_update
・default=1
・typical=1〜20
ポリシー更新に対するステップ数の平均比率。

◎ save_replay_buffer
・default=false
リプレイバッファの保存。

◎ init_entcoef
・default=
 ・Continuous:0.5〜1.0
 ・Discrete:0.05〜0.5
学習開始時にエージェントがどの程度探索するか。

◎ reward_signal_steps_per_update
・default=steps_per_update
ポリシー更新に対する報酬シグナルのステップ数の平均比率。

5. ニューラルネットワーク

network_settings: 下にニューラルネットワークのパラメータを設定。

◎ normalize
・default=false
観察を正規化するかどうか。

◎ hidden_unit
・default=128
・typical=32〜512
隠れ層のニューロン数。

◎ num_layers
・default=2
・typical=1〜3
隠れ層の数。

◎ vis_encoder_type
・default=simple
「Visual Observation」のエンコーダ種別。

・simple : 2つの畳込み層で構成されるシンプルなエンコーダ
・nature_cnn : 3つの畳込み層で構成されるCNN
・resnet : 2つの残差ブロックを持つ3つスタックレイヤーで構成されるIMPALA Resnet
・match3 : ボードゲーム用に最適化された小さなCNN
・full_connected : 畳み込み層のないエンコーダ

◎ conditioning_type
・default=hyper
ポリシーの条件付け種別。

・none : 目標の観測を通常の観測として扱う
・hyper : 入力として目標観測値を持つHyperNetworkを使用

6. 報酬

reward_signals: 下に報酬のパラメータを設定。

・環境報酬 : extrinsic:
・Curiosity報酬
: curiosity:
・GAIL報酬
: gail:
・RDN報酬
: rnd:

6-1. 環境報酬

reward_signals: 下の extrinsic: 下に環境報酬のパラメータを設定。

◎ strength
・default=1.0
・typical=0.001〜0.1
環境報酬を乗算して、他の報酬とバランス調整。

◎ gamma
・default=0.99
・typical=0.8〜0.995
将来の報酬割引率

6-2. Curiosity報酬

reward_signals: 下の curiosity: 下にCuriosity報酬のパラメータを設定。

◎ strength
・default=1.0
・typical=0.001〜0.1
環境報酬とのバランス調整のため、Curiosity報酬に乗算する値。

◎ gamma
・default=0.99
・typical=0.8〜0.995
将来の報酬割引率。

◎ network_settings
Curiosityモデルのニューラルネットワークの設定。
hidden_unitsの値は、64〜256。

◎ learning_rate
・default=3e-4
・typical=1e-5〜1e-3
Curiosityモデルの学習率。

6-3. GAIL報酬

reward_signals: 下の gail: 下にGAIL報酬のパラメータを設定。

◎ strength
・default=1.0
・typical=0.001〜0.1
環境報酬とのバランス調整のため、GAIL報酬に乗算する値。

◎ gamma
・default=0.99
・typical=0.8〜0.995
将来の報酬割引率。

◎ demo_path
demoファイルのパス。

◎ network_settings
GAILモデルのニューラルネットワークの設定。
hidden_unitsの値は、64〜256。

◎ learning_rate
・default=3e-4
・typical=1e-5〜1e-3
GAILモデルの学習率。

◎ use_actions
・default=false
Determineが観察と行動の両方と、観察のみの、どちらに基づいて区別するか。

◎ use_vail
・default=false
Determineのvariational bottleneckの有効・無効。

6-4. RND報酬

reward_signals: 下の rnd: 下にRND報酬のパラメータを設定。

◎ strength
・default=1.0
・typical=0.001〜0.01
環境報酬とのバランス調整のため、RND報酬に乗算する値。

◎ gamma
・default=0.99
・typical=0.8〜0.995
将来の報酬割引率。

◎ network_settings
RNDモジュールのニューラルネットワークの設定。

◎ learning_rate
・default=3e-4
・typical=1e-5〜1e-3
RNDモジュールの学習率。

7. 模倣学習

behavior_cloning: 下に模倣学習のパラメータを設定。

◎ demo_path
demoファイルのパス。

◎ strength
・default=1.0
・typical=0.1〜0.5
PPOの学習率に対する模倣学習の学習率。

◎ steps
・default=0
模倣学習のステップ数。0は無期限。

◎ batch_size
・default=batch_size
・typical=
 ・Continuous:512〜5120
 ・Discrete:32〜512
模倣学習のバッチサイズ。

◎ num_epoch
・default=num_epoch
・typical=3〜10
模倣学習のポリシー更新時の学習データの学習回数。

◎ samples_per_update
・default=0
・typical=buffer_size
模倣学習のポリシー更新前に収集する経験数。0はステップ毎。

8. セルフプレイ

self_play: 下にセルフプレイのパラメータを設定。

◎ save_steps
・default=20000
・typical=10000〜100000
何ステップ毎にポリシーを保存するか。

◎ team_change
・default=5*save_steps
・typical=4*save_steps〜10*save_steps
何ステップ毎に学習チームを切り替えるか。

◎ swap_steps
・default=10000
・typical=10000〜100000
何ステップ毎に対戦相手のポリシーを切り替えるか。

◎ window
・default=10
・typical=5〜30
対戦相手として保持するポリシー数。

◎ play_against_latest_model_ratio
・default=0.5
・typical=0.0〜1.0
エージェントが現在のポリシーと対戦する確率。

9. RNN

network_settings: 下の memory: 下にRNNのパラメータを設定。

◎ memory_size
・default=128
・typical=32〜256
メモリサイズ。2の倍数。

◎ sequence_length
・default=64
・typical=4〜128
学習中にネットワークを通過するシーケンス長。

次回



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