머신러닝에서 강화학습이란

머신러닝에서 강화학습이란

정의

강화학습이란, 에이전트환경과 상호작용하여 누적 보상을 최대화하는 정책을 찾을 수 있도록 하는 것이다.

설명1

강화학습을 이루고 있는 요소들은 다음과 같다.

이를 여러 상황에 비유하면 다음과 같다.

강화학습 시험공부 바둑
에이전트 학생 바둑기사
상태 시험까지남은날짜 바둑판
행동 공부, 음주, 게임 등 수 놓기
정책 벼락치기 등 여러가지 공부법 상보다 집을 많이 만들기
보상 시험점수 승패
에피소드 시험기간 한 판

이제 다음의 격자 모델을 예시로 들어 각 요소들을 구체적으로 설명하겠다. 한 번에 상하좌우 네 방향 중 하나로 한 칸씩 움직일 수 있는 로봇이 아래와 같은 격자칸에 서있는 경우를 생각해보자. 시작칸은 $\boxed{2}$부터 $\boxed{15}$까지 임의로 정해지고, 로봇이 $\fcolorbox{black}{darkgray}{1}$ 혹은 $\fcolorbox{black}{darkgray}{16}$으로 이동하면 에피소드가 끝난다고 하자.

1.PNG

상태

상태확률변수이며 state의 앞글자를 따서 $S$라고 표기한다. 에피소드는 시간에 따라 순차적으로 진행되기 때문에 인덱스로 $t$를 쓴다. 따라서 타임스텝이 $t$일 때의 상태함수를 $S_{t}$라고 표기한다. 처음 상태는 보통 $t=0$으로 나타낸다. 정리하면 $S_{t}$는 시간이 $t$일 때 각각의 격자들에 대해서 다음과 같이 함숫값을 주는 함수이다.

$$ S_{t} \left( \boxed{n} \right) = n,\quad 1\le n \le 16 $$

이때 가능한 모든 상태값(상태함수의 함숫값)들의 집합을 $\mathcal{S}\subset \mathbb{R}$라고 표기하고, 이의 원소를 $s$로 표기한다.

$$ \mathcal{S} = \left\{ s_{1}, s_{2},\dots \right\} $$

그러면 위 격자모델에 대한 상태함수는 다음과 같다.

$$ S_{t} : \left\{ \fcolorbox{black}{darkgray}{1}, \boxed{2}, \dots, \boxed{15}, \fcolorbox{black}{darkgray}{16} \right\} \to \mathcal{S} \\ S_{t} \left( \boxed{n} \right) = s_{n} = n,\quad 1\le n \le 16 $$

그러면 시간이 $t$일 때 상태값이 $s_{6}$였다가 다음 타임스텝에서 상태값이 $s_{10}$으로 바뀔 확률은 다음과 같다.

$$ P \left( S_{t+1} = s_{10} | S_{t} = s_{6} \right) $$

도달한 순간 에피소드가 끝나게 되는 상태를 터미널 스테이트terminal state라고 한다. 위 격자 모델에서 터미널 스테이트는 $\fcolorbox{black}{darkgray}{1}, \fcolorbox{black}{darkgray}{16}$이다.

행동

행동이란 에이전트가 현재 상태에서 취할 수 있는 선택지를 말하며 이 또한 확률변수이다. action의 앞글자를 따와서 $A_{t}$로 표기한다. 위의 격자모델 예시에서는 $\boxed{2}$ ~ $\boxed{15}$에서 각각 상하좌우를 선택할 수 있다. 가능한 모든 행동값(행동함수의 함숫값)들의 집합을 $\mathcal{A}\subset \mathbb{R}$라고 표기하고, 이의 원소를 $a$라고 표기한다.

$$ \mathcal{A} = \left\{ a_{1}, a_{2}, \dots \right\} $$

그러면 타임스텝 $t$에서의 행동함수는 다음과 같다.

$$ A_{t} : \left\{ \uparrow, \rightarrow, \downarrow, \leftarrow \right\} \to \mathcal{A} \\ \begin{cases} A_{t}(\uparrow) = a_{1} \\ A_{t}(\rightarrow) = a_{2} \\ A_{t}(\downarrow) = a_{3} \\ A_{t}(\leftarrow) = a_{4} \end{cases} $$

에이전트는 주어진 상태에서 확률에 따라 행동을 결정한다. 예를들어 타임스텝이 $t$일 때 상태값이 $s_{6}$인 상황에서 행동 $a_{1}$을 선택한 확률은 다음과 같다.

$$ P(A_{t} = a_{1} | S_{t} = s_{6}) $$

정책

정책은 상태 $s$에서 행동 $a$를 결정할 확률을 모든 $s$와 $a$에 대해서 명시한 것을 말하며 $\pi$로 표기한다. 격자모델 예시에서 행동을 결정할 확률이 $\dfrac{1}{4}$로 모두 같다고 하면 정책 $\pi$는 다음과 같다.

$$ \pi \begin{cases} P(a_{1} | s_{2}) = \dfrac{1}{4} \\ P(a_{2} | s_{2}) = \dfrac{1}{4} \\ P(a_{3} | s_{2}) = \dfrac{1}{4} \\ \vdots \\ P(a_{2} | s_{15}) = \dfrac{1}{4} \\ P(a_{3} | s_{15}) = \dfrac{1}{4} \\ P(a_{4} | s_{15}) = \dfrac{1}{4} \end{cases} \quad \text{or} \quad \pi : \mathcal{S} \times \mathcal{A} \to [0,1] $$

물론 이는 최적화된 정책은 아니다. 간단히 $\boxed{2}$의 경우만 생각해봐도 위쪽으로 가면 격자 밖으로 벗어난 것이므로 위쪽으로 갈 확률 자체가 아예 없는 것이 더 나은 정책이다. 따라서 아래의 그림에서 $\pi_{1}$보다 $\pi_{2}$가 더 좋은 정책이라고 말할 수 있다.

