본문 바로가기

분류 전체보기321

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] 라그랑지 포인트 (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] 운동방정식의 무차원화 원궤도제한삼체문제(CR3BP)의 운동방정식은 비선형 연립 미분방정식이므로 수치적으로 풀어야 하는데, 방정식에는 스케일이 크게 다른 항이 혼재되어 있다. 예를 들면 각속도 \(\omega_s\)는 매우 작은 값을 갖는 반면 질량, 거리 등은 매우 큰 값을 갖는다. 이와 같이 수치적 방법에서 스케일이 크게 다른 값이 혼재되어 있을 때 각 항들을 적절한 척도를 이용하여 스케일을 조정한다면 수치 오차를 최소화시킬 수 있다. CR3BP의 운동방정식을 무차원화(nondimensionalization)하여 수치 오차를 최소화하고 또한 사용되는 파라미터를 줄여 방정식을 단순화시켜 보자. 방정식을 무차원화하기 위해서는 먼저 기준 질량, 기준 거리, 기준 시간을 정해야 한다. 기준 질량 \(m_0\)으로서 두 주요(pri.. 2021. 4. 9.
[CR3BP] 운동방정식 유도 삼체문제(three-body problem)에서 세 질점 중 한 개의 질점의 질량 \(m_3\)이 다른 두 질점 \(m_1\), \(m_2\)보다 훨씬 작아서 무시할 수 있을 정도라고 가정해 보자. 그러면 질점 \(m_3\)는 두 질점 \(m_1\) 및 \(m_2\)에는 어떤 영향도 미치지 못할 것이므로 두 질점 \(m_1\)과 \(m_2\)의 운동은 이체문제(two-body problem)로 간주할 있다. 이와 같이 삼체문제를 특수한 경우로 제한한 문제를 '제한된 삼체문제(restricted three-body problem)' 라고 한다. 제한된 삼체문제에서 두 질점 \(m_1\)과 \(m_2\)의 운동은 이체문제를 따르므로 그 궤도는 두 질점 공통의 질량중심점을 중심으로 한 원, 타원, 포물선, 쌍.. 2021. 4. 8.
삼체문제 (Three-Body Problem) 이체문제(two-body problem)에서는 전 우주에 질점(point mass)이 딱 2개 밖에 없으며 두 질점 사이에는 만유인력만 작용한다는 가정하에서 두 질점의 운동에 관한 문제를 다루었다. 이체문제는 해석적인 해가 존재했으며 두 질점의 절대적인 또는 상대적인 궤도의 모양은 원, 타원, 포물선, 쌍곡선 중의 하나였다. 삼체문제(three-body problem)는 이체문제에 질점 하나를 추가한 것이다. 전 우주에 질점이 3개밖에 없으며 세 질점 사이에 만유인력만 작용한다는 가정하에서 세 질점의 운동을 다루는 문제다. 삼체문제는 질점 하나를 더 추가했을 뿐이지만 이체문제와는 확연히 다른 매우 복잡한 운동의 모습을 보여준다. 우선 삼체문제는 해석적인 해가 없다. 수치적으로 운동 방정식을 풀어야 한다... 2021. 4. 7.