Main Content

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

강화 학습 에이전트

강화 학습의 목표는 불확실한 환경 내에서 에이전트가 작업을 완료하도록 훈련시키는 것입니다. 에이전트는 각 시간 구간마다 환경으로부터 관측값과 보상을 받고, 환경으로 행동을 보냅니다. 보상은 이전 행동(이전 상태에서 취함)이 작업 목표를 완료하는 데 있어서 얼마나 성공적으로 기여했는지 즉각적으로 측정한 것입니다.

Reinforcement Learning Environments에 설명되어 있고 다음 그림에 나와 있는 것처럼, 에이전트와 환경은 일련의 각 이산시간 스텝에서 상호 작용합니다.

Diagram showing an agent that interacts with its environment using a policy that is updated by the reinforcement learning algorithm. Actions and observations for time t, as well as rewards and observations for time t+1, are shown.

일반적으로, 관측값은 하나 이상의 채널로 나눌 수 있으며, 이러한 각 채널은 숫자형(무한이고 연속) 집합이든 유한(이산) 집합이든 한쪽 집합에만 속하는 요소로 이루어진 그룹을 전달합니다. 각 그룹은 차원 수(예: 벡터 또는 행렬)에 따라 구성할 수 있습니다. 참고로, 행동에는 하나의 채널만 허용되고 보상은 숫자형 스칼라여야 합니다. 행동과 관측값의 사양 객체에 대한 자세한 내용은 rlFiniteSetSpec 항목과 rlNumericSpec 항목을 참조하십시오.

에이전트는 2개의 구성요소인 정책과 학습 알고리즘을 포함합니다.

  • 정책은 현재 환경 관측값을 기반으로 각 행동을 수행할 확률 분포를 매핑하는 것입니다. 에이전트 내에서, 정책은 조정 가능형 파라미터를 사용하는 함수 근사기와 근사 모델(예: 심층 신경망)로 구현됩니다.

  • 학습 알고리즘은 행동, 관측값, 보상에 기반하여 정책 파라미터를 계속해서 업데이트합니다. 학습 알고리즘의 목표는 작업을 수행하면서 받는 누적 장기 보상의 기대치를 최대화하는 최적의 정책을 찾는 것입니다.

에이전트에 따라, 학습 알고리즘은 정책을 학습하는 파라미터화된 하나 이상의 함수 근사기에 대해 동작합니다. 근사기는 다음과 같은 두 가지 방법으로 사용 가능합니다.

  • 크리틱 — 관측값과 행동이 주어지면 크리틱은 정책 값의 근삿값(즉, 정책에 따라 기대되는 감가된 누적 장기 보상)을 반환합니다.

  • 액터 — 관측값이 주어지면 액터는 정책 값을 (주로) 최대화하는 행동을 반환합니다.

크리틱만 사용하여 행동을 선택하는 에이전트는 간접 정책 표현을 기반으로 합니다. 이러한 에이전트를 가치 기반이라고도 하며, 근사기를 사용하여 가치 함수(가치를 관측값의 함수로 표현) 또는 Q-값 함수(가치를 관측값과 행동의 함수로 표현)를 표현합니다. 대개 이러한 에이전트는 이산 행동 공간에서 더 잘 작동하지만, 연속 행동 공간에서는 계산량이 많아질 수 있습니다.

액터만 사용하여 행동을 선택하는 에이전트는 직접 정책 표현을 기반으로 합니다. 이러한 에이전트를 정책 기반 에이전트라고도 합니다. 정책은 결정적이거나 확률적일 수 있습니다. 이러한 에이전트는 일반적으로 더 단순하고 연속 행동 공간을 처리할 수 있는 반면 훈련 알고리즘이 잡음 있는 측정값에 민감하고 국소 최솟값에 수렴할 수 있습니다.