2.PNG

강화학습 알고리즘의 목표는 최적의 정책을 찾는 것이다. 그러면 최적의 정책은 어떻게 찾느냐 하는건데, 정책의 좋은 정도를 평가하는 가치함수value function를 통해서 찾을 수 있다.

보상

보상이란 주어진 상태에서 에이전트가 선택한 행동에 따라 실수를 매핑하는 함수이며 reward의 앞글자를 따서 $R_{t}$라 표기한다. 모든 보상값(보상함수의 함숫값)들의 집합을 $\mathcal{R} \subset \mathbb{R}$이라 표기하며, 이의 원소를 $r$으로 표기한다.

$$ \mathcal{R} = \left\{ r_{1}, r_{2}, \dots \right\} \\ R_{t} = \mathcal{S} \times \mathcal{A} \to \mathcal{R} $$

보상은 한 번의 타임스텝마다 한 번씩 받게 되며 한 번의 에피소드에서 받은 총 보상, 그러니까 누적된 보상이 가장 크게 끔 하는 정책을 찾는 것이 강화학습의 궁극적인 목표이다.

그렇다면 왜 각각의 타임스텝에서의 보상보다 누적 보상이 커지도록 하는 것인지 궁금할 수 있다. 이는 시험공부로 비유하면 쉽게 이해가 갈 것이다. 시험기간동안 매일 저녁에 공부 대신 술 마시고 놀거나 게임을 하면 당장은 공부를 하는 것보다 더 즐거울 것이다. 하지만 누적보상, 그러니까 시험 성적은 개판일 것이다. 따라서 당장은 공부를 하는 것이 지치고 힘들지라도 미래의 큰 보상을 위해서 공부를 하는 것이 낫다고 판단하여 시험공부를 하는 것이다.

보상은 사람이 정하는 하이퍼 파라매터이다. 따라서 에이전트가 수행해야할 일에 따라서 적절하게 정해야한다. 가령 격자모델 예시에서 격자가 미로이고 에이전트가 미로를 탈출하는 로봇이라면 한 칸을 이동할 때마다 $-1$의 보상, 터미널 스테이트에 도착하면 $+10$의 보상을 주는 식으로 정할 수 있다. 격자가 공원이고 에이전트가 애완동물을 산책시키는 로봇이라면 한 칸을 이동할 때 마다 $0$의 보상, 터미널 스테이트에 도착하면 $+10$의 보상을 주는 식으로 정할 수 있다.

환경

환경은 에이전트가 주어진 상태에서 선택한 행동에 따라 다음 상태와 보상을 결정하는 함수, 즉 $f : (s,a) \mapsto (s',r)$이다. 따라서 항상 현실에 딱 들어맞는 비유를 찾기는 어렵다.

타임스텝이 $t$일 때의 상태를 $s_{t}$, $s_{t}$에서 선택한 행동을 $a_{t}$라고 하자. 이에 따라 환경이 결정한 다음 상태를 $s_{t+1}$, 보상을 $r_{t+1}$라고 하면 다음과 같이 나타낸다.

$$ f(s_{t}, a_{t}) = (s_{t+1}, r_{t+1}) $$

격자모델 예시에 대해서 구체적으로 설명하면 다음과 같다. 에이전트가 $\boxed{7}$에서 $\uparrow$를 선택하여 환경이 다음 상태 $\boxed{3}$와 보상 $-1$를 결정했다면 다음과 같은 수식으로 나타낸다.

$$ f(s_{7}, a_{1}) = (s_{3}, -1) $$

에이전트가 행동을 결정하는 전략을 정책이라고 부른다면, 환경이 다음 상태와 보상을 결정하는 것을 MDPmarkov decision process, 마코프 결정 과정라 한다. 에이전트와 환경의 상호작용을 그림으로 나타내면 다음과 같다.

3.PNG

에피소드

에이전트와 환경이 상호작용하면서 결정된 상태, 행동, 보상의 수열을 경로trajectory, 궤적 혹은 히스토리history 이라고 한다. 경로가 유한한 경우를 episode task라고 한다. 위에서 예로든 시험기간, 바둑, 격자모델 모두 이에 해당한다.

$$ s_{0}, a_{0}, s_{1}, r_{1}, a_{1}, s_{2}, r_{2}, \dots, a_{T-1}, s_{T}, r_{T} \\ \text{or} \\ (s_{0},) \overset{a_{0}}{\to} (s_{1}, r_{1}) \overset{a_{1}}{\to} (s_{2}, r_{2}) \overset{a_{2}}{\to} \cdots \overset{a_{T-1}}{\to} (s_{T}, r_{T}) $$

경로가 무한한 경우를 continuing task라고 한다. 다만 아주 긴 시간동안 지속되는 에피소드는 무한한 경우라고 간주 하기도 한다.

$$ s_{0}, a_{0}, s_{1}, r_{1}, a_{1}, s_{2}, r_{2}, \dots, a_{t-1}, s_{t}, r_{t}, a_{t}, s_{t+1}, r_{t+1},\dots \\ \text{or} \\ (s_{0},) \overset{a_{0}}{\to} (s_{1}, r_{1}) \overset{a_{1}}{\to} (s_{2}, r_{2}) \overset{a_{2}}{\to} \cdots \overset{a_{t-1}}{\to} (s_{t}, r_{t}) \overset{a_{t}}{\to} (s_{t+1}, r_{t+1}) \overset{a_{t+1}}{\to} \cdots $$


  1. 오일석, 기계 학습(MACHINE LEARNING). 2017, p466-480 ↩︎

댓글