メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rlAgentInitializationOptions

強化学習エージェント初期化用のオプション

説明

rlAgentInitializationOptions オブジェクトを使用して、エージェントの初期化オプションを指定します。エージェントを作成するには、rlACAgent などのエージェント作成関数を使用します。

作成

説明

initOpts = rlAgentInitializationOptions は、既定のネットワークで強化学習エージェントを初期化するための既定のオプション オブジェクトを作成します。初期化オプションを使用して、エージェント ネットワークのそれぞれの隠れ層のユニット数や再帰型ニューラル ネットワークを使用するかどうかなど、エージェントの初期化パラメーターを指定します。

initOpts = rlAgentInitializationOptions(Name=Value) は、初期化オプション オブジェクトを作成し、名前と値の引数を 1 つ以上使用して、そのプロパティを設定します。

プロパティ

すべて展開する

エージェント ネットワークのそれぞれの隠れ全結合層 (ネットワーク出力の直前の全結合層を除く) のユニット数。正の整数として指定します。設定した値は、すべての LSTM 層にも適用されます。

例: 64

再帰型ニューラル ネットワークを使用するかどうかのフラグ。logical 値として指定します。

UseRNNtrue に設定すると、ソフトウェアはエージェントの作成時に、出力モードが sequence に設定された再帰 LSTM 層をエージェント ネットワークの出力パスに挿入します。LSTM の詳細については、長短期記憶ニューラル ネットワークを参照してください。

メモ

TRPO エージェントは再帰型ネットワークをサポートしません。

例: true

エージェントで使用されるアクターとクリティックの正規化方式。チャネル仕様オブジェクトで定義された制限に基づき、次のいずれかの値として指定します。

  • "none" — アクター オブジェクトとクリティック オブジェクトの入力を正規化しません。

  • "rescale-zero-one" — 入力を 0 ~ 1 の区間に再スケーリングして正規化します。正規化された入力 Y は (UMin)./(UpperLimitLowerLimit) になります。ここで、U は非正規化入力です。LowerLimit より小さい非正規化入力値は、0 より小さい正規化値になることに注意してください。同様に、正規化されていない入力値が UpperLimit よりも大きい場合、正規化された値は 1 より大きくなります。ここで、UpperLimitLowerLimit は、入力チャネルの仕様オブジェクトで定義された対応するプロパティです。

  • "rescale-symmetric" — 入力を –1 ~ 1 の区間に再スケーリングして正規化します。正規化された入力 Y は 2(ULowerLimit)./(UpperLimitLowerLimit) – 1 になります。ここで、U は非正規化入力です。LowerLimit より小さい非正規化入力値は、-1 より小さい正規化値になることに注意してください。同様に、正規化されていない入力値が UpperLimit よりも大きい場合、正規化された値は 1 より大きくなります。ここで、UpperLimitLowerLimit は、入力チャネルの仕様オブジェクトで定義された対応するプロパティです。

メモ

rlAgentInitializationOptionsNormalization プロパティを指定すると、正規化は、UpperLimit プロパティと LowerLimit プロパティの両方が定義されている rlNumericSpec 仕様オブジェクトに対応する近似器入力チャネルにのみ適用されます。エージェントを作成した後、setNormalizer を使用して、任意の正規化方式を使用するノーマライザーを割り当てることができます。ノーマライザー オブジェクトの詳細については、rlNormalizer を参照してください。

例: "rescale-symmetric"

オブジェクト関数

rlACAgentActor-critic (AC) reinforcement learning agent
rlPGAgentPolicy gradient (PG) reinforcement learning agent
rlDDPGAgent深層決定論的方策勾配 (DDPG) 強化学習エージェント
rlDQNAgentDeep Q-network (DQN) reinforcement learning agent
rlPPOAgentProximal policy optimization (PPO) reinforcement learning agent
rlTD3AgentTwin-delayed deep deterministic (TD3) policy gradient reinforcement learning agent
rlSACAgentSoft actor-critic (SAC) reinforcement learning agent
rlTRPOAgentTrust region policy optimization (TRPO) reinforcement learning agent

すべて折りたたむ

エージェント初期化オプション オブジェクトを作成します。それぞれの全結合層の隠れニューロンの数と再帰型ネットワークの使用を指定します。

agtInitOpts = rlAgentInitializationOptions(NumHiddenUnit=64,UseRNN=true)
agtInitOpts = 
  rlAgentInitializationOptions with properties:

    NumHiddenUnit: 64
           UseRNN: 1
    Normalization: "none"

ドット表記を使用して、オプションを変更することができます。たとえば、隠れユニットの数を 128 に設定します。

