Main Content

강화 학습 디자이너를 사용하여 에이전트 설계 및 훈련하기

이 예제에서는 강화 학습 디자이너를 사용하여 이산 행동 공간이 있는 환경에 대해 DQN 에이전트를 설계하고 훈련시키는 방법을 보여줍니다.

강화 학습 디자이너 앱 열기

강화 학습 디자이너 앱을 엽니다.

reinforcementLearningDesigner

Initial Reinforcement Learning Designer window. The left panes show no loaded Agents, Environments, Results, or Previews

앱은 처음에는 아무런 에이전트나 환경도 불러오지 않은 상태입니다.

카트-폴 환경 가져오기

강화 학습 디자이너를 사용하면 MATLAB® 작업 공간에서 환경을 가져오거나 미리 정의된 환경을 만들 수 있습니다. 자세한 내용은 강화 학습 디자이너에서 MATLAB 환경 불러오기 항목과 강화 학습 디자이너에서 Simulink 환경 불러오기 항목을 참조하십시오.

이 예제에서는 미리 정의된 이산 카트-폴 MATLAB 환경을 사용합니다. 이 환경을 가져오려면 강화 학습 탭의 환경 섹션에서 새로 만들기 > 이산 카트-폴을 선택하십시오.

Reinforcement Learning Designer Window with expanded "New Environment" section showing the choices of environments to import

가져온 Discrete CartPole 환경이 환경 창에 추가됩니다. 환경 이름을 바꾸려면 환경 텍스트를 클릭하십시오. 여러 개의 환경을 세션으로 가져올 수도 있습니다.

관측값 공간과 행동 공간의 차원을 보려면 환경 텍스트를 클릭하십시오. 미리보기 창에 차원이 표시됩니다.

The Preview pane shows the dimensions of the state and action spaces being [4 1] and [1 1], respectively

이 환경에는 4차원 연속 관측값 공간(카트와 폴의 위치와 속도)과 1차원 이산 행동 공간(값이 –10N 또는 10N인 두 개의 가능한 힘으로 구성됨)이 있습니다. 이 환경은 카트-폴 시스템의 균형을 유지하도록 DQN 에이전트 훈련시키기 예제에서 사용됩니다. 미리 정의된 제어 시스템 환경에 대한 자세한 내용은 Load Predefined Control System Environments 항목을 참조하십시오.

가져온 환경에 대한 DQN 에이전트 만들기

에이전트를 만들려면 강화 학습 탭의 에이전트 섹션에서 새로 만들기를 클릭하십시오. 에이전트 만들기 대화 상자에서 에이전트 이름, 환경, 훈련 알고리즘을 지정합니다. 디폴트 에이전트 구성은 가져온 환경과 DQN 알고리즘을 사용합니다. 이 예제에서는 은닉 유닛 개수를 256개에서 20개로 변경합니다. 에이전트를 만드는 방법에 대한 자세한 내용은 Create Agents Using Reinforcement Learning Designer 항목을 참조하십시오.

Create agent dialog box

확인을 클릭합니다.

새 에이전트가 에이전트 창에 추가되고 agent1 문서가 열립니다.

하이퍼파라미터 섹션의 크리틱 최적화 함수 옵션에서 학습률0.0001로 설정합니다.

Reinforcement Learning Designer with the agent window open

DQN 에이전트 기능에 대한 간략한 요약과 이 에이전트의 관측값 사양과 행동 사양을 보려면 전체 보기를 클릭하십시오.

Reinforcement Learning Designer with the agent window open, showing the overview section

강화 학습 디자이너에서 DQN 에이전트를 만들면 에이전트는 크리틱에 대해 디폴트 심층 신경망 구조를 사용합니다. 크리틱 신경망을 보려면 DQN 에이전트 탭에서 크리틱 모델 보기를 클릭하십시오.

딥러닝 신경망 분석기가 열리고 크리틱 구조가 표시됩니다.

Deep Learning Network Analyzer showing the Deep Neural Network used in the Critic

딥러닝 신경망 분석기를 닫습니다.

에이전트 훈련시키기

에이전트를 훈련시키려면 훈련 탭에서 먼저 에이전트 훈련 옵션을 지정하십시오. 훈련 옵션 지정에 대한 자세한 내용은 Specify Simulation Options in Reinforcement Learning Designer 항목을 참조하십시오.

이 예제에서는 최대 에피소드 수1000으로 설정하여 최대 훈련 에피소드 수를 지정합니다. 다른 훈련 옵션에는 디폴트 값을 사용하십시오. 중지에 대한 디폴트 기준은 (마지막 5개 에피소드 동안) 에피소드당 평균 스텝 수가 500보다 큰 경우입니다.

Reinforcement Learning Designer app showing the Train tab in the toolstrip

훈련을 시작하려면 훈련을 클릭하십시오.

훈련 중에 훈련 세션 탭이 열리고 훈련 결과 문서에 훈련 진행 상황이 표시됩니다.

훈련 중 언제든지 중지 또는 훈련 중지 버튼을 클릭하여 훈련을 중단하고 명령줄에서 다른 작업을 수행할 수 있습니다.

Reinforcement Learning Designer with training stopped

이때 훈련 세션 탭의 재개, 적용취소 버튼을 사용하여 훈련을 재개하거나 훈련 결과를 적용(훈련 결과와 훈련된 에이전트가 앱에 저장됨)하거나 훈련을 완전히 취소할 수 있습니다.

훈련을 재개하려면 재개를 클릭하십시오.

Reinforcement Learning Designer after agent training

여기서는 에피소드당 평균 스텝 수가 500개가 될 때 훈련이 중지됩니다.

훈련 결과를 적용하려면 적용을 클릭하십시오. 에이전트 창에 훈련된 에이전트 agent1_Trained가 추가됩니다.