액터와 크리틱을 모두 사용하는 에이전트를 액터-크리틱 에이전트라고 합니다. 이러한 에이전트에서는 훈련 과정에서 액터가 (보상을 직접 사용하는 대신) 크리틱에서 받은 피드백을 기반으로 수행할 최적의 행동을 학습합니다. 동시에 크리틱은 액터를 적절히 비평할 수 있도록 보상에서 가치 함수를 학습합니다. 대개 이러한 에이전트는 이산 행동 공간과 연속 행동 공간을 둘 다 처리할 수 있습니다.

Agent 객체

Reinforcement Learning Toolbox™는 MATLAB® 객체를 사용하여 에이전트를 표현합니다. 이러한 객체는 환경 관측값을 고려하여 행동을 출력값으로 반환하는 getAction과 같은 객체 함수(메서드)를 사용하여 환경과 상호 작용합니다.

MATLAB 작업 공간에서 주어진 환경에 대한 agent 객체를 만들었으면, 환경 변수와 에이전트 변수를 모두 내장 함수 trainsim에 대한 인수로 사용할 수 있습니다. 이들 함수는 각각 환경 내에서 에이전트를 훈련시키거나 시뮬레이션합니다.

이 소프트웨어는 여러 다른 유형의 내장 에이전트를 제공합니다. 이러한 각 에이전트에 대해 근사 객체(예: 액터 또는 크리틱)와 모델(예: 신경망 또는 사용자 지정 기저 함수)을 수동으로 구성할 수 있습니다. 대부분의 내장 에이전트에는 디폴트 신경망 구성을 사용할 수도 있습니다. 또는 사용자 지정 agent 객체를 만들 수도 있습니다.

내장 에이전트

다음 표에는 Reinforcement Learning Toolbox에 제공되는 모든 내장 에이전트의 유형과 행동 공간 및 사용되는 근사기가 요약되어 있습니다.

온-폴리시 에이전트는 의사 결정을 내리는 데 사용하는 정책을 평가하거나 개선하려고 시도하는 반면, 오프-폴리시 에이전트는 의사 결정을 내리는 데 사용하는 정책(또는 데이터를 생성하는 데 사용된 정책)과 다를 수 있는 정책을 평가하거나 개선합니다. 각 에이전트마다 관측값 공간은 이산이거나 연속이거나 둘의 혼합형일 수 있습니다. 자세한 내용은 [1]을 참조하십시오.

온-폴리시 내장 에이전트: 유형 및 행동 공간

에이전트유형행동 공간
SARSA 에이전트가치 기반이산
Policy Gradient (PG) Agents(PG)정책 기반이산 또는 연속
Actor-Critic (AC) Agents(AC)액터-크리틱이산 또는 연속
Trust Region Policy Optimization (TRPO) Agents(TRPO)액터-크리틱이산 또는 연속
Proximal Policy Optimization (PPO) Agents(PPO)액터-크리틱이산 또는 연속

오프-폴리시 내장 에이전트: 유형 및 행동 공간

에이전트유형행동 공간
Q-러닝 에이전트(Q)가치 기반이산
DQN(심층 Q-신경망) 에이전트가치 기반이산
DDPG(심층 결정적 정책 경사법) 에이전트액터-크리틱연속
TD3(Twin-Delayed Deep Deterministic: 트윈 지연 심층 결정적) 정책 경사법 에이전트(TD3)액터-크리틱연속
Soft Actor-Critic (SAC) Agents(SAC)액터-크리틱연속
Model-Based Policy Optimization (MBPO) Agents(MBPO)액터-크리틱이산 또는 연속

내장 에이전트: 각 에이전트에 사용되는 근사기:

근사기Q, DQN, SARSAPGAC, PPO, TRPOSACDDPG, TD3

다음을 사용하여 만들 수 있는 가치 함수 크리틱 V(S)

rlValueFunction

 X(기준이 사용되는 경우)X  

다음을 사용하여 만들 수 있는 Q-값 함수 크리틱 Q(S,A)

rlQValueFunction

X  XX

이산 행동 공간에 대해 다음을 사용하여 만들 수 있는 다중 출력 Q-값 함수 크리틱 Q(S)

rlVectorQValueFunction

X    

다음을 사용하여 만들 수 있는 결정적 정책 액터 π(S)

