Chapter 10. 한 걸음 더

이번 장에서는 현대적인 심층 강화 학습으로 한 걸음 더 들어간 알고리즘들을 살펴보자. 

또한 심층 강화 학습에서 중요한 연구 사례도 소개한다.

심층 강화 학습 알고리즘 분류

From "OpenAI Spinning UP, Part 2"

먼저 가장 큰 분류 기준은 환경 모델(상태 전이 함수, 보상 함수)의 사용 여부이다. 

모델 기반 기법은 다시 환경 모델이 주어지는 경우와 학습하는 경우로 나뉜다. 환경 모델이 주어지면 에이전트는 행동 없이 계획(Planning)만으로 문제를 해결할 수 있다. 바둑이나 장기 같은 보드 게임도 환경 모델이 알려져 있기 때문에 이 기법을 사용 가능하다. 

환경 모델이 주어지지 않으면 환경에서 얻은 경험을 토대로 환경 모델을 학습하는 방법을 생각해볼 수 있다. 학습한 환경 모델은 계획 수립뿐 아니라 정책의 평가와 개선에도 활용할 수 있다. 현재 활발히 연구 중인 분야로, 앞으로 인간과 같은 범용 인공지능을 구현 하는 데에도 유용하게 활용될 것으로 기대되고 있다.

환경 모델을 학습하는 방법에는 몇 가지 문제가 있다. 가장 큰 문제는 에이전트가 환경 모델이 생성하는 샘플 데이터의 일부만 얻을 수 있다는 점이다. 이로 인해 학습한 환경 모델과 실제 환경 사이에 괴리(편향)가 생길 수 있다. 그 결과 에이전트가 학습한 모델에서는 적합했던 행동이 실제 환경에서는 바람직하지 않은 행동일 수 있다. 

환경 모델을 학습하는 기법들은 잠재력이 크지만, 현재까지는 모델 프리 기법들이 더 많은 성과를 거두고 있다. 이 책에서 소개하는 기법들도 모두 모델 프리 기법들이다. 

정책 경사법 계열의 고급 알고리즘

  • A3C, A2C (분산 학습 알고리즘)
  • DDPG (결정적 정책을 따르는 알고리즘)
  • TRPO, PPO (목적 함수에 제약을 추가하는 알고리즘)

A3C, A2C

A3C(Asynchronous Advantage Actor-Critic)은 여러 에이전트가 병렬로 행동하며 비동기적으로 매개변수를 갱신하는 알고리즘이다.

A3C는 신경망으로 모델링한 Actor-Critic을 사용하여 정책을 학습한다. 그리고 다음과 같이 하나의 전역 신경망과 여러 개의 지역 신경망(worker)를 사용한다.

지역 신경망은 각자의 환경에서 독립적으로 플레이하며 학습한다. 그리고 학습 결과인 기울기를 전역 신경망으로 보낸다. 전역 신경망은 여러 지역 신경망에서 보내온 기울기를 이용해 비동기적으로 가중치 매개변수를 갱신한다. 그리고 주기적으로 전역 신경망과 지역 신경망의 매개변수를 동기화 한다.

A3C의 장점은 여러 에이전트를 병렬로 행동하게 하여 학습 속도를 높인다는 점과, 각 에이전트 들이 독립적으로 행동(탐색)하기 때문에 한층 다양한 데이터를 얻을 수 있다. 그 덕분에 학습 데이터끼리의 상관관계를 약화시킬 수 있어 학습이 더욱 안정적으로 이루어진다.

또한 A3C의 Actor-Critic은 신경망의 가중치를 공유한다.

 다음으로 A2C는 A3C에서 A(Asynchronous)가 빠진 이름으로, 매개변수를 비동기가 아니라 동기식으로 갱신한다.

그림과 같이 각 에이전트가 독립적으로 동작한다. 따라서 시간 t에서의 상태는 환경마다 다르다. 그리고 시간 t에서 각 환경의 상태를 (동기화하여) 배치로 묶어 신경망을 학습시킨다. 이때 신경망이 다음 행동을 샘플링하며, 샘플링된 행동을 각 환경에 전달한다(신경망이 하나고 그냥 시뮬레이터를 여러개 둔 느낌?)

