Scikit-learn & Pandas Cheat Sheet

데이터캠프(Datacamp) 블로그에서 파이썬 머신러닝 라이브러리인 사이킷런(scikit-learn)과 데이터 분석을 위한 라이브러리 판다스(pandas)의 치트 시트를 만들어 공개했습니다. 사이킷런과 판다스를 좋아한다면, 잘 정돈된 이 치트 시트를 프린트해서 책상에 붙이고 싶은 충동을 억제하기 힘들 것 같습니다. 🙂

(클릭하면 전체화면으로 볼 수 있습니다. pdf 버전은 여기-scikit-learn, pandas-에서 받을 수 있습니다.)

scikit_learn_cheat_sheet_python

pandaspythonfordatascience

Keras go to TensorFlow

케라스(Keras)를 개발한 구글의 프랑소와 숄레(François Chollet)가 트위터에 남긴 글과 fast.ai 의 블로그로 미루어 보아 케라스가 텐서플로우의 contrib 아래로 들어갈 것 같습니다. 아마도 케라스에서 텐서플로우 부분만 떼어내서 들어가지 않을까 예상됩니다. tf.slim 은 contrib.laryercontrib.slim 에 있는 가장 널리 사용되는 텐서플로우 래퍼(wrapper) 중 하나입니다. 케라스가 포함되면 tf.slim과 함께 텐서플로우의 주요한 하이레벨 API 가 될 것 같습니다.

TensorFlow XLA with JIT Compilation

tf-jit

텐서플로우 XLA(Accelerated Linear Algebra)의 초기 버전이 얼마전 마스터 브랜치에 추가 되었습니다. XLA 는 텐서플로우 백서의 끝부분에 향후 과제로 언급된 성능향상을 위한 JIT 컴파일러에 대한 첫 결과물로 보입니다.

We also have a number of concrete directions to improve the performance of TensorFlow. One such direction is our initial work on a just-in-time compiler that
can take a subgraph of a TensorFlow execution, perhaps with some runtime profiling information about the typical sizes and shapes of tensors, and can generate an optimized routine for this subgraph.

텐서플로우 그래프가 JIT 컴파일 된다면 성능 향상은 물론 다양한 기기, 특히 모바일 기기에 손쉽게 구겨 넣을 수 있을 것으로 보입니다. 그리고 XLA를 지원하는 CPU, GPU 들도 나름 생태계를 만들어 가지 않을까 생각되네요. 이미 예상한 로드맵이라고는 하지만 혀를 내두르지 않을 수 없네요. 지난 NIPS에서 발표한 Jeff Dean의 XLA 자료도 함께 참고하세요.

TensorFlow 1.0.0 alpha Release

