포스트

파이썬과 케라스로 배우는 강화학습 | 강화학습 기초 2

파이썬과 케라스로 배우는 강화학습 Chapter 2 정리

파이썬과 케라스로 배우는 강화학습 | 강화학습 기초 2

책 정보 📖

  • 책 제목: 파이썬과 케라스로 배우는 강화학습
  • 글쓴이: 이웅원, 양혁렬, 김건우, 이영무, 이의령
  • 출판사: 위키북스
  • 발행일: 2020년 04월 07일
  • 챕터: Chapter 2. 강화학습 기초

책소개

강화학습의 기초부터 최근 알고리즘까지 친절하게 설명합니다! ‘알파고’로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지기 시작했다. 하지만 처음 강화학습을 공부하는 분들을 위한 쉬운 자료나 강의를 찾아보기 어려웠다. 외국 강의를 통해 어렵게 이론을 공부하더라도 강화학습을 구현하는 데는 또 다른 장벽이 있었다. 이 책은 강화학습을 처음 공부하는 데 어려움을 겪는 독자를 위해 이론부터 코드 구현까지의 가이드를 제시한다.

특히 이번 개정판에서는 텐서플로 버전업에 맞춰서 코드를 업데이트하고 전반적인 이론 및 코드 설명을 개선했다. 그리고 실무에서 많이 활용될 수 있는 연속적 액터-크리틱 알고리즘을 추가했다.

주요 내용

  • 강화학습의 기초 - 가치함수

    강화학습에서 에이전트가 좋은 행동을 선택하기 위해서는 미래의 보상을 예측할 수 있어야 한다. 이를 위한 핵심 개념인 가치함수에 대해 알아보자.


가치함수의 필요성

에이전트는 현재 상태에서 앞으로 받을 보상들을 고려해 선택해야 좋은 선택을 할 수 있다. 아직 받지 않은 많은 보상들을 고려하기 위해서는 앞으로 받을 보상에 대한 개념인 가치함수를 알아야 한다.

에이전트는 가치함수를 통해 행동을 선택할 수 있으며, 전체적인 흐름은 다음과 같다:

MDP → 가치함수 → 행동 선택


보상의 합과 할인율

단순한 보상의 합

$R_{t+1} + R_{t+2} + R_{t+3} + \cdots$

현재 시간 t로부터 에이전트가 행동하면서 받을 보상들을 합한 수식이다. 보상은 행동했을 때가 아닌 다음 타임스텝에서 받는다는 것을 기억해야 한다.

위의 수식에서는 에이전트가 시간마다 받는 보상을 모두 포함했지만, 게임이 끝날 때 한번에 받을 수도 있다.

단순한 합의 문제점

위의 식처럼 시간에 따른 보상으로 단순하게 더하면 3가지 문제가 생긴다:

  1. 에이전트 입장에서는 지금 받는 보상과 미래에 받는 보상을 같은 취급한다
  2. 100이라는 보상을 한번에 받는 것과 20이라는 보상을 5번 받는 것을 구별할 수 없다
  3. 시간이 무한대라고 가정한다면 0.1씩 시간마다 받는 것과 1씩 시간마다 받는 것을 수치적으로 구분할 수 없다

할인율의 도입

따라서 할인율이라는 개념을 사용한다. 할인율은 미래의 보상을 현재의 보상으로 변환하기 위해 미래에 받은 보상에 0~1사이의 값을 곱해준다.

$G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \cdots$

  • 할인율을 적용한 보상들의 합
  • 이 값을 반환값 $G_t$라고 한다

반환값과 에피소드

반환값이라는 것은 에이전트가 실제로 환경을 탐험하며 받은 보상의 합이다.

에피소드의 개념

유한한 시간에서 에이전트와 환경의 상호작용을 에피소드라고 부른다. 에피소드에서는 에피소드를 끝낼 수 있는 마지막 상태가 있다.

에이전트는 환경과 유한한 시간 동안 상호작용을 할 것이고 마지막 상태가 되면 그때 반환값을 계산할 수 있다. 즉, 에이전트가 에피소드가 끝난 후에 ‘그때로부터 얼마의 보상을 받았지?’라며 보상을 정산하는 것이 반환값이다.

반환값 계산 예시

\(G_1 = R_2 + \gamma R_3 + \gamma^2 R_4 + \gamma^3 R_5 + \gamma^4 R_6\)
\(G_2 = R_3 + \gamma R_4 + \gamma^2 R_5 + \gamma^3 R_6\)
\(\cdots\)
\(G_5 = R_6\)


가치함수의 정의

반환값의 불확실성

MDP로 정의되는 세계에서 환경과 에이전트의 상호작용에는 불확실성이 내포되어 있다. 특정 상태의 반환값은 에피소드마다 다를 수 있다.

에이전트는 특정 상태의 가치를 무엇으로 판단할까? 반환값에 대한 기댓값으로 특정 상태의 가치를 판단한다. 이것이 바로 가치함수의 개념이다.

