본문 바로가기

AI 딥러닝50

벨만 최적 방정식 (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.
정책 그래디언트 기반 강화학습의 원리 강화학습에서 에이전트(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.
강화학습 문제 최적제어 문제는 다음과 같이 이산시간(discrete-time) 차분 방정식(difference equation)으로 표현된 비선형 시스템이 있을 때, \[ \mathbf{x}_{t+1} = \mathbf{f}_t ( \mathbf{x}_t, \mathbf{u}_t) \] 시스템이 어떤 스칼라 성능지수(performance index) \( J_i \)를 최소화하도록 제어변수 \( \mathbf{u}_t \in R^m \)를 결정하는 문제다. 성능지수의 일반적인 형태는 다음과 같다. \[ J_i = \phi (T, \mathbf{x}_T )+ \sum_{t=i}^{T-1} g_t ( \mathbf{x}_t, \mathbf{u}_t) \] 여기서 아래 첨자 \(t \)는 시간스텝을 나타내며 \( \math.. 2020. 11. 8.
강화학습의 한계 강화학습이 비약적으로 발전하고 있지만, 로봇이나 드론 등 실제 물리 시스템의 제어에 적용하기에는 아직 극복해야 할 많은 문제를 가지고 있다. 첫 번째 문제점은 강화학습이 기본 동역학 모델을 알지 못하더라도 환경과의 상호작용을 통해 얻은 데이터만을 가지고 직접 정책을 유도할 수 있다지만, 단순한 작업을 배우는 데에도 너무 많은 시도(try)와 데이터가 필요하다는 점이다. 즉, 샘플 효율성이 매우 떨어진다는 뜻이다. 예를 들어 단순한 강화학습 예제 중의 하나인 진자(pendulum)의 정책을 학습하려면 수 십 또는 수 천회의 정책 실행이 필요하다. 게임이나 컴퓨터 시뮬레이션은 괜찮을지 몰라도, 로봇이나 드론 등 실제 물리 시스템에 대해서는 데이터를 얻기 위해서는 필요한 시간과 비용 등이 터무니없이 클 수 있.. 2020. 10. 28.
컨볼루션과 상관도 LTI 시스템의 임펄스 반응 \( h[n] \)과 입력 신호 \( x[n] \)의 컨볼루션(convolution)은 다음 식으로 정의한다. \[ y[n] = \sum_{k=-\infty}^{\infty} x[k] h[n-k] \] 한편, LSI 시스템의 임펄스 반응 \( h[m,n] \)과 입력 신호 \( x[m,n] \)의 2D 컨볼루션은 다음 식으로 정의한다. \[ y[m,n] = \sum_{k=-\infty}^{\infty} \sum_{l=-\infty}^{\infty} x[k,l] h[m-k, n-l] \] 컨볼루션은 앞에서 설명했듯이 LTI 또는 LSI 시스템에 입력신호가 가해졌을 때 출력신호를 계산하는 식이며, 컨볼루션은 ‘뒤집기와 이동’ 방법을 사용하여 계산할 수 있다. 상관도(correla.. 2020. 9. 22.