텐서플로우 1.0 알파 버전이 릴리즈 되었습니다. 지난번에 포스팅된 API 변화 내용 외에도 추가된 변경사항이 많이 있습니다. 아래는 추가적인 변경 사항 중 대표적인 몇가지 입니다.

  • 나눗셈과 나머지 계산이(/, //, %) 파이썬 2.x 스타일로 변경되었습니다. 즉 제수와 피제수 중 하나만 부동소수면 결과도 부동 소수 입니다(파이썬 3.x 은 제수, 피제수와 상관없이 부동 소수를 리턴합니다). tf.mod, tf.div 도 같은 맥락으로 변경되었으며 정수 결과를 얻기 위해서 tf.truncatemod, tf.truncatediv 를 사용할 수 있습니다.
  • tf.divide 가 현재 사용하고 있는 파이썬에 맞는 나눗셈을 합니다. 만약 파이썬 2 스타일을 원할 경우 tf.div 를, 파이썬 3 스타일로 나눗셈을 할 경우 tf.truediv 를 사용할 수 있습니다.
  • tf.multiply, tf.subtract, tf.negative 가 추가되고 tf.mul, tf.sub, tf.neg 는 deprecated 됩니다.
  • tf.scalar_summary, tf.histogram_summary 같은 summary 연산자가 삭제되고 tf.summary.scalar, tf.summary.histogram 이 추가 되었습니다.

이외에도 많은 버그와 수정사항이 포함되었습니다. 추가 기능으로 눈에 띠는 것은 커맨드라인 디버거(tfdbg)와 자바 API 입니다. tgdbg 는 인터렉티브한 쉘 환경을 사용해 텐서플로우 코드를 살필 수 있는 기능을 제공하는 것 같습니다. 자세한 내용은 커맨드라인 디버거 하우투 문서를 참고하세요(이 페이지의 이미지가 보이질 않네요). 자바 API는 아직 experiment 수준이지만 자바를 즐겨 쓰는 분들에게는 반가운 소식이 될 것 같습니다!

텐서플로우 1.0.0-alpha 버전을 설치하려면 pip 명령에 패키지를 직접 지정해야 합니다.

##### 파이선 2.7
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0a0-py2-none-any.whl

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

##### 파이썬 3.x
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0a0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 8.0 and CuDNN v5.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0a0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0a0-py3-none-any.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-1.0.0a0-py3-none-any.whl

# 설치
$ sudo pip install --upgrade $TF_BINARY_URL

Windows CPU:

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0a0-cp35-cp35m-win_amd64.whl

Windows GPU:

C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0a0-cp35-cp35m-win_amd64.whl

[Review]Introduction to ML with Python

catIntroduction to ML with Python은 사이킷런(scikit-learn) 0.18 버전이 출시된 후 가장 먼저 나온(작년 10월 출간) 파이썬 머신러닝 책입니다. 이전 포스트에서도 잠깐 언급한 적이 있지만 사이킷런 0.18 버전에는 피드포워드(feed-forward) 뉴럴 네트워크 클래스가 추가되었습니다. 그래서 이 책에도 이와 관련된 섹션이 추가되어 있네요. 이 책의 저자 중 한명인 앤디(Andreas C. Muller)는 뉴욕 대학교의 리서치 엔지니어이면서 사이킷런의 핵심 개발자입니다. 머신러닝 PhD로서 머신러닝에 대해서 잘 알고 있을  뿐만 아니라 사이킷런에 대해서 누구보다도 잘 알고 있음은 두말할 필요가 없습니다.

머신러닝의 실용서와 이론서의 측면을 모두 담은 책은 쉽게 보기 힘듭니다. 특히나 여러 종류의 알고리즘에 걸쳐서라면 더욱 그렇습니다. 이 책은 후자 보다는 전자에 무게를 실었습니다. 수식은 과감히 덮고 가능하면 직관적으로 이해할 수 있도록 배려했으며 무엇보다도 상당히 많은 종류의 알고리즘을 설명하고 사이킷런으로 예시를 보여주고 있습니다. 이 책을 번역서로 내기 위해 제가 번역 작업을 진행하고 있고 대략 70% 정도 진척이 되었습니다. 전체 내용을 가늠하실 수 있도록 챕터별 내용을 요약했습니다.

계속 읽기

Synaptic: NN library for node.js

시냅틱(Synaptic)은 브라우저에서 뉴럴 네트워크를 구동시킬 수 있는 node.js 용 자바스크립트 라이브러리 입니다. 이전에 소개했던 keras.js 는 Keras 라이브러리에서 만든 모델을 브라우저에서 구동시키기 위한 자바스크립트 라이브러리 였지만 시냅틱은 의존성 없이 자체적인 뉴럴 네트워크를 꾸밀 수 있습니다. 제공되는 활성화 함수는 렐루, 하이퍼볼릭 탄젠트, 시그모이드 등을 포함하고 있고 주요 손실 함수는 크로스 엔트로피, 평균 제곱 오차가 있습니다. 또 기본 피드 포워드 뉴럴 넷 뿐만 아니라 리커런트 뉴럴 네트워크(LSTM)도 기본적으로 제공하고 있습니다. 하지만 필요에 따라 원하는 아키텍처를 만드는 것도 어렵지 않아 보입니다. 이 소스 코드는 깃허브에서 확인할 수 있으며 MIT 라이센스 입니다. 아직 완전한 라이브러리는 아니지만 빌드업할 수 있는 발판은 모두 갖춘 것 같습니다. 앞으로 얼마나 커뮤니티가 형성되고 라이브러리를 발전시킬지 기대가 됩니다.

CS294: Deep RL, Spring 2017

cs294

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

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

NIPS 2016 GAN Tutorial Summary

nips_2016_gan_report

OpenAI 의 이안 굿펠로우(Ian Goodfellow)가 NIPS 2016의 GAN 튜토리얼을 요약한 리포트를 만들어서 Arxiv 에 등록하였습니다. 생성 모델(generative model)이 인기를 끄는 이유와 어떻게 작동하는지, GAN(Generative Adversarial Network)이 다른 모델과 다른 점과 GAN이 작동하는 상세 내용을 다룹니다. 또 최근 GAN 연구 동향과 최신 모델도 함께 다루고 있어 놓치기 아까운 리포트인 것 같습니다!

ML Boot Camp, CS229T Lecture Note, Berkeley ML Blog

버클리 대학의 Simons Institute for the Theory of Computing 연구소에서 1월 23일 부터 27일 까지 머신러닝 부트 캠프를 진행합니다. 카네기 멜론 대학의 러슬랜 살라쿠디노프(Ruslan Salakhutdinov)를 비롯하여 머신러닝과 딥러닝 분야의 많은 연구자들이 강사로 참여합니다. 반가운 것은 이 부트 캠프의 슬라이드와 동영상이 행사가 종료되고 1 주일 남짓 후에 공개될 예정이라는 것입니다. 자세한 스케줄은 이곳을 참고하세요.

덧붙여 스탠포드 대학의 CS229T(Statistical Learning Theory) 2016 겨울 클래스의 강의 노트와 버클리 ML 블로그의 머신러닝 Crash Course #1, #2 도 최근에 나온 좋은 자료인 것 같습니다.

TensorDebugger(TDB): Visual Debugger for TF

tdb

텐서플로우의 모델을 실시간으로 확인할 수 있는 파이썬 라이브러리인 텐서디버거(TensorDebugger,TDB)가 공개되었습니다. 이 라이브러리는 구글 브레인팀의 엔지니어인 에릭 장(Eric Jang)이 개발한 것으로 텐서플로우의 공식 레파지토리에 들어가 있지는 않습니다. 스샷에서 볼 수 있듯이 주피터 노트북과 연동하여 사용할 수도 있습니다. MNIST 데이터를 사용한 예제도 제공하고 있습니다.

주요한 명령은 sess.run 과 같은 역할이나 브레이크 포인트와 데이터 플로팅을 위한 tdb.debug 와 데이터 플로팅 노드를 만들어 주는 tdb.plot_op 입니다. 자세한 내용은 깃허브와 예제를 참고해 주세요. 텐서디버거의 최대 장점은 아마도 실시간으로 뉴럴 네트워크를 돌리면서 원하는 값들을 비주얼하게 볼 수 있다는 점입니다.

텐서디버거는 pip 를 사용하여 설치할 수 있습니다.

pip install tfdebugger

주피터 노트북을 위한 확장은 파이썬 쉘에서 아래 명령을 사용하여 설치합니다.

import notebook.nbextensions
import urllib
import zipfile
SOURCE_URL = 'https://github.com/ericjang/tdb/releases/download/tdb_ext_v0.1/tdb_ext.zip'
urllib.urlretrieve(SOURCE_URL, 'tdb_ext.zip')
with zipfile.ZipFile('tdb_ext.zip', "r") as z:
    z.extractall("")
notebook.nbextensions.install_nbextension('tdb_ext',user=True)