Cart Pole Actor-Critic

이지민·2024년 9월 28일

Reinforcement-Learning

목록 보기
13/28
post-thumbnail

https://www.youtube.com/watch?v=KQPSvB8-MvA
(영상 링크)

Cart Pole 강화학습을 해보았다.

처음에는 Q-learning으로 시도를 했다.

성능이 처참했다.

학습을 하는 데이터들이 시퀀스 데이터다 보니 데이터들끼리의 상관 관계가 높아서 안정적인 학습을 하지 못하는 듯 하였다.

https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
Playing Atari with Deep Reinforcement Learning(DQN)

위 논문에서 replay memory를 사용하는 아이디어를 얻고 이를 적용하였다.

하지만 또 성능이 처참했다.

입실론 값이 높아서 랜덤한 행동을 많이 하는 초반일수록 성능이 좋았다.

따라서 확률론적인 정책을 사용해서 부드럽게 수렴시키는 전략이 좋겠다고 생각했다.

결국 성능이 좋다고 알려진 actor-critic 또한 적용하였다.

actor-critic

정책 π(a|s,θ)를 actor로서, 가치함수 V(s,w)를 critic으로서 활용한다.

확률론적 정책 π의 성능지표 J를 정의하고 이가 높아지도록 θ를 조정하는데, 이때 V를 이용하며 V 또한 w의 조정을 통해 학습해야한다.

간단히 설명하자면 V를 이용해서 actor의 행동이 좋은지 안 좋은지를 판단하고,
좋았다면 actor의 해당 아웃풋이 반환될 확률을 높이는 방식이다.


V는 REINFORCE 알고리즘을 사용하여 학습을 해주었다.

J가 높아지도록 하는 θ의 경사도는 간단하게 MSE같은 손실함수를 통해 loss를 계산한뒤 backward하는 기존의 방법과 다르게 접근해야 한다.

학습 해야하는 파라미터의 수렴 지점이 학습을 통해 바뀌기 때문에 adam 옵티마이저를 버리고 SGD로 해야하지 않을까 싶어서 SGD로 했다.
(여러 논문들에서는 Adam을 사용한다. SGD의 안정성보다 Adam의 효율성이 더 매력적인듯 하다.)

후기

난이도가 있는 강화학습 환경중에서도 쉬운 환경을 택하였다.

사소한 변화에도 성능이 바닥을 찍고, 영상처럼 최적 정책을 찾기도 함을 경험했다.

더 어려운 환경에서 적용할 논문 리스트도 모았다.

actor-critic의 자세한 개념은 아래 벨로그 링크를 통해 확인 가능하며
https://velog.io/@nrye4286/%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5-%EC%A0%95%EC%B1%85-%EA%B7%BC%EC%82%AC-%EB%B0%A9%EB%B2%95

자세한 코드는 아래 깃허브에서 확인 가능하다.
https://github.com/nrye4286/reinforcementLearning/blob/main/CartPole_actor_critic.py

0개의 댓글