실험 결과, A2C가 A3C보다 성능이 떨어지지 않으면서 자원도 효율적으로 사용할 수 있기 때문에 A3C보다 A2C를 실무에서 더 사용한다.

DDPG

정책을 직접 모델링하는 정책 경사법에서는 행동 공간이 연속적인 문제에도 사용 가능하다. 정책 신경망이 정규분포의 평균을 출력하도록 설계하면 이 정규분포에서 샘플링하여 행동을 얻을 수 있다.


DDPG(Deep Deterministic Policy Gradient method)는 정책 신경망에서 행동을 직접 연속적인 값으로 출력한다.

DDPG의 정책은 특정 상태 s를 입력하면 행동 a가 고유하게 결정되기 때문에 결정적 정책이다. 그리고 DDPG에서는 이 결정적 정책을 DQN에 통합한다.정책 신경망을 \(\mu_\theta(s)\)라 하고, DQN의 Q 함수를 나타내는 신경망을 \(Q_\phi(s,a)\)라하자. 이때 DDPG는 다음 두 가지 학습 과정에 의해 학습된다.

  1. Q 함수의 출력이 커지도록 정책 \(\mu_\theta(s)\)을 학습
  2. DQN에서 수행하는 Q 러닝을 통해 Q 함수를 학습

첫 번째 학습 과정부터 보자. 첫 번째 학습은 다음 그림과 강티 두 개의 신경망을 조합하여 Q 함수의 출력이 최대가 되도록 결정적 정책 \(\mu_\theta(s)\)를 학습한다.(흠.. GAN/Diffusion/VAE 처럼 두 개의 네트워크가 협력 혹은 대립하듯이 학습되는구나)

이 그림에서 중요한 점은 \(\mu_\theta(s)\)가 출력하는 행동 a가 연속적인 값이고, 이 출력 그대로 Q 함수에 입력이 되기 때문에 \(\nabla_\theta q\)를 통해서 매개변수 \(\theta\)를 학습할 수 있다. 만약 행동을 확률적 정책으로 샘플링했다면 역전파가 샘플링을 하는 지점에서 기울기가 0으로만 전달되므로 학습을 할 수 없다.

두 번째 학습 방법은 DQN으로 하는 Q러닝이다. 다만 DQN에서 Q 함수의 갱신이 \(Q_\phi(S_t,A_t)\)가 \(R_t + \gamma \underset{a}{\operatorname{max}} Q_\phi(S_{t+1}, a) \)가 되도록 학습된다. 그런데 앞서 첫 번째 학습을 통해 정책 \(\mu_\theta(s)\)는 Q 함수가 커지는 행동을 출력한다. 따라서 다음 근사를 적용할 수 있다.

$$ \underset{a}{\operatorname{max}}  Q_\phi(s,a) \simeq Q_\phi(s, \mu_\theta(s))$$

최대값을 구하는 \(\underset{a}{\operatorname{max}} \)는 일반적으로 계산량이 많다. 그런데 DDPG에서는 이 계산을 \(Q_\phi(s, \mu_\theta(s))\)라는 두 개의 신경망 순전파로 대체하기 때문에 계산을 단순화하여 학습 효율을 높이는 것이다.

이 외에도 DDPG는 '소프트 목표'와 '탐색 노이즈'라는 아이디어도 활용한다 소프트 목표(soft target)는 DQN의 목표 신경망을 부드럽게 만든다. 목표 신경망의 매개변수를 학습 중인 매개변수와 주기적으로 동기화 하는 대신, 매번 학습 중인 매개변수의 방향에 가까워지도록 갱신한다. 탐색 노이즈(exploration noise)는 결정적 정책에 노이즈를 넣어 행동에 무작위성을 주는 기법이다.

TRPO, PPO

Policy Gradient에서는 기울기를 통해 갱신 '방향'은 알 수 있지만 얼마만큼 갱신해야 좋은가를 뜻하는 '갱신 폭'은 알 수 없다는 단점이 있다. TRPO(Trust Region Policy Optimization)KL-Divergence를 제약으로 삼아서 '신뢰 영역' 안에서 최적화를 적절히 이뤄내는 알고리즘이다. 이를 위해 헤시안 행렬이라는 이차 미분 계산을 사용한다.

