도입

2023년 현재, Open AI에서 개발한 GPT라는 거대한 언어모델의 등장으로 인해 사람들에게 인공지능이 크게 주목받고 있다. 그러나 chatGPT이전에 “인공지능”이 무엇이고 얼마나 발전했는지를 실제로 체감하게 만들었던 대표적인 사례는 바로 Google DeepMind에서 개발한 알파고(AlphaGo)일 것이다.

우리나라의 바둑 9단인 이세돌과 대국했던 알파고는 5번의 경기중에서 1번을 제외한 모든 경기에서 뛰어난 성능을 보이며 사람보다도 이제는 학습된 인공지능이 더 잘하는 작업이 생겨나고 있음을 알리게 되었다.

 

이런 알파고를 학습시킬 때 사용되었던 것이 바로 강화학습이다. 그중에서도 행동에 대한 가치를 평가하는 value network, 수행할 행동을 선택하는 policy network를 신경망의 형태로 표현하는 심층 강화학습(Deep Reinforcement Learning)을 도입하였다.

(알파고가 정확히 어떤 방법으로 학습되었는지 궁금하다면 추후 포스팅 할 알파고 논문 리뷰를 참고하길 바란다.)

 

이처럼 인공지능은 더이상 먼 미래의 이야기가 아니라 우리의 일자리를 위협할 정도로 사람을 따라잡고있다. 따라서 이런 기술에 우리가 위협당하지 않기 위해서는 기술을 완벽히 이해하고 기술이 필요한 곳에는 적절히 기술을 활용하고 기술보다 사람이 더 잘하는 분야에서는 여전히 사람이 일하는 등의 조절이 필요하다.

 

지금부터, 강화학습이 어떤 것인지 직관적으로 그리고 이론적으로(with 수식) 이해하기 위한 여정을 떠나보자.

 

인공지능과 강화학습

인공지능

먼저 인공지능이 무엇인지 정의부터 내려보자.

 

인공지능 : 인공지능이라는 이름에서부터 알 수 있다시피 “인공”적으로 만들어진 지능을 의미한다. 인공적으로 만들어진 지능이기 때문에 기계; 컴퓨터 위에서 동작하게 된다. 컴퓨터가 사람에 준하는 지능(학습, 추론, …)을 가지는 것을 의미한다.

 

머신러닝(기계학습)과 딥러닝 : 머신러닝은 인공지능을 학습시키기 위한 방법을 이야기한다. 다양한 방법 중에서 신경망 레이어 여러층을 깊게 쌓은 신경망을 학습시키는 방법이 바로 딥러닝이다. 즉, 딥러닝은 머신러닝의 범주에 포함되어있는 개념이다.

 

인공지능의 구분

인공지능은 크게 지도학습, 비지도학습 그리고 강화학습으로 나눌 수 있다.

지도학습은 정답을 알려주면서 학습을 시키고 비지도학습은 정답 없이 학습을 시키는 방법이다. 쉽게 예시를 들어서 설명해보자면, 개가 있는 사진과 고양이가 있는 사진으로 이루어진 데이터셋이 있을 때, 지도학습은 개가 있는 사진은 “개”, 고양이가 있는 사진은 “고양이”라는 라벨; 정답을 함께 제공해주면서 학습한다. 이렇게 학습된 기계는 정답이 없는 데이터가 들어왔을 때, 그 사진이 고양이인지, 개인지를 판단할 수 있다.

반면 비지도학습은 동일한 데이터 셋이라고 할지라도 어떤 사진이 어떤 종류인지 알려주지 않고 각각의 사진 데이터의 차이로부터 기계가 스스로 학습하여 비슷한 사진끼리 그룹짓게 만든다.

 

이 2가지 학습방법과는 다른 특징을 보이는 학습방법이 바로 강화학습이다. 강화학습은 “보상”이라는 방법으로 정답을 간접적으로 알려주지만 실제로 무엇이 정답인지는 확실하게 말해주지 않기 떄문에 어떤면에서는 지도학습으로도, 어떤 면에서는 비지도 학습으로도 분류할 수 있는 학습 방법이다.

 

