월간 보관물: 2016 3월

오픈소스로 간 머신러닝

구글이나 마이크로소프트 같은 회사들의 영향인지 최근 들어 오픈소스화 되고 있는 머신러닝 프로젝트들이 점점 늘어나고 있는 것 같습니다. 구글이나 OpenAI 도 그렇겠지만 오픈소스로 개발자 커뮤니티를 형성하는 것이 이 생태계에 뒤쳐지지 않는 것임을 소규모 스타트업들도 알고 있는 것 같습니다.

Seldon(www.seldon.io)은 작년 2월에 자사의 머신러닝 소프트웨어를 깃허브(https://github.com/SeldonIO/seldon-server/)에 공개하였습니다. Seldon은 컨텐츠 추천과 예측모델을 위한 서버 어플리케이션으로 자바로 이루어져 있습니다. 최근에 공개된 블로그에서는 왜 오픈소스를 택하게 되었는지 또 그 이후에 어떤 변화가 있었는지 등을 설명하기도 했습니다.

Seldon은 최근에 University College London(UCL)의 한 그룹과 데이터 탐색과 관련된 프로젝트를 진행하고 있습니다. 이 프로젝트는 ETL for Data Science 로 데이터의 클리닝, 시각화, 분석을 웹 기반의 어플리케이션에서 할 수 있는 도구입니다. 어플리케이션 아키텍처에서 볼 수 있듯이 Python 의 Flask 와 AngularJS, SocketIO 로 구성되어 있습니다.

architecture1

Outline of application architecture – 출처 ETL for Data Science 프로젝트 홈페이지

데이터 탐색과 관련해서는 두드러지는 프로젝트가 많지는 않습니다. 탐색 자체가 비정형화된 형태이다 보니 이를 패키지화하는 것이 쉬운일은 아닐 것 같습니다. ETL for Data Science 와 유사한 아파치 프로젝트로는 Zeppelin이 있습니다. Zeppelin은 자바와 Spark 기반의 서버 소프트웨어로 notebook 스타일의 유저 인터페이스를 가지고 있습니다. Zeppelin 은 개발자들이 동시에 하나의 notebook을 수정할 수 있는 콜라보레이션을 지원합니다. notebook 스타일이다 보니 Zeppelin은 엔지니어나 데이터 분석가를 대상으로 합니다. 그에 반해 ETL for Data Science 는 그래픽 환경을 기반으로 하고 있어 그 대상이 좀 더 폭 넓다고 할 수 있습니다.

Zeppelin 프로젝트도 Seldon 과 유사하게 기존의 어플리케이션을 오픈소스화한 경우로 아직 아파치 인큐베이팅 단계에 있습니다. Zeppelin 프로젝트를 이끄는 회사는 국내 스타트업인 NFLabs입니다. 아래는 NFLabs의 CTO이자 Zeppelin 커미터인 이문수님의 Zeppelin 소개 동영상입니다.

실수하기 쉬운 Python 코드

이 글은 Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make 을 참고하여 작성되었습니다.

머신러닝 분야에서 선호되는 언어로는 Python 과 R 이 자주 비교대상이 됩니다. 두 언어의 태생의 근원을 생각해 보면 아마도 Python 은 전통적인 소프트웨어 엔지니어 그룹에서 R 은 통계나 수학자 그룹에서 많이 사용될 것 같습니다. 이 글은 Python 에서 버그를 만들기 쉬운 코드에 대해 설명을 하고 있습니다. Python 에 꽤 익숙한 저도 눈으로만은 잡아내기 힘들더군요 ; )

계속 읽기

Theano 0.8 릴리즈

GPU를 이용하여 인공신경망 알고리즘을 구현한 라이브러리인 Theano 의 0.8 버전이 릴리즈 되었습니다. 0.7 버전에서 거의 1년만의 업데이트 입니다. 아마도 알파고나 텐서플로우, 페이스북, 마이크로소프트 등 인공지능 분야의 환경이 빠르게 발전하고 있는 것이 Theano 개발에도 박차를 가하는 원동력이 될 것 같습니다.

자세한  업데이트 내용은 아래 릴리즈 노트를 참고하세요.

