NIPS 2016

NIPS 2016 으로 스페인 바르셀로나가 시끌벅적합니다. 많은 내용들이 쏟아져서 다 살펴보기가 어렵네요. 정리가 되는 대로 이 포스트에 자료를 업데이트 하도록 하겠습니다.

NIPS 2016 에 대한 스케줄은 이곳에서 모두 확인할 수 있습니다.

먼저 오늘 열릴 워크샵 중 Adversarial Training페이스북 라이브로 중계될 예정입니다. 우리 시간으로 오후 5시 부터 생중계 될 예정입니다. 만약 바르셀로나 현지 네트워크가 원할하지 못해 라이브 스트림이 힘들다면 녹화해서 며칠내로 올린다고 합니다. 이안 굿펠로우(Ian Goodfellow)부터 얀 리쿤(Yann LeCun) 박사까지 발표자가 쟁쟁해서 놓칠 수 없는 이벤트인 것 같습니다.

TensorFlow Dev Summit 개최

구글이 첫 텐서플로우 Dev Summit 을 2017년 2월 15일 캘리포니아 마운틴뷰에서 개최한다고 발표하였습니다. 직접 참여는 하지 못하더라도 전 세계 각 지역의 라이브 스트림(live stream) 이벤트에 참여하거나 집에서 라이브 스트림을 시청할 수도 있습니다. 물론 직접 갈 수 있다면 더할 나위 없겠죠! Dev Summit 은 여기서 신청할 수 있습니다. 서울에서도 라이브 스트림 이벤트가 열릴 수 있도록 많이 요청해 주세요!🙂

Universe: Measurement and training for AI

universe

얼마전에 소개해 드렸던 OpenAI 의 AI 벤치마킹 프레임워크 Universe 가 오늘 공식 런칭했습니다. Universe 는 어떤 프로그램도 Gym 환경으로 변환시킬 수 있도록 해 주며 VNC 리모트 클라이언트를 통해 도커 서버에 키보드와 마우스 이벤트를 전달하고  AI 에이전트에는 화면의 픽셀과 리워드를 돌려 줍니다. 이런 과정을 아래 그림으로 간단하게 잘 표현하고 있습니다.

interface-725abed463ba2b83d4a68fd08d1818fed900a939cb9c4b9eb1bac07952b4fe61

오늘 런칭을 하면서 플래시 게임, 브라우저 작업, PC 게임 등을 포함한 천여개의 환경을 준비했고 앞으로 수만개로 늘릴 예정입니다. 이미 EA, 마이크로소프트 등의 많은 회사들과 게임 사용을 위한 허락을 받았다고 합니다. 특별히 플래시 게임의 리워드를 위해서 화면의 점수를 읽기 위한 콘볼루션 뉴럴 네트워크를 도커 머신에서 돌리고 있다고 합니다. 그리고 자신의 어플리케이션을 Gym 환경으로 변환하는 툴도 곧 공개할 예정입니다.

알파고를 비롯해 이미지 인식, 번역 등 아직까지는 특정 작업에 촛점을 맞춘 AI 들이 연구되고 있습니다. OpenAI 는 Universe 를 통해 보다 일반적인 지능(General Intelligence)으로 확대하려는 의지를 나타내고 있습니다. 여러 게임을 하면서 학습한 AI 가 새로운 게임에도 금방 적응을 한다거나 컴퓨터 화면의 알람을 클릭해 열어서 나에게 알려주고 이메일을 읽고 필요에 따라 분류 하는 등 사람이 화면을 보고 처리하는 그대로 AI 도 할 수 있을까요.

Universe 관련 페이퍼도 많이 나올 것 같습니다. 또 구글이나 페이스북 등은 또 어떤 카드를 준비할지 궁금합니다. 더 자세한 내용은 OpenAI 의 블로그깃허브, 와이어드 기사를 참고하세요.

MLYearning Draft

바이두의 앤드류 응(Andrew Ng) 교수가 쓰고 있는 Machine Learning Yearning 의 첫 드래프트(v0.5)가 공개되었습니다. 저자가 앞서 밝혔던 의도대로 수학식이 가득한 알고리즘 책이 아니고 머신 러닝 개발자에게 필요한 실천전략을 담고 있습니다. 전체는 대략 100여 페이지가 조금 넘을 듯 하고 약 55개 장으로 각 장마다 1~2 페이지 정도의 내용을 담고 있습니다. v0.5 드래프트에는 12개의 장이 포함되어 있습니다. 그리고 지금이라도 메일링 리스트에 가입하면 앞으로 업데이트될 때마다 책을 받아 볼 수 있습니다.