rlContinuousDeterministicActor

    X

이산 행동 공간에 대해 다음을 사용하여 만들 수 있는 확률적(Multinoulli) 정책 액터 π(S)

rlDiscreteCategoricalActor

 XX  

연속 행동 공간에 대해 다음을 사용하여 만들 수 있는 확률적(가우스) 정책 액터 π(S)

rlContinuousGaussianActor

 XXX 

디폴트 신경망을 사용하는 에이전트 — Q-러닝 에이전트와 SARSA 에이전트를 제외한 모든 에이전트는 액터와 크리틱에 디폴트 신경망을 사용하는 것을 지원합니다. 환경의 관측값 사양과 행동 사양을 기반으로 디폴트 액터와 크리틱을 사용하는 에이전트를 만들 수 있습니다. 이렇게 하려면 MATLAB 명령줄에서 다음 단계를 수행하십시오.

  1. 환경에 대한 관측값 사양을 만듭니다. 환경 인터페이스 객체가 이미 있는 경우 getObservationInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  2. 환경에 대한 행동 사양을 만듭니다. 환경 인터페이스 객체가 이미 있는 경우 getActionInfo를 사용하여 이러한 사양을 가져올 수 있습니다.

  3. 필요한 경우, 각 학습 가능한 계층의 뉴런 개수를 지정하거나 LSTM 계층을 사용할지 여부를 지정합니다. 이렇게 하려면 rlAgentInitializationOptions를 사용하여 agent initialization option 객체를 만드십시오.

  4. 필요한 경우, 특정 에이전트에 대한 options 객체 세트를 생성하여 에이전트 옵션을 지정합니다. 그리고 이 option 객체에는 rlOptimizerOptions 객체가 포함되어 있어서 이를 사용해 에이전트 액터나 크리틱에 대한 optimization 객체를 지정합니다.

  5. 해당하는 에이전트 생성 함수를 사용하여 에이전트를 만듭니다. 결과로 생성되는 에이전트에는 위 표에 설명된 것처럼 해당 액터와 크리틱이 포함되게 됩니다. 액터와 크리틱은 에이전트별 디폴트 심층 신경망을 내부 근사기로 사용합니다.

액터 및 크리틱 함수 근사기를 만드는 방법에 대한 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.

강화 학습 디자이너 앱을 사용하여, 기존 환경을 가져오고 대화형 방식으로 DQN, DDPG, PPO 또는 TD3 에이전트를 설계할 수 있습니다. 이 앱을 사용하면 환경 내에서 에이전트를 훈련 및 시뮬레이션하고, 시뮬레이션 결과를 분석하며, 에이전트 파라미터를 세부적으로 조정하고, 나중에 사용 및 배포할 수 있도록 에이전트를 MATLAB 작업 공간으로 내보낼 수 있습니다. 자세한 내용은 Create Agents Using Reinforcement Learning Designer 항목을 참조하십시오.

에이전트 유형 선택하기

에이전트를 선택할 때 가장 좋은 방법은 해당 행동 공간 및 관측값 공간에서 호환되면서 보다 단순한 (그리고 훈련 속도가 더 빠른) 알고리즘으로 시작하는 것입니다. 그런 다음 단순한 알고리즘이 원하는 대로 작동되지 않을 경우 점진적으로 보다 복잡한 알고리즘을 사용해 볼 수 있습니다.

  • 이산 행동 공간 — 이산 행동 공간의 환경에서는 Q-러닝 에이전트와 SARSA 에이전트가 호환되는 가장 단순한 에이전트이고, 그다음으로는 DQN, PPO, TRPO 순입니다. 관측값 공간이 연속 공간인 경우에는 테이블을 근사 모델로 사용할 수 없습니다.

    Arrow going from left to right showing first a vertical stack containing a Q-learning agent on top and a SARSA agent on the bottom, continuing to the right are a DQN agent, a PPO agent, and then a TRPO agent.

  • 연속 행동 공간 — 연속 행동 공간의 환경에서는 DDPG가 호환되는 가장 단순한 에이전트이고, 그다음으로 TD3, PPO, SAC 순이고 가장 마지막이 TRPO입니다. 이러한 환경에서는 DDPG를 제일 먼저 사용해 보십시오. 일반적으로 다음과 같습니다.

    • TD3은 DDPG의 보다 복잡하고 개선된 버전입니다.

    • PPO는 더 안정적인 업데이트를 제공하지만, 더 많은 훈련을 필요로 합니다.

    • SAC는 DDPG의 보다 복잡하고 개선된 버전으로, 확률적 정책을 생성합니다.

    • TRPO는 PPO의 보다 복잡한 버전으로, 관측값 개수가 더 적은 결정적 환경에서 보다 강인합니다.

    Arrow showing a DDPG agent on the left, followed by a vertical stack in the middle containing a TD3 agent, PPO agent, and a SAC agent, then a TRPO agent on the right.

