メインコンテンツ

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

rlQAgent

Q 学習の強化学習エージェント

説明

Q 学習アルゴリズムは、離散行動空間をもつ環境向けの Off-Policy 強化学習手法です。Q 学習エージェントは、Q 値関数クリティックに学習させて最適な方策の値を推定し、クリティックによって推定された値に基づいて ε-greedy 方策に従います。

メモ

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

Q 学習エージェントの詳細については、Q 学習エージェントを参照してください。

さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。

作成

説明

agent = rlQAgent(critic,agentOptions) は、指定されたクリティック ネットワークを使用して Q 学習エージェントを作成し、AgentOptions プロパティを設定します。

入力引数

すべて展開する

クリティック。rlQValueFunction オブジェクトとして指定します。クリティックの作成の詳細については、Create Policies and Value Functionsを参照してください。

プロパティ

すべて展開する

エージェント オプション。rlQAgentOptions オブジェクトとして指定します。

シミュレーション中または展開後のアクション選択時に探索方策を使用するオプション。logical 値として指定します。

  • true — エージェントを sim 関数および generatePolicyFunction 関数で使用するときに、基本のエージェント探索方策を使用するには、この値を指定します。具体的には、この場合にエージェントは rlEpsilonGreedyPolicy オブジェクトを使用します。アクションの選択にはランダムな要素があるため、エージェントは行動空間と観測空間を探索します。

  • false — エージェントを sim 関数および generatePolicyFunction 関数で使用するときに、エージェントが基本のエージェント貪欲方策 (最大尤度をもつアクション) を使用するように強制するには、この値を指定します。具体的には、この場合にエージェントは rlMaxQPolicy 方策を使用します。アクションの選択は貪欲であるため、方策は決定論的に動作し、エージェントはアクションおよび観測空間を探索しません。

メモ

このオプションはシミュレーションと展開にのみ影響し、学習には影響しません。train 関数を使用してエージェントに学習させる場合、エージェントはこのプロパティの値に関係なく常に学習用の探索方策を使用します。

観測仕様。rlFiniteSetSpec オブジェクトまたは rlNumericSpec オブジェクト、あるいはそれらのオブジェクトが混在する配列として指定します。配列内の各要素は、その次元、データ型、名前などの環境観測チャネルのプロパティを定義します。

アクターまたはクリティックを指定してエージェントを作成すると、ObservationInfo の値は、アクター オブジェクトおよびクリティック オブジェクトで指定された値と同じになります。既定のエージェントを作成すると、エージェント コンストラクター関数によって ObservationInfo プロパティが入力引数 observationInfo に設定されます。

getObservationInfo を使用して、既存の環境、関数近似器、またはエージェントから observationInfo を抽出できます。rlFiniteSetSpec または rlNumericSpec を使用して仕様を手動で構築することもできます。

例: [rlNumericSpec([2 1]) rlFiniteSetSpec([3,5,7])]

アクション仕様。rlFiniteSetSpec オブジェクトとして指定します。このオブジェクトは、環境アクション チャネルのプロパティ (サイズ、データ型、名前など) を定義します。

メモ

このエージェントでは、1 つのアクション チャネルのみが許可されます。

クリティック オブジェクトを指定してエージェントを作成すると、ActionInfo の値は critic に指定された値と同じになります。既定のエージェントを作成すると、エージェント コンストラクター関数によって ActionInfo プロパティが入力引数 ActionInfo に設定されます。

getActionInfo を使用して、既存の環境、関数近似器、またはエージェントから actionInfo を抽出できます。rlFiniteSetSpec を使用して仕様を手動で構築することもできます。

例: rlFiniteSetSpec([3,-5,7])]

エージェントのサンプル時間。正のスカラーまたは -1 として指定します。

MATLAB® 環境内では、環境が進むたびにエージェントが実行されるため、SampleTime はエージェントの実行タイミングに影響しません。SampleTime-1 に設定されている場合、MATLAB 環境では、返される出力経験内の連続する要素間の時間間隔は 1 に等しいと見なされます。

Simulink® 環境内では、エージェント オブジェクトを使用する RL Agent ブロックがシミュレーション時間の SampleTime 秒ごとに実行されます。SampleTime-1 に設定されている場合、ブロックは入力信号からサンプル時間を継承します。ブロックがイベント駆動型サブシステムの子である場合は、SampleTime-1 に設定します。

ブロックがイベント駆動型サブシステムの子でない場合は、SampleTime を正のスカラーに設定します。これにより、モデルのバリエーションによって入力信号のサンプル時間が変化した場合でも、ブロックが常に適切な間隔で実行されるようになります。SampleTime が正のスカラーの場合、この値は、環境の種類に関係なく、sim または train によって返される出力経験内の連続する要素間の時間間隔でもあります。

Simulink 環境で SampleTime-1 に設定されている場合、返される出力経験内の連続する要素間の時間間隔は、RL Agent ブロックの実行をトリガーするイベントのタイミングを反映します。

このプロパティは、エージェントとエージェント内のエージェント オプション オブジェクトとの間で共有されます。エージェント オプション オブジェクトでこのプロパティを変更すると、エージェントでも変更されます。その逆も同様です。

例: SampleTime=-1

オブジェクト関数

trainTrain reinforcement learning agents within a specified environment
simSimulate trained reinforcement learning agents within specified environment
getActionObtain action from agent, actor, or policy object given environment observations
getCritic強化学習エージェントからのクリティックの抽出
setCriticSet critic of reinforcement learning agent
generatePolicyFunctionGenerate MATLAB function that evaluates policy of an agent or policy object

すべて折りたたむ

環境オブジェクトを作成します。この例では、基本グリッド ワールドでの強化学習エージェントの学習の例と同じ環境を使用します。

env = rlPredefinedEnv("BasicGridWorld");

観測仕様とアクション仕様を取得します。

obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);

Q 学習エージェントは、パラメーター化された Q 値関数を使用して方策の値を推定します。Q 値関数は、現在の観測値とアクションを入力として取り、単一のスカラーを出力として返します (状態からのアクションを取る割引累積長期報酬の推定値は、現在の観測値に対応し、その後の方策に従います)。

観測空間と行動空間はどちらも離散的で低次元であるため、テーブルを使用して、クリティック内の Q 値関数をモデル化します。rlTable は、観測仕様オブジェクトとアクション仕様オブジェクトから値テーブル オブジェクトを作成します。

環境の観測仕様とアクション仕様から派生させたテーブル近似モデルを作成します。

qTable = rlTable(obsInfo,actInfo);

qTable と環境仕様オブジェクトを使用して、Q 値関数近似器オブジェクトを作成します。詳細については、rlQValueFunctionを参照してください。

critic = rlQValueFunction(qTable,obsInfo,actInfo);

近似器オブジェクトを使用して Q 学習エージェントを作成します。

agent = rlQAgent(critic)
agent = 
  rlQAgent with properties:

            AgentOptions: [1×1 rl.option.rlQAgentOptions]
    UseExplorationPolicy: 0
         ObservationInfo: [1×1 rl.util.rlFiniteSetSpec]
              ActionInfo: [1×1 rl.util.rlFiniteSetSpec]
              SampleTime: 1

Epsilon の値に 0.2 を指定します。

agent.AgentOptions.EpsilonGreedyExploration.Epsilon = 0.2;

エージェントを確認するには、getAction を使用してランダムな観測値からアクションを返します。

act = getAction(agent,{randi(numel(obsInfo.Elements))});
act{1}
ans = 
1

これで、環境に対してエージェントのテストと学習ができるようになりました。

バージョン履歴

R2019a で導入