월간 보관물: 2016 10월

해커에게 전해들은 머신러닝

머신러닝과 딥러닝은 최근에 많은 개발자들에게 큰 관심을 받게 된것 같습니다. 이글은 서점에 있는 입문서를 보는데도 어려움을 느끼는 제 친구들을 위해 시작했습니다. 그러다 한빛미디어 세미나를 위해 조금 확장하여 작성하였습니다. 혹 머신러닝을 잘 아는 분이 이 글을 읽는다면 더 많은 사람들에게 도움이 될 수 있도록 부족한 점이나 잘못된 점을 알려 주시면 감사하겠습니다. 궁금한 점이나 개선할 부분 등 어떤 의견도 환영합니다.

세미나의 동영상이 한빛미디어 사이트에 등록되었습니다. 이 동영상을 수강하시면 제게도 도움이 됩니다. 🙂

가능하면 용어나 수식의 기호는 중용을 선택할 수 있도록 노력했고 수학 이론은 꼭 필요한 것만 다루었습니다. 여러 알고리즘이 있지만 가장 간단한 회귀 분석 부터 뉴럴 네트워크까지 자연스럽게 이어질 수 있도록 했습니다.

이 글에서 사용된 주피터 노트북 코드는 깃허브에서 확인할 수 있습니다. 소스 코드는 scikit-learn 버전 0.18 ,0.18.1 과 텐서플로우 버전 0.10, 0.11 에서 테스트 되었습니다.

그리고 이 글은 OpenAI의 안드레이 카패시(Andrej Karpathy)의 글 ‘해커가 알려주는 뉴럴 네트워크‘에서 일부분 영감을 얻었음을 밝힙니다. 재미있게 읽어 주세요.

 

해커에게 전해들은 머신러닝 #1

  • 머신러닝이란
  • 우리에게 필요한 도구들
  • 머신러닝 알고리즘 분류
  • 당뇨병 데이터
  • 하나의 뉴런
  • 경사하강법
  • 사이킷런에서는
  • 배치, 미니배치
  • 최소제곱법

해커에게 전해들은 머신러닝 #2

  • 테스트 데이터
  • 학습 속도
  • 검증 데이터
  • 정형화
  • 두개의 뉴런
  • 유방암 데이터
  • 로지스틱 회귀 분석
  • 사이킷런에서는

해커에게 전해들은 머신러닝 #3

  • 여러개를 분류하기
  • 소프트맥스
  • 손글씨 숫자 데이터
  • 딥 뉴럴 네트워크
  • 완전 연결 레이어
  • 그래디언트 행렬 계산
  • 완전 연결 뉴럴 네트워크
  • 사이킷런에서는

해커에게 전해들은 머신러닝 #4

  • 콘볼루션
  • 스트라이드, 패딩
  • 렐루
  • 서브샘플링
  • 텐서 크기
  • 콘볼루션 뉴럴 네트워크
  • 학습 결과

Element AI

elementai

몬트리올 대학의 요슈아 벤지오(Yoshua Bengio) 교수가 맥길(McGill) 대학과 함께 인공지능 벤처를 위한 인큐베이터 엘리먼트 AI를 런칭한다고 발표했습니다. 제프리 힌튼(Geoffrey Hinton) 교수의 토론토 대학과 함께 몬트리올 대학은 캐나다의 인공지능 산실의 상징입니다. 하지만 요즘 구글, 페이스북, 마이크로소프트, 바이두까지 실리콘밸리에 집중되어 있는 것을 보면 이들 대학의 출신들이 속속 실리콘 밸리로 빠져나갈 수 밖에 없을 것 같습니다. 요슈아 벤지오 교수가 인큐베이터를 시작했으니 제프리 힌튼, 얀 리쿤(Yann LeCun), 앤드류 응(Andrew Ng) 등 딥러닝의 선배들이 이제 모두 비즈니스에 참여하게 되는 것 같습니다.

TensorFlow OpenCL – Under Construction

텐서플로우의 OpenCL 버전인 tensorflow-cl 프로젝트가 얼마전에 시작되었습니다. 이 프로젝트는 OpenCL 용 콘볼루션 뉴럴 네트워크 라이브러리인 DeepCL 과 토치의 OpenCL 버전인 cltorch, clnn 등을 만든 휴 퍼킨스(Hugh Perkins)가 진행하고 있습니다. 하루가 멀다하고 빠르게 릴리즈가 되고 있습니다. 아직은 한창 만드는 중이지만 기대가 많이 됩니다.

