본문 바로가기

AI 딥러닝/강화학습29

Hindsight Experience Replay (HER) 강화학습에서는 보상(reward)을 환경이 제공한다고 가정하지만 실제로는 강화학습 설계자가 시스템이 원하는 반응을 보이도록 보상함수를 설계해야 한다. 보상함수는 설계자가 원하는 것을 정확히 포착하도록 해야 하지만, 학습의 안정성과 효율성도 고려해서 신중하게 설계해야 한다. 강화학습을 실제 문제에 적용하는데 있어서 어려운 점 중의 하나는 바로 이 보상함수를 적절하게 설계하는 것이다. 특히 항공기나 미사일, 그리고 로봇과 같은 물리 시스템의 경우에는 도메인 지식이 없거나 또는 복잡하고 예측할 수 없는 환경에서는 적절한 보상을 설정하는 것 자체가 어려울 수도 있고, 또한 잘못된 지표를 최적화하게 되면 실제 의도한 목표에 대한 성능이 저하됨은 물론 예상하지 못한 원치 않는 동작을 유발할 수도 있다. 따라서 설계.. 2023. 6. 12.
Tensorflow2로 만든 DDPG 코드: BipedalWalker-v3 OpenAI Gym에서 제공하는 BipedalWalker-v3 환경을 대상으로 DDPG 알고리즘을 Tensorflow2 코드로 구현하였다. BipedalWalker-v3는 DDPG로 학습하기에는 난해한 문제로 알려져 있다. 하이퍼파라미터에 매우 민감하기 때문이다. 학습결과는 다음과 같다. 500회의 에피소드로 학습한 결과다. 추세를 볼 때 그 이상 학습한다면 더 좋은 결과를 얻을 수도 있을 것 같다. 학습하기 전 워커의 움직임은 다음과 같다. 아래는 학습 중간에 얻은 결과다. 다음은 학습이 끝난 후 워커의 움직임이다. DDPG 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 ddpg_learn.py, 이를 실행시키기 위한 ddpg_main.py, 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동.. 2021. 7. 9.
가치 이터레이션 (Value Iteration)과 LQR 이번에는 벨만 최적 방정식을 이용하여 이산시간(discrete-time) LQR을 유도해 보도록 하자. 정책 이터레이션과 마찬가지로 마르코프 결정 프로세스(MDP)는 결정적(deterministic) 프로세스로 가정하고 환경 모델도 다음과 같다고 가정한다. \[ \mathbf{x}_{t+1}=A \mathbf{x}_t+B \mathbf{u}_t \tag{1} \] 보상(reward)도 동일하게 다음과 같이 정의한다. \[ r(\mathbf{x}_t, \mathbf{u}_t)= -\frac{1}{2} \left( \mathbf{x}_t^T Q \mathbf{x}_t+ \mathbf{u}_t^T R \mathbf{u}_t \right) \ \tag{2} \] 여기서 \( Q=Q^T \ge 0\), \(R=R.. 2021. 6. 23.
정책 이터레이션 (Policy Iteration)과 LQR 벨만 방정식을 이용하여 이산시간(discrete-time) LQR을 유도해 보도록 하자. 여기서 마르코프 결정 프로세스(MDP)는 결정적(deterministic) 프로세스로 가정한다. 결정적 프로세스이므로, 특정 상태변수에서 행동이 정해지면 다음(next) 상태변수를 확정적으로 계산할 수 있다. 환경 모델은 다음과 같이 표현된다. \[ \mathbf{x}_{t+1}=A \mathbf{x}_t+B \mathbf{u}_t \tag{1} \] 보상(reward)도 확률변수가 아닌 확정된 값으로 주어지며 다음과 같이 정의한다. \[ r(\mathbf{x}_t, \mathbf{u}_t)= -\frac{1}{2} \left( \mathbf{x}_t^T Q \mathbf{x}_t+ \mathbf{u}_t^T R \.. 2021. 6. 22.
Tensorflow2로 만든 SAC 코드: Pendulum-v0 OpenAI Gym에서 제공하는 Pendulum-v0 환경을 대상으로 1개의 Q 신경망과 타깃 Q 신경망을 사용한 SAC 알고리즘을 Tensorflow2 코드로 구현하였다. 학습결과는 다음과 같다. 200회의 에피소드만에 학습이 완료됐다. 다음은 학습이 끝난 후 진자(pendulum)의 움직임이다. SAC 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 sac_learn.py, 이를 실행시키기 위한 sac_main.py, 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동하기 위한 sac_load_play.py, 그리고 리플레이 버퍼를 구현한 replaybuffer.py로 구성되어 있다. 전체 코드 구조는 다음과 같다. 다음은 Tensorflow2 코드다. sac_learn.py # SAC lea.. 2021. 6. 1.
Soft Actor Critic (SAC) 알고리즘 - 2 SAC 알고리즘을 정리하면 다음과 같다. [1] Q 신경망과 액터 신경망의 파라미터를 초기화한다. [2] Q 신경망의 파라미터를 타깃 Q 신경망에 복사한다. [3] 리플레이 버퍼를 초기화 한다. 그리고 [4]-[9]를 반복한다. [4] 정책을 실행하여 발생된 천이샘플(transition sample) \(\left( \mathbf{x}_i, \mathbf{u}_i, r_i, \mathbf{x}_{i+1} \right) \) 를 리플레이 버퍼에 저장한다. [5] 리플레이 버퍼에서 N개의 천이샘플 \(\left( \mathbf{x}_i, \mathbf{u}_i, r_i, \mathbf{x}_{i+1} \right) \) 를 무작위로 추출한다. [6] \( q_i=r(\mathbf{x}_i, \mathbf{u.. 2021. 5. 30.
Soft Actor Critic (SAC) 알고리즘 - 1 행동가치 함수에 대한 소프트 벨만 방정식은 다음과 같다. \[ \begin{align} Q_{soft}^\pi (\mathbf{x}_t, \mathbf{u}_t ) & \gets r_t + \gamma \ \mathbb{E}_{\mathbf{x}_{t+1} \sim p(\mathbf{x}_{t+1} | \mathbf{x}_t, \mathbf{u}_t ), \ \mathbf{u}_{t+1} \sim \pi (\mathbf{u}_{t+1} | \mathbf{x}_{t+1} ) } \tag{1} \\ & \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \left[ Q_{soft}^\pi (\mathbf{x}_{t+1}, \mathbf{u}_{t+1} )- \alpha \log \pi(\mathbf.. 2021. 5. 29.
소프트 정책 이터레이션 어떤 정책 \(\pi_{old}\) 에 대해서 행동가치 함수가 주어지면 기존의 정책 보다 더 큰 행동가치 값을 갖는 새로운 정책 \(\pi_{new}\) 를 계산할 수 있다. 이 과정을 정책 개선(policy improvement)이라고 한다. 그렇다면 최대 엔트로피 목적함수 문제에서 도입한 식 (1)의 탐욕적 정책으로 \[ \pi (\mathbf{u}_t | \mathbf{x}_t ) = \frac{ \exp⁡ \left( \frac{1}{\alpha} Q_{soft}^\pi (\mathbf{x}_t, \mathbf{u}_t ) \right) }{ \int_{\mathbf{u}^\prime} \exp⁡ \left( \frac{1}{\alpha} Q_{soft}^\pi (\mathbf{x}_t, \mat.. 2021. 5. 28.
소프트 벨만 방정식 (Soft Bellman Equation) 소프트 상태가치와 소프트 행동가치의 시간적인 관계식을 알아보기 위해서, 소프트 행동가치 함수를 한 시간스텝 전개해 보자. \[ \begin{align} & Q_{soft}^\pi (\mathbf{x}_t, \mathbf{u}_t ) \tag{1} \\ \\ & \ \ = \int_{\tau_{x_{t+1}:u_T }} \left( \sum_{k=t}^T \gamma^{k-t} \left( r_k -\gamma \alpha \log \pi (\mathbf{u}_{k+1} | \mathbf{x}_{k+1} ) \right) \right) p(\tau_{x_{t+1}:u_T } | \mathbf{x}_t, \mathbf{u}_t ) d \tau_{x_{t+1}:u_T } \\ \\ & \ \ = \int_{\.. 2021. 5. 27.
최대 엔트로피 목적함수 강화학습 에이전트가 최적 경로를 선택하는 것만을 학습한다면 환경 변화에 매우 취약할 것이다. 환경 변화는 실제 세계에서 늘 벌어지는 일이므로 학습시에 최적의 선택과 함께 차선의 선택도 학습한다면 에이전트가 환경 변화에 보다 강인하게 대처할 수 있을 것이다. 강화학습의 목표는 다음과 같이 반환값(누적 보상)의 기댓값으로 이루어진 목적함수를 최대로 만드는 것이었다. \[ J= \mathbb{E}_{\tau \sim p(\tau) } \left[ \sum_{t=0}^T \gamma^t r(\mathbf{x}_t, \mathbf{u}_t ) \right] \] 그런데 이와 같은 표준 목적함수를 확장시켜서 '정책의 로그함수'를 추가한 새로운 목적함수를 생각해 보자. \[ J= \mathbb{E}_{\tau \si.. 2021. 5. 26.