agtInitOpts.NumHiddenUnit = 128
agtInitOpts = 
  rlAgentInitializationOptions with properties:

    NumHiddenUnit: 128
           UseRNN: 1
    Normalization: "none"

チャネル仕様オブジェクトで定義された制限に従って入力が正規化される既定のエージェントを作成するには、agtInitOptsNormalization プロパティを割り当てます。たとえば、入力を 0 ~ 1 の間で正規化するには、Normalization プロパティを割り当てます。

agtInitOpts.Normalization = "rescale-zero-one"
agtInitOpts = 
  rlAgentInitializationOptions with properties:

    NumHiddenUnit: 128
           UseRNN: 1
    Normalization: "rescale-zero-one"

エージェントを作成するには、エージェント コンストラクター関数の入力引数として agtInitOpts を使用します。

この例では、チャネル仕様オブジェクトで定義された制限に従って入力が正規化される既定のエージェントを作成する方法を示します。

アクション チャネルと観測チャネルの仕様オブジェクトを定義します。

obsInfo = [ 
    rlNumericSpec([3,1],LowerLimit=-10,UpperLimit=10) 
    rlNumericSpec([2,1],LowerLimit=-3,UpperLimit=[3 5]')
    ]
obsInfo=2×1 rlNumericSpec array with properties:
    LowerLimit
    UpperLimit
    Name
    Description
    Dimension
    DataType

actInfo = rlNumericSpec([2,1],LowerLimit=-1,UpperLimit=9)
actInfo = 
  rlNumericSpec with properties:

     LowerLimit: -1
     UpperLimit: 9
           Name: [0×0 string]
    Description: [0×0 string]
      Dimension: [2 1]
       DataType: "double"

対称正規化を指定して、エージェント初期化オプション オブジェクトを作成します。

agtInitOpts = rlAgentInitializationOptions( ...
    Normalization="rescale-symmetric")
agtInitOpts = 
  rlAgentInitializationOptions with properties:

    NumHiddenUnit: 256
           UseRNN: 0
    Normalization: "rescale-symmetric"

既定の PPO エージェントを作成します。

agent = rlPPOAgent(obsInfo,actInfo,agtInitOpts);

エージェントが作成されると、rlNormalizerオブジェクトがアクターとクリティックの両方の入力チャネルに適用されます。入力チャネルが非連続であるか、上限または下限が有限でない場合は、その入力に正規化は適用されず、警告が表示されます。

近似器オブジェクトを抽出して表示します。

actor = getActor(agent)
actor = 
  rlContinuousGaussianActor with properties:

    ObservationInfo: [2×1 rl.util.rlNumericSpec]
         ActionInfo: [1×1 rl.util.rlNumericSpec]
      Normalization: ["rescale-symmetric"    "rescale-symmetric"]
          UseDevice: "cpu"
         Learnables: {10×1 cell}
              State: {0×1 cell}

critic = getCritic(agent)
critic = 
  rlValueFunction with properties:

    ObservationInfo: [2×1 rl.util.rlNumericSpec]
      Normalization: ["rescale-symmetric"    "rescale-symmetric"]
          UseDevice: "cpu"
         Learnables: {8×1 cell}
              State: {0×1 cell}

一部の入力に対して異なる正規化タイプを指定するには、まず rlNormalizer オブジェクトを作成します。あるいは、getNormalizerを使用して、アクターまたはクリティックからノーマライザー オブジェクトの配列を抽出し、ドット表記を使用して任意の要素を変更することもできます。

obs2nrmz = rlNormalizer(obsInfo(2).Dimension, ...
    Normalization="zerocenter", Mean=6)
obs2nrmz = 
  rlNormalizer with properties:

        Dimension: [2 1]
    Normalization: "zerocenter"
             Mean: 6

次に、setNormalizerを使用して、ノーマライザー オブジェクトをアクターまたはクリティックの目的の入力チャネルに割り当てます。この例では、アクターの 2 番目の観測チャネルに obs2nrmz を適用します。

actor = setNormalizer(actor,obs2nrmz,2)
actor = 
  rlContinuousGaussianActor with properties:

    ObservationInfo: [2×1 rl.util.rlNumericSpec]
         ActionInfo: [1×1 rl.util.rlNumericSpec]
      Normalization: ["rescale-symmetric"    "zerocenter"]
          UseDevice: "cpu"
         Learnables: {10×1 cell}
              State: {0×1 cell}

次に、setActorを使用して、新しいアクターをエージェントに割り当てます。

setActor(agent,actor);

エージェントが動作することを確認するには、getActionを使用します。

a = getAction(agent, { ...
    rand(obsInfo(1).Dimension) ...
    rand(obsInfo(2).Dimension) ...
    });
a{1}
ans = 2×1

    6.0517
    3.2648

バージョン履歴

R2020b で導入