CNTK 2.0 with Python

마이크로소프트의 딥러닝 라이브러리인 CNTK의 2.0 베타가 배포되었습니다. 브랜딩도 Microsoft Cognitive Toolkit 으로 바꾸고 홈페이지도 새로 개편했네요. CNTK는 버전 번호가 크게 변하는 편인데요. 이번에는 2.0으로 바꾸면서 많은 기능이 추가된 것 같습니다. 대표적인 것인 파이썬 API를 지원하고 있어 넘파이(numpy)와 함께 섞어 쓸 수 있다는 점입니다. 다양한 파이썬 예제와 주피터 노트북도 깃허브 레파지토리에서 확인할 수 있습니다. 마이크로소프트 블로그에서는 CNTK의 큰 장점 중에 하나로 대량 데이터를 사용한 머신러닝에 사용할 수 있도록 분산 처리에 강하다는 점을 설명하고 있습니다. CNTK는 여전히 가장 강력한 오픈소스 라이센스 정책을 가지고 있습니다. 윈도우 환경에서 텐서플로우나 씨아노(Theano) 같은 딥러닝 라이브러리를 제치고 자리매김할 수 있을지 많은 기대가 됩니다.

Fast Weights RNN

fast-weight-rnn

지난주에 발표된 페이퍼 중 가장 이슈인 것은 제프리 힌튼(Geoffrey Hinton) 팀의 ‘Using Fast Weights to Attend to the Recent Past‘ 인 것 같습니다. 이건 마치 RNN 안에 또 다른 RNN 을 삽입한 것처럼 느껴집니다. Fast Weight는 최근의 기억에 비중을 둔 그래서 가중치가 빠르게 변하는 모습을 뜻하고 반대로 기존 RNN의 가중치는 Slow Weight로 표현하고 있습니다. 제프리 힌튼이 페이퍼 내용을 설명하는 강의 영상과 트위터의 휴고 라로쉘(Hugo Larochelle)의 서머리도 참고하세요. 좀 더 자세한 내용이 파악되면 다시 업데이트 하겠습니다.

Deep Learning Papers Reading Roadmap

딥러닝 분야에서 꼭 읽어야 할 페이퍼를 정리해 놓은 깃허브를 안내해 드립니다. ‘Deep Learning Papers Reading Roadmap‘ 은 주제별로 중요한 페이퍼를 잘 정리해 놓았습니다. 최신의 논문도 있지만 오래되었더라도 꼭 읽어야 할 목록과 잘 조화를 이룬 것 같습니다. 워털루 대학의 엄태웅님이 만든 ‘awesome-deep-learning-papers‘ 와 비교하면서 하나씩 버킷 리스트를 채워가면 좋을 것 같습니다. 아래 정리된 페이퍼의 분류 소제목을 정리해 놓았습니다.

  1. Deep Learning History and Basics
    1.0 Book
    1.1 Survey
    1.2 Deep Belief Network(DBN)(Milestone of Deep Learning Eve)
    1.3 ImageNet Evolution(Deep Learning broke out from here)
    1.4 Speech Recognition Evolution
  2. Deep Learning Method
    2.1 Model
    2.2 Optimization
    2.3 Unsupervised Learning / Deep Generative Model
    2.4 RNN / Sequence-to-Sequence Model
    2.5 Neural Turing Machine
    2.6 Deep Reinforcement Learning
    2.7 Deep Transfer Learning / Lifelong Learning / especially for RL
    2.8 One Shot Deep Learning
  3. Applications
    3.1 NLP(Natural Language Processing)
    3.2 Object Detection
    3.3 Visual Tracking
    3.4 Image Caption
    3.5 Machine Translation
    3.6 Robotics
    3.7 Art
    3.8 Audio
    3.9 Game
    3.10 Knowledge Graph
    3.11 Recommender Systems
    3.12 Bioinformatics / Computational Biology
    3.13 Neural Network Chip
    3.14 Other Frontiers

흐리게 표시된 부분은 아직 채워지지 않은 파트입니다.

때마침 OpenAI 의 잭 클라크(Jack Clark)가 트윗에 AI를 배우는데 뭐가 가장 힘든지를 물어보았는데요. 결과는 예상한대로 페이퍼를 읽을 시간이 없다가 가장 많은 지지를 받고 있네요. 물론 머리가 나빠 하나 읽는데 시간이 많이 걸린다는 것도 인정합니다 🙂

10월, 소프트웨어에 물들다.

somul