(업데이트) 14장까지 업데이트 된 합본입니다.

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)을 보내시면 됩니다.

TensorBoard support Embedding Visualization

 

텐서플로우 0.12 버전의 텐서보드에서 임베딩 벡터를 시각화하는 기능이 추가되었습니다. 와우! 좀 더 자세한 내용은 텐서플로우 임베딩 비주얼라이제이션 하우투를 참고하세요.

TensorFlow v0.12.0 RC0

텐서플로우 0.12 버전의 릴리즈 캔디데이트(Release Candidate)가 깃허브에 올라왔습니다. 0.12 버전에서 가장 눈에 띄는 것은 윈도우즈에 대한 지원과 Go 언어를 위한 API 추가인 것 같습니다. 윈도우 버전은 파이썬 3.5 에서 가능합니다. 0.12 RC0 버전 부터는 텐서플로우 패키지가 PyPI 에 업로드되어 있어 pip 명령으로 간단히 설치할 수 있게 되었습니다. 다만 맥, 리눅스의 GPU 버전은 파일 사이즈 때문에 PyPI 에 업로드가 안된다고 하네요.😦

맥, 리눅스, 윈도우즈 CPU 버전(아나콘다 권장)

$ pip install tensorflow

윈도우즈 GPU 버전(아나콘다 권장)

$ pip install tensorflow-gpu

맥, 리눅스 GPU 버전

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc0-cp27-none-linux_x86_64.whl

# Mac OS X, GPU enabled, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc0-py2-none-any.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-0.12.0rc0-py3-none-any.whl

sudo pip install --upgrade $TF_BINARY_URL

MXNet, DL Framework of Choice at AWS

지난 주 아마존 CTO 워너 보글스(Werner Vogels)는 AWS 에서 사용할 수 있는 딥러닝 프레임워크로 MXNet 을 추가했으며 앞으로 아마존이 MXNet 의 개발을 지원하겠다고 발표하였습니다. MXNet 은 카네기 멜론 대학과 워싱톤 대학이 시작한 이후 많은 대학과 회사들의 후원을 받고 있는 딥러닝 오픈소스 라이브러리입니다. 깃허브 활동에서도 크게 뒤쳐지지 않고 활발히 개발되고 있습니다. 특징으로는 파이썬, 줄리아(Julia), R, 매트랩(Matlab), 스칼라(Scala) 등 다양한 인터페이스를 지원하는 것이 눈에 띄입니다. 성능과 대용량 처리 부분에서도 크게 뒤지지 않는 듯 보입니다.

그럼 아마존의 데스트니(DSSTNE)는 어떻게 되는 것인지 모르겠습니다. 자체 라이브러리의 생태계를 만들어 가는 것이 역부족이라고 느낀 것일까요. 아니면 구글이 스탠포드 비전랩의  Fei Fei, Li 교수와 스냅챗의 Jia Li 를 구글 클라우드의 머신러닝 유닛을 이끌 수장으로 영입한 것이 영향을 미쳤을지도 모릅니다. 문제는 프레임워크가 아니고 클라우드 비즈니스라고 말이죠.

또 트위터가 2015년 웻랩(Whetlab)을 인수하면서 영입한 AI 연구자 다섯명이 트위터 코텍스(Twitter Cortex)를 떠난다는 소식이 있었습니다. 그 중에 업계에 비교적 잘 알려진 휴고 라로쉘(Hug Larochelle)은 구글로 자리를 옮겼습니다. 구글이 요슈아 벤지오(Yoshua Bengio) 교수가 있는 몬트리올 대학 MILA 랩에 3백만 달러(역대 최고라 하는군요)를 지원하기로 발표하면서 휴고 라로쉘이 구글의 몬트리올 랩의 리더가 되었습니다. 거기에 최근에는 OpenAI 가 클라우드 플랫폼으로 마이크로소프트의 애저(Azure)를 선택한다고 발표하니 아마존이 다급해진 것일까요. 여러모로 프레임워크로 경쟁하기 보다는 실리를 추구하는 쪽으로 선회한 것일지 모르겠습니다.

