見出し画像

Unity ML-Agents 0.10.0 の報酬シグナル

以下、ML-Agentsのドキュメントより。

1. 外因性報酬シグナルと内因性報酬シグナル

「強化学習」のエージェントの最終目標は、「報酬」を最大化する「行動」(ポリシー)を見つけることです。通常、報酬は「環境」によって与えられます。これは学習アルゴリズムの外で定義されるため、「外因性」(extrinsic)報酬シグナルと呼ばれます。

「報酬」はエージェントが特定の方法で行動を奨励したり、「Extrinsic報酬」を支援したりするために、環境外でも定義できます。これらの報酬を「内因性」(intrinsic)報酬シグナルと呼びます。

2. 報酬シグナルの種類

「Unity ML-Agents」では、「Extrinsic」「Curiosity」「GAIL」の3つの報酬シグナルがあります。

・ Extrinsic : 環境によって与えられる報酬。
・ Curiosity : エージェントに好奇心を持たせ、未知の状態への探索を促す報酬。
・ GAIL : 一連のデモで示された行動と似た行動を採ったことに対して与える報酬。

「Extrinsic」が外因性報酬シグナル、「Curiosity」「GAIL」が外因性報酬シグナルになります。

2. 報酬シグナルの訓練設定ファイルの設定

「報酬シグナル」は、他のハイパーパラメータと同様に、訓練設定ファイル(*.yaml)で定義します。

報酬シグナルの設定は、「rewardend_signals」のサブパラメータの「extrinsic」「curiosity」「gail」で行います。利用しない場合はサブパラメータを定義する必要はありませんが、少なくとも1つは必要です。

reward_signals:
   extrinsic:
       strength: 1.0
       gamma: 0.99
   curiosity:
       strength: 0.02
       gamma: 0.99
       encoding_size: 256
   gail:
       strength: 0.01
       gamma: 0.99
       encoding_size: 128
       demo_path: demos/ExpertPyramid.demo

3. Extrinsicのハイパーパラメータ

報酬シグナル「Extrinsic」のハイパーパラメータを設定するには、「reward_signals: extrinsic:」を追加します。

    reward_signals:
       extrinsic:
           strength: 1.0
           gamma: 0.99

◎ strength
環境によって与えられる報酬に乗算する値を指定します。
・典型的な範囲: 1.0

◎ gamma
将来の報酬割引係数を指定します。将来の報酬を重視する場合は大きな値、即時報酬を重視する場合は小さな値にします。
・典型的な範囲 : 0.8〜0.995

4. Curiosityのハイパーパラメータ

報酬シグナル「Curiosity」のハイパーパラメータを設定するには、「reward_signals: curiosity:」を追加します。

    reward_signals:
        extrinsic:
            strength: 1.0
            gamma: 0.99
        curiosity:
            strength: 0.02
            gamma: 0.99
            encoding_size: 256

「curiosity」では、以下のパラメータを使用できます。

◎ strength
Curiosityの報酬の大きさを指定します。環境によって与えられる報酬に圧倒されない、または圧倒しすぎないように、調整する必要があります。
・典型的な範囲 : 0.001〜0.1

◎ gamma
将来の報酬割引係数を指定します。将来の報酬を重視する場合は大きな値、即時報酬を重視する場合は小さな値にします。
・典型的な範囲 : 0.8〜0.995

◎ encoding_size(オプション)
Curiosityモデルで使用されるエンコードのサイズを指定します。この値は、Curiosityが元の観察を圧縮するのに十分なほど小さくする必要がありますが、実証された動作と実際の動作を区別することを学習するのを妨げるほど小さくしないようにしてください。
・初期値 : 64
・典型的な範囲 : 64〜256

◎ learning_rate(オプション)
Curiosityモデルを更新するために使用する学習率を指定します。訓練が不安定で、Curiosityの損失が不安定な場合は、これを減らす必要があります。
・初期値 : 3e-4
・典型的な範囲 : 1e-5-1e-3

5. GAILのハイパーパラメータ

報酬シグナル「GAIL」のハイパーパラメータを設定するには、「reward_signals: gail:」を追加します。

    reward_signals:
        extrinsic:
            strength: 1.0
            gamma: 0.99
        gail:
            strength: 0.1
            gamma: 0.99
            encoding_size: 128
            demo_path: Project/Assets/ML-Agents/Examples/Hallway/Demos/ExpertHallway.demo

◎ strength
模倣学習の報酬に乗算する値を指定します。デモが最適ではない場合は、この値を低く指定します。デモをコピーしたい場合は大きな値を指定します。
・典型的な範囲 : 0.01〜1.0

◎ gamma
将来の報酬割引係数を指定します。将来の報酬を重視する場合は大きな値、即時報酬を重視する場合は小さな値にします。
・典型的な範囲 : 0.8 〜0.9

◎ demo_path
.demoファイル、または.demoファイルを含むフォルダのパスを指定します。

◎ encoding_size(オプション)
Discriminatorが使用する隠れ層のサイズを指定します。この値は、Discriminatorが元の観察結果を圧縮するのに十分なほど小さくする必要がありますが、実証された動作と実際の動作を区別する学習を妨げるほど小さくてはなりません。このサイズを劇的に増やすと、訓練時間にも悪影響を及ぼします。
・初期値 : 64
・典型的な範囲 : 64〜256

◎ learning_rate(オプション)
Discriminatorの更新に利用される学習率を指定します。訓練が不安定で、GAILの損失が不安定な場合、これを減らす必要があります。
・初期値 : 3e-4
・典型的な範囲 : 1e-5-1e-3

◎ use_actions(オプション)
Discriminatorが、観察と行動の両方に基づいて、または単に観察に基づいて区別する必要があるかどうかを決定します。エージェントにデモの行動を模倣させたい場合はTrueに設定します。Falseに設定すると、特にデモが不完全な場合に安定する可能性が高くなりますが、学習速度が遅くなる可能性があります。
・初期値 : false

◎ use_vail(オプション)
Discriminator内の変動ボトルネックを有効にします。これにより、Discriminatorはより一般的な表現を学習するようになり、識別が「あまりにも良い」傾向が減り、学習がより安定します。ただし、訓練時間は長くなります。模倣学習が不安定であるか、手元の課題を学習できない場合は、これを有効にします。
・初期値 : false


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