태그 보관물: OpenAI

MS Ventures fund Element AI

마이크로소프트가 새로운 벤처 펀드를 운영한다고 발표하였습니다. 특히 이 펀드는 인공지능 분야에 집중될 것으로 알려졌습니다. 첫번째 펀드는 요수아 벤지오(Yoshua Bengio) 교수의 엘리먼트 AI(Element AI) 입니다. 정확한 금액을 알려지지 않았지만 지난달 구글이 엘리먼트 AI에 3백만 US달러 이상을 투자하기로 하였으므로 그에 버금가는 금액이 될 것으로 예상됩니다. 엘리먼트 AI는 수천만달러까지 펀딩을 계속 받을 예정이라고 합니다. 마이크로소프트가 OpenAI 와도 제휴하고 엘리먼트 AI에 투자까지 인공지능 분야에서 계속 잰걸음을 하는 것 같습니다. 마이크로소프트 벤처는 엘리먼트 AI 뿐만 아니라 계속 인공지능 벤처에 투자를 이어갈 예정이라고 합니다.

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 의 블로그깃허브, 와이어드 기사를 참고하세요.

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

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++ 에 대해 좀 더 자세한 내용이 확인되면 다시 포스팅하겠습니다.

OpenAI + Microsoft

OpenAI 가 딥러닝을 위한 플랫폼으로 마이크로소프트의 Azure 를 사용하기로 협약했다는 발표가 OpenAI 블로그마이크로소프트의 블로그에 각각 실렸습니다. OpenAI 는 그 동안 시라스케일(Cirrascale)을 사용하고 있는 것으로 알려졌었는데요. 아마존이 AWS 에 새로운 GPU 인스턴스를 출시했음에도 불구하고 동일한 K80 GPU 를 쓰고 있는 Azure 를 택한 것은 다소 의외인 것 같습니다. 마이크로소프트가 뭔가 파격적인 제안을 했을까요?

OpenAI 블로그에 따르면 Azure 에서 수천에서 수만대 까지 인스턴스를 사용할 것 같다고 합니다. 마이크로소프트가 이번 계기로 자사의 딥러닝 툴킷 CNTK 의 저변을 넓히는 데 힘을 얻을 수 있을까요. 깃허브의 딥러닝 인기도 조사(?)를 하고 있는 프랑소와 숄레(François Chollet)의 최근 트윗을 보면 바이두의 패들패들이 CNTK 보다 조금 더 활발히 움직이고 있는 것으로 보입니다.

cxutsrnucaebsg4

OpenAI cleverhans training with adversarial examples

logo

OpenAI의 이안 굿펠로우(Ian Goodfellow)가 에러가 포함된 데이터(adversarial example)를 사용하여 모델을 더욱 견고하게 만들어 줄 수 있는 프레임워크 cleverhans를 오픈소스로 공개하였습니다. cleverhans는 파이썬2를 기반으로 하고 있으며 케라스(Keras)와 텐서플로우를 사용합니다. 아직 개발 초기 단계라 딱히 설치 방법을 제공하고 있지 않고 레파지토리를 클론해서 소스가 들어있는 cleverhans 디렉토리를 임포트해서 사용하면 됩니다. 현재는 MNIST 데이터를 사용한 예제만 제공되는 데 앞으로 튜토리얼이 더 추가될 수 있을 것 같습니다.

이 라이브러리는 현재 FGSM(Fast Gradient Sign Method) 방식으로 에러가 포함된 데이터(adversarial example)를 생성해 냅니다. 그리고는 이 데이터를 사용하여 모델을 다시 학습시키도록 하고 있습니다.