가치함수의 수학적 정의

$v( s ) = E[G_t | S_t = s]$

  • 가치함수: 어떠한 상태에서 받을 것이라고 예상되는 값
  • 각 타임스텝마다 받는 보상이 모두 확률적이고 반환값이 그 보상들의 합이므로 반환값은 확률변수다
  • 반면 가치함수는 확률변수가 아니라 특정 양을 나타내는 값이므로 소문자로 표현한다

상태의 가치를 고려하는 이유는 만약 에이전트가 갈 수 있는 상태들의 가치를 안다면 그중에서 가장 가치가 제일 높은 상태를 선택할 수 있기 때문이다.


가치함수의 수학적 전개

기본 형태

$v(s) = E[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \cdots | S_t = s]$

앞으로 받을 보상에 대한 기댓값인 가치함수다.

반환값으로 표현

$v(s) = E[R_{t+1} + \gamma(R_{t+2} + \gamma R_{t+3} + \gamma^2 R_{t+4} \cdots) | S_t = s]$

$v(s) = E[R_{t+1} + \gamma G_{t+1} | S_t = s]$

반환값으로 나타내는 가치함수다. $R_{t+2} + \gamma R_{t+3} \cdots$는 반환값의 형태로 표현되지만 사실 에이전트가 실제로 받은 보상이 아닌 받을 것이라 예상하는 보상이다. 따라서 앞으로 받을 보상에 대한 기댓값인 가치함수로 표현할 수 있다.

재귀적 표현

$v(s) = E[R_{t+1} + \gamma v(S_{t+1}) | S_t = s]$

가치함수로 표현하는 가치함수의 정의다.


정책을 고려한 가치함수

정책의 필요성

위의 식들은 정책을 고려하지 않은 가치함수다. 각 상태에서 행동을 하는 것이 에이전트의 정책이기에 정책을 고려해야 한다.

현재 상태에서 에이전트가 다음에 어떤 상태로 갈지 결정하는 것은 지금 에이전트가 정책에 따라 선택할 행동과 상태 변환 확률이다. 보상은 어떤 상태에서 어떤 행동을 하는지에 따라 환경에서 에이전트에게 주어진다.

따라서 MDP로 정의되는 문제에서 가치함수는 항상 정책에 의존하게 된다.

벨만 기대 방정식

$v_{\pi}(s) = E_{\pi}[R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t = s]$

  • 정책을 고려한 가치함수의 표현 → 벨만 기대 방정식이다
  • 벨만 기대 방정식은 현재 상태의 가치함수 $v_{\pi}(s)$와 다음 상태의 가치함수 $v_{\pi}(S_{t+1})$ 사이의 관계를 말해주는 방정식이다

큐함수 (Q-Function)

큐함수의 개념

가치함수는 말 그대로 함수다.

상태 → 가치함수 → 받을 보상의 합

  • 가치함수는 상태를 입력받아 앞으로 받을 보상의 합을 출력한다
  • 지금까지의 가치함수는 상태 가치 함수
  • 에이전트는 가치함수를 통해 어떤 상태에 있는 것이 얼마나 좋은지 알 수 있다

상태 가치함수가 상태에 대해 가치를 알려주는 것처럼 행동에 대해 가치를 알려주는 함수가 있다면?

  • 에이전트는 함수의 값만 보고 행동을 선택할 수 있다
  • 어떤 상태에서 어떤 행동이 얼마나 좋은지 알려주는 함수를 행동 가치 함수라고 한다
  • 이를 간단히 큐함수라고 부른다

큐함수의 수학적 정의

$q_{\pi}(s,a)$

큐함수는 상태, 행동이라는 두 가지 변수를 가진다.

가치함수와 큐함수의 관계

가치함수와 큐함수 사이의 관계는 다음처럼 표현할 수 있다:

  1. 각 행동을 했을 때 앞으로 받을 보상인 큐함수 $q_{\pi}(s,a)$를 $\pi(a|s)$에 곱한다
  2. 모든 행동에 대해 큐함수와 $\pi(a|s)$를 곱한 값을 더하면 가치함수가 된다

$v_{\pi}(s) = \sum\limits_{a\in A}{\pi(a|s)}q_{\pi}(s,a)$

  • 가치함수와 큐함수 사이의 관계식
  • 강화학습에서 에이전트가 행동을 선택하는 기준으로 가치함수보다 보통 큐함수를 사용한다

큐함수의 벨만 기대 방정식

$q_{\pi}(s,a) = E_{\pi}[R_{t+1} + \gamma q_{\pi}(S_{t+1}, A_{t+1}) | S_t = s, A_t = a]$

  • 큐함수 또한 벨만 기대 방정식의 형태로 표현할 수 있다
  • 가치함수와의 차이는 조건문에 행동이 추가된다는 점이다
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.