주요 콘텐츠

rlMDPEnv

강화 학습을 위한 마르코프 결정 과정 환경 만들기

설명

마르코프 결정 과정(MDP)은 상태와 관측값이 유한한 공간에 속하고 상태 천이가 확률적 규칙을 따르는 이산시간 확률 제어 과정입니다. MDP는 결과가 어느 정도는 무작위적이고 어느 정도는 의사 결정자가 제어할 수 있는 상황에서 의사 결정을 모델링할 수 있는 수학적 프레임워크를 제공합니다. MDP는 강화 학습을 사용하여 해결된 최적화 문제를 연구하는 데 유용합니다. rlMDPEnv를 사용하여 MATLAB®에서 강화 학습을 위한 마르코프 결정 과정 환경을 만듭니다.

생성

설명

env = rlMDPEnv(MDP)는 지정된 MDP 모델을 갖는 강화 학습 환경 env를 만듭니다.

예제

입력 인수

모두 확장

마르코프 결정 과정 모델로, 다음 객체 중 하나로 지정됩니다.

  • createGridWorld 함수를 사용하여 만든 GridWorld 객체

    함수

  • createMDP 함수를 사용하여 만든 GenericMDP 객체

속성

모두 확장

마르코프 결정 과정 모델로, GridWorld 객체 또는 GenericMDP 객체로 지정됩니다.

예: env.Model=createMDP(3,["left";"right"])

재설정 함수로, 함수 핸들로 지정됩니다.

예: env.ResetFcn=@() randi(3)

객체 함수

getActionInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 행동 데이터 사양 가져오기
getObservationInfo강화 학습 환경, 에이전트 또는 경험 버퍼에서 관측값 데이터 사양 가져오기
simSimulate trained reinforcement learning agents within specified environment
trainTrain reinforcement learning agents within a specified environment
validateEnvironmentValidate custom reinforcement learning environment

예제

모두 축소

이 예제에서는 다음 규칙을 갖는 5×5 그리드 월드가 있다고 가정해 보겠습니다.

  1. 테두리로 경계가 지어진 5×5 그리드 월드는 4가지 가능한 행동, 즉 북쪽 = 1, 남쪽 = 2, 동쪽 = 3, 서쪽 = 4를 가집니다.

  2. 에이전트는 셀 [2,1](두 번째 행, 첫 번째 열 - 아래 그림에서 빨간색 원으로 표시됨)부터 시작합니다.

  3. 에이전트가 셀 [5,5](파란색 셀)의 종료 상태에 도달하면 보상으로 +10을 받습니다.

  4. 환경에는 셀 [2,4]에서 셀 [4,4]로의 특별한 점프가 포함되어 있으며, 보상으로 +5(파란색 화살표)가 주어집니다.

  5. 에이전트는 셀 [3,3], [3,4], [3,5], [4,3](검은색 셀)에서 장애물로 막혀 있습니다.

  6. 다른 모든 행동에서는 보상으로 –1이 주어집니다.

Basic five-by-five grid world with agent (indicated by a red circle) positioned on the top left corner, terminal location (indicated by a light blue square) in the bottom right corner, and four obstacle squares, in black, in the middle.

먼저, createGridWorld 함수를 사용하여 GridWorld 객체를 만듭니다.

GW = createGridWorld(5,5)
GW = 
  GridWorld with properties:

                GridSize: [5 5]
            CurrentState: "[1,1]"
                  States: [25×1 string]
                 Actions: [4×1 string]
                       T: [25×25×4 double]
                       R: [25×25×4 double]
          ObstacleStates: [0×1 string]
          TerminalStates: [0×1 string]
    ProbabilityTolerance: 8.8818e-16

그런 다음 초기 상태, 종료 상태, 장애물 상태를 설정합니다.

GW.CurrentState = "[2,1]";
GW.TerminalStates = "[5,5]";
GW.ObstacleStates = ["[3,3]";"[3,4]";"[3,5]";"[4,3]"];

장애물 상태에 대한 상태 천이 행렬을 업데이트하고, 장애물 상태에 대해 점프 규칙을 설정합니다.

updateStateTranstionForObstacles(GW)
GW.T(state2idx(GW,"[2,4]"),:,:) = 0;
GW.T(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 1;

그런 다음, 보상 천이 행렬로 보상을 정의합니다.

nS = numel(GW.States);
nA = numel(GW.Actions);
GW.R = -1*ones(nS,nS,nA);
GW.R(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 5;
GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;

이제 rlMDPEnvGridWorld 객체 GW를 사용하여 그리드 월드 환경을 만듭니다.

env = rlMDPEnv(GW)
env = 
  rlMDPEnv with properties:

       Model: [1×1 rl.env.GridWorld]
    ResetFcn: []

plot 함수를 사용하여 그리드 월드 환경을 시각화할 수 있습니다.

plot(env)

Figure contains an axes object. The hidden axes object contains 7 objects of type line, patch.

getActionInfo 함수와 getObservationInfo 함수를 사용하여 환경에서 행동 사양 객체와 관측값 사양 객체를 추출합니다.

actInfo = getActionInfo(env)
actInfo = 
  rlFiniteSetSpec with properties:

       Elements: [4×1 double]
           Name: "MDP Actions"
    Description: [0×0 string]
      Dimension: [1 1]
       DataType: "double"

obsInfo = getObservationInfo(env)
obsInfo = 
  rlFiniteSetSpec with properties:

       Elements: [25×1 double]
           Name: "MDP Observations"
    Description: [0×0 string]
      Dimension: [1 1]
       DataType: "double"

이제 행동 사양과 관측값 사양을 사용하여 환경에 대한 에이전트를 만든 다음 train 함수와 sim 함수를 사용하여 환경 내에서 에이전트를 훈련시키고 시뮬레이션할 수 있습니다.

버전 내역

R2019a에 개발됨