태그 보관물: Deep Learning

Review Paper of DL, RL

거의 동시에 딥러닝과 강화학습에 관한 리뷰 페이퍼가 각각 공개되었습니다. 하나는 “On the Origin of Deep Learning“(1702.07800 pdf)로 80페이지가 넘습니다. 퍼셉트론부터 시작해서 최근의 뉴럴 네트워크의 다양한 기술들을 요약하고 있습니다. 볼츠만 머신, 딥 빌리프, CNN, RNN, GAN, 최적화 등 다양한 주제를 망라하고 있습니다. 시작을 아리스토텔레스까지 거슬러 올라간 건 애교로 봐야할까요? 🙂

다른 하나는 “Deep Reinforcement Learning: An Overview“(1701.07274 pdf)입니다. DQN, Policy Gradient 와 강화학습이 적용된 다양한 어플리케이션을 소개하고 있습니다. 레퍼런스만 절반이라 강화학습 이론 자체보다는 관련 리소스를 확인하는 용도로 좋을 것 같습니다.

PyTorch: New Cool DL Library

0120-sdt-github

(업데이트) 파이토치는 토치(Torch)의 코어 C 라이브러리를 공유하고 있으며 대략 2016년 5월 경에 시작된 것으로 추측됩니다. 텐서플로우도 다이나믹 그래프를 위한 시도를 하고 있으나(TensorFlow Fold) 아직 페이퍼외에 코드로 공개된 것은 없습니다.

널리 사용되는 딥러닝 라이브러리 중 하나는 페이스북에서 많이 사용하는 토치(torch)입니다. 하지만 루아 스크립트 인터페이스 때문에 처음 딥러닝을 시작하는 사람들에게 선택되기는 쉽지 않습니다. 그와중에 구글이 파이썬 인터페이스를 전면으로 내세운 텐서플로우로 딥러닝 프레임워크 시장의 선두로 올라섰습니다. 하지만 앞으로 이야기가 조금 달라질 수 있을것 같습니다. 바로 텐서플로우보다 더 파이써닉한 파이토치(PyTorch)가 공개되었기 때문입니다. 이름을 보아서는 토치에 파이썬 인터페이스를 추가한 것으로 오해할 수 있지만, 이 라이브러리는 넘파이(NumPy) 정도를 제외하고는 거의 의존성이 없으며 텐서 연산을 위한 C++ 코드를 제외하고는 거의 모두 파이썬 구현으로 만들어졌습니다. 이는 대부분의 코드가 C++ 로 구현되어 있고 인터페이스를 파이썬으로 가진 텐서플로우를 비롯한 다른 라이브러리들과는 큰 차이가 납니다. 웹사이트에서 주장하는 바 그대로 “Python First” 입니다.

파이토치의 주요 장점은 모든 텐서의 연산에 대해 자동으로 그래디언트를 계산해 주는 Autograd, NumPy/SciPy 등과의 뛰어난 호환성, 깔끔한 코드 등입니다. 하지만 가장 관심을 끄는 것 중 하나는 다이나믹하게 컴퓨테이션 그래프를 만들어 주는 기능입니다. 즉 텐서플로우를 비롯한 다른 라이브러리들처럼 그래프를 정의하고 실행하는 것이 아니고 코딩되는 대로 그래프가 점진적으로 만들어지는 것입니다. 이런 장점을 가진 라이브러리로는 일본에서 만든 체이너(Chainer)가 있고 최근 카네기멜론 대학의 Clab 에서 공개한 DyNet(말 그대로 다이나믹 넷이죠), 그리고 MXNet을 개발하는 DMLC 에서 최근에 공개한 MinPy 등이 있습니다. 실제로 파이토치의 일부 기능은 체이너의 포크에서 시작되었다고 합니다. 이 프로젝트는 페이스북의 서미스 친탈라(Soumith Chintala)와 아담 파스케(Adam Paszke)가 관리하고 있으며 혼돈될 수 있지만 휴 퍼킨스(Hugh Perkins)가 만든 토치 래퍼인 pytorch와는 다릅니다.

기존의 네트워크와 앞으로의 연구가 얼마나 파이토치로 포팅되어 나올지가 궁금합니다. 자세한 파이토치의 기능은 예제를 뜯어 보면서 정리해서 올리겠습니다. 파이토치는 아직 PyPI 에 올라가 있지는 않지만 비교적 쉽게 설치가 가능합니다. 다만 아직 윈도우 버전이 준비되어 있지 않고 맥에서는 GPU 지원이 되지 않습니다.

# conda (linux, osx)
$ conda install pytorch torchvision -c soumith

# pip : linux + python2.7 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.6.post22-cp27-cp27mu-linux_x86_64.whl 
$ pip install torchvision

# pip : linux + python2.7 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.6.post22-cp27-cp27mu-linux_x86_64.whl 
$ pip install torchvision