강화학습이란?

강화학습 문제

강화학습(Reinforcement learning)은 기계학습이 다루는 문제 중에서 다음과 같이 기술되는 것을 다룬다.

어떤 환경을 탐색하는 에이전트가 현재의 상태를 인식하여 어떤 행동을 취한다. 그러면 그 에이전트는 환경으로부터 보상을 얻게 된다. 강화 학습의 알고리즘은 그 에이전트가 앞으로 누적될 보상을 최대화하는 일련의 행동으로 정의되는 정책을 찾는 방법이다.

강화학습을 이해하기 위해 사용하는 대표적인 예시가 바로 어린아이가 자전거를 처음으로 배우는 상황이다. 아이는 처음에는 어떻게 해야 자전저가 똑바로 갈 수 있는지 모르기 때문에 여러 시도를 해볼 것이고 그와중에 넘어지거나 다치면서 환경으로부터 안 좋은 보상을 받게 될 것이다. 그렇게 어떤 행동은 좋지 못하다는 것을 알고난 뒤에 새로운 행동을 시도해 볼 것이고 조금이나마 자전거가 앞으로 잘 나아갔다면 그 행동이 좋은 행동이었다는 것을 인식하면서 점점 자전거를 잘 탈 수 있도록 학습해 나갈 것이다.

 

이처럼 강화학습은 지도학습이나 비지도학습보다 사람이 실제로 학습하는 과정과 많이 닮아있는 학습 방법이다. 그렇기 때문에 흥미로운 접근 방법이라고 생각한다.

 

강화학습의 특징

강화학습의 특징은 아래의 키워드들의 나열로서 설명할 수 있다.

  • 순차적 의사 결정 문제
  • 보상을 통한 학습
  • 지연된 보상; Delayed Reward
  • 시행 착오; Trial and Error

강화학습은 순차적 의사 결정 문제를 해결할 수 있도록 기계를 학습시키는 방법이다. 이때 순차적 의사 결정 문제란 문제를 해결하기 위해서 여러개의 결정이 존재하며 앞선 결정에 따라 그 다음 상태가 바뀌는 문제를 의미한다. 일상생활에서 우리가 마주하는 대부분의 문제는 여러개의 결정을 요구한다.

 

쉽게 예를 들자면, 다음의 예시가 존재한다.

  • 체스는, 내가 현재 상황에서 어떤 곳에 떤 말을 두는지에 따라서 게임 보드의 상태가 변화하고 상대의 결정 다음에는 다시 또 내가 게임에서 이기기 위해 행동을 결정하게 된다.
  • 비행기를 조정할 때는 현재 바람의 세기, 방향에 따라서 어떤 각도로 비행기의 머리를 회전시킬지 얼마의 출력으로 엔진을 가동시킬지에 대한 결정을 계속해서 변화하는 외부 상태에 따라서 계속 결정을 해야한다.

이런 특수한 문제를 풀기위해서는 등장한 학습 방법이 바로 강화학습이다.

 

만약 일반적인 지도학습처럼 기계를 학습시킨다면 학습된 에이전트는 절대 지도자(supervisor)보다 더 잘할 수 없지만, 보상을 사용하여 스스로 에이전트가 최적의 정책을 찾아가도록 만들 수 있다. 그런데 강화학습은 “시간에 따른 순서”가 있는 문제를 해결하기때문에 현재 수행한 행동에 대한 보상이 뒤늦게 전달될 수도 있다. (즉각적으로 전달되지 않는다.) 따라서 지연되어 도착한 보상이 어떤 행동에 대한 보상이었는지를 판단하는 것이 주요한 문제가 된다.

 

또한 강화학습은 단순히 예측(predict)을 통해 발생하는 에러를 통해 학습하는 것이 아니라 실제로 환경과 상호작용하면서 내가 결정한 행동을 수행해보면서 받은 보상을 통해 학습해나간다.

 

에이전트와 환경

강화학습을 이루는 2가지의 큰 요소는 바로 에이전트(Agent)와 환경(Environment)일 것이다.