# Craft adversarial examples using Fast Gradient Sign Method (FGSM)
...
adv_x_2 = fgsm(x, predictions_2, eps=0.3
predictions_2_adv = model_2(adv_x_2)

# Perform adversarial training
tf_model_train(sess, x, y, predictions_2, X_train, Y_train, predictions_adv=predictions_2_adv)

처음 모델의 정확도는 약 95.9% 였지만 에러가 들어 있는 데이터에 대해서는 불과 3.5% 밖에 되지 않았습니다. 하지만 에러가 들어있는 데이터를 이용해 두번째 모델을 만들어 손실 함수(loss function)를 보정하여 학습을 시킵니다. 이로 인해 테스트 데이터의 정확도는 95.1%로 조금 낮아졌지만 에러가 있는 데이터에 대한 정확도는 56.2%로 크게 성장한 것을 확인할 수 있습니다.

Test accuracy on legitimate test examples: 0.9589203125
Test accuracy on adversarial examples: 0.03577734375
...
Test accuracy on legitimate test examples: 0.951059375
Test accuracy on adversarial examples: 0.5620109375

텐서플로우 0.10.0 + 케라스 1.1.0 에서 테스트하였습니다.

OpenAI and ML Unconference

오늘 OpenAI에서 10월 7~8일에 머신러닝 언컨퍼런스(unconference)를 개최한다고 홈페이지를 통해 공지했습니다. 언컨퍼런스라고 하면 보통 페이퍼를 등록하는 위원회가 없이 참여자들이 자유스럽게 여러가지 주제에 대해 토론하고 발표하는 것을 말합니다. 이렇게 하는 이유는 컨퍼런스에서 페이퍼를 등록하고 준비하는 기간이 수개월이나 소요되어 머신러닝 분야의 발전속도에 따라가지 못하기 때문이라고 합니다. 일반적으로 컨퍼런스의 주요 목적중의 하나인 네트워킹에 중점을 두어 최근 동향과 연구를 다루려고 하는 것 같습니다. 아직 구체적인 스케줄이나 방식은 나오지 않았습니다만 대략 150명의 인원을 대상으로 하며 OpenAI 사무실에서 진행될 예정이라고 합니다. 미리 참여를 확보한 리스트에는 구글 브레인팀을 비롯해 여러 PhD 학생과 연구자들이 있습니다. 온라인으로 누구나 신청할 수 있습니다만 초청 대상이 되는 것은 PhD 학생이나 주요 연구자들이 대상이 될 것으로 보입니다. 혹 초짜라면 다른 컨퍼런스를 알아보라고 하네요. ㅠ.ㅠ

이 발표가 있기 며칠전 OpenAI의 새로운 팀원이 추가된 공지가 올라왔습니다. 새로운 멤버에 대해서 아는 바는 없지만 기술 저술가인 잭 클라크(Jack Clark)가 추가된 것이 독특합니다. 잭은 불룸버그나 비즈니스위크 등에 인공지능 관련 기사에서 종종 볼 수 있는데요. OpenAI가 연구자 이외에 저술가 혹은 정책가로 팀 구성을 확대하는 점이 관심을 끄네요. 특히 그는 ‘Import AI‘라는 인공지능 관련 뉴스레터를 발행하고 있습니다(이름이 재미있습니다. 잭이 파이썬을 얼마나 쓰는지는 모르겠습니다). 이메일을 등록하시면 최근 업계 동향을 받아 볼 수 있습니다.

스탠포드 PhD 학생이면서 OpenAI의 팀원인 안드레이 카패시(Andrej Karpathy)는 최근 트위터를 통해 OpenAI에서 사용하는 주요한 딥 러닝 프레임워크는 텐서플로우라고 밝혔습니다. 하지만 사용하는 사람들이 각각 다른 방법을 쓰고 있어서 어려움을 느끼고 있는 것 같습니다. Slim, PrettyTensor, Keras, TFLean(aka. skflow) 등등. 아마 래퍼 라이브러리를 쓰지 않는 사람까지 고려하면 코드 공유에 약간 장애가 되겠네요. 안드레이는 slim을 쓴다고 합니다. 🙂

케라스의 개발자인 구글의 프랑소와 숄레(François Chollet)가 가끔 트위터에 깃허브의 머신러닝 라이브러리 인기도를 조사해서 올리곤 합니다. 직감으로 알 수 있듯이 텐서플로우가 당연히 1위 입니다. 사실 이런 인기도 조사를 하는게 크게 의미가 있는 것이 아니고 프랑소와가 할만한 일도 아니라고 생각되는데요. 이런 트윗에 영 심기가 불편한 것은 토치를 사용하는 페이스북의 연구자들입니다. 숫자가 너무 차이가 나거든요. ㅠ.ㅠ

Intel + Nervana

screen-shot-2016-08-08-at-12-16-04-pm딥 러닝을 위한 소프트웨어와 하드웨어 칩을 모두 만드는 너바나(Nervana) 시스템즈가 어제 인텔에 인수되었다는 소식을 블로그를 통해 공지했습니다. 예상컨대 이 인수는 딥 러닝 칩 분야의 선두인 엔비디아(Nvidia)와 경쟁하기 위해서 일것입니다. 대체적으로 너바나의 인수소식을 환영하는 분위기입니다. 아마도 경쟁자들이 많을 수록 더 싸고 좋은 시스템들이 만들어지리라 기대하기 때문이겠죠.

우연의 일치일까요. 거의 동시에 OpenAI의 설립자 중 하나인 엘론 머스크(Elon Musk)는 엔비디아가 OpenAI에게 DGX-1 컴퓨터를 기부한다고 밝혔습니다. 구체적으로 언제 얼만큼이 제공될지는 알려지지 않았습니다.

이와는 별개로 얼마전 머신러닝 소프트웨어 회사인 투리(Turi)가 애플에 인수되었습니다. 투리는 카를로스 구스트린(Carlos Guestrin)이 설립한 회사로 이전 이름은 Dato 였습니다. 카를로스는 워싱톤 대학의 아마존 교수(Amazon professor)로 아내 에밀리 폭스(Emily Fox)와 함께 코세라의 머신러닝 코스를 운영하고 있습니다. 투리의 소프트웨어 중 판다스(Pandas)의 클론격인 SFrame은 오픈소스로 공개되어 있고 머신러닝 라이브러리인 GraphLab Create는 연구용으로 라이센스를 제공하고 있습니다.(카를로스와 에밀리의 코세라 강좌는 SFrame와 GraphLab Create에 맞춰져 있습니다)

투리의 소프트웨어는 누구나 쉽게 머신러닝을 사용하는 것에 촛점을 맞추고 있습니다. 애플이 굳이 이런 종류의 패키지를 필요로 하는지 고개를 갸우뚱하게 만듭니다. 오히려 좋은 오픈소스 하나가 사라지게 될까 걱정이네요.

(업데이트) 지난 주에 엔비디아가 OpenAI에 DGX-1 첫 시제품을 제공했다고 블로그를 통해 알렸습니다. 젠슨 황 엔비디아 대표가 직접 들고갔다고 하네요.

15openai_inside_crowd_web

출처: 엔비디아 블로그

Recent Progress in Generative Modeling

OpenAI의 일리아 서츠케버(Ilya Sutskever)가 지난 4월 스탠포드 대학에서 열린 ‘Scaled Machine Learning‘에서 발표한 ‘Recent Progress in Gernerative Modeling‘ 발표자료가 공개되어 있습니다. 다만 이 컨퍼런스의 발표 동영상은 찾을 수 없어서 아쉽습니다.

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)를 결정하여 짐 라이브러리에 전달합니다. 게임을 이길 수 있도록 막대의 위치를 제어하는 것이 우리가 풀어야 할 숙제입니다.

계속 읽기