# pip : linux + python3.5 + cuda7.5
$ pip install https://s3.amazonaws.com/pytorch/whl/cu75/torch-0.1.6.post22-cp35-cp35m-linux_x86_64.whl
$ pip install torchvision

# pip : linux + python3.5 + cuda8.0
$ pip install https://s3.amazonaws.com/pytorch/whl/cu80/torch-0.1.6.post22-cp35-cp35m-linux_x86_64.whl
$ pip install torchvision

# pip : osx + python2.7
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.6.post22-cp27-cp27m-macosx_10_7_x86_64.whl 
$ pip install torchvision 

# pip : osx + python3.5
$ pip install https://s3.amazonaws.com/pytorch/whl/torch-0.1.6.post22-cp35-cp35m-macosx_10_6_x86_64.whl 
$ pip install torchvision

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

 출처: 엔비디아 블로그

Montreal DL Summer School Lectures!

이달 초에 몬트리올에서 진행됐던 딥러닝 서머스쿨의 동영상이 공개되었습니다. 강의자들을 보면 제프 딘(Jeff Dean), 요슈아 벤지오(Yoshua Bengio), 조경현 교수 등이 있습니다. 아직 발표자료와 동영상이 모두 매치되지는 않았습니다. 많은 사람들이 환영을 하는 만큼 놓칠 수 없는 자료 같습니다.

스탠포드 대학에서도 다음달 딥러닝 서머스쿨을 연다고 하는데요. 이 영상도 공개되었으면 하는 바램입니다. 그리고 9월 24~25일에 열리는 AI 온라인 컨퍼런스인 AI with the Best에 페드로 도밍고(Pedro Domingos) 교수가 합류했다는 소식입니다.

DL with Neural Networks and TensorFlow Introduction

예전에 소개해 드렸던 ‘ML with Python‘ 동영상 시리즈를 만든 해리슨 킨슬리(Harrison Kinsley)가 텐서플로우와 딥러닝에 관한 새로운 동영상 시리즈를 유투브에 올리고 있습니다. 정말 대단합니다!

지금까지는 총 6개가 업로드되었습니다.

DL Summer Seminar at Barcelona

UPC TelecomBCN이 주관하는 딥러닝 서머 세미나가 지난 달에 바르셀로나에서 열렸었습니다. 5일간 열린 이 세미나의 슬라이드, 코드 그리고 강의 동영상이 공개되어 있습니다. 제가 번역한 책 ‘First Contact with TensorFlow’의 저자 Jordi Torres 교수도 강의자 명단에 포함되어 있네요. 아마도 저술한 책의 내용을 바탕으로 강의를 진행한 것 같습니다. 🙂

최성준님의 dl tutorials

약 두달전 쯤에 서울대 최성준님이 만드신 딥러닝 튜토리얼과 텐서플로우 예제에 대해 소개해 드린 적이 있습니다. 이번에 딥러닝 튜토리얼 2차본이 깃허브에 올라왔습니다. 무려 46개의 파워포인트로 이번의 자료는 MIT 라이센스로 올려 주셔서 냉큼 받았습니다. 다만 직접 강의를 들을 수 없어서 요약된 파워포인트만으로는 이해하기 어려운 부분도 많을 것 같습니다. 그래도 자료를 공유해 주신 최성준님에게 감사드립니다.

첫번째 슬라이드에 이 블로그가 언급되어 있는데요. 아마도 칭찬은 아닐 듯.. 빼주세요.. ㅠ.ㅠ

Pedro Domingos’s ML 2016 Lecture

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

Coursera’s old class restart

neural-network-coursera

코세라(Coursera)가 사용자들의 원성(?)을 들었던 걸까요. 주옥같은 강좌들이 몇년만에 다시 시작된다는 기쁜 소식입니다.

Probabilistic Graphical Models, Stanford University, August 2016

Neural Networks for Machine Learning, University of Toronto, September 2016

Natural Language Processing, Stanford University, September 2016

이 강좌들을 들으려면 올여름을 바쁘게 보내야 할 것 같습니다 🙂

ps: 구글의 머신러닝 유투브 강의도 계속 업데이트 되고 있습니다.

(업데이트) 스탠포드의 ‘Natural Language Processing’ 강좌는 실수로 등록된 거라고 코세라에서 메일이 왔습니다. 현재 이 강좌 페이지는 들어가 지지도 않네요.ㅠ.ㅠ  대신 9월 부터 시작하는 미시간 대학의 ‘Introduction to Natural Language Processing‘을 수강하실 수 있습니다.

Stanford UFLDL Tutorial

앤드류 응(Andrew Ng) 박사가 스탠포드 대학에 있을 때 제자들과 함께 만든 UFLDL(Unsupervised Feature Learning and Deep Learning) 튜토리얼을 소개해 드립니다. 깃허브 레파지토리 날짜로 보아서는 3년 정도 지난 것으로 보이지만 여전히 좋은 자료인 것 같습니다.

이 튜토리얼의 이전 버전도 있는데요. 이전 버전은 중국어 번역본이 이미 존재하고 있습니다.