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, 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 항목을 참조하십시오.

에이전트 유형 선택하기

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

참고로, PG 및 AC 에이전트는 정책 경사와 액터-크리틱 개념의 초기 구현이며 더 단순합니다. 이 두 에이전트는 상대적으로 조정이 더 쉽고 메모리 효율도 좋을 수 있지만, 일반적으로 PPO 및 DQN에 비해서 기능적 이점이 거의 없으며 주로 교육 목적으로 제공됩니다.

마찬가지로, PPO는 일반적으로 TRPO보다 모든 측면에서 더 나은 성능을 보입니다(게다가 TRPO는 조정하기가 특히 어렵습니다). 뿐만 아니라 TRPO는 더 높은 차수의 도함수를 계산할 수 있는 심층 신경망을 사용한 액터와 크리틱만 지원합니다(따라서 TRPO 에이전트 내에서 순환 신경망, 사용자 지정 기저 함수 또는 테이블을 사용한 액터나 크리틱을 사용할 수 없습니다).

  • 이산 행동 공간 — 비교적 작은 이산 행동 공간을 가진 단순한 환경에서는 (관측값 공간도 이산일 경우) 테이블 형식의 근사기 사용이 가능합니다. 이러한 경우 호환되는 가장 단순한 에이전트는 Q-러닝 에이전트와 SARSA 에이전트이며, 훈련 속도 측면에서는 이 둘 중 Q-러닝 에이전트 성능이 더 뛰어나고 강인성 측면에서는 SARSA 에이전트가 더 뛰어납니다.

    상태와 행동의 수에 따라 상태-행동 쌍의 수가 기하급수적으로 증가하므로, 테이블 형식 근사는 상태와 행동 공간이 큰 환경으로 확장하는 것이 어렵습니다. 이러한 문제에서는 테이블 형식 근사기는 대개 일반화를 잘 수행하지 못하며 상태공간이 점점 더 커짐에 따라 메모리와 훈련 시간이 늘어납니다. 이와 같은 경우이거나 혹은 관측값 공간의 일부가 연속적인 경우, 사용자 지정 기저 함수로 충분한 상황이 아니라면(이런 경우는 거의 없음) 신경망 근사기를 사용하십시오.

    다음 그림은 이산 행동 공간을 가지면서 신경망 근사기를 지원하는 에이전트들을 비교한 것입니다. 위에 하나 있는 것은 오프-폴리시 에이전트(DQN)이고 아래의 네 개는 온-폴리시 에이전트(PPO, TRPO, AC, PG)입니다. 빨간색 기호는 PPO가 최신 에이전트임을 나타냅니다.

    Five agents compared in terms of training speed, ease of tuning, robustness, memory efficiency and parallelization capabilities.

    에이전트는 6가지의 서로 다른 메트릭을 사용하여 비교됩니다. 2개의 훈련 속도 메트릭이 있으며, 각각 계산량이 많은 환경과 적은 환경에 사용되는 메트릭입니다. 하이퍼파라미터를 적게 가진 에이전트나 이해하기 쉽고 조정하기 쉬운 하이퍼파라미터를 가진 에이전트이면 조정 편의성이 높습니다. 강인성은 하이퍼파라미터, 가중치, 초기 조건에 대한 민감도와 반비례합니다. 메모리 효율은 훈련 중 메모리 사용량과 반비례하며, 병렬화는 에이전트 학습 알고리즘이 병렬 워커 수에 따라 얼마나 잘 확장되는지를 나타냅니다.

    위 그림은 아래과 같이 요약해 설명할 수 있습니다.

    • DQN과 PPO는 전반적으로 우수한 성능을 보여줍니다.

    • DQN은 일반적으로 조정하기 쉬워서 시작점으로 사용하기 좋고, 계산량이 많은 환경에서도 비교적 좋은 선택지입니다.

    • (가장 최근에 개발되어 빨간색 기호로 표시된) PPO는 계산량이 적은 환경에서 병렬화, 강인성, 훈련 속도 측면에서 더 나은 성능을 보이는 경향이 있습니다.

  • 연속 행동 공간 — 다음 그림은 연속 행동 공간을 가지면서 신경망 근사기를 지원하는 에이전트들을 비교한 것입니다. 위쪽에 있는 세 개가 오프-폴리시 에이전트이고 아래의 네 개는 온-폴리시 에이전트입니다. 빨간색 기호는 최신 에이전트를 나타냅니다.

    Seven agents compared in terms of training speed, ease of tuning, robustness, memory efficiency and parallelization capabilities.

    이전 그림과 마찬가지로, 처음 두 메트릭은 각각 계산량이 많은 환경과 적은 환경에서의 훈련 속도입니다. 하이퍼파라미터를 적게 가진 에이전트나 이해하기 쉽고 조정하기 쉬운 하이퍼파라미터를 가진 에이전트이면 조정 편의성이 높습니다. 강인성은 하이퍼파라미터, 가중치, 초기 조건에 대한 민감도와 반비례합니다. 메모리 효율은 훈련 중 메모리 사용량과 반비례하며, 병렬화는 에이전트 학습 알고리즘이 병렬 워커 수에 따라 얼마나 잘 확장되는지를 나타냅니다.

    연속 행동 공간을 지원하는 에이전트를 나타낸 그림을 다음과 같이 요약해 설명할 수 있습니다.

    • DDPG가 조정하기 가장 쉽고 그다음으로 TD3, SAC, PPO 순입니다.

    • DDPG가 시작점으로 사용하기 좋으며 대체로 좋은 성능을 보입니다.

    • TD3과 SAC는 DDPG보다 더 복잡하면서 개선되고 강인해진 버전으로, 계산량이 많은 환경에 훌륭한 선택지입니다.

    • SAC는 확률적 정책을 생성하므로 탐색에 유용하지만 조정이 좀 더 어렵고 반면 메모리 효율은 더 높을 수 있습니다.

    • PPO는 조정이 더 어려울 수 있지만 대체로 매우 우수한 성능을 발휘합니다. 특히 계산량이 적은 환경에 훌륭한 선택지이며 고도로 병렬화가 가능합니다.

모델 기반 정책 최적화

오프-폴리시 에이전트(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.

참고 항목

객체

관련 예제

세부 정보