내일, 10월 22일 토요일 전국 19개의 도서관에서 어린이에게 소프트웨어와 컴퓨터에 대한 강연이 진행됩니다. ’10월, 소프트웨어에 물들다’는 각 도서관 마다 두개의 강좌가 준비되며 강연자와 진행자 모두 자원봉사자로 구성이 되었습니다. 별다른 약속이 없는 주말 아이들과 주변 도서관으로 나들이 해 보시면 어떨까요? 홈페이지, 페이스북, 블로터기사를 참고하세요.

저도 성북구 길음동 소리마을 도서관으로 ‘기계도 학교에 가나요? -어린이를 위한 인공지능, 기계학습 알고리즘 탐구’란 제목을 들고 출격합니다! 🙂

AI•ON: AI Open Network

ai-on

케라스(Keras) 개발자인 구글의 프랑소와 숄레(François Chollet)가 아이언(AI•ON, /aɪən/)이라는 프로젝트를 시작했습니다. 아이언은 Artificial Intelligence Open Network 의 약자입니다. 하지만 연구자들을 위한 소셜 모임이 아닙니다. 관심있는 인공지능 문제를 등록하고 메일링 리스트를 통해서 같이 연구해 나가는 프로젝트입니다. 학교도 회사도 인종도 국가도 모두 상관 없습니다. 누구나 메일링 리스트에 등록해서 토론하고 코드에 참여할 수 있으며 모든 작업과 소스 코드는 깃허브에 투명하게 공개됩니다. 만약 이 프로젝트에 관심있는 주제를 등록하고 싶다면 아이언 깃허브 레파지토리에 풀리퀘스트를 보내면 됩니다.

프랑소와 혼자서 이 프로젝트를 진행하는 것인지 확실하지 않습니다. 어엿든 이런 모험적인 프로젝트를 어떻게 생각했는지 놀랍기만 합니다. 한편으로는 얼만큼 성공적으로 진행될 수 있을까 궁금하기도 하구요. 관심있는 주제를 하나 선택해서 메일링 리스트에 참여해 봐야 겠습니다!

(업데이트) 그러고 보니 OpenAI 의 OpenAI: Request for Research 와 유사한 면이 있는 것 같습니다. 아이언은 이 보다 더 공개적이고 자기 조직적인(self-organized)인 것 같습니다.

(업데이트) 아이언의 프로젝트 중 Subpixel CNN in Upsampling Applications 의 메일링 리스트에서는 플로리다 대학의 Ph.D 인 에더 산타나(Eder Santana)의 주도하에 과제를 진행하려고 합니다. 첫번째는 시도로는 트랜스포즈(Transpose) CNN과 서브픽셀(Subpixel) CNN, 픽셀CNN(PixelCNN)을 비교하는 것입니다. 저는 Keras.js 를 이용한 라이브 데모 작업에 참여해 보려고 합니다. 관심있으신 분들은 언제든지 환영입니다.

Ruslan joining Apple

카네기 멜론 대학에서 머신러닝과 딥러닝을 가르치고 있는 러슬랜 살라쿠디노프(Ruslan Salakhutdinov) 교수가 애플에 AI 리서치 디렉터로 합류한다고 밝혔습니다. 러슬랜은 이 분야에 널리 알려진 석학 중 한명입니다(CIFAR의 ML 분야 Fellow & Advisor). 러슬랜이 애플에 합류함으로 해서 구글, 바이두, 페이스북, 아마존 등과 두뇌의 균형을 맞추었네요. 🙂

애플은 때 맞춰 머신러닝 고수를 모집하는 구인 공고도 게재하였습니다. 러슬랜 교수가 카네기 멜론 대학을 완전히 떠날 것으로 보이지는 않습니다. 애플은 그동안 내부 연구에 대해서 전혀 발표를 하지 않아왔는데요. 러슬랜 교수가 합류함으로 해서 이런 모습에 변화가 생길지 많은 사람들이 관심을 가지고 지켜볼 것 같습니다.

Intel 64byte instruction to Linux kernel for deep learning

img_0997
인텔의 최신 아키텍처에 포함될 뉴럴 네트워크를 위한 512bit(64byte) 명령어 세트가 리눅스 커널에 포함되었다고 합니다. 딥러닝을 위한 하드웨어로는 Nvidia GPU가 기본이 되는 현재 상황을 바꾸어 보려는 인텔의 노력이 기대됩니다. 조금 더 자세한 내용은 퀘벡 대학의 다니얼 르미르(Daniel Lemire) 교수의 블로그와 리눅스 커널 패치를 참고하세요.