앞서 언급했던 자전거를 타는 문제에서 Agent는 바로 자전거를 타고자하는 “사람”이 된다. Environment는 사람을 제외한 모든 것을 의미한다. 자전거를 타고자 할 때 사람은 자신의 행동을 교정하여 더 나은 자전거 타는 방법을 배울 수 있지만, 계속해서 넘어진다고 해서 중력을 없애는 등 물리 법칙을 수정 할 수는 없는 것처럼 Agent와 Environment 또한 동일한 관계를 가진다.

이때 Agent가 어떻게 행동할지를 정의한 것이 바로 “정책(policy)”이다. 강화학습의 목적은 보상을 최대화 할 수 있는 최적의 정책을 찾아가는 것이다. policy는 보통 action에 대한 확률 분포로서 표현된다.

 

policy의 예시들

  • random : 랜덤하게 수행할 수 있는 action중에서 하나를 선택
    *이런 policy를 따를 때 $\pi$의 확률분포는 모든 가능한 action에 대하여 uniform distribution을 따를 것이다.
  • greedy : 가장 좋은 action을 선택
    *이런 policy를 따를 때 $\pi$의 확률분포는 가장 높은 value를 갖는 action에 대한 확률이 가장 높게 나타날 것이다.
  • $\epsilon$-greedy : $\epsilon$만큼은 랜덤, 나머지는 가장 좋은 action을 선택

Agent가 Environment와 상호작용하는 과정은 다음과 같다.

 

Agent의 동작

  1. env로부터 Observation $O_t$(=변화된 state)와 reward $R_t$를 받는다.
  2. Action $A_t$를 수행한다.

Environment의 동작

  1. agent로부터 Action $A_t$를 받는다.
  2. observation $O_{t+1}$과 reward $R_{t+1}$를 Agent에게 제공한다.

 

*Notation

강화학습을 수식적으로 이해하기 위해, 앞으로 자주 나타날 기호를 정리한다.

 

state

  • $S_t$ : time $t$에서 state를 표기하기 위한 기호 (class)
  • $s$ : 실제 어떤 state를 나타내는 것 (instance) $\in \mathcal S$

action

  • $A_t$ : time $t$에서 action를 표기하기 위한 기호 (class)
  • $a$ : 실제 어떤 action을 나타내는 것 (instance) $\in \mathcal A$
  • Action은 특정 policy의 확률분포를 따른다.
    $$
    A_t ∼ \pi (\cdot|S_t),\ \ \forall t>0
    $$

policy : $\pi$

  • deterministic policy : action 하나를 선택
  • stochastic policy : action을 선택할 확률
    $$
    \pi(a|s) = \mathbb P[A_t = a|S_t = s]
    $$

reward
현재 state s에서 어떤 action a을 수행함으로서 얻을 수 있는 reward
$$
\mathcal R_{s}^a = \mathbb E[R_{t+1} | S_t = s, A_t = a]
$$

 

return
현재부터 episode의 끝까지 받을 수 있는 total discounted($\gamma$) reward
$$
G_t = R_{t+1} + \gamma R_{t+2} + \cdots = \sum^\infin_{k=0} \gamma^k R_{t+k+1}
$$

 

(state) value function $v$
해당 state가 얼마나 좋은지를 평가하는 함수
$$
v_\pi(s) = \mathbb E_{\pi}[G_t| S_t = s]
$$

 

(action) value function $q$
현재 state에서 action 특정 a를 선택하는 것이 얼마나 좋은지를 평가하는 함수
$$
q_\pi(s,a) = \mathbb E_\pi[G_t|S_t=s, A_t = a]
$$

→ value function에서 $\pi$는 action을 선택하는 기준이 되는 policy를 의미한다.

 

심층 강화학습

딥러닝의 등장

기술의 발전으로 인해 컴퓨팅 파워가 강해지고 깊은 신경망을 학습할 수 있는 다양한 알고리즘이 개발되면서, 복잡한 함수를 표현할 수 있는 심층 신경망 (Deep Neural Network)가 많이 사용되기 시작했다. 강화학습에서도 단순한 문제가 아닌 복잡한 문제를 풀고자 할 때 기존 강화학습 알고리즘만으로는 한계에 부딪힐 때, 딥러닝을 도입하면서 더 많은 발전을 이루게 되었다.

 

