Main Content

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

MATLAB 강화 학습 환경 만들기

작업을 완료하도록 에이전트를 훈련시키는 강화 학습 시나리오에서는 환경이 에이전트가 상호 작용하는 외부 시스템(즉, 월드)을 모델링합니다. 제어 시스템 응용 사례에서는 이 외부 시스템을 보통 플랜트라고 합니다.

다음 그림에 표시된 것처럼 환경은 다음을 수행합니다.

  1. 에이전트로부터 행동을 수신합니다.

  2. 행동에 대한 응답으로 관측값을 반환합니다.

  3. 행동이 작업을 완료하는 데 얼마나 영향을 미치는지 측정하는 보상을 생성합니다.

Diagram showing an agent that interacts with its environment. The observation signal goes from the environment to the agent, and the action signal goes from the agent to the environment. The reward signal goes from the environment to the reinforcement learning algorithm inside the agent. The reinforcement learning algorithm uses the available information to update a policy. The agent uses a policy to map an observation to an action. This is similar to a control diagram, shown below, in which a controller senses an error between a desired reference and a plant output and uses the error to acts on a plant input.

환경 모델을 만들 때는 다음을 정의해야 합니다.

  • 에이전트가 환경과 상호 작용하기 위해 사용하는 행동 및 관측값 신호.

  • 에이전트가 성공을 측정하기 위해 사용하는 보상 신호. 자세한 내용은 Define Reward and Observation Signals in Custom Environments 항목을 참조하십시오.

  • 환경 초기 조건과 동적 동작.

행동 및 관측값 신호

환경 객체를 만들 때는 에이전트가 환경과 상호 작용하기 위해 사용하는 행동 및 관측값 신호를 지정해야 합니다. 이산 및 연속 행동과 관측값 공간을 둘 다 만들 수 있습니다. 자세한 내용은 rlNumericSpec 항목과 rlFiniteSetSpec 항목을 각각 참조하십시오.

행동과 관측값으로 선택하는 신호는 응용 사례에 따라 다릅니다. 예를 들어, 제어 시스템 응용 사례의 경우 오차 신호의 적분(때로는 미분)이 유용한 관측값인 경우가 많습니다. 또한, 기준 추종 응용 사례의 경우 시변 기준 신호를 관측값으로 두는 것이 유용합니다.

관측값 신호를 정의할 때는 모든 환경 상태(또는 그 추정값)가 관측값 벡터를 포함하는지 확인하십시오. 이렇게 확인하는 것이 좋은 이유는, 에이전트가 흔히 내부 기억 또는 상태가 없는 정적 함수라서 내부적으로 환경 상태를 성공적으로 재생성하지 못할 수 있기 때문입니다.

예를 들어, 흔들리는 진자의 이미지 관측값은 위치 정보를 담고 있지만 그것만으로는 진자의 속도를 판단하기에 정보가 부족합니다. 이 경우 관측값 벡터의 추가 요소로서 진자 속도를 측정하거나 추정할 수 있습니다.

미리 정의된 MATLAB 환경

Reinforcement Learning Toolbox™는 행동, 관측값, 보상, 동특성이 이미 정의되어 있는 몇 가지 미리 정의된 MATLAB® 환경을 제공합니다. 이러한 환경을 사용하여 다음을 수행할 수 있습니다.

  • 강화 학습 개념을 학습합니다.

  • Reinforcement Learning Toolbox 특징에 익숙해집니다.

  • 자신의 강화 학습 에이전트를 테스트합니다.

자세한 내용은 Load Predefined Grid World Environments 항목과 Load Predefined Control System Environments 항목을 참조하십시오.

사용자 지정 MATLAB 환경

자신의 응용 사례에 맞게 다음 유형의 사용자 지정 MATLAB 환경을 만들 수 있습니다.

  • 지정된 크기, 보상, 장애물이 있는 그리드 월드

  • 사용자 지정 함수를 사용하여 지정한 동특성을 갖춘 환경

  • 템플릿 환경 객체를 만들고 수정하여 지정한 환경

사용자 지정 환경 객체를 만든 후, 미리 정의된 환경에서와 동일한 방식으로 에이전트를 훈련시킬 수 있습니다. 에이전트 훈련에 대한 자세한 내용은 강화 학습 에이전트 훈련시키기 항목을 참조하십시오.

사용자 지정 그리드 월드

원하는 사용자 지정 보상, 상태 천이, 장애물 구성으로 임의 크기의 사용자 지정 그리드 월드를 만들 수 있습니다. 사용자 지정 그리드 월드 환경을 만들려면 다음을 수행하십시오.

  1. createGridWorld 함수를 사용하여 그리드 월드 모델을 만듭니다. 예를 들어, 10개의 행과 9개의 열로 이루어진 gw라는 그리드 월드를 만들어 보겠습니다.

    gw = createGridWorld(10,9);
  2. 모델의 속성을 수정하여 그리드 월드를 구성합니다. 예를 들어, 종료 상태를 위치 [7,9]로 지정합니다.

    gw.TerminalStates = "[7,9]";
  3. 그리드 월드는 마르코프 결정 과정(MDP) 환경에 포함되어야 합니다. 에이전트가 그리드 월드 모델과 상호 작용하기 위해 사용하는 이 그리드 월드에 대한 MDP 환경을 만듭니다.

    env = rlMDPEnv(gw);

사용자 지정 그리드 월드에 대한 자세한 내용은 Create Custom Grid World Environments 항목을 참조하십시오.

사용자 지정 함수 지정하기

단순한 환경의 경우 rlFunctionEnv 객체를 만들고 자신만의 사용자 지정 재설정 함수와 스텝 함수를 지정하여 사용자 지정 환경 객체를 정의할 수 있습니다.

  • 각 훈련 에피소드 시작 시, 에이전트는 재설정 함수를 호출하여 환경 초기 조건을 설정합니다. 예를 들어, 알려진 초기 상태 값을 지정하거나 환경을 무작위 초기 상태로 둘 수 있습니다.

  • 스텝 함수는 환경의 동특성, 즉 현재 상태와 에이전트 행동에 대한 함수로서 상태가 어떻게 변화하는지를 정의합니다. 각 훈련 시간 스텝에서 모델의 상태는 스텝 함수를 사용하여 업데이트됩니다.

자세한 내용은 사용자 지정 함수를 사용하여 MATLAB 환경 만들기 항목을 참조하십시오.

템플릿 환경을 만들고 수정하기

복잡한 환경의 경우 템플릿 환경을 만들고 수정하여 사용자 지정 환경을 정의할 수 있습니다. 사용자 지정 환경을 만들려면 다음을 수행하십시오.

  1. rlCreateEnvTemplate 함수를 사용하여 환경 템플릿 클래스를 만듭니다.

  2. 템플릿 환경을 수정하여 환경 속성, 필요한 환경 함수, 선택적 환경 함수를 지정합니다.

  3. validateEnvironment를 사용하여 사용자 지정 환경을 검증합니다.

자세한 내용은 템플릿에서 사용자 지정 MATLAB 환경 만들기 항목을 참조하십시오.

참고 항목

함수

객체

관련 항목