월간 보관물: 2016 1월

What’s Next in Deep Learning

2015년 3월에 열린 GPU Technology Conference 에서 바이두(Baidu)의 앤드류 응(Andrew Ng) 박사의 발표입니다. 시간이 좀 지났지만 여전히 훌륭한 인사이트를 전달해 주고 있습니다.

http://www.ustream.tv/recorded/60113824

이 발표에서 딥 뉴럴 네트워크(Deep Neural Network)의 큰 세가지 분야 이미지(Image), 스피치(Speech), 비해비어(Behavior) 에 대해 바이두의 연구 성과를 보여주고 있습니다. 주로 딥러닝의 주요 분야인 이미지와 음성 인식에 대해 많은 시간을 할애 하고 있습니다. 아래는 주요한 프리젠테이션 스샷입니다.

계속 읽기

마이크로소프트(Microsoft), 바이두(Baidu)도 딥러닝 프레임워크를 오픈소스로 공개했다.

작년 말에 마이크로소프트가 머신러닝 툴킷 DMTK를 공개하였습니다.

https://tensorflowkorea.wordpress.com/2015/11/16/마이크로소프트-머신러닝-툴킷-dmtk-오픈소스로-배포/

이에 이어 딥러닝 프레임워크 CNTK(Computational Network Toolkit)를 오픈 소스로 공개하였습니다. CNTK는 마이크로소프트가 코타나(Cortana)나 Skype 번역 어플리케이션에 사용하는 인공신경망 알고리즘 프레임워크로 구글의 텐서플로우(TensorFlow)에 대응하는 제품이라고 볼 수 있습니다.

http://www.wired.com/2016/01/microsoft-tries-to-one-up-google-in-the-open-source-ai-race/

놀라운 것은 CNTK 가 구글의 텐서플로우와는 다르게 완전 무료라는 점 입니다. 수정, 복사는 물론 재배포, 판매까지 상업적이던 아니던 아무런 제약없이 사용할 수 있습니다. 사실 구글의 텐서플로우를 상업적 목적으로 사용하기에는 라이센스에 제약이 있다는 점을 잘 파고든 것 같습니다.

https://github.com/Microsoft/CNTK

마이크로소프트 과학자의 말을 인용하면 구글이 공개한 텐서플로우 버전을 여러개의 머신에서 병렬로 딥러닝을 수행하기에는 부족하다고 합니다. 토치(Torch) 프레임워크를 제외하고는 CNTK가 거의 유일한 대규모의 인공신경망 분석을 할 수 있는 완제품 이라고 합니다. 현재는 C++ 만을 지원하지만 곧 Python 을 지원할 계획이라고 합니다.

또 불과 일주일 전에는 중국의 최대 검색엔진인 바이두(Baidu)의 AI 랩에서 Warp-CTC(Connectionist Temporal Classification) 라는 CTC 교사학습(Supervisored Learning) 알고리즘을 구현한 소프트웨어를 공개하였습니다.

https://github.com/baidu-research/warp-ctc

2년전 구글의 딥러닝 프로젝트를 이끌던 스탠포드 대학교의 앤드류응(Andrew Ng) 교수가 바이두 AI 랩 수장으로 옮긴 일이 화제가 되기도 했었습니다. 아마도 바이두는 머신러닝 주도권 싸움이 구글과 마이크로소프트간의 경쟁으로만 남게 두지는 않을 것 같습니다.

자 다음에는 누구 차례일까요? 아마도 페이스북이 아닐까 합니다. 물론 딥러닝을 위한 GPU 기반의 하드웨어 설계를 공개했지만 구글과 마이크로소프트에 비하면 조금 밀리는 것 같습니다. 언젠가 페이스북이 발표할 그 무엇을 기대해 봅니다.

첫번째 텐서플로우(TensorFlow) 온라인강좌(Mooc)