심층 강화학습의 필요성

기본적인 강화학습 방법들은 Agent가 반복해서 Environment와 상호작용 하면서 얻는 경험들을 이용하여 action을 선택할 때 참조하는 일종의 look-up table을 갱신하는 방법이었다. 즉, 경험;heuristic을 통해 데이터베이스를 쌓아가면서 나에게 유리한 action과 그렇지 않은 action을 구분해나갔었다.

(look-up table : 특정한 state에 연관된 action과 reward를 기록한 table)

look-up table의 예시

그러나 더이상 모든 state와 그때의 가능한 모든 action을 표기할 수 없을정도로 큰 state space, action space를 갖는 환경이라면 look-up table의 형식으로 표현하는것이 불가능에 가까워진다.

 

Deep Reinforcement Learning은 신경망을 이용하여 학습하면서, 주어진 state에서 중요한 feature만을 뽑아내어 state를 자동으로 분석한다. 이런 신경망 모델에서 사용되는 parameter는 가능한 모든 state의 조합을 저장하는데 필요한 항목의 개수보다 훨씬 적다!

예를 들어, Atari 2600 게임을 플레이하는 Agent를 학습하는데 사용했던 신경망의 파라미터의 개수는 $1792$개 뿐이지만 실제로 비디오 게임 화면($84\times84$ gray scale image)의 고유한 표현상태는 $256^{28228}$개 였다

이처럼 딥러닝을 도입하게 되면 데이터의 숫자를 다 일일이 테이블에 저장해서 행동하는 것이 아니라 함수의 형태로 만들어서 정확하지는 않더라도 효율적으로 학습을 할 수 있게 하는 방법을 사용한다.

⇒ Approximation

 

DL의 발전과 함께 DRL도 많은 발전을 이루었으며 실제 세계의 대부분의 문제는 매우 복잡한 state-action space를 가지기 때문에 실제 세계의 문제에 적용하기 위해서는 대부분 DRL을 사용한다.

 

심층 강화학습 알고리즘

심층 강화학습 알고리즘을 구분하는 기준은 크게 2가지로 나뉜다.

  1. 모델이 존재하는가?*이때, 모델을 안다는 것은 해당 모델을 이루는 전이확률(transition matrix), 보상함수(reward function)을 알고 있다는 의미이다. 어떤 state로 이동할 지, 어떤 보상을 받을지를 알고있기 때문에 모델을 안다고 표현한다.
    • Model-Free RL
    • Model-Based RL
  2. Agent가 상호작용하는 모델을 정확히 알고있다면 실제로 env와 상호작용하지 않아도 planning을 할 수 있기 때문에 최적의 action을 찾을 수 있다. 그러나, 실제 문제에서는 이런 모델을 표현하는 것이 매우 어렵기 때문에 대부분 Model-Free RL을 사용한다.
  3. Value function / Policy 중에서 무엇을 최적화하는가?
    • Policy-based method (Policy Optimization)
    • Value-based method (Q-Learning)
    • 단, 완벽하게 2가지 범주로 구분되는 것은 아니고, 2가지를 모두 함께 학습하는 Actor-Critic 등의 방법들도 존재한다.
  4. Value function을 학습한다면 각 state에서 최적의 가치를 갖는 Action만을 선택하면 Optimal Policy를 구할 수 있다. 반면에 Policy를 학습한다면 value function은 Policy를 얻기 위하여 중간 계산과정일 뿐이기 때문에 Optimal Policy를 구할 수 있다.

각 범주에 속하는 대표적인 알고리즘은 다음과 같다. [1]

OpenAI

지금까지 강화학습과 심층강화학습에 대해 간단히 알아보았고 자주 등장하는 용어와 기호를 정리하였다. 다음 포스팅에서는 강화학습이 풀고자하는 문제, “순차적 의사결정 문제”를 표현하는 방법인 MDP에 대해 살펴볼 예정이다.

 

Reference

[1] OpenAI

[2] David Silver

[3] 팡요랩