모델 기반 정책 최적화

오프-폴리시 에이전트(DQN, DDPG, TD3, SAC)를 사용 중인 경우 훈련 샘플 효율성을 높이려면 모델 기반의 정책 최적화(MBPO) 에이전트를 사용하는 것을 고려해 볼 수 있습니다. MBPO 에이전트는 환경의 내부 모델을 포함하고 있어서, 이를 사용하여 환경과 상호 작용하지 않고도 추가적인 경험을 생성합니다.

훈련하는 동안 MBPO 에이전트는 환경과의 상호 작용을 통해 실제 경험을 생성합니다. 이 경험을 사용하여 내부 환경 모델을 훈련시키고, 이 내부 환경 모델을 사용하여 추가적인 경험을 생성합니다. 그런 다음 훈련 알고리즘은 실제 경험과 생성된 경험을 둘 다 사용하여 에이전트 정책을 업데이트합니다.

MBPO 에이전트의 경우 모델이 대규모의 다양한 경험을 생성할 수 있기 때문에 모델이 주어지지 않은(model-free) 에이전트보다 샘플 효율성이 높습니다. 그러나 MBPO 에이전트는 기본 에이전트 훈련에 더하여 환경 모델을 훈련시키고 샘플을 생성해야 하기 때문에, 모델이 주어지지 않은 에이전트보다 훨씬 더 많은 계산 시간을 요합니다.

자세한 내용은 Model-Based Policy Optimization (MBPO) Agents 항목을 참조하십시오.

에이전트에서 Policy 객체 추출하기

입력 관측값이 주어지면, 에이전트에서 policy 객체를 추출한 다음 getAction을 사용하여 정책에서 결정적 행동 또는 확률적 행동을 생성할 수 있습니다. 응용 프로그램 배포 또는 사용자 지정 훈련의 용도에는 policy 객체를 사용하는 것이 유용할 수 있습니다. 자세한 내용은 Create Policies and Value Functions 항목을 참조하십시오.

사용자 지정 에이전트

사용자 지정 에이전트를 만들어 다른 학습 알고리즘으로 정책을 훈련시킬 수도 있습니다. 사용자 지정 에이전트를 만들면 에이전트를 훈련시키거나 시뮬레이션할 수 있는 내장 함수 trainsim을 사용할 수 있습니다. 그렇게 하려면 사용자 지정 에이전트 클래스의 서브클래스를 만들고, 필수 메서드와 선택적 메서드를 사용하여 에이전트 동작을 정의하면 됩니다. 자세한 내용은 Create Custom Reinforcement Learning Agents 항목을 참조하십시오.

train 또는 sim을 사용하지 않는 사용자 지정 학습 알고리즘을 구현하려면 사용자 지정 훈련 루프를 만들면 됩니다. 사용자 지정 훈련 루프에 대한 자세한 내용은 Train Reinforcement Learning Policy Using Custom Training Loop 항목을 참조하십시오.

참고 문헌

[1] Sutton, Richard S., and Andrew G. Barto. Reinforcement Learning: An Introduction. Second edition. Adaptive Computation and Machine Learning. Cambridge, Mass: The MIT Press, 2018.

참고 항목

객체

관련 예제

세부 정보