http://deeplearning.net/software/theano/NEWS.html

10 Famous Machine Learning Experts

지구상에서 가장 유명한 열명의 머신러닝 구루를 소개합니다.^^ 원문은 아래 주소에서 보실 수 있습니다.

http://www.datasciencecentral.com/profiles/blogs/10-famous-machine-learning-experts?xg_source=activity&utm_source=iContact&utm_medium=email&utm_campaign=DataShaping&utm_content=

제프 호킨스(Jeffery Hawkins)는 팜 컴퓨터를 만든 것으로 유명합니다. 하지만 원래 뇌과학에 관심이 많았습니다. 2005년에 누멘타(Numenta)라는 회사를 설립하여 인공지능에 대한 연구를 계속하고 있습니다.

계속 읽기

텐서플로우를 이용한 머신러닝 강의

블로그를 통해 연락을 주셨던 홍콩 과기대의 Sung Kim 님의 머신러닝 강의를 소개해 드립니다. 수학과 컴퓨터 사이언스에 대한 깊은 이해가 없어도 강좌를 따라갈 수 있도록 충분히 쉽고 자세히 설명을 해 주고 계신 점이 매우 좋은 것 같습니다.

http://hunkim.github.io/ml/

머신러닝과 관련한 유용한 링크도 함께 제공하고 있습니다. 방문하셔서 좋은 강의와 정보를 얻어가시길 추천해 드립니다.

스크린샷 2016-03-22 오전 10.19.17

알파고와 이세돌의 대국을 보러 제프딘이 한국에 왔다.

구글 전설의 엔지니어 제프딘(Jeff Dean)이 알파고와 이세돌의 대국을 보러 지난 주에 한국에 머물렀다고 구글 플러스를 통해 밝혔습니다. 제프딘은 구글 브레인 팀을 이끄는 수석 엔지니어이며 구글 빅테이블, 맵리듀스 등 굵직한 논문들에 빠짐없이 언급되는 구글에서 빼 놓을 수 없는 엔지니어로 알려져 있습니다.

뉴럴네트워크나 인공지능 컨퍼런스 외에는 크게 외부활동은 없는 것으로 알고 있는데요. 이번 대국을 보러 한국에 온 일은 나름 의외로 보입니다. 아마 딥마인드 팀을 격려하고자 하는 의도도 있었겠죠.

계속 읽기

텐서플로우 튜토리얼 – 3

이 글은 Illia Polosukhin 가 쓴 TensorFlow Tutorial – Part 3 을 번역한 글 입니다. (update: 2016-04-20) 텐서플로우 0.8 버전에 맞추어 코드를 수정하였고 번역을 다듬었습니다. 아래 예제를 쥬피터 노트북으로 작성하여 깃허브에 올려 놓았습니다.

이전 튜토리얼 – 1, 튜토리얼 – 2 에서 텐서플로우(TensorFlow)와 사이킷플로우(Scikit Flow)를 소개하고 타이타닉 데이터셋을 이용하여 몇가지 모델을 만드는 법을 소개했습니다.

이번에는 카테고리 변수를 다루는 좀 더 복잡한 모델을 만들어 보겠습니다.

일반적으로 머신러닝에서는 카테고리 변수를 다루기위해 각 카테고리에 대해 one-hot 벡터(혹은 one-hot encoding, 한 요소만 1인 벡터)를 만듭니다. 딥러닝에서는 분산표현방식(Distribution representation) 또는 임베딩(Embedding) 이라고 부르는 방법이 있습니다.

임베딩 방식을 사용하면 각 카테고리를 원하는 사이즈의 실수 벡터로 표현할 수 있으며 나중에 모델에서 피처(feature)로 사용합니다. 참고할 점은 텐서플로우 컴포넌트(그리고 다른 딥러닝 프레임워크들도)의 미분계산 능력때문에 작업에 가장 최적화된 모델을 트레이닝 시키게 도와줍니다. 이는 개개의 피처 엔지니어링(feature engineering)을 할 필요가 없게 만드는 딥러닝 툴킷의 가장 강력한 기능입니다.

계속 읽기