본문 바로가기

AI 딥러닝65

DQN 알고리즘 - 2 DQN은 이산공간 상태변수에서만 작동하던 Q-러닝 알고리즘을 연속공간 상태변수로 확장시킨 것이었다. 일단 단순하게 Q-러닝을 바탕으로 만든 DQN 알고리즘은 다음과 같았다. [1] DQN의 파라미터를 초기화한다. 그리고 [2]-[4]를 반복한다. [2] 행동 \(\mathbf{a}_i\) 를 실행하여 천이샘플(transition sample) \(\{\mathbf{x}_i, \mathbf{a}_i, r_i, \mathbf{x}_{i+1}\}\) 를 모은다. [3] \(y_i= r(\mathbf{x}_i, \mathbf{a}_i )+ \gamma \max_{\mathbf{a}^\prime} Q_\phi (\mathbf{x}_{i+1}, \mathbf{a}^\prime )\) 를 계산한다. [4] \(\ph.. 2021. 5. 4.
DQN 알고리즘 - 1 Q-러닝 알고리즘은 이산공간 상태변수와 행동을 기본으로 하며, 유한 개의 상태변수와 행동에 대한 행동가치의 값을 테이블(Q-테이블이라고 한다) 형식으로 저장하고 관리한다. 적은 수의 상태변수와 행동의 경우에는 문제가 되지 않지만 많은 수의 상태변수와 행동의 경우에는 이와 같은 테이블 형식의 관리는 불가능할 수 있다. 예를 들어서 비디오 게임에 Q-러닝을 적용한다고 할 때, \(200 \times 200\) 픽셀 이미지, \(255\) 컬러, \(3\) 채널로 가정한다면 상태변수의 개수는 \((255^3 )^{200 \times 200}\) 개가 된다. 이 숫자는 전 우주에 있는 원자의 개수보다도 더 큰 숫자라고 한다. 이처럼 방대한 상태변수의 개수를 테이블 형태로 저장하고 관리한다는 것은 불가능한 일이다.. 2021. 5. 2.
가치 이터레이션에서 Q-러닝으로 정책 이터레이션은 벨만 방정식을 반복적으로 푸는 방법이었다. 정책 이터레이션의 식은 다음과 같다. \[\begin{align} & V_{j+1}^\pi (\mathbf{x}_t ) = r_t + \mathbb{E}_{ \mathbf{x}_{t+1} \sim p(\mathbf{x}_{t+1} | \mathbf{x}_t, \mathbf{u}_t) } \left[ \gamma V_j^\pi (\mathbf{x}_{t+1} ) \right] \tag{1} \\ \\ & Q_{j+1}^\pi (\mathbf{x}_t, \mathbf{u}_t ) = r_t + \mathbb{E}_{ \mathbf{x}_{t+1} \sim p(\mathbf{x}_{t+1} | \mathbf{x}_t, \mathbf{u}_t) } \.. 2021. 5. 1.
가치 이터레이션 (Value Iteration) 정책 이터레이션에서는 정책 평가 단계 시에 가치함수를 수렴할 때까지 수차례 반복 계산하였다. 그리고 수렴된 가치함수를 이용하여 정책 개선을 수행하였다. 만약 정책 평가 단계 시에 가치함수를 한 번만 계산하고 수렴되지 않은 상태로 바로 정책 개선 단계로 넘어가면 어떨까. 즉, 식 (1)과 같이 정책 \(\pi_i\) 에 대한 정책 평가를 한 단계만 수행한 후, \[ \begin{align} & V_{i+1}^{\pi_i} (\mathbf{x}_t )= r_t+ \mathbb{E}_{ \mathbf{x}_{t+1} \sim p(\mathbf{x}_{t+1} | \mathbf{x}_t, \mathbf{u}_t) } \left[ \gamma V_i^{\pi_i } (\mathbf{x}_{t+1} ) \right.. 2021. 4. 29.
정책 이터레이션 (Policy Iteration) 어떤 정책 \(\pi\) 에 대해서 행동가치 함수가 주어지면 기존의 정책 보다 더 큰 상태가치 또는 행동가치 값을 갖는 새로운 정책 \(\pi^\prime\) 을 계산할 수 있다. 이 과정을 정책 개선(policy improvement)이라고 한다. 새로운 정책은 다음과 같이 탐욕(greedy)적인 방법으로 찾을 수 있다. \[ \pi^\prime = \arg⁡ \max_{\mathbf{u}_t}⁡ Q^\pi (\mathbf{x}_t, \mathbf{u}_t) \tag{1} \] 여기서 탐욕적이라는 의미는 먼 미래 대신에 한 시간스텝만을 고려하여 최대값을 구한다는 것을 말한다. 탐욕적 방법으로 새로운 정책을 계산하면 확정적(deterministic) 정책이 된다. \[ \mathbf{u}_t= \pi^\.. 2021. 4. 29.
벨만 최적 방정식 (Bellman Optimality Equation) 벨만의 최적성 원리(Bellman’s principle of optimality)는 일견 자명해 보이는 사실에 바탕을 두고 있다. 만약 상태변수와 그 상태변수에서 내린 어떤 결정들의 시퀀스가 최적(optimal)이라면, 맨 첫 번째 상태변수와 결정을 해당 시퀀스에서 제거해도, 나머지 시퀀스는 여전히 최적 시퀀스라는 것이다. 물론 나머지 시퀀스는 두 번째 상태변수와 결정을 초기 조건으로 하는 시퀀스가 된다. 좀 더 구체적으로 설명해 본다. 다음과 같은 그림에서 최적 경로가 경로 a-b-d 라고 하자. 노드 a에서 처음 내린 결정(decision)으로 경로 a-b가 선택됐고 그 때의 비용은 \(J_{ab}\)라고 하고, 그 다음 결정으로 경로 b-d가 선택됐고 그 때의 비용이 \(J_{bd}\)라고 하자. .. 2021. 4. 28.
강화학습에서의 이산공간과 연속공간 문제 이산시간(discrete-time)이란 시간 변수가 특정 지점에서만 값을 갖는 것을 의미한다. 반면에 연속시간(continuous-time)이란 시간 변수가 연속적인 값을 갖는 것을 의미한다. 가령 특정 시간 구간 \([t_0, t_f ]\)에서 가질 수 있는 시간 지점이 \(t=t_0, t_1, ..., t_f\)로서 유한개라면 이산시간이고, \(t_0 \le t \le t_f\)로서 무한개라면 연속시간이다. 이산시간에서는 시간 전개를 시간스텝(time-step)으로 표현한다. 이산공간(discrete-space)이란 시간 이외의 어떤 변수가 특정 지점에서만 값을 갖는 것을 의미한다. 반면에 연속공간(continuous-space)이란 시간 이외의 어떤 변수가 연속적인 값을 갖는 것을 의미한다. 가령 .. 2021. 4. 26.
가치함수 (Value Function) 어떤 상태변수 \(\mathbf{x}_t\)에서 시작하여 그로부터 어떤 정책 \(\pi\)에 의해서 행동이 가해졌을 때 기대할 수 있는 미래 보상의 총합을 상태가치(state-value)라고 한다. 상태가치 함수의 정의는 다음과 같다. \[ \begin{align} V^\pi (\mathbf{x}_t ) &= \mathbb{E}_{\tau_{u_t:u_T} \sim p(\tau_{u_t:u_T } | \mathbf{x}_t ) } \left[ r_t+ \gamma r_{t+1}+ \gamma^2 r_{t+2} + \cdots + \gamma^{T-t} r_T | \mathbf{x}_t \right] \tag{1} \\ \\ &= \int_{\tau_{u_t:u_T}} \left( \sum_{k=t}^T .. 2021. 4. 21.
Tensorflow2로 만든 A2C 코드: Pendulum-v0 OpenAI Gym에서 제공하는 Pendulum-v0 환경을 대상으로 A2C 알고리즘을 Tensorflow2 코드로 구현하였다. 학습결과는 다음과 같다. A2C 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 a2c_learn.py, 이를 실행시키기 위한 a2c_main.py, 그리고 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동하기 위한 a2c_load_play.py로 구성되어 있다. 전체 코드 구조는 다음과 같다. 다음은 Tensorflow2 코드다. a2c_learn.py # A2C learn (tf2 subclaasing API version) # coded by St.Watermelon import tensorflow as tf from tensorflow.keras.models i.. 2021. 4. 20.
A2C 알고리즘-2: 액터 신경망 한 개의 샘플을 이용한 목적함수의 그래디언트는 다음과 같았다. \[ \nabla_\theta J(\theta) \approx \sum_{t=0}^T \left[ ( \nabla_\theta \log⁡ \pi_\theta (\mathbf{u}_t | \mathbf{x}_t)) A^{\pi_\theta} (\mathbf{x}_t, \mathbf{u}_t ) \right] \] 앞에서 크리틱 신경망을 설계했으므로 수식 안에 있는 어드밴티지 함수는 크리틱 신경망의 추정값으로 대체한다. \[ \nabla_\theta J(\theta) \approx \sum_{t=0}^T \left[ ( \nabla_\theta \log⁡ \pi_\theta (\mathbf{u}_t | \mathbf{x}_t)) \hat{A} (.. 2021. 4. 20.