에이전트 시뮬레이션 및 시뮬레이션 결과 검사하기

훈련된 에이전트를 시뮬레이션하려면 시뮬레이션 탭의 에이전트 드롭다운 목록에서 먼저 agent1_Trained를 선택한 다음 시뮬레이션 옵션을 구성하십시오. 이 예제에서는 디폴트 에피소드 수(10)와 최대 에피소드 길이(500)를 사용합니다. 시뮬레이션 옵션 지정에 대한 자세한 내용은 Specify Simulation Options in Reinforcement Learning Designer 항목을 참조하십시오.

Simulation toolstrip tab

에이전트를 시뮬레이션하려면 시뮬레이션을 클릭하십시오.

시뮬레이션 세션 탭이 열립니다. 시뮬레이션이 완료되면 시뮬레이션 결과 문서에 각 에피소드에 대한 보상은 물론, 보상에 대한 평균과 표준편차도 표시됩니다.

Simulation result document showing the reward of each simulation episode, together with their mean and standard deviation

이 에이전트는 세 에피소드에서 최대 보상인 500에 도달하지 못했습니다. 이는 서로 다른 초기 조건에 대해 훈련된 에이전트의 강인성이 개선될 여지가 있음을 시사합니다. 이 경우, 평균 윈도우 길이5 대신 10을 선택하는 방법 등으로 에이전트를 더 오랫동안 훈련시키면 강인성이 향상됩니다. BatchSizeTargetUpdateFrequency와 같은 일부 DQN 에이전트 옵션을 수정하여 더 빠르고 강인한 학습을 촉진할 수도 있습니다.

시뮬레이션 결과를 분석하려면 시뮬레이션 데이터 검사를 클릭하십시오. 그러면 시뮬레이션 데이터 인스펙터가 열립니다. 자세한 내용은 시뮬레이션 데이터 인스펙터 (Simulink) 항목을 참조하십시오.

또한 이전 세션에서 불러온 데이터가 있을 경우 그러한 데이터를 시뮬레이션 데이터 인스펙터에서 사전에 지우는 옵션도 있습니다. 그렇게 하려면 시뮬레이션 데이터 검사에서 시뮬레이션 데이터 지우기 및 검사를 선택하십시오.

Simulation toolstrip tab showing the option to Clear and Inspect Simulation Data

시뮬레이션 데이터 인스펙터에서 각 시뮬레이션 에피소드에 대해 저장된 신호를 볼 수 있습니다.

기본적으로 상부 플롯 영역이 선택됩니다. 첫 번째 상태(카트 위치)를 표시하려면 첫 번째 에피소드 중에 실행 1: 시뮬레이션 결과에서 CartPoleStates 변수를 열고 CartPoleStates(1,1)을 선택합니다. 카트가 약 390초 후에 경계 밖으로 나가며 그에 따라 시뮬레이션이 종료됩니다.

Simulation data inspector showing the position of the cart in the first simulation episode

상부 플롯 영역에 보상도 표시하려면 Reward 변수를 선택하십시오. 그에 따라 세로 축의 단위가 변경됩니다.

중간 플롯 영역을 클릭하고 세 번째 상태(막대 각)를 선택합니다. 그런 다음 하부 영역을 클릭하고 두 번째 상태와 네 번째 상태(카트 속도 및 막대 각 도함수)를 선택합니다.

Simulation data inspector showing a variety of simulation results in different plot areas

DQN 에이전트가 동일한 환경에서 훈련되는 관련 예제는 카트-폴 시스템의 균형을 유지하도록 DQN 에이전트 훈련시키기 항목을 참조하십시오.

시뮬레이션 데이터 인스펙터를 닫습니다.

시뮬레이션 결과를 적용하려면 시뮬레이션 세션 탭에서 적용을 클릭합니다.

결과 창에서 시뮬레이션 결과 구조체 experience1이 추가됩니다.

에이전트 내보내기 및 세션 저장하기

훈련된 에이전트를 선택하고 관련 agent1_Trained 문서를 열려면 에이전트 창에서 agent1_Trained를 더블 클릭하십시오.

Reinforcement Learning Designer window showing how to export the trained agent

그런 다음, 훈련된 에이전트를 MATLAB 작업 공간으로 내보내려면 강화 학습 탭의 내보내기에서 훈련된 에이전트를 선택하십시오.

Reinforcement Learning Designer window showing how to export the trained agent

앱 세션을 저장하려면 강화 학습 탭에서 세션 저장을 클릭하십시오. 향후에 중단했던 지점에서 작업을 재개하려면 강화 학습 디자이너에서 이 세션을 열면 됩니다.

명령줄에서 에이전트 시뮬레이션하기

MATLAB 명령줄에서 에이전트를 시뮬레이션하려면 먼저 카트-폴 환경을 불러옵니다.

env = rlPredefinedEnv("CartPole-Discrete");

이 카트-폴 환경은 환경 시각화를 제공하여 시뮬레이션과 훈련 중에 시스템이 어떻게 동작하는지 볼 수 있습니다.

앞서 앱에서 내보낸 훈련된 에이전트를 사용하여 환경을 플로팅하고 시뮬레이션을 수행합니다.

plot(env)
xpr2 = sim(env,agent1_Trained);

시뮬레이션 동안 시각화를 통해 카트와 폴의 움직임이 표시됩니다. 이 시뮬레이션에서는 훈련된 에이전트가 시스템을 안정화할 수 있습니다.

Cart Pole Environment visualizer showing the pole stabilized on the cart

마지막으로, 시뮬레이션에 대한 누적 보상을 표시합니다.

sum(xpr2.Reward)
env = 
   500

예상한 대로 누적 보상은 500입니다.

참고 항목

함수

관련 예제

세부 정보