태그 보관물: Machine Learning

카이스트 대학의 머신러닝 오픈 코스

kooc-ml

카이스트 대학교에서 만든 온라인 강의 사이트 KOOC에서 문일철 교수의 인공지능 및 기계학습 개론 1, 2 강좌가 시작되었습니다(강좌 페이지의 URL이 RESTful 하지 않아 프레임안의 링크를 연결하여 놓았습니다. 혹 접속에 문제가 될 경우는 kooc.kaist.ac.kr 로 접속하세요). 강의는 차례대로 업로드 되는 것 같습니다. 강의 초반에 확률에 대한 소개를 하고 있어 엔지니어 입장에서는 다소 거리감이 느껴질 수 있습니다(이 강의는 통계적 머신러닝-Statistical Machine Learning-에 가까운 것 같습니다).

머신러닝에 관해 처음 접하는 경우가 아니라면 동시에 1, 2 강좌를 수강해도 좋을 것 같습니다. 전체 강의 목차는 아래와 같습니다.

  1. Motivations and Basics
  2. Fundamentals of Machine Learning
  3. Naïve Bayes Classifier
  4. Logistic Regression
  5. Support Vector Machine
  6. Training/Testing and Regulatization
  7. Bayesian Network
  8. K-Means Clustering and Gaussian Mixture Model
  9. Hidden Markov Model
  10. Sampling Based Inference

국내에서 쉽게 만나기 어려운 좋은 강좌인 것 같습니다. 개인에 따라서는 1.5배속으로 정주행도 가능합니다. 다만 코세라(Coursera)나 Edx 와 비교하기는 아직 어렵습니다.

AI == Deep Learning?

딥러닝(Deep Learning)은 인공지능(Artificial Intelligence)과 같은 건가요? 라고 누가 묻는다면 조금 멈칫거릴 것 같습니다. 두 단어를 모두 많이 쓰기도 하고 듣기도 했지만 차이에 대해선 깊에 생각해 본적이 없었던 것 같습니다. 아마도 다른 사람들도 이를 혼용해서 부르거나 각기 나름대로 구분해서 생각할 것 같은데요. KD너겟(KDnuggets)에서 이와 관련된 글이(Is “Artificial Intelligence” Dead? Long Live Deep Learning?!?) 실렸습니다. 페드로 도밍고스(Pedro Domingos) 교수를 비롯해서 7명의 전문가에게 나름대로 두 단어의 정의를 부탁했습니다.

ai-ml-dl

출처: KD너겟 홈페이지

사람마다 조금씩 바라보는 시각이 다르지만 대체적으로 큰 틀에서는 딥러닝은 머신러닝(Machine Learning)의 부분 집합이며 인공지능은 머신러닝을 포괄하는 큰 의미로 생각하고 있습니다. 따라서 딥러닝은 인공지능의 동의어도 아니고 인공지능을 대체하는 개념도 아닙니다. 최근의 성과에 힘입어 미디어에서 딥러닝과 인공지능을 혼용하여 사용하지만 딥러닝은 딥 뉴럴 네트워크(Deep Neural Networks)를 사용한 머신러닝의 한 분야입니다.

딥러닝이 주로 인공지능 분야에 활용되고 있지만 인공지능은 딥러닝 이외에도 강화학습(reinforcement learning), 몬테카를로 트리탐색(Monte Carlo tree search), 유전자 알고리즘(Genetic algorithm) 등과 같은 기술이 함께 사용되고 있다는 점을 설명하고 있습니다. 인공지능은 또 머신러닝과 상관없는 문제해결(Problem Solving), 검색(Search), 지식표현(Knowledge Representation) 등 많은 다른 분야와 연관되어 있다는 점을 페드로 도밍고스 교수가 지적하고 있습니다.

그는 딥러닝은 특별히 이미지(비전), 텍스트(언어), 음성 등의 분야에서 주로 사용되고 있으며 구조화 되지 않은 입력 데이터를 이용해서 예측을 하는 데는 여전히 일반적인 머신러닝 알고리즘인 앙상블(Ensemble) 메소드나 서포트 벡터 머신(SVM) 등이 좋은 선택이라고 말하고 있습니다.

트위터의 휴고 라로쉘(Hugo Larochelle)도 인공지능은 궁극적인 목표이고 딥러닝을 그에 다다르기 위한 수단 중 하나라고 정의하고 있습니다. 소울 해커스 랩(Soul Hackers Labs)의 CEO 카를로스 아구에타(Carlos Argueta)는 자연어 처리나 컴퓨터 비전에 대해 이야기하면 사람들이 하나 같이 ‘딥러닝을 사용하나요?’ 라고 묻는데 아주 피곤하다고 하네요. 🙂

(업데이트) 7월말에 엔비디아(Nvidia) 블로그에 이와 관련된 글(What’s the Difference Between Artificial Intelligence, Machine Learning, and Deep Learning?)이 실렸습니다. 이 글에서도 딥러닝은 인공지능이나 머신러닝 보다 최근에 각광받기 시작했으며 머신러닝의 한 분야임을 잘 설명하고 있습니다.

deep_learning_icons_r5_png-jpg

 출처: 엔비디아 블로그

Pedro Domingos’s ML 2016 Lecture

워싱턴 대학교의 페드로 도밍고(Pedro Domingos) 교수가 2016년 4~5월에 진행한 머신 러닝(CSEP546) 수업 동영상을 유투브에서 볼 수 있고 mp4 파일로도 다운로드 받을 수 있도록 제공하고 있습니다. 강의 슬라이드과 과제등의 자료도 온라인에 그대로 공개되어 있습니다.

ML with Python

PythonproGramming.netSentDex 의 창업자이자 열혈 파이썬 개발자인 Harrison Kinsley 가 유투브에 새로운 동영상 강좌 커리큘럼 ‘Machine Learning with Python‘ 을 연재하고 있습니다. 4월 부터 시작한 이 시리즈는 대략 이삼일을 넘지 않고 하나씩 추가되고 있습니다. 뉴럴 네트워크, 딥러닝 까지 강의가 진행될 예정입니다. 기왕이면 텐서플로우를 이용해서 뉴럴 네트워크 강좌가 만들어지면 좋겠습니다. 🙂

Harrison Kinsley 는 이십대 중반이라고 프로필을 소개하고 있는데요. 창업해서 운영하고 있는 회사만 몇개나 되네요. 사업 규모의 크기를 떠나서 열정과 노력이 정말 대단한 것 같습니다.

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 기반의 하드웨어 설계를 공개했지만 구글과 마이크로소프트에 비하면 조금 밀리는 것 같습니다. 언젠가 페이스북이 발표할 그 무엇을 기대해 봅니다.