태그 보관물: Reinforcement Learning

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

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

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

OpenAI first Work – Gym

openai-gym

OpenAI가 오늘 첫번째 작업물인 강화학습(Reinforcement Learning) 툴킷인 Gym블로그를 통해 공개했습니다. 소스는 깃허브를 통해 확인하실 수 있습니다.

Gym은 강화학습 알고리즘을 평가하고 개발하는 데 도움을 주는 툴킷으로 OpenAI에서 앞으로 연구할 강화학습 분야에 도움이 되기위해 만들었다고 합니다. Gym은 파이썬으로 작성되어 있고 특별한 프레임워크에 종속적이지 않으므로 TensorFlowTheano와도 함께 사용할 수 있습니다. 다만 현재는 파이썬 2.7.x 버전용입니다.

Gym은 강화학습을 위한 다양한 테스트 환경(environment)을 제공하여 누구나 자신의 에이전트(agent)를 개발할 수 있도록 하고 그 결과를 업로드하여 다 같이 공유할 수 있도록 하고 있습니다. 이런 접근 방법은 일전에 소개해 드렸던 Gradientzoo와 일맥상통합니다.

Gym이 발표되고 나서 흥미로운 기사가 와이어드에 실렸습니다. 기사에 의하면 지난 여름 OpenAI 설립을 준비하면서 몬트리올 대학교의 Yoshua Bengio 교수에게 자문을 구했고(Geoff Hinton은 구글, Yann LeCun은 페이스북을 위해 이미 일하고 있으므로) 업계 최고의 연구자 목록을 뽑아 컨택하기 시작했다고 합니다. 그래서 최종 10명중 9명이 OpenAI에 합류하게 되었다고 합니다.

OpenAI는 이보다 하루 더 전에 UC 버클리의 Pieter Abbeel 교수를 풀타임으로 고용하게 되었다고 밝혔습니다. Pieter Abbeel 교수는 강화학습 개발을 위한 프레임워크인 rllab을 만들었으며 로봇과 강화학습 분야에 권위자로 알려져 있습니다. 그의 랩의 학생들도 이번 여름에 OpenAI에서 인턴을 할 거라는 소문입니다.