PPO는 TRPO를 단순화한 기법으로, 계산량을 줄이며서 성능은 비슷하여 실무에서 많이 사용된다.

DQN 계열의 고급 알고리즘

Double DQN, PER, Dueling DQN은 앞장에서 설명했다.

범주형 DQN

Q 함수의 수식은 다음과 같다.

$$Q_\pi(s,a) = \mathbb{E}_\pi \Big[G_t| S_t=s, A_t=a\Big]$$

다음 그림과 같이 확률적 사건인 수익 \(G_t\)를 기대값이라는 하나의 값으로 표현하는 것이 Q 함수의 특징이다.

DQN, 즉 Q 러닝에서는 기대값으로 표현되는 Q 함수 값을 학습한다. 이를 발전시켜Q 함수라는 기대값이 아니라 분포를 학습시키는 아이디어가 분포 강화 학습(distributional reinforcement learning)이다. 분포 강화 학습에서는 수익의 확률 분포인 \(Z_\pi(s,a)\)를 학습한다.

범주형 DQN(Categorical DQN)은 이 분포 강화 학습을 기반으로 한다. 여기서 범주형이란 다음 그림과 같이 범주형 분포로 모델링한다는 뜻이다.

범주형 분포는 여러 범주(이산 값) 중 어느 범주에 속할 것인지에 대한 확률 분포이다. 수익이 취하는 값이 몇 개의 영역으로 나뉘고 각 빈에 들어갈 확률이 범주형 분포로 모델링 된다.

범주형 DQN에서는 수익을 범주형 분포로 모델링하고 그 '분포의 형태'를 학습한다. 이를 위해 범주형 분포 버전의 벨만 방정식을 도출하고, 그 방정식을 이용하여 범주형 분포를 갱신한다. 참고로 범주형 분포의 빈이 51개일 때 '아타리' 과제에서 성능이 가장 좋았기 때문에 범주형 DQN을 'C51'이라고도 부른다.

Noisy Network

DQN에서는 \(\epsilon\)-탐욕 정책으로 해동을 결정하는데, 이 \(\epsilon\) 값에 의해 최종 정확도가 크게 달라질 수 있다.

Noisy Network에서는 이러한 문제를 해결하기 위해 출력 쪽의 FCN에서 노이즈를 추가한다. 노이즈가 추가된 FCN은 정규분포의 평균과 분산으로 모델링되며 (순전파할 때마다) 가중치가 정규분포에서 샘플링된다. 이렇게 하면 순전파할 때마다 무작위성이 스며들어 최종 출력이 달라지게 된다. 

레인보우

지금까지 설명한 방법들을 모두 결합한 것이 레인보우(Rainbow) 기법이다.

  • Double DQN
  • PER
  • Dueiling DQN
  • 범주형 DQN
  • Noisy Network

가로축은 학습에 사용한 아타리 게임 이미지 개수이다. 세로축은 일반인과 비교하여 정규화한 점수이다. 그림과 같이 레인보우의 성능이 다른 기법들에 비해 비약적으로 좋은 것을 알 수 있다.

레인보우 이후에 발전된 알고리즘

레인보우 이후 여러 CPU/GPU를 분산 강화 학습으로 큰 성과를 올렸다. Ape-X는 레인보우 기반의 여러 에이전트를 독립적으로 시행하여 다양한 경험 데이터를 통해 성능을 올렸다. 

R2D2는 Ape-x를 개선한 기법으로 LSTM 레이어를 사용한다 Recurrent + Replay + Distributed + DQN의 앞글자를 따서 이름을 지었음.

NGU(Never Give UP)는 R2D2 토대에 내적 보상(intrinsic reward) 메커니즘을 추가하여 어려운 과제, 특히 보상이 적은 과제에서도 탐색을 포기하지 않도록 했다. 내적 보상은 상태 전이가 예상과 다를수록, 즉 얼마나 '놀랐는가'에 따라 스스로 보상을 주는 기법이다. 보상이 0에 가까운 희박한 작업에서 내적 보상은 '호기심'에 따라 행동하도록 유도한다. 

