본문 바로가기

전체 글353

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.
A2C 알고리즘-1: 크리틱 신경망 강화학습에서 에이전트(agent)가 최대화해야 할 누적 보상의 기댓값 또는 목적함수는 다음과 같다. \[ J(\theta)= \mathbb{E}_{\tau \sim p_\theta (\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t ) \right] \] 여기서 \(p_\theta (\tau)\)는 정책 \(\pi_\theta (\mathbf{u}_t | \mathbf{x}_t )\)로 생성되는 궤적의 확률밀도함수이다. 목적함수를 최대화하는 파라미터 \(\theta\)는 다음과 같이 경사상승법으로 구할 수 있다. \[ \theta \gets \theta + \alpha \nabla_\theta J(\theta) \] 경사상승법 또는 .. 2021. 4. 20.
기본 운동학 방정식 (BKE) 동일한 벡터라도 좌표계가 달라지면 그 표현이 달라진다. 뿐만 아니라 동일한 벡터를 시간 미분할 때도 미분을 수행하는 좌표계가 달라지면 그 값이 달라진다. 예를 들어 어떤 원판의 중심에서 원판 위의 한점을 가리키는 위치 백터 \(\vec{r}\)이 있다고 하자. 이 원판이 회전하고 관찰자 A도 원판의 중심에서 원판과 같이 회전한다고 하자. 그러면 관찰자 A에게는 시간이 흘러도 벡터 \(\vec{r}\)의 크기와 방향이 바뀌지 않고 그대로일 것이므로, 이 벡터를 시간에 대해서 미분한다면 관찰자 A는 그 값을 \(0\)이라고 할 것이다. 반면에 원판의 중심에 또다른 관찰자 B가 있다고 하자. 관찰자 B는 원판이 회전함에도 불구하고 원판과는 별개로 그대로 있다고 하자(약간 공중 부양해 있다고 가정). 그러면 관.. 2021. 4. 13.
각속도 벡터 각속도 벡터(angular velocity vector)는 어떤 좌표계를 기준으로 다른 좌표계가 회전 운동할 때, 회전축과 회전 속력을 나타내기 위한 벡터다. 각속도 벡터의 크기는 회전 속력의 크기인 각속력을 나타내고, 각속도 벡터의 방향은 기준 좌표계에 대하여 회전 운동하는 좌표계의 순간적인 회전축 방향을 나타낸다. 각속력의 크기뿐만 아니라 회전축 방향도 순간순간 변할 수 있으므로 각속도 벡터는 시간의 함수다. 좌표계 \(\{b\}\)가 좌표계 \(\{a\}\)를 기준으로 회전 운동할 때, 좌표계 \(\{a\}\)에서 본 좌표계 \(\{b\}\)의 각속도 벡터는 \(^a \vec{\omega}^b\)로 표기한다. 예를 들어서 원판이 점 \(O\)를 중심으로 일정한 각속력 \(\omega_0\)로 회전하.. 2021. 4. 13.
정책 그래디언트 기반 강화학습의 원리 강화학습에서 에이전트(agent)가 최대화해야 할 누적 보상의 기댓값 또는 목적함수(또는 성능지수)는 다음과 같다. \[ J= \mathbb{E}_{\tau \sim p(\tau)} \left[ \sum_{t=0}^T \gamma^t r_t (\mathbf{x}_t, \mathbf{u}_t) \right] \] 여기서 \(\mathbf{x}_t \in \mathbb{R}^n\)은 환경의 상태변수, \(\mathbf{u}_t \in \mathbb{R}^m\)은 에이전트의 행동(action), \( \gamma \in [0,1]\)는 감가율이다. \(r_t\)는 시간스텝 \(t\)일 때 에이전트가 받는 순간 보상을 나타내는 보상함수다. \(\tau\)는 에이전트의 정책(policy)으로 생성되는 궤적 \(\.. 2021. 4. 13.