rlDDPGAgent
DDPG(심층 결정적 정책 경사법) 강화 학습 에이전트
설명
DDPG(심층 결정적 정책 경사법) 알고리즘은 모델이 주어지지 않은(model-free) 온라인 방식의 액터-크리틱, 오프-폴리시, 연속 행동-공간 강화 학습 방법으로, 기대되는 감가된 누적 장기 보상을 최대화하는 정책을 학습하려고 시도합니다.
자세한 내용은 DDPG(심층 결정적 정책 경사법) 에이전트 항목을 참조하십시오. 다양한 유형의 강화 학습 에이전트에 대한 자세한 내용은 강화 학습 에이전트 항목을 참조하십시오.
생성
구문
설명
관측값 사양과 행동 사양을 사용하여 에이전트 생성
는 주어진 관측값 사양과 행동 사양을 갖는 환경에 대한 심층 결정적 정책 경사 에이전트를 만들며 이때 디폴트 초기화 옵션을 사용합니다. 에이전트의 액터와 크리틱은 관측값 사양 agent
= rlDDPGAgent(observationInfo
,actionInfo
)observationInfo
와 행동 사양 actionInfo
로부터 구축된 디폴트 심층 신경망을 사용합니다. agent
의 ObservationInfo
및 ActionInfo
속성은 각각 observationInfo
및 actionInfo
입력 인수로 설정됩니다.
는 주어진 관측값 사양과 행동 사양을 갖는 환경에 대한 심층 결정적 정책 경사 에이전트를 만듭니다. 에이전트는 agent
= rlDDPGAgent(observationInfo
,actionInfo
,initOpts
)initOpts
객체에 지정된 옵션을 사용하여 구성된 디폴트 신경망을 사용합니다. 초기화 옵션에 대한 자세한 내용은 rlAgentInitializationOptions
를 참조하십시오.
액터와 크리틱을 사용하여 에이전트 생성
에이전트 옵션 지정
는 DDPG 에이전트를 만들고 agent
= rlDDPGAgent(___,agentOptions
)AgentOptions
속성을 agentOptions
입력 인수로 설정합니다. 이 구문은 위에 열거된 구문에 나와 있는 입력 인수 다음에 사용하십시오.
입력 인수
initOpts
— 에이전트 초기화 옵션
rlAgentInitializationOptions
객체
에이전트 초기화 옵션으로, rlAgentInitializationOptions
객체로 지정됩니다.
actor
— 액터
rlContinuousDeterministicActor
객체
액터로, rlContinuousDeterministicActor
로 지정됩니다. 액터를 만드는 방법에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.
critic
— 크리틱
rlQValueFunction
객체
크리틱으로, rlQValueFunction
객체로 지정됩니다. 크리틱을 만드는 방법에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.
속성
ObservationInfo
— 관측값 사양
사양 객체 | 사양 객체로 구성된 배열
관측값 사양으로, rlFiniteSetSpec
객체나 rlNumericSpec
객체, 또는 이러한 객체가 혼합된 배열로 지정됩니다. 배열의 각 요소는 환경 관측값 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.
액터 또는 크리틱을 지정하여 에이전트를 만드는 경우 ObservationInfo
의 값은 actor 및 critic 객체에 지정된 값과 일치합니다. 디폴트 에이전트를 만드는 경우 에이전트 생성자 함수는 ObservationInfo
속성을 입력 인수 observationInfo
로 설정합니다.
getObservationInfo
를 사용하여 기존 환경, 함수 근사기 또는 에이전트에서 observationInfo
를 추출할 수 있습니다. rlFiniteSetSpec
또는 rlNumericSpec
을 사용하여 사양을 수동으로 생성할 수도 있습니다.
예: [rlNumericSpec([2 1]) rlFiniteSetSpec([3,5,7])]
ActionInfo
— 행동 사양
rlNumericSpec
객체
행동 사양으로, rlNumericSpec
객체로 지정됩니다. 이 객체는 환경 행동 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.
참고
하나의 행동 채널만 허용됩니다.
액터와 크리틱을 지정하여 에이전트를 만드는 경우 ActionInfo
의 값은 actor 및 critic 객체에 지정된 값과 일치합니다. 디폴트 에이전트를 만드는 경우 에이전트 생성자 함수는 ActionInfo
속성을 입력 인수 ActionInfo
로 설정합니다.
getActionInfo
를 사용하여 기존 환경, 함수 근사기 또는 에이전트에서 actionInfo
를 추출할 수 있습니다. rlNumericSpec
을 사용하여 사양을 수동으로 생성할 수도 있습니다.
예: rlNumericSpec([2 1])
AgentOptions
— 에이전트 옵션
rlDDPGAgentOptions
객체
에이전트 옵션으로, rlDDPGAgentOptions
객체로 지정됩니다.
순환 신경망을 사용하는 디폴트 액터와 크리틱을 갖는 DDPG 에이전트를 만드는 경우 AgentOptions.SequenceLength
의 디폴트 값은 32
입니다.
ExperienceBuffer
— 경험 버퍼
rlReplayMemory
객체 | rlPrioritizedReplayMemory
객체 | rlHindsightReplayMemory
객체 | rlHindsightPrioritizedReplayMemory
객체
경험 버퍼로, 다음과 같은 replay memory 객체 중 하나로 지정됩니다.
참고
재귀적 신경망을 사용하는 에이전트는 rlReplayMemory
및 rlHindsightReplayMemory
버퍼만 지원합니다.
에이전트는 훈련 중에 각 경험(S,A,R,S',D)을 버퍼에 저장합니다. 여기서 각 요소는 다음과 같습니다.
S는 환경의 현재 관측값입니다.
A는 에이전트가 취한 행동입니다.
R은 행동 A를 취한 것에 대한 보상입니다.
S'는 행동 A를 취한 후의 다음 관측값입니다.
D는 행동 A를 취한 후의 is-done 신호입니다.
그런 다음 에이전트는 버퍼에서 경험 미니 배치를 샘플링하고 그러한 미니 배치를 사용하여 액터 및 크리틱 함수 근사기를 업데이트합니다.
UseExplorationPolicy
— 시뮬레이션 및 배포 시 탐색 정책을 사용할지 지정하는 옵션
true
(디폴트 값) | false
시뮬레이션하는 동안이나 배포 후 행동을 선택할 때 탐색 정책을 사용할지 지정하는 옵션으로, 다음 논리값 중 하나로 지정됩니다.
true
—sim
및generatePolicyFunction
에서 행동을 선택할 때 기본 에이전트 탐색 정책을 사용합니다. 구체적으로 이 경우 에이전트는rlAdditiveNoisePolicy
를 사용합니다. 이 유형의 행동 선택은 무작위적인 요소를 내포하기 때문에 에이전트가 행동 공간과 관측값 공간을 탐색합니다.false
—sim
및generatePolicyFunction
에서 행동을 선택할 때 에이전트가 강제로 기본 에이전트 그리디 정책(최대가능도를 갖는 행동)을 사용하도록 합니다. 구체적으로 이 경우 에이전트는rlDeterministicActorPolicy
정책을 사용합니다. 행동 선택을 탐욕적으로 하기 때문에 정책이 결정적으로 동작하고 에이전트가 행동 공간과 관측값 공간을 탐색하지 않습니다.
참고
이 옵션은 시뮬레이션과 배포에만 영향을 미치고 훈련에는 영향을 미치지 않습니다. train
을 사용하여 에이전트를 훈련시킬 경우 에이전트는 이 속성의 값에 관계없이 항상 자신의 탐색 정책을 사용합니다.
SampleTime
— 에이전트의 샘플 시간
1
(디폴트 값) | 양의 스칼라 | -1
에이전트의 샘플 시간으로, 양의 스칼라 또는 -1
로 지정됩니다. 이 파라미터를 -1
로 설정하면 이벤트 기반 시뮬레이션을 실행할 수 있습니다.
Simulink® 환경에서는 에이전트가 시뮬레이션 시간의 매 SampleTime
초마다 실행되도록 지정된 RL Agent 블록입니다. SampleTime
이 -1
이면 이 블록은 부모 서브시스템에서 샘플 시간을 상속합니다.
MATLAB® 환경에서는 환경이 진행될 때마다 에이전트가 실행됩니다. 이 경우 SampleTime
은 sim
또는 train
에 의해 반환되는 출력 경험의 연속된 요소 사이의 시간 간격입니다. SampleTime
이 -1
인 경우 반환되는 출력 경험의 연속된 요소 사이의 시간 간격은 에이전트 실행을 트리거하는 이벤트의 발생 시점을 반영합니다.
이 속성은 에이전트와 에이전트 내 agent options 객체 간에 공유됩니다. 따라서 agent options 객체에서 이를 변경하면 에이전트에서도 변경되고 그 반대의 경우에도 마찬가지입니다.
예: SampleTime=-1
객체 함수
train | Train reinforcement learning agents within a specified environment |
sim | Simulate trained reinforcement learning agents within specified environment |
getAction | Obtain action from agent, actor, or policy object given environment observations |
getActor | Extract actor from reinforcement learning agent |
setActor | Set actor of reinforcement learning agent |
getCritic | Extract critic from reinforcement learning agent |
setCritic | Set critic of reinforcement learning agent |
generatePolicyFunction | Generate MATLAB function that evaluates policy of an agent or policy object |
예제
관측값 사양과 행동 사양을 사용하여 DDPG 에이전트 만들기
연속 행동 공간이 있는 환경을 만들고 관측값 사양과 행동 사양을 가져옵니다. 이 예제에서는 예제 Compare DDPG Agent to LQR Controller에 사용된 환경을 불러옵니다. 환경에서 관측하는 값은 질량의 위치와 속도를 포함하는 벡터입니다. 행동은 질량에 가해지는 힘을 나타내는 스칼라로서, -2N에서 2N까지 연속된 범위를 갖습니다.
env = rlPredefinedEnv("DoubleIntegrator-Continuous");
관측값 사양과 행동 사양을 가져옵니다.
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
에이전트 생성 함수는 액터 및 크리틱 신경망을 무작위로 초기화합니다. 난수 생성기의 시드값을 고정하여 재현이 가능하도록 합니다.
rng(0)
환경 관측값 사양과 행동 사양을 사용하여 정책 경사 에이전트를 만듭니다.
agent = rlDDPGAgent(obsInfo,actInfo)
agent = rlDDPGAgent with properties: ExperienceBuffer: [1x1 rl.replay.rlReplayMemory] AgentOptions: [1x1 rl.option.rlDDPGAgentOptions] UseExplorationPolicy: 0 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlNumericSpec] SampleTime: 1
에이전트를 확인하기 위해 getAction
을 사용하여 임의 관측값에서 행동을 반환합니다.
getAction(agent,{rand(obsInfo(1).Dimension)})
ans = 1x1 cell array
{[0.0182]}
이제 환경 내에서 에이전트를 테스트하고 훈련시킬 수 있습니다. 또한 getActor
와 getCritic
을 사용하여 액터와 크리틱을 각각 추출하고, getModel
을 사용하여 액터나 크리틱으로부터 근사기 모델(기본적으로 심층 신경망)을 추출할 수도 있습니다.
초기화 옵션을 사용하여 DDPG 에이전트 만들기
연속 행동 공간이 있는 환경을 만들고 관측값 사양과 행동 사양을 가져옵니다. 이 예제에서는 예제 Train DDPG Agent to Swing Up and Balance Pendulum with Image Observation에 사용된 환경을 불러옵니다. 이 환경은 두 가지의 관측값을 가집니다. 하나는 50×50 회색조 영상이고 다른 하나는 진자의 각속도를 나타내는 스칼라입니다. 행동은 -2Nm에서 2Nm까지 연속된 범위의 토크를 나타내는 스칼라입니다.
env = rlPredefinedEnv("SimplePendulumWithImage-Continuous");
관측값 사양과 행동 사양을 가져옵니다.
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
신경망에서 은닉 완전 연결 계층이 갖는 뉴런 수를 (디폴트 개수인 256
개 대신에) 128
개로 지정하여 agent initialization option 객체를 만듭니다.
initOpts = rlAgentInitializationOptions(NumHiddenUnit=128);
에이전트 생성 함수는 액터 및 크리틱 신경망을 무작위로 초기화합니다. 난수 생성기의 시드값을 고정하여 재현이 가능하도록 할 수 있습니다.
rng(0)
환경 관측값 사양과 행동 사양을 사용하여 DDPG 에이전트를 만듭니다.
agent = rlDDPGAgent(obsInfo,actInfo,initOpts);
에이전트 액터와 크리틱에서 각각 심층 신경망을 추출합니다.
actorNet = getModel(getActor(agent)); criticNet = getModel(getCritic(agent));
은닉 완전 연결 계층이 각각 128개의 뉴런을 갖는지 확인하려면 해당 계층을 다음과 같이 MATLAB® 명령 창에 표시할 수 있습니다.
criticNet.Layers
또는 다음과 같이 analyzeNetwork
를 사용하여 대화형 방식으로 구조를 시각화할 수 있습니다.
analyzeNetwork(criticNet)
액터 신경망과 크리틱 신경망을 플로팅합니다.
plot(actorNet)
plot(criticNet)
에이전트를 확인하기 위해 getAction
을 사용하여 임의 관측값에서 행동을 반환합니다.
getAction(agent,{rand(obsInfo(1).Dimension),rand(obsInfo(2).Dimension)})
ans = 1x1 cell array
{[-0.0364]}
이제 환경 내에서 에이전트를 테스트하고 훈련시킬 수 있습니다.
액터와 크리틱을 사용하여 DDPG 에이전트 만들기
연속 행동 공간이 있는 환경을 만들고 관측값 사양과 행동 사양을 가져옵니다. 이 예제에서는 예제 Compare DDPG Agent to LQR Controller에 사용된 환경을 불러옵니다. 환경에서 관측하는 값은 질량의 위치와 속도를 포함하는 벡터입니다. 행동은 -2N에서 2N까지 연속된 범위의 힘을 나타내는 스칼라입니다.
env = rlPredefinedEnv("DoubleIntegrator-Continuous");
환경 관측값 사양 객체와 행동 사양 객체를 가져옵니다.
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
액터 신경망과 크리틱 신경망은 무작위로 초기화됩니다. 난수 생성기의 시드값을 고정하여 재현이 가능하도록 합니다.
rng(0)
DDPG 에이전트는 파라미터화된 Q-값 함수 근사기를 사용하여 정책의 값을 추정합니다. Q-값 함수 크리틱은 현재 관측값과 행동을 입력값으로 받고 single형 스칼라를 출력값(현재 관측값에 해당하는 상태로부터 행동을 취하고 이후 정책을 따랐을 때 추정되는 감가된 누적 장기 보상)으로 반환합니다.
크리틱 내에서 파라미터화된 Q-값 함수를 모델링하려면 두 개의 입력 계층(obsInfo
로 지정된 대로 관측값 채널에 대한 입력 계층 및 actInfo
로 지정된 대로 행동 채널에 대한 입력 계층)과 (스칼라 값을 반환하는) 하나의 출력 계층을 갖는 신경망을 사용하십시오.
prod(obsInfo.Dimension)
과 prod(actInfo.Dimension)
은 행 벡터, 열 벡터 또는 행렬로 정렬되는지에 관계없이 각각 관측값 공간과 행동 공간의 차원 수를 반환합니다.
각 신경망 경로를 layer 객체로 구성된 배열로 정의하고 각 경로의 입력 계층과 출력 계층에 이름을 할당합니다. 이러한 이름을 사용하면 경로를 연결한 다음 나중에 신경망 입력 계층 및 출력 계층을 적절한 환경 채널과 명시적으로 연결할 수 있습니다.
% Define observation and action paths obsPath = featureInputLayer(prod(obsInfo.Dimension),Name="obsInLyr"); actPath = featureInputLayer(prod(actInfo.Dimension),Name="actInLyr"); % Define common path: concatenate along first dimension. commonPath = [ concatenationLayer(1,2,Name="concat") fullyConnectedLayer(50) reluLayer fullyConnectedLayer(1) ];
dlnetwork
객체를 조합하고 계층을 추가합니다.
criticNet = dlnetwork; criticNet = addLayers(criticNet, obsPath); criticNet = addLayers(criticNet, actPath); criticNet = addLayers(criticNet, commonPath);
경로를 연결합니다.
criticNet = connectLayers(criticNet,"obsInLyr","concat/in1"); criticNet = connectLayers(criticNet,"actInLyr","concat/in2");
신경망을 플로팅합니다.
plot(criticNet)
신경망을 초기화합니다.
criticNet = initialize(criticNet);
가중치 개수를 표시합니다.
summary(criticNet)
Initialized: true Number of learnables: 251 Inputs: 1 'obsInLyr' 2 features 2 'actInLyr' 1 features
criticNet
, 환경 관측값 및 행동 사양, 그리고 환경 관측값 채널 및 행동 채널과 연결할 신경망 입력 계층의 이름을 사용하여 크리틱 근사기 객체를 만듭니다. 자세한 내용은 rlQValueFunction
항목을 참조하십시오.
critic = rlQValueFunction(criticNet,obsInfo,actInfo,... ObservationInputNames="obsInLyr", ... ActionInputNames="actInLyr");
임의의 관측값 입력값과 행동 입력값을 사용하여 크리틱을 확인합니다.
getValue(critic,{rand(obsInfo.Dimension)},{rand(actInfo.Dimension)})
ans = single
-0.4260
DDPG 에이전트는 연속 행동 공간에 대해 연속 결정적 액터가 학습한 파라미터화된 결정적 정책을 사용합니다. 이 액터는 현재 관측값을 입력값으로 받고 관측값의 결정적 함수인 행동을 출력값으로 반환합니다.
액터 내에서 파라미터화된 정책을 모델링하려면 (obsInfo
로 지정된 대로 환경 관측값 채널의 내용을 받는) 하나의 입력 계층과 (actInfo
로 지정된 대로 환경 행동 채널에 행동을 반환하는) 하나의 출력 계층을 갖는 신경망을 사용하십시오.
신경망을 layer 객체로 구성된 배열로 정의합니다.
actorNet = [ featureInputLayer(prod(obsInfo.Dimension)) fullyConnectedLayer(16) tanhLayer fullyConnectedLayer(16) tanhLayer fullyConnectedLayer(prod(actInfo.Dimension)) ];
dlnetwork
객체로 변환합니다.
actorNet = dlnetwork(actorNet);
신경망을 초기화합니다.
actorNet = initialize(actorNet);
가중치 개수를 표시합니다.
summary(actorNet)
Initialized: true Number of learnables: 337 Inputs: 1 'input' 2 features
actorNet
과 관측값 및 행동 사양을 사용하여 액터를 만듭니다. 연속 결정적 액터에 대한 자세한 내용은 rlContinuousDeterministicActor
항목을 참조하십시오.
actor = rlContinuousDeterministicActor(actorNet,obsInfo,actInfo);
임의의 관측값 입력값을 사용하여 액터를 확인합니다.
getAction(actor,{rand(obsInfo.Dimension)})
ans = 1x1 cell array
{[-0.5493]}
액터와 크리틱을 사용하여 DDPG 에이전트를 만듭니다.
agent = rlDDPGAgent(actor,critic)
agent = rlDDPGAgent with properties: ExperienceBuffer: [1x1 rl.replay.rlReplayMemory] AgentOptions: [1x1 rl.option.rlDDPGAgentOptions] UseExplorationPolicy: 0 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlNumericSpec] SampleTime: 1
액터와 크리틱에 대한 훈련 옵션을 포함하여 에이전트 옵션을 지정합니다.
agent.AgentOptions.SampleTime=env.Ts; agent.AgentOptions.TargetSmoothFactor=1e-3; agent.AgentOptions.ExperienceBufferLength=1e6; agent.AgentOptions.DiscountFactor=0.99; agent.AgentOptions.MiniBatchSize=32; agent.AgentOptions.CriticOptimizerOptions.LearnRate=5e-3; agent.AgentOptions.CriticOptimizerOptions.GradientThreshold=1; agent.AgentOptions.ActorOptimizerOptions.LearnRate=1e-4; agent.AgentOptions.ActorOptimizerOptions.GradientThreshold=1;
임의의 관측값 입력값을 사용하여 에이전트를 확인합니다.
getAction(agent,{rand(obsInfo.Dimension)})
ans = 1x1 cell array
{[-0.5947]}
이제 환경 내에서 에이전트를 훈련시킬 수 있습니다.
순환 신경망을 사용하는 DDPG 에이전트 만들기
이 예제에서는 예제 Compare DDPG Agent to LQR Controller에 사용된 환경을 불러옵니다. 환경에서 관측하는 값은 질량의 위치와 속도를 포함하는 벡터입니다. 행동은 -2N에서 2N까지 연속된 범위의 힘을 나타내는 스칼라입니다.
env = rlPredefinedEnv("DoubleIntegrator-Continuous");
관측값 객체와 행동 사양 객체를 가져옵니다.
obsInfo = getObservationInfo(env); actInfo = getActionInfo(env);
DDPG 에이전트는 파라미터화된 Q-값 함수 근사기를 사용하여 정책의 값을 추정합니다.
크리틱 내에서 파라미터화된 Q-값 함수를 모델링하려면, 순환 신경망을 사용하십시오. 이때 이 순환 신경망은 두 개의 입력 계층과 (스칼라 값을 반환하는) 한 개의 출력 계층을 가져야 합니다.
각 신경망 경로를 layer 객체로 구성된 배열로 정의합니다. 순환 신경망을 만들기 위해 sequenceInputLayer
를 입력 계층으로 사용하고 lstmLayer
를 다른 신경망 계층 중 하나로 포함합니다.
% Define observation and action paths obsPath = sequenceInputLayer(prod(obsInfo.Dimension),Name="netOin"); actPath = sequenceInputLayer(prod(actInfo.Dimension),Name="netAin"); % Define common path: concatenate along first dimension commonPath = [ concatenationLayer(1,2,Name="cat") lstmLayer(50) reluLayer fullyConnectedLayer(1) ];
dlnetwork
객체를 만들고 계층을 추가합니다.
criticNet = dlnetwork(); criticNet = addLayers(criticNet, obsPath); criticNet = addLayers(criticNet, actPath); criticNet = addLayers(criticNet, commonPath);
계층을 연결합니다.
criticNet = connectLayers(criticNet,"netOin","cat/in1"); criticNet = connectLayers(criticNet,"netAin","cat/in2");
신경망을 플로팅합니다.
plot(criticNet)
신경망을 초기화하고 가중치 개수를 표시합니다.
criticNet = initialize(criticNet); summary(criticNet)
Initialized: true Number of learnables: 10.8k Inputs: 1 'netOin' Sequence input with 2 dimensions 2 'netAin' Sequence input with 1 dimensions
criticNet
, 환경 관측값 및 행동 사양, 그리고 환경 관측값 채널 및 행동 채널과 연결할 신경망 입력 계층의 이름을 사용하여 크리틱 근사기 객체를 만듭니다. 자세한 내용은 rlQValueFunction
항목을 참조하십시오.
critic = rlQValueFunction(criticNet,obsInfo,actInfo,... ObservationInputNames="netOin",ActionInputNames="netAin");
임의의 관측값 입력값과 행동 입력값을 사용하여 크리틱을 확인합니다.
getValue(critic,{rand(obsInfo.Dimension)},{rand(actInfo.Dimension)})
ans = single
-0.0074
DDPG 에이전트는 연속 결정적 액터를 사용하여 정책을 근사합니다. 크리틱이 순환 신경망을 가지므로 액터도 순환 신경망을 사용해야 합니다.
신경망을 layer 객체로 구성된 배열로 정의합니다.
actorNet = [ sequenceInputLayer(prod(obsInfo.Dimension)) lstmLayer(10) reluLayer fullyConnectedLayer(prod(actInfo.Dimension)) ];
dlnetwork
객체로 변환하고, 신경망을 초기화한 후, 가중치 개수를 표시합니다.
actorNet = dlnetwork(actorNet); actorNet = initialize(actorNet); summary(actorNet)
Initialized: true Number of learnables: 531 Inputs: 1 'sequenceinput' Sequence input with 2 dimensions
actorNet
과 관측값 및 행동 사양을 사용하여 액터를 만듭니다. 연속 결정적 액터에 대한 자세한 내용은 rlContinuousDeterministicActor
항목을 참조하십시오.
actor = rlContinuousDeterministicActor(actorNet,obsInfo,actInfo);
임의의 관측값 입력값을 사용하여 액터를 확인합니다.
getAction(actor,{rand(obsInfo.Dimension)})
ans = 1x1 cell array
{[0.0246]}
크리틱에 대한 몇 가지 훈련 옵션을 지정합니다.
criticOpts = rlOptimizerOptions( ...
LearnRate=5e-3,GradientThreshold=1);
액터에 대한 몇 가지 훈련 옵션을 지정합니다.
actorOpts = rlOptimizerOptions( ...
LearnRate=1e-4,GradientThreshold=1);
에이전트 옵션을 지정합니다. 순환 신경망을 갖는 DDPG 에이전트를 사용하려면 SequenceLength
를 1보다 큰 값으로 지정해야 합니다.
agentOpts = rlDDPGAgentOptions(... SampleTime=env.Ts,... TargetSmoothFactor=1e-3,... ExperienceBufferLength=1e6,... DiscountFactor=0.99,... SequenceLength=20,... MiniBatchSize=32, ... CriticOptimizerOptions=criticOpts, ... ActorOptimizerOptions=actorOpts);
액터와 크리틱을 사용하여 DDPG 에이전트를 만듭니다.
agent = rlDDPGAgent(actor,critic,agentOpts)
agent = rlDDPGAgent with properties: ExperienceBuffer: [1x1 rl.replay.rlReplayMemory] AgentOptions: [1x1 rl.option.rlDDPGAgentOptions] UseExplorationPolicy: 0 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlNumericSpec] SampleTime: 0.1000
에이전트를 확인하기 위해 임의 관측값에서 행동을 반환합니다.
getAction(agent,{rand(obsInfo.Dimension)})
ans = 1x1 cell array
{[0.0158]}
순차적인 관측값을 사용하여 에이전트를 실행하려면 시퀀스 길이(시간) 차원을 사용합니다. 예를 들어, 9
개의 순차적 관측값에 대한 행동을 구합니다.
[action,state] = getAction(agent, ...
{rand([obsInfo.Dimension 1 9])});
관측값의 일곱 번째 요소에 해당하는 행동을 표시합니다.
action = action{1}; action(1,1,1,7)
ans = 0.0780
이제 환경 내에서 에이전트를 테스트하고 훈련시킬 수 있습니다.
버전 내역
R2019a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 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)