태그 보관물: Reinforcement Learning

Spinning Up in Deep RL

OpenAI에서 강화 학습 교육 자료인 스피닝 업(Spinning Up)을 공개했습니다. 깃허브에서 관련 코드도 같이 제공됩니다. 아래 알고리즘 트리 중에서 스피닝 업에서 다루는 것은 Policy Gradient, PPO, TRPO, DDPG, TD3, SAC입니다.

rl_alg.tree.png

OpenAI에서 스피닝 업을 만들게 된 이유가 강화 학습을 배우기 위한 적절한 자료가 없기 때문이라고 합니다. 곰곰히 생각해 보면 일리가 있습니다. 딥러닝 관련되어서는 좋은 책과 온라인 자료를 쉽게 찾을 수 있지만 강화 학습은 많이 부족합니다. <핸즈온 머신러닝> 16장에서 강화 학습을 다루고 있지만 제한된 범위입니다. 서튼(Sutton) 교수의 <Reinforcement Learning: An Introduction> 2판이 곧 출간될 예정입니다. 이 책은 강화 학습의 대표적인 텍스트 북입니다. 조금 더 핸즈온 스타일의 강화 학습 책으로는 어떤 것이 있는지 찾아 보았습니다.

71y3a2bdjf3l  zai-drl-meap-hi  morales_drl_hiresmeap

맥심 라판(Maxim Lapan)이 쓴 팩킷(Packt)의 <Deep Reinforcement Learning Hands-On>이 아마존에서 독자 반응이 좋습니다. 이 책은 DQN, Policy Gradient, A2C, A3C, TRPO, PPO, I2A, AlphaGo Zero 등을 다룹니다.

매닝에서는 <Deep Reinforcement Learning In Action>과 <Grokking Deep Reinforcement Learning>이 준비되고 있습니다. 매닝 책은 출간되려면 아직 한참 기다려야 할 것 같네요. 재미있게도 이 세 책은 모두 파이토치를 사용합니다. 🙂

**Complete Draft** Reinforcement Learning: An Introduction

리차드 서튼Richard Sutton 교수의 강화학습 책 “Reinforcement Learning: An Introduction”의 2판의 드래프트가 끝났다는 소식입니다. 이 책은 온라인에서 무료로 읽을 수 있습니다. 이 책은 총 449페이지이고 파일 사이즈는 16M 정도로 아주 크지 않지만 혹시 네트워크가 느릴 경우를 대비해 블로그에 다운로드 링크(bookdraft2017nov5)를 추가했습니다.

다음은 전체 책의 목차입니다.

  1. Introduction
  2. Multi-armed Bandits
  3. Finite Markov Decision Processes
  4. Dynamic Programming
  5. Monte Carlo Methods
  6. Temporal-Difference Learning
  7. n-step Bootstrapping
  8. Planning and Learning with Tabular Methods
  9. On-policy Prediction with Approximation
  10. On-policy Control with Approximation
  11. *Off-policy Methods with Approximation
  12. Eligibility Traces
  13. Policy Gradient Methods
  14. Psychology
  15. Neuroscience
  16. Applications and Case Studies
  17. Frontiers

(업데이트) 2018년 1월 1일에 마이너한 업데이트가 있었던 것 같습니다. 새로운 PDF를 참고하세요.

Review Paper of DL, RL

거의 동시에 딥러닝과 강화학습에 관한 리뷰 페이퍼가 각각 공개되었습니다. 하나는 “On the Origin of Deep Learning“(1702.07800 pdf)로 80페이지가 넘습니다. 퍼셉트론부터 시작해서 최근의 뉴럴 네트워크의 다양한 기술들을 요약하고 있습니다. 볼츠만 머신, 딥 빌리프, CNN, RNN, GAN, 최적화 등 다양한 주제를 망라하고 있습니다. 시작을 아리스토텔레스까지 거슬러 올라간 건 애교로 봐야할까요? 🙂

다른 하나는 “Deep Reinforcement Learning: An Overview“(1701.07274 pdf)입니다. DQN, Policy Gradient 와 강화학습이 적용된 다양한 어플리케이션을 소개하고 있습니다. 레퍼런스만 절반이라 강화학습 이론 자체보다는 관련 리소스를 확인하는 용도로 좋을 것 같습니다.

CS294: Deep RL Start!

