getCritic
強化学習エージェントからのクリティックの抽出
説明
例
クリティック パラメーター値の変更
既存の学習済み強化学習エージェントがあると仮定します。この例では、Compare DDPG Agent to LQR Controllerの学習済みエージェントを読み込みます。
load("DoubleIntegDDPG.mat","agent")
エージェントからクリティック関数近似器を取得します。
critic = getCritic(agent);
学習可能なパラメーターをクリティックから取得します。
params = getLearnableParameters(critic)
params=2×1 cell array
{[-5.0182 -1.5718 -0.3493 -0.1067 -0.0540 -0.0029]}
{[ 0]}
パラメーター値を変更します。この例では、すべてのパラメーターを単純に 2
倍します。
modifiedParams = cellfun(@(x) x*2,params,"UniformOutput",false);
クリティックのパラメーター値を新しく変更した値に設定します。
critic = setLearnableParameters(critic,modifiedParams);
エージェント内のクリティックを新しく変更したクリティックに設定します。
setCritic(agent,critic);
新しいパラメーター値を表示します。
getLearnableParameters(getCritic(agent))
ans=2×1 cell array
{[-10.0364 -3.1436 -0.6987 -0.2135 -0.1080 -0.0059]}
{[ 0]}
強化学習エージェントの深層ニューラル ネットワークの変更
連続行動空間をもつ環境を作成し、その観測仕様とアクション仕様を取得します。この例では、Compare DDPG Agent to LQR Controllerの例で使用されている環境を読み込みます。
事前定義された環境を読み込みます。
env = rlPredefinedEnv("DoubleIntegrator-Continuous");
観測仕様とアクション仕様を取得します。
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
環境の観測仕様とアクション仕様から PPO エージェントを作成します。このエージェントは、アクターとクリティックに既定の深層ニューラル ネットワークを使用します。
agent = rlPPOAgent(obsInfo,actInfo);
強化学習エージェント内の深層ニューラル ネットワークを変更するには、まずアクター関数近似器とクリティック関数近似器を抽出しなければなりません。
actor = getActor(agent); critic = getCritic(agent);
アクター関数近似器とクリティック関数近似器の両方から深層ニューラル ネットワークを抽出します。
actorNet = getModel(actor); criticNet = getModel(critic);
アクター ネットワークをプロットします。
plot(actorNet)
ネットワークを検証するには、analyzeNetwork
を使用します。たとえば、クリティック ネットワークを検証します。
analyzeNetwork(criticNet)
アクターおよびクリティックのネットワークを変更し、エージェントに保存し直すことができます。ネットワークを変更するには、ディープ ネットワーク デザイナーアプリを使用できます。各ネットワーク用にアプリを開くには、次のコマンドを使用します。
deepNetworkDesigner(criticNet) deepNetworkDesigner(actorNet)
"ディープ ネットワーク デザイナー" でネットワークを変更します。たとえば、ネットワークに他の層を追加できます。ネットワークを変更するときに、getModel
によって返されるネットワークの入力層と出力層を変更しないでください。ネットワークの構築の詳細については、ディープ ネットワーク デザイナーを使用したネットワークの構築を参照してください。
変更したネットワークを "ディープ ネットワーク デザイナー" で検証するには、[解析] セクションの [解析] をクリックしなければなりません。変更したネットワーク構造を MATLAB® ワークスペースにエクスポートするには、新しいネットワークを作成するコードを生成し、コマンド ラインからそのコードを実行します。"ディープ ネットワーク デザイナー" のエクスポート オプションは使用しないでください。コードを生成して実行する方法を示す例については、Create DQN Agent Using Deep Network Designer and Train Using Image Observationsを参照してください。
この例では、変更したアクター ネットワークとクリティック ネットワークを作成するコードが createModifiedNetworks
補助スクリプトに含まれています。
createModifiedNetworks
変更した各ネットワークには、メインの共通パスに追加の fullyConnectedLayer
と reluLayer
が含まれます。変更したアクター ネットワークをプロットします。
plot(modifiedActorNet)
ネットワークをエクスポートした後、ネットワークをアクター関数近似器とクリティック関数近似器に挿入します。
actor = setModel(actor,modifiedActorNet); critic = setModel(critic,modifiedCriticNet);
最後に、変更したアクター関数近似器とクリティック関数近似器をアクター オブジェクトとクリティック オブジェクトに挿入します。
agent = setActor(agent,actor); agent = setCritic(agent,critic);
入力引数
agent
— 強化学習エージェント
強化学習エージェント オブジェクト
クリティックを含む強化学習エージェント。次のオブジェクトのいずれかとして指定します。
rlPGAgent
(クリティックを使用してベースライン価値関数を推定する場合)
出力引数
critic
— クリティック
rlValueFunction
オブジェクト | rlQValueFunction
オブジェクト | rlVectorQValueFunction
オブジェクト | rlQValueFunction
オブジェクトの 2 要素の行ベクトル
クリティック オブジェクト。次のいずれかとして返されます。
rlValueFunction
オブジェクト —agent
がrlACAgent
、rlPGAgent
、またはrlPPOAgent
オブジェクトの場合に返されます。rlQValueFunction
オブジェクト —agent
が、単一のクリティックをもつrlQAgent
、rlSARSAAgent
、rlDQNAgent
、rlDDPGAgent
、またはrlTD3Agent
オブジェクトの場合に返されます。rlVectorQValueFunction
オブジェクト —agent
が、離散行動空間をもつrlQAgent
、rlSARSAAgent
、rlDQNAgent
オブジェクト、ベクトル Q 値関数クリティックの場合に返されます。rlQValueFunction
オブジェクトの 2 要素の行ベクトル —agent
が、2 つのクリティックをもつrlTD3Agent
またはrlSACAgent
オブジェクトの場合に返されます。
バージョン履歴
R2019a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)