Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

rlQAgent

Q-러닝 강화 학습 에이전트

설명

Q-러닝 알고리즘은 모델이 주어지지 않은(model-free) 온라인 방식의 오프-폴리시, 이산 행동-공간 강화 학습 방법입니다. Q-러닝 에이전트는 가치를 기반으로 하는 강화 학습 에이전트로, 최적의 정책을 따를 때 기대되는 감가된 누적 장기 보상을 추정하도록 크리틱을 훈련시킵니다.

참고

Q-러닝 에이전트는 순환 신경망을 지원하지 않습니다.

Q-러닝 에이전트에 대한 자세한 내용은 Q-러닝 에이전트 항목을 참조하십시오.

다양한 유형의 강화 학습 에이전트에 대한 자세한 내용은 강화 학습 에이전트 항목을 참조하십시오.

생성

설명

예제

agent = rlQAgent(critic,agentOptions)는 지정된 크리틱 신경망을 갖는 Q-러닝 에이전트를 만들고 AgentOptions 속성을 설정합니다.

입력 인수

모두 확장

크리틱으로, rlQValueFunction 객체로 지정됩니다. 크리틱을 만드는 방법에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.

속성

모두 확장

에이전트 옵션으로, rlQAgentOptions 객체로 지정됩니다.

시뮬레이션 도중 또는 배포 후 행동을 선택할 때의 탐색 정책 사용 옵션으로, 다음 논리값 중 하나로 지정됩니다.

  • truesimgeneratePolicyFunction에서 행동을 선택할 때 기본 에이전트 탐색 정책을 사용합니다. 구체적으로 이 경우 에이전트는 rlEpsilonGreedyPolicy를 사용합니다. 선택된 행동에는 임의 구성요소가 포함되므로, 에이전트는 행동 공간과 관측값 공간을 탐색합니다.

  • falsesimgeneratePolicyFunction에서 행동을 선택할 때 에이전트가 강제로 기본 에이전트 그리디 정책(최대가능도를 갖는 행동)을 사용하도록 합니다. 구체적으로 이 경우 에이전트는 rlMaxQPolicy 정책을 사용합니다. 선택된 행동이 탐욕적 행동이므로, 정책은 결정적으로 동작하고 에이전트는 행동 공간과 관측값 공간을 탐색하지 않습니다.

참고

이 옵션은 시뮬레이션과 배포에만 영향을 미치고 훈련에는 영향을 미치지 않습니다. train을 사용하여 에이전트를 훈련시킬 경우 에이전트는 이 속성의 값에 관계없이 항상 자신의 탐색 정책을 사용합니다.

읽기 전용 속성입니다.

관측값 사양으로, rlFiniteSetSpec 객체나 rlNumericSpec 객체, 또는 이러한 객체가 혼합된 배열로 지정됩니다. 배열의 각 요소는 환경 관측값 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.

ObservationInfo의 값은 critic에 지정된 대응값과 일치합니다.

getObservationInfo를 사용하여 기존 환경이나 에이전트에서 observationInfo를 추출할 수 있습니다. rlFiniteSetSpec 또는 rlNumericSpec을 사용하여 사양을 수동으로 생성할 수도 있습니다.

행동 사양으로, rlFiniteSetSpec 객체로 지정됩니다. 이 객체는 환경 행동 채널의 속성(예: 차원, 데이터형, 이름)을 정의합니다.

참고

하나의 행동 채널만 허용됩니다.

critic 객체를 지정하여 에이전트를 만드는 경우 ActionInfo의 값은 critic에 지정된 값과 일치합니다.

getActionInfo를 사용하여 기존 환경이나 에이전트에서 actionInfo를 추출할 수 있습니다. rlFiniteSetSpec을 사용하여 사양을 수동으로 생성할 수도 있습니다.

에이전트의 샘플 시간으로, 양의 스칼라 또는 -1로 지정됩니다. 이 파라미터를 -1로 설정하면 이벤트 기반 시뮬레이션을 실행할 수 있습니다.

Simulink® 환경에서는 에이전트가 시뮬레이션 시간의 매 SampleTime초마다 실행되도록 지정된 RL Agent 블록입니다. SampleTime-1이면 이 블록은 부모 서브시스템에서 샘플 시간을 상속합니다.

MATLAB® 환경에서는 환경이 진행될 때마다 에이전트가 실행됩니다. 이 경우 SampleTimesim 또는 train에 의해 반환되는 출력 경험의 연속된 요소 사이의 시간 간격입니다. SampleTime-1인 경우 반환되는 출력 경험의 연속된 요소 사이의 시간 간격은 에이전트 실행을 트리거하는 이벤트의 발생 시점을 반영합니다.

예: 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
getActorExtract actor from reinforcement learning agent
setActorSet actor of reinforcement learning agent
getCriticExtract critic from reinforcement learning agent
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-값 함수는 현재 관측값과 행동을 입력값으로 받고 single형 스칼라를 출력값(현재 관측값에 해당하는 상태로부터 행동을 받고 그 후 정책을 따를 때 추정되는 감가된 누적 장기 보상)으로 반환합니다.

관측값 공간과 행동 공간이 모두 낮은 차원의 이산 공간이므로, 테이블을 사용하여 크리틱 내에서 Q-값 함수를 모델링하십시오. rlTable은 관측값 사양과 행동 사양 객체에서 값 테이블 객체를 생성합니다.

환경 관측값과 행동 사양으로부터 도출된 테이블 근사 모델을 만듭니다.

qTable = rlTable(obsInfo,actInfo);

qTable과 환경 사양 객체를 사용하여 Q-값 함수 근사기 객체를 만듭니다. 자세한 내용은 rlQValueFunction 항목을 참조하십시오.

critic = rlQValueFunction(qTable,obsInfo,actInfo);

근사기 객체를 사용하여 Q-러닝 에이전트를 만듭니다.

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

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

Epsilon 값을 0.05로 지정합니다.

opt = rlSARSAAgentOptions;
agent.AgentOptions.EpsilonGreedyExploration.Epsilon = 0.05;

에이전트를 확인하기 위해 getAction을 사용하여 임의 관측값에서 행동을 반환합니다.

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

이제 환경에 대해 에이전트를 테스트하고 훈련시킬 수 있습니다.

버전 내역

R2019a에 개발됨