본문 바로가기

트렌드 한눈에 보기/학계 트렌드

PyTorch를 활용한 DQN Tutorial - Pytorch vs Tensorflow

이제 막 강화학습을 시작하는 단계에서

PyTorch와 Tensorflow 중에서 어떤 툴을 사용해야 하는지 고민이 된다.

이런 걸로 고민하고 있다는 것은 사실

강화학습에 대한 근본적인 이해가 부족하다는 것이다.

 

"기본이 따악 잡혀있으면, 그런 툴 정도는 도구로 활용할 수 있는거야!"

하면서 일갈하는 사람도 있겠다만, 나로서는 마땅히 대꾸할 방법이 없다.

그래도 PyTorch vs Tensorflow로 검색해보면 

많은 사람들이 같은 고민을 하는 중이라고 생각된다.

 

실선: PyTorch 활용 논문 vs 점선: Tensorflow 활용 논문

그런 글들도 역시 마땅한 결론은 없다.

Tensorflow가 딥마인드(구글)의 힘을 얻어 사용되는 중인 반면에

PyTorch는 마땅히 비빌 언덕도 없을텐데

최근 들어 더 많이 쓰이기 시작한 툴은 PyTorch라는 것이다.

보면 대단하기도 하고, 멋져보이기도 하고 그렇다만

StackOverFlow를 통해 계속 검색해가야 하는 입장으로서는

하루라도 빨리 통일된 체계가 갖춰지기를 바랄 뿐이다.

 

지금으로서는 조금이라도 더 많이 쓰이는 도구에 익숙해질 수밖에 없는 터라

PyTorch를 활용한 Deep Q Network Tutorial을 공부해보았다.

 

영어 원본 페이지와 한글 번역 페이지가 있는데

한글 번역 페이지는 엄연히 번역자 이름까지 달고 있음에도 불구하고

번역기를 돌린 티를 벗어나지를 못했다.

너무하다- 싶으면서도 아예 떠먹여 주는 수준을 바라는거 같아

딱히 할말은 없다.

 

OpenAI CartPole 예제를 강화학습으로 해결할 수 있다

 

카트를 좌우로 움직임으로써

카트에 올려져있는 막대기를 넘어지지 않게끔 제어하는 방법을

강화학습을 통해 배울 수 있다는 것이 이번 튜토리얼의 목표이다.

 

해당 튜토리얼은 Colab 코드까지 제공해주는 터라

내가 개입할 여지는 많지 않다.

다만 역시 군데 군데 수정해야 하는 부분이 많아서 애좀 먹었다.

두 가지가 있는데,

하나는 Colab으로 OpenAI Gym을 렌더링하는 방법이 까다롭다는 것이다.

쉽게 말하자면, Colab과 Gym의 호환을 위해서는 우회로가 필요하다는 뜻인데

해당 부분이 튜토리얼에 잘 나와있지 않다.

 

두 번째는 학습 결과를 모니터링 하는 방법이 상당히 불친절하다는 것이다.

이 튜토리얼의 공식적인 결과는 아래와 같이 끝난다.

 

Duration은 막대기가 버텨낸 시간인데, 학습능력이 썩 뛰어나진 않다.

원래 OpenAI에서 CartPole 예제를 만들 때, 

195초 가량을 버틸 수 있으면 "성공"으로 간주한다고 했으니

DQN으로는 택도 없는 일이구나 싶다. 

 

그건 차치하고서라도, 실제로 카트를 제어하는 모습을 보고 싶은데

그 방법조차 제대로 알려주지 않는다.

우여곡절 끝에 찾아낸 방법을 적용해서 비디오로 전환했더니 

아래 결과가 1000개의 에피소드 중에서 최선이었다.

 

2초라니 너무하지 않은가?

물론 그래프 상에서도 2초대에 머무르는 결과물들도 얼마든지 있겠다만

평균이 50초에 육박하는데, 최선의 결과물로 저장된 것이 2초라니

괴리가 너무 큰 것이 아무래도 코드를 잘못 짰지 싶다.

내일은 좀 제대로 해결해서 결과물까지 멋지게 소개할 수 있었으면 좋겠다.

또 DQN 논문을 한 번 읽어보고, 

기본부터 다져보는 시간을 가져봐야겠다.