Agent57은 NGU를 발전시킨 기법이다. 내적 보상 메커니즘을 개선하고 '메타 컨트롤러'라는 구조를 사용하여 에이전트들에 할당되는 정책을 유연하게 배분한다. Agent57은 처음으로 모든 게임에서 사람보다 우수한 성적을 거두는 데 성공했다. 

사례 연구

보드게임

보드게임은 다음과 같은 특징이 있다.

  • 보드의 모든 정보를 알 수 있음(완전정보)
  • 한쪽이 승리하면 다른 쪽은 패배함(제로섬)
  • 상태 전이에 우연이라는 요소가 없음(결정적)

이런 보드게임에서 중요한 것은 '수 읽기'이다. "내가 이수를 두면 상대가 저 수를 둘 것이라고 그러면 나는 이 수로 받아칠 것이다"처럼 앞으로 일어날 일을 다양하게 예측해볼수록 더 좋은 수를 찾을 수 있다. 이러한 수 읽기를 트리구조로 표현할 수 있다.

이러한 게임 트리는 경우의 수가 많기 때문에 모두 살펴볼 수 없다. 

MCTS(Monte Carlo Tree Search)는 트리의 전개를 몬테카를로법으로 근사하는 기법이다. 승패가 결정될 때까지 무작위로 게임을 진행(Rollout)시키고 이러한 시도를 수차례 반복하여 그 승률로 해당 보드 상태가 '얼마나 좋은가'를 근사적으로 나타낸다. MCTS는 현재의 보드 상태에서 가능한 모든 수를 각각 평가하고 그 결과를 토대로 다음 수를 결정하는 흐름으로 진행된다. 그리고 일반적으로는 이 아이디어에 더하여 유망해 보이는 보드 상태로 전개한 후 평가한 결과를 피드백하는 메커니즘이 보강된다. (관련 논문: Efficient selectivity and backup operators in Monte-Carlo tree search")

알파고

알파고는 MCTS에 심층 강화 학습을 결합한 기법이다. 알파고에서는 두 개의 신경망이 사용되는데, 하나는 현재 바둑판에서 이길 확률을 평가하는 Value 신경망이고 다른 하나는 정책을 나타내는 Policy 신경망이다. Policy 신경망은 다음에 둘 수를 확률로 출력한다.

알파고는 인간의 기보 데이터를 이용해 두 신경망을 학습하고 Self-play 대국을 반복하고 여기서 수집한 경험 데이터를 사용해 학습을 더욱 강화하였다.

알파고 제로

알파고 제로는 인간의 기보를 학습 데이터로 사용하지 않고 셀프 플레이를 통한 강화 학습만으로 학습했다. 또한 알파고에서 사용하던 '도메인 지식(바둑 규칙)'을 이용하지 않았다. 이 외에도,

  • Policy 신경망과 Value 신경망을 하나의 신경망으로 표현
  • MCTS로 Rollout 하지 않고 신경망의 출력만으로 각 노드(상태)를 평가

기존의 알파고보다 더 단순하고 범용적으로 개선했음에도 알파고와의 대국에서 100대 0 압승을 거두었다.

알파제로

알파제로는 알파고 제로를 미세하게 조정한 것이지만 거의 같은 알고리즘을 이용한다. 그럼에도 바둑뿐 아니라 체스와 장기까지 둘 수 있다. 보드 게임의 종류에 상관없는 범용 알고리즘으로 진화한 것이다.

로봇 제어

구글은 QT-Opt라는 Q러닝 기반 Off-policy 기법을 활용하여 로봇 제어에 강화 학습을 적용하였다. 논문에 따르면 QT-Opt는 미지의 물건도 96% 확률로 잡는 데 성공하여, 구글이 이전에 개발한 지도 학습 방식보다 실패 확률을 1/5이하로 줄였다.

NAS

NAS(Neural Architecture Search)는 베이지안 최적화와 유전 프로그래밍 등 여러가지가 있으나 강화 학습을 활용하는 것도 큰 관심을 받고 있다[Neural Architecture Search with Reinforcement Learning].

핵심 아이디어는 신경망 아키텍처를 '텍스트'로 표현할 수 있다는 점에 주목하였다. RNN을 사용하면 가변 길이의 텍스트로 생성할 수 있기 때문에 RNN과 에이전트를 이용하여 최적의 아키텍처를 찾아내었다.

기타 예시

  • 자율주행: 전통적으로 지도학습이 사용되었으나 최근 강화학습을 사용하는 움직임이 보임. AWS DeepRacer 환경 사용 가능
  • 건물 에너지 관리
  • 반도체 칩 설계

심층 강화 학습이 풀어야 할 숙제와 가능성

현실 세계에 적용하기

로봇 제어와 같은 실제 시스템에 강화 학습을 적용하기 위해서는 경험 데이터를 수집해야 하므로 비용과 시간이 오래 걸린다. 이를 위해 여러 해결책들이 등장하였다.

시뮬레이터 활용

실제 환경과 시뮬레이터간의 간극을 메꾸는 분야를 Sim2Real이라고 한다. Sim2Real의 기법 중 Domain Randomization 기법은 시뮬레이터에 무작위 요소를 추가하여 다양한 환경을 만들고 그 다양한 환경 속에서 에이전트를 행동시키고 학습한다. 예를 들어 OpenAI는 손가락 다섯 개가 달린 로봇 손 하나만으로 루빅스 큐브를 맞추는 문제에 이 기법을 적용한 연구를 공개했다.

오프라인 강화 학습

자율 주행, 로봇 제어, 챗봇 대화 등 축적된 과거의 데이터를 이용하는 방법도 있다. 이러한 과거 경험 데이터, 즉 '오프라인 데이터'를 활용해서 에이전트를 학습 시킬 수 있다.

모방 학습

Imitation Learning은 전문가의 시연을 참고하여 그 동작을 모방하는 것을 목표로 정책을 학습한다. Deep Q-learning from Demonstrations 논문에서는 전문가의 플레이에서 얻은 '상태, 행동, 보상'의 시계열 데이터를 DQN의 경험 재생 버퍼에 추가하고 그 위에서 DQN으로 학습을 수행한다. 

MDP로 공식화 하기 위한 팁

강화 학습의 많은 이론은 MDP를 전제로 한다. 하지만 실제 문제를 강화 학습으로 풀려면 문제를 MDP 형식에 맞는 공식으로 표현할 수 있어야 한다.

MDP가 지닌 유연성

MDP는 상태, 행동, 보상이라는 세 가지 정보를 '던져주는' 구조이다. 따라서 어떤 센서를 사용할지, 행동을 어떻게 설계할지, 시간을 1분으로 할수도 있고 1시간, 하루, 한달 등 유연하게 설계할 수 있기 때문에 MDP의 적용 범위는 매우 넓어진다.

MDP에서 설정이 필요한 사항

  • 해결하고자 하는 문제는 일회성 과제인가, 아니면 지속적 과제인가?
  • 보상 함수 설정
  • 행동의 규정
  • 상태의 규정
  • 수익의 할인율
  • 어디까지가 환경이고 어디까지가 에이전트?

공식화를 잘하기 위한 팁

MDP를 공식화 하는 것은 과학보다는 예술에 가까운 측면이 있다. 따라서 경험과 직관이 도움이 된다. 그래서 기존의 강화학습 연구를 많이 살펴보길 권장한다. MDP를 어떻게 공식화했는지를 주의 깊게 살펴보면 많은 힌트를 얻을 것이다.

범용 인공지능

강화 학습은 범용 인공지능을 실현하기 위한 핵심 분야로 믿는 연구자가 많다. 딥마인드 연구진의 "Reward is Enough"논문에서는 '지능 혹은 지능과 관련한 능력은 보상 총합의 극대화만으로 충분히 이해할 수 있다"라는 가설을 논의한다.

정리

  • 심층 강화 학습 알고리즘의 분류법을 살펴봄
  • 정책 경사법 계열 vs. DQN 계열의 유명한 알고리즘
  • 심층 강화학습의 중요한 연구 사례