Main Content

RL Agent

강화 학습 에이전트

  • 라이브러리:
  • Reinforcement Learning Toolbox

  • RL Agent block

설명

RL Agent 블록을 사용하여 Simulink®에서 강화 학습 에이전트를 시뮬레이션하고 훈련시킵니다. 이 블록을 MATLAB® 작업 공간 또는 데이터 사전에 저장된 에이전트(예: rlACAgent 또는 rlDDPGAgent 객체)와 연결합니다. 이 블록이 관측값과 계산된 보상을 받을 수 있도록 연결합니다. 예를 들어, rlSimplePendulumModel 모델의 블록 다이어그램이 다음과 같다고 가정하겠습니다.

RL Agent 블록의 observation 입력 포트는 진자의 순시각(instantaneous angle)과 각속도에서 도출되는 신호를 받습니다. reward 포트는 이 두 개의 동일한 값과 적용된 행동으로부터 계산된 보상을 받습니다. 이 시스템에 적합한 관측값과 보상 계산은 사용자가 구성합니다.

이 블록은 에이전트를 사용하여 사용자가 제공하는 관측값과 보상에 기반한 행동을 생성합니다. action 출력 포트를 사용자의 시스템에 들어가는 입력으로 적절하게 연결합니다. 예를 들어, rlSimplePendulumModel에서 action 출력 포트는 진자 시스템에 적용되는 토크입니다. 이 모델에 대한 자세한 내용은 Train DQN Agent to Swing Up and Balance Pendulum 항목을 참조하십시오.

Simulink에서 강화 학습 에이전트를 훈련시키려면 Simulink 모델에서 환경을 생성하십시오. 그 다음, 에이전트를 만들고 구성하여 이 환경에 대해 훈련시킵니다. 자세한 내용은 Simulink 강화 학습 환경 만들기 항목을 참조하십시오. 해당 환경을 사용하여 train을 호출하면 train은 모델을 시뮬레이션하고 이 블록과 연결된 에이전트를 업데이트합니다.

포트

입력값

모두 확장

이 포트는 환경으로부터 관측값 신호를 받습니다. 관측값 신호는 측정값이나 시스템의 순시 데이터를 나타냅니다. 관측값이 여러 개인 경우 Mux 블록을 사용하여 이 관측값들을 벡터 신호로 결합할 수 있습니다. 비가상 버스 신호를 사용하려면 bus2RLSpec 함수를 사용하십시오.

이 포트는 관측값 데이터에 기반하여 계산하는 보상 신호를 받습니다. 보상 신호는 에이전트를 훈련하는 동안 장기 보상의 기대값을 최대화하는 데 사용됩니다.

이 신호를 사용하여 훈련 에피소드를 종료하는 조건을 지정합니다. 에피소드를 종료하는 조건을 결정하려면 사용자의 시스템에 적합하게 논리를 구성해야 합니다. 한 응용 사례는 훈련이 잘 되는 에피소드를 종료하거나 잘 안되는 에피소드를 종료하는 것입니다. 예를 들어, 에이전트가 목표에 도달한 에피소드를 종료하거나 목표에서 지나치게 멀어진 에피소드를 종료할 수 있습니다.

이 신호를 사용하여 블록에 외부 행동을 전달합니다. 이 신호는 인간 전문가로부터 전달되는 제어 행동이 될 수 있으며, 안전 학습이나 모방 학습 응용 분야에서 사용될 수 있습니다. use external action 신호의 값이 1이면, 블록은 external action 신호를 action 블록 출력을 통해 환경으로 전달합니다. 블록은 또한 외부 행동을 사용하여 결과 관측값과 보상을 기반으로 에이전트 정책을 업데이트합니다.

종속 관계

이 포트를 활성화하려면 외부 행동 입력 파라미터를 선택하십시오.

어떤 응용 사례에서는 환경에 적용되는 행동이 RL Agent 블록에서 출력하는 행동과 다를 수 있습니다. 예를 들어, Simulink 모델이 행동 출력 신호에 Saturation 블록을 포함할 수 있습니다.

이 경우 학습 결과를 개선하기 위해 이 입력 포트를 활성화하고 환경에 적용된 실제 행동 신호를 연결할 수 있습니다.

참고

last action 포트는 오직 오프-폴리시(off-policy) 에이전트와 사용해야 합니다. 그렇지 않으면 훈련에서 예기치 않은 결과가 도출될 수 있습니다.

종속 관계

이 포트를 활성화하려면 마지막 행동 입력 파라미터를 선택하십시오.

이 신호를 사용하여 external action 신호를 환경으로 전달합니다.

use external action 신호의 값이 1이면, 블록은 external action 신호를 환경으로 전달합니다. 블록은 또한 외부 행동을 사용하여 에이전트 정책을 업데이트합니다.

use external action 신호의 값이 0이면, 블록은 external action 신호를 환경으로 전달하지 않으며 외부 행동을 사용하여 정책을 업데이트하지 않습니다. 그 대신, 블록으로부터 오는 행동은 에이전트 정책으로부터 오는 행동을 사용합니다.

종속 관계

이 포트를 활성화하려면 외부 행동 입력 파라미터를 선택하십시오.

출력값

모두 확장

관측값과 보상 입력값에 기반하여 에이전트에 의해 계산되는 행동입니다. 이 포트를 사용자 시스템의 입력에 연결하십시오. 비가상 버스 신호를 사용하려면 bus2RLSpec 함수를 사용하십시오.

참고

rlACAgent, rlPGAgent 또는 rlPPOAgent와 같은 에이전트가 연속 행동 공간을 갖는 rlStochasticActorRepresentation 액터를 사용할 경우, 에이전트는 행동 사양에 의해 설정된 제약 조건을 강제로 적용하지 않습니다. 이러한 경우에는 사용자가 행동 공간 제약 조건을 환경 내에 강제로 적용해야 합니다.

시뮬레이션하는 동안 누적된 보상 신호의 합입니다. 이 신호를 관측하거나 기록하여 시간에 따라 누적 보상이 어떻게 변화하는지 추적합니다.

종속 관계

이 포트를 활성화하려면 누적 보상 출력 파라미터를 선택하십시오.

파라미터

모두 확장

MATLAB 작업 공간이나 데이터 사전에 저장된 agent 객체의 이름을 입력합니다(예: rlACAgent 또는 rlDDPGAgent). agent 객체에 대한 내용은 Reinforcement Learning Agents 항목을 참조하십시오.

RL Agent 블록이 Triggered Subsystem (Simulink) 또는 Function-Call Subsystem (Simulink) 같은 조건부 실행 서브시스템 내에 있는 경우, 블록이 부모 서브시스템의 샘플 시간을 상속할 수 있도록 agent 객체의 샘플 시간을 -1로 지정해야 합니다.

프로그래밍 방식 사용

블록 파라미터: Agent
유형: string형, 문자형 벡터
디폴트 값: "agentObj"

이 파라미터를 선택하여 external actionuse external action 블록 입력 포트를 활성화합니다.

프로그래밍 방식 사용

블록 파라미터: ExternalActionAsInput
유형: string형, 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

이 파라미터를 선택하여 last action 블록 입력 포트를 활성화합니다.

프로그래밍 방식 사용

블록 파라미터: ProvideLastAction
유형: string형, 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

cumulative reward 블록 출력을 활성화하려면 이 파라미터를 선택합니다.

프로그래밍 방식 사용

블록 파라미터: ProvideCumRwd
유형: string형, 문자형 벡터
값: "off" | "on"
디폴트 값: "off"

버전 내역

R2019a에 개발됨