본문 바로가기

분류 전체보기143

강화학습에서의 이산공간과 연속공간 문제 이산시간(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.
[CR3BP-3] 라그랑지 포인트 (Lagrange Point) CR3BP의 무차원화된 운동방정식은 다음과 같았다. \[ \begin{align} & \ddot{x}-2 \dot{y} - x = - \frac{ (1-\mu)(x+\mu) }{r_{13}^3 } - \frac{ \mu (x+\mu-1) }{ r_{23}^3 } \tag{1} \\ \\ & \ddot{y}+2 \dot{x} - y = - \frac{ (1-\mu) y }{r_{13}^3 } - \frac{ \mu y }{ r_{23}^3 } \\ \\ & \ddot{z} = - \frac{ (1-\mu) z }{r_{13}^3 } - \frac{ \mu z }{ r_{23}^3 } \end{align} \] 여기서 \[ \begin{align} & r_{13}= \sqrt{ (x+\mu)^2+y^2+z^.. 2021. 4. 10.
[CR3BP-2] 운동방정식의 무차원화 원궤도제한삼체문제(CR3BP)의 운동방정식은 비선형 연립 미분방정식이므로 수치적으로 풀어야 하는데, 방정식에는 스케일이 크게 다른 항이 혼재되어 있다. 예를 들면 각속도 \(\omega_s\)는 매우 작은 값을 갖는 반면 질량, 거리 등은 매우 큰 값을 갖는다. 이와 같이 수치적 방법에서 스케일이 크게 다른 값이 혼재되어 있을 때 각 항들을 적절한 척도를 이용하여 스케일을 조정한다면 수치 오차를 최소화시킬 수 있다. CR3BP의 운동방정식을 무차원화(nondimensionalization)하여 수치 오차를 최소화하고 또한 사용되는 파라미터를 줄여 방정식을 단순화시켜 보자. 방정식을 무차원화하기 위해서는 먼저 기준 질량, 기중 거리, 기준 시간을 정해야 한다. 기준 질량 \(m_0\)으로서 두 주요(pri.. 2021. 4. 9.