유다시티(http://www.udacity.com)가 구글과 함께 텐서플로우(TensorFlow)를 이용한 딥러닝 온라인강좌를 열었습니다. 코세라(Coursera), 에딕스(Edx) 등 보다 큰 다른 온라인강좌 사이트에서도 아직 열리지 않은 아마 최초의 텐서플로우 강좌인 것 같습니다. 특히 강의를 구글의 딥러닝 수석 과학자(Vincent Vanhoucke)가 직접 만들었습니다. 아래 강좌에 대한 소개 블로그입니다.

http://blog.udacity.com/2016/01/putting-deep-learning-to-work.html

텐서플로우가 공개된지 채 1년도 안돼서 온라인 강좌가 생겼다는 것이 놀랍습니다. 그만큼 구글은 많은 사람들에게 텐서플로우를 전하고 싶은 것 같습니다. 직접 강좌를 듣는 것 만큼 좋은 것은 없습니다. 당연히 무료입니다!

https://www.udacity.com/course/deep-learning–ud730

마이크로소프트 R 분석서버 무료공개

마이크로소프트가 머신러닝 프레임워크 DMTK 를 오픈소스로 공개한 이후 또 다른 툴을 공개했습니다. 바로 R 분석 서버의 무료 버전을 제공합니다.

revolutionbecomesrserver

http://www.zdnet.com/article/microsoft-delivers-free-version-of-its-r-analytics-server-for-developers/

마이크로소프트는 작년 초 레볼루션 어낼리틱스(http://www.revolutionanalytics.com)사를 인수했습니다. 이 회사의 ‘레볼루션 R 엔터프라이즈’를 ‘마이크로소프트 R 서버’로 ‘레볼루션 R 오픈’을 ‘마이크로소프트 R 오픈’으로 재단장하여 공개했습니다. ‘마이크로소프트 R 서버’의 개발자 버전은 무료로 제공되며 상용 버전과 완전히 동일한 기능을 가지고 있습니다. 비주얼스튜디오  프로그램 계정(https://www.visualstudio.com/en-us/products/visual-studio-dev-essentials-vs.aspx)을 가지고 아래 링크에서 다운 받을 수 있습니다.

https://www.microsoft.com/en-us/server-cloud/products/r-server/

마이크로소프트는 R 과 Azure 클라우드와의 통합을 계속 강화한다고 합니다. 아마도 마이크로소프트의 머신러닝 언어로는 R이 중요한 위치로 자리잡을 것으로 보이며 R을 사용하는 개발자나 데이터 과학자들에게는 즐거운 소식이 아닐 수 없습니다.

It’s the data, stupid!

‘It’s the economy, stupid!’ 는 1992년 대선에서 빌 클린턴이 상대 후보 조지 부시를 두고 벌였던 슬로건이었습니다.(힐러리가 이 슬로건을 패러디해서 나온다면 참 재미있을 것 같네요 ; )

요즘엔 머신러닝을 모르는 사람들에게서도 어떤 알고리즘을 쓰세요? 혹은 좋은 알고리즘이 있나요? 라는 말을 많이 듣습니다. 그 만큼 사람들의 관심이 머신러닝이나 인공지능에 많이 기울어지고 있는 것 같습니다. 하지만 정말 중요한 것은 알고리즘이 아닙니다.

It’s the data, stupid!

알고리즘은 보편화 되고 있고 성숙되어져 가고 있습니다. 많은 논문들이 나오고 텐서플로우를 비롯해 오픈소스 머신러닝 프레임워크들이 넘쳐나고 있습니다. 더 이상 은총알(프레더릭 브룩스가 말한 그 은총알)같은 알고리즘을 찾아 헤맬 이유는 없습니다. 최고의 인재들의 연구 결과를 책으로 논문으로 혹은 소프트웨어로 손쉽게 만날 수 있기 때문입니다.

물론 아직 알려지지 않은 미래의 알고리즘에 대한 두려움을 가지고 있는 경우도 있습니다. OpenAI 는 속내는 알 수 없지만 이러한 우려의 결과물로 포장되어 있습니다. 다른 한편으로는 공개되어 있는 알고리즘을 이해하고 잘 사용하는 것도 쉬운일은 아닙니다. 어쩌면 우리가 알고 있는 지식에 이미 은총알이 있는지도 모르죠.

http://www.wired.com/2015/11/google-open-sourcing-tensorflow-shows-ais-future-is-data-not-code/

구글이 텐서플로우를 공개한 것도 데이터의 중요성을 알고 있기 때문이라고 한 기사는 말합니다. 텐서플로우를 쓸 수 있다고 해서 구글같은 검색엔진을 만들 수는 없을 터입니다. 구글이 그들이 가지고 있는 데이터를 공개하는 일은 결코 없을 것 입니다.

http://versionone.vc/data-not-algorithms-is-key-to-machine-learning-success/#ixzz3wcDOjkOi

이 글에서는 스타트업이 초기 데이터를 얻기위해 닭이 먼저냐 달걀이 먼저냐 하는 문제에 빠질 수 있다고 조언합니다. 데이터가 있어야 알고리즘을 완성할 수 있기 때문입니다. 좋은 방법은 사용자들에게 무료 서비스를 제공해서 머신러닝을 위한 데이터를 얻는 것 입니다. 쉽지는 않겠지만 그 만큼 데이터의 가치는 중요한 것 같습니다.

 

OSX와 AWS EC2 에서 CUDA 지원하도록 텐서플로우 컴파일하기

맥(MAC) 의 Nvidia GPU 를 사용할 수 있도록 텐서플로우(TensorFlow)를 컴파일할 수 있도록 수정된 패치가 나왔습니다. 이를 이용해서 맥(MAC)에서 텐서플로우를 설치할 수 있습니다.

https://medium.com/@fabmilo/how-to-compile-tensorflow-with-cuda-support-on-osx-fd27108e27e1#.wy9gsyvux

이 패치는 텐서플로우의 마스터 브랜치의 오류를 수정한 것으로 많은 Nvidia GPU 를 가진 맥북 개발자들에게 크게 환영받을 것 같습니다. ^^

다음은 아마존 웹서비스(AWS)의 EC2 인스턴스에서 텐서플로우를 설치하는 방법에 대한 글입니다.

http://ramhiser.com/2016/01/05/installing-tensorflow-on-an-aws-ec2-instance-with-gpu-support/

아마존 EC2 인스턴스에는 Nvidia GPU 가 장착된 g2.2xlarge 와 g2.8xlarge 가 있습니다. 하지만 최근에 오픈한 서울 리전에는 G2 인스턴스가 아직 포함되어 있지 않습니다. 테스트를 위해서는 가까운 도쿄 리전의 인스턴스를 사용하면 좋을 것 같습니다.

 

윈도우에서 TensorFlow 설치하기

윈도우에서 Docker 이미지를 이용하여 텐서플로우를 설치하는 과정을 설명하는 글이 있습니다.

http://www.netinstructions.com/how-to-install-and-run-tensorflow-on-a-windows-pc/

윈도우 머신에 Docker 이미지를 이용하여 리눅스에서 텐서플로우를 구동시킬 수 있습니다. 직접 해 보지는 않았네요. 혹 관심 있는 분들을 위해서 공유 합니다.

(업데이트) 텐서플로우 0.12 버전부터 윈도우즈에서 pip 를 사용해서 손쉽게 설치할 수 있습니다. 이 포스팅을 참고하세요.

애플기기를 위한 딥러닝 프레임워크

아이폰, 아이패드나 맥북에서 인공신경망(Artificial Neural Network) 알고리즘을 GPU를 이용해서 구현하는 것은 생각보다 쉽지 않습니다. 최근의 맥북들은 그래픽칩으로 인텔 프로세스를 사용하고 있기 때문에 NVIDIA 의 CUDA 라이브러리를 사용할 수 없습니다.

지난 주 Caffe 로 이미 트레이닝(Training)된 인공 신경망(Artificial Neural Network) 모델을 애플기기에서 실행시킬 수 있는 딥러닝킷(DeepLearningKit, http://deeplearningkit.org)이 오픈소스로 발표되었습니다. 딥러닝킷은 애플의 Swift 언어와 GPU 프로그래밍을 위해 Metal 프레임워크를 이용합니다. 아직은 카페(Caffe)로 만들어진 컨볼루션 뉴럴 네트워크(Convolutional Neural Network, CNN)만 가능하지만 목표는 TensorFlow 나 Torch 같은 여러 딥러닝 프레임워크에서 만들어진 다양한 모델을 수용하는 것 입니다.

deeplearningkitoverview

딥러닝킷을 이용한 간단한 구현 예제도 있습니다. 머지않아 맥미니를 클러스터로 묶어 딥러닝을 수행하는 날이 올 지 모르겠습니다. 딥러닝킷은 깃허브에 오픈소스로 공개되어 있습니다.

https://github.com/deeplearningkit/deeplearningkit/