본문 바로가기

A2C4

Tensorflow2로 만든 DDPG 코드: Pendulum-v0 OpenAI Gym에서 제공하는 Pendulum-v0 환경을 대상으로 DDPG 알고리즘을 Tensorflow2 코드로 구현하였다. 학습결과는 다음과 같다. DDPG는 오프-폴리시 방법으로서 온-폴리시인 A2C에 비해서 데이터 효율이 월등히 좋은 것을 알 수 있다. 200회의 에피소드만에 학습이 완료됐다. 다음은 학습이 끝난 후 진자(pendulum)의 움직임이다. DDPG 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 ddpg_learn.py, 이를 실행시키기 위한 ddpg_main.py, 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동하기 위한 ddpg_load_play.py, 그리고 리플레이 버퍼를 구현한 replaybuffer.py로 구성되어 있다. 전체 코드 구조는 다음과 같다. 다음.. 2021. 5. 14.
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.