아마존의 AWS 에는 MXNet, Caffe, Tensorflow, Theano, Torch 그리고 CNTK 가 미리 설치되어 있는 딥러닝 AMI 가 있습니다. 그리고 사용자는 여전히 입맛에 맞는 프레임워크를 설치해서 사용할 수 있습니다. 하지만 앞으로 AWS RDS 처럼 관리형 딥러닝 서비스가 나온다면 MXNet 이 첫번째 후보가 될수 있을 것 같습니다.

PixelCNN [1601.06759] Summary

Pixel Recurrent Neural Networks‘[1601.06759] 페이퍼에는 세개의 네트워크 모델을 설명하고 있습니다. PixelRNN 으로 명명된 Row LSTM, Diagonal BiLSTM 과 PixelCNN 입니다. 이 중에 PixelCNN 부분을 재현해 보았습니다. PixelCNN 은 PixelRNN 에 비해 비교적 학습 속도가 빠르고 PixelCNN 후속 페이퍼도 계속 나오고 있습니다. 문제를 단순화하기 위해 MNIST 손글씨 숫자 흑백 이지미를 대상으로 하였습니다.

PixelCNN 의 몇가지 주요한 핵심 중 하나는 입력 특성을 콘볼루션할 때 필터의 일부분만 사용한다는 점입니다. 입력 특성맵과 출력 특성맵이 같은 크기이고(텐서플로우에서 ‘SAME’ 패딩) 스트라이드가 1일 때 홀수 크기의 필터는 필터의 중심이 입력 특성맵의 모든 픽셀을 지나가게 됩니다. 이 때 필터의 중심에서 오른쪽 그리고 아래 부분의 가중치를 0 으로 셋팅하면 입력 특성맵에서 필터의 중심의 왼쪽과 위쪽의 픽셀에만 가중치를 적용(콘볼빙)하게 됩니다. 이를 그림으로 나타낸 것이 페이퍼에 잘 나와 있습니다.

왼쪽 그림에서 아래 레이에에서 콘볼빙하여 윗 레이어의 특성 맵을 만들 때 아래 레이어의 3 x 3 필터 중심(붉은색)의 왼쪽과 위의 픽셀에만 가중치가 곱해지는 것을 보이고 있습니다. 이를 마스크 콘볼루션(masked convolution)이라고 부르고 있습니다. 필터를 마스크하기 위해서는 필터의 중심에서 우측과 아래의 가중치를 0 으로 셋팅하면 됩니다.

계속 읽기

GAN & PixelCNN

뉴럴 네트워크를 사용해 이미지를 생성해 내는 몇가지 방법 중 최근 GAN(Generative Adversarial Networks)와 PixelCNN 에 관한 새로운 페이퍼와 코드가 공개되어서 소개해 드립니다.

GAN 에 관련된 페이퍼로는 이안 굿펠로우(Ian Goodfellow), 요수아 벤지오(Yoshua Bengio) 교수 등이 쓴 Generative Adversarial Networks와 인디코, 페이스북의 서미스 친탈라(Soumith Chintala) 가 쓴 Unsupervised representation learning with deep convolutional generative adversarial networks 등을 시작으로 여러편이 나왔던 것 같습니다. 최근에 버클리 대학의 AI 리서치랩(BAIR)에서 GAN 을 사용하여 이미지 대 이미지 변환을 만드는 pix2pix 의 페이퍼와 토치 코드를 공개하였습니다. 이 코드의 텐서플로우 버전이 나올지 기대됩니다.

pix2pix

출처: pix2pix 페이퍼

PixelCNN 은 딥마인드 팀이 내 놓은 Pixel Recurrent Neural Networks 와 역시 딥마인드 팀이 작성한 Conditional Image Generation with PixelCNN Decoders 가 있습니다. PixelRNN 과 PixelCNN 에 대한 텐서플로우 구현은 김태훈님의 pixel-rnn-tensorflow 레파지토리가 잘 알려져 있습니다. OpenAI 의 안드레이 카패시(Andrej Karpathy) 등이 최근에 PixelCNN 을 보완한 PixelCNN++ 의 페이퍼와 텐서플로우 코드를 공개하였습니다. 이 페이퍼는 ICLR 2017 에 등록되어 있습니다. PixelCNN++ 에 대해 좀 더 자세한 내용이 확인되면 다시 포스팅하겠습니다.