지난번에 소개했던 버클리 대학의 CS294: Deep Reinforcement Learning의 2017년 봄 강좌가 시작되었습니다. 전 강좌가 녹화될 것이라고 예고했던 대로, 1월 18일 첫강좌가 유투브에 올려졌습니다. 그리고 앞으로의 강의도 모두 차례대로 플레이스 리스트에 추가될 것 같습니다. 또한 강의 시간에 맞추어 라이브로도 제공됩니다! 강의 시간은 매주 월, 수 오전 9시~10시 30분까지로 우리 시각은 화, 목 새벽 2시 부터입니다.

강의 스케줄과 슬라이드 및 과제물 등 더 자세한 내용은 코스 페이지에서 확인할 수 있고 강의와 관련된 포럼은 레딧으로 진행합니다. 동영상과 슬라이드 링크는 강의가 진행되는 대로 이 포스트에 업데이트하겠습니다.

CS294: Deep RL, Spring 2017

cs294

버클리 대학의 강화학습 강좌인 CS294 Deep Reinforcement Learning 의 올해 봄(2017 Spring) 강의가 녹화될 예정이라고 합니다! 이 강의는 버클리 대학의 세르게이 레빈(Sergey Levine) 교수외에 OpenAI의 존 슐만(John Schulman)이 함께 진행합니다. 강화 학습에 관심있다면 한껏 기대해 봐도 좋을 것 같습니다.

강의 페이지에 올려져 있는 맛보기 동영상은 존 슐만이 작년 머신러닝 서머스쿨에서 진행했던 강화 학습 강의입니다.

OpenAI Universe

OpenAI 의 Gym(https://github.com/openai/gym) 은 강화학습을 연구를 위한 툴킷으로 여러 환경(environment)을 제공하고 있습니다. OpenAI Universe 는 거기에 한걸음 더 나아가 모든 게임, 웹사이트, 어플리케이션을 위한 AI 벤치마킹을 목표로 개발되고 있습니다. 이번주 초에 Universe 베타 테스터를 모집한다는 소식에 참여를 해보았습니다. 아직 깃허브는 일반에게 공개되지 않았지만 베타 테스팅이 끝나는 1~2개월내에 정식 런칭할 것으로 예상됩니다.

Universe 는 Gym 위에 만들어진 라이브러리로 일반 게임의 내부를 건드리지 않고 강화학습의 환경을 만들기 위해서 클라우드의 VNC 서버와 통신을 하면서 게임의 픽셀(768x1024x3)과 리워드, 액션 등을 전달해 주는 역할을 합니다. AI 에이전트는 키보드와 마우스 이벤트를 Gym 을 통해 Universe 환경으로 이벤트를 전달합니다. 클라우드에는 도커 머신이 헤드리스(headless) 크롬 브라우저에서 플래시 게임을 실행합니다. 현재는 테스트 기간이라 한 사람당 32개의 환경을 동시에 실행시킬 수 있지만 정식 런칭이 되면 유저당 환경의 갯수를 제한할 것으로 보입니다.

아래는 베타 테스트로 제공하는 샘플 게임으로 무식하게 제가 전진만 시킨 VNC 영상을 캡쳐했습니다.

아직 도큐멘트가 준비되지 않아 자세한 내용을 파악하는 게 쉽지는 않은 것 같습니다. 새로운 내용이 확인되는대로 업데이트 하겠습니다. 혹 베타 테스트에 참여하고 싶으신 분은 OpenAI 의 그렉 브록맨(Greg Brockman)에게 자신의 깃허브 아이디(username)와 함께 메일(gdb@openai.com)을 보내시면 됩니다.

모두연의 강화학습 튜토리얼

모두의연구소 이웅원님이 만드신 강화학습(reinforcement learning) 튜토리얼이 깃북으로 공개되었습니다. 이 튜토리얼은 무려 160여 페이지 분량입니다. 한글로 된 강화학습 자료가 많지 않은 가운데 이런 자료가 공개되어 매우 반갑네요. 이 튜토리얼은 데이빗 실버(David Silver) 교수의 강의와 리처드 서튼(Richard S. Sutton) 교수의 ‘Introduction to Reinforcement Learning‘ 책, 유다시티(Udacity)의 강화학습 강의등을 참고했다고 합니다.

참고로 데이빗 실버 교수의 강의는 유튜브에서 볼 수 있으며 리처드 서튼 교수의 Introduction to Reinforcement Learning 책은 2판을 무료로 드롭박스에서 읽을 수 있습니다. 2판은 2012년 부터 쓰여져서 최근까지 마무리 작업이 진행되었는데 지금은 거의 완결된 상태입니다. pdf 버전은 여기서 다운 받을 수 있습니다.

(업데이트) Reinforcement Learning: An Introduction 의 새로운 드래프트가 공개되었습니다. 이 버전은 2016년 9월 입니다.

torch-twrl: RL for Torch

resultsvideo

트위터 Cortex 팀에서 토치(Torch)를 이용한 강화학습 프레임워크인 torch-twrl를 오픈소스로 공개한다고 발표하였습니다. torch-twrl은 OpenAI Gym과도 함께 쓸 수 있으며 소스는 깃허브에 공개되어 있습니다. 토치를 사용한 강화학습 프레임워크로는 rltorch가 이미 있지만 torch-twrl이 외부 라이브러리 의존성이 적다고 합니다. 토치와 관련된 뉴스가 페이스북이 아니고 트위터에서 들려왔네요. 어쨋든 토치 커뮤니티에는 반가운 소식입니다.

Reinforce Pong at Gym

한달 전에 스탠포드 비전 랩의 안드레이 카패시(Andrej Karpathy)가 블로그에 강화학습에 대한 글인 ‘Deep Reinforcement Learning: Pong from Pixels‘를 올렸었습니다. 조금 늦었지만 블로그의 글을 따라가 보려고 합니다. 안드레이는 스탠포드 뿐만이 아니라 구글과 OpenAI에서도 여러 프로젝트에 참여했고 강화학습과 관련된 여러 도서를 읽고 관련 강의도 들었다고 합니다. 강화학습을 쉽게 소개하기 위해 글을 썼다고 하는데 말처럼 쉽지는 않은 것 같습니다.

OpenAI 짐(Gym)은 강화학습 알고리즘을 훈련시키고 평가할 수 있는 프레임워크입니다. 짐에 포함된 퐁(Pong) 게임은 아타리(Atari) 2600에 포함된 간단한 컴퓨터 게임의 시뮬레이션 버전입니다. 두사람이 오른쪽과 왼쪽에 있는 자기 막대를 움직여 공을 받아 넘겨야 하고 상대방이 놓쳐서 화면 옆으로 사라지면 점수를 1점 얻게 됩니다(이를 편의상 한 판이라고 부르겠습니다). 이렇게 점수를 획득하여 가장 먼저 21점을 얻는 쪽이 이기는 게임입니다. 짐에서는 화면의 왼쪽 편이 하드 코딩되어 있는 컴퓨터 에이전트이고 오른쪽 편이 강화학습을 통해 우리가 학습시켜야할 에이전트입니다.

짐 라이브러리에서는 공이 위치가 이동되었을 때를 한 스텝(step)이라고 표현합니다. 게임 화면에서 공이 이동할 때 마다 스크린샷을 찍는다고 생각하면 비슷합니다. 매 스텝마다 짐은 우리에게 리워드(reward)를 줍니다. 이겼을 때는 1, 졌을 때는 -1, 이도저도 아닌 공이 게임 판 위를 여전히 돌아다니고 있는 중간에는 0을 리턴합니다. 우리는 매 스텝마다 막대의 위치를 위로 올릴 것인지(UP), 아래로 내릴 것인지(DOWN)를 결정하여 짐 라이브러리에 전달합니다. 게임을 이길 수 있도록 막대의 위치를 제어하는 것이 우리가 풀어야 할 숙제입니다.

계속 읽기

Deep Q Learning with Gym and TensorFlow

model

텐서플로우와 OpenAI에서 공개한 강화학습 도구인 Gym을 이용한 Q Learning 구현물이 깃허브에 공개되었습니다. 이 코드는 2015년 네이처지에 실린 구글 딥마인드(DeepMind) 팀의 ‘Human-Level Control through Deep Reinforcement Learning‘ 논문을 텐서플로우와 Gym으로 구현한 것입니다. 결과 화면은 흥미롭습니다.

best

원 논문은 구현은 토치로 개발되었습니다. 원 논문의 소스는 여기서 다운받을 수 있습니다.

(추가) 이 코드는 쿠키런 게임을 개발한 데브시스터즈에서 만들었습니다. 강화학습 분야는 역시 게임회사에서 관심이 많은 것 같습니다.