Fogeaters, Light The World.

15

2017-Jan

[AI]딥러닝 공부 가이드 (SW 준비편)

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1500

딥러닝 공부 가이드 (HW / SW 준비편).. 인데 HW 는 옛날꺼라 지움


출처 :: http://t-robotics.blogspot.kr/2015/06/hw-sw.html#.WHt_4hfWu_k

뭐든지 시작이 중요합니다. 시험공부를 시작하기 전에 갑자기 책상 정리하고, 방청소를 하는게 괜한 이유가 있는게 아니죠. 그만큼 정갈하게 시작하고 싶고, 완벽한 시작을 꿈꾸니까요. (물론 그러다가 정작 공부를 못하기는 합니다만...)

딥러닝 공부도 마찬가지일 것입니다. 여러분들도 아마 공부를 시작하진 않고 관련 자료만 디립다 저장해 놓으셨겠지만 (ㅋㅋㅋ) 이 모든건 아직 장비빨이 갖춰지지 않았기 때문이죠. 일단 딥러닝을 공부하겠다는데 딥러닝 공부를 위한 완벽한 환경부터 갖추어야 하지 않겠습니까? ㅎㅎ

딥러닝을 위한 새로운 GPU, GTX Titan X를 발표하는 NVIDIA CEO의 모습 (사진출처) 

그래서 "딥러닝 공부 가이드" 시리즈를 준비했습니다.
   [딥러닝 공부 가이드]



   3.  딥러닝 공부자료 모음편

오늘은 그 첫번째로 딥러닝을 위해 필요한 하드웨어들과 소프트웨어들을 어떻게 선택하고 준비할지에 대해 알아보도록 하죠.

딥러닝을 위한 하드웨어 가이드

는 필요없다

딥러닝 라이브러리  

먼저 딥러닝 관련 자료들을 모은 사이트부터 하나 보고 가실게요~
[딥러닝 코드 모음]  http://deeplearning.net/software_links/
위에 소개해드린 deeplearning.net은 코드들 말고도 읽기자료, 데모 등도 잘 소개되어 있으니 딥러닝을 공부하며 종종 참고하시기 바랍니다.

딥러닝을 입문하시는 분들이라면 Matlab으로 입문하시는 것도 나쁘지 않을 것 같습니다. Matlab은 언어도 쉽고 변수값을 확인하기도 쉬우며 관련 코드들도 많이 존재하니까요. 저도 사실 알고리즘을 처음 이해할 때는 먼저 Matlab 코드를 보면서 따라가는 편입니다. 워낙 프로그램 인터페이스가 잘 되어있어 값 확인하기가 쉽거든요.

Matlab 자료 중에는 간단한 Neural Network부터 Deep belief network까지 다양한 알고리즘이 있는 DeepLearnToolbox를 추천해 드립니다.
[코드] https://github.com/rasmusbergpalm/DeepLearnToolbox
만약 Convolutional Neural Network를 Matlab으로 공부하는 분이시라면 다음의 자료를 추천드립니다.
[튜토리얼] http://www.robots.ox.ac.uk/~vgg/practicals/cnn/
[코드] https://github.com/vedaldi/practical-cnn


하지만 여러분들께서 만약 큰 용량의 데이터를 다루신다면 MATLAB은 너무 느리죠. 그리고 GPU 서포트도 쉽지 않고요. 이 경우엔 딥러닝 전문 라이브러리를 쓰시는 것이 좋습니다. 대표적으로는 Theano, Torch, Caffe가 있죠.

Theano는 딥러닝 대가 Yoshua Bengio교수가 이끄는 몬트리올 대학 LISA 연구실에서 개발된 라이브러리입니다. 파이썬을 사용하고 있고 내부적으로는 속도를 위해 C로 구현이 되어있죠. 당연히 GPU가 지원되고요, Bengio 교수가 워낙 좋은 논문/문서들을 쏟아내는 만큼, Theano와 Theano 기반의 딥러닝에 대해서도 좋은 튜토리얼을 제공하고 있네요. 특히 주요 알고리즘들이 예제코드로 제공되어 있어 딥러닝을 공부하시는 분들껜 매우 유용한 라이브러리가 아닐까 생각합니다. 다양한 라이브러리가 존재하는 "파이썬"을 기반으로 한다는 점도 장점이고요.
[Theano 튜토리얼] http://deeplearning.net/software/theano/
[Deep Learning 튜토리얼] http://deeplearning.net/tutorial/
Torch7은 딥러닝 대가 Yann LeCun교수가 페이스북과 함께 중점적으로 사용하고 있는 라이브러리입니다. 스크립트 언어인 Lua를 기본으로 하고 있고 Theano와 거의 유사한 기능을 제공하고 있습니다. Theano보다 더 빠르다고 주장하는데 그것에 대해서는 논란이 있고요, 아무래도 페이스북이란 대기업이 키우다보니 향후 발전성이 클 것으로 기대됩니다.
[Torch7] http://torch.ch/
[Torch7 튜토리얼] http://code.cogbits.com/wiki/doku.php


Caffe는 버클리대학의 비전 연구그룹(BVLC)에서 개발한 C++ 라이브러리입니다. C++을 이용하다보니 자유도가 높고 속도가 빠른 반면, 약간의 언어적 번거로움이 있고, 튜토리얼이 아직은 풍성하지 않은 것이 단점입니다.
[Caffe] http://caffe.berkeleyvision.org/
 Reddit에는 이런 커맨트가 있네요. 
"Caffe는 다른 타겟을 가지고 있다. Caffe는 보다 큰 마켓에 딥러닝을 적용하려는 목적을 가지고 있는 반면 Torch나 Theano는 딥러닝 그 자체 연구에 더 적합하다."
좀더 자세한 Theano/Torch7/Caffe의 비교는 다음의 블로그 글(영문)을 참고해주세요.


여기에 또 굿뉴스가 추가됐네요. 바로 구글이 발표한 TensorFlow입니다.
[TensorFlow] https://www.tensorflow.org/
TensorFlow의 가장 큰 특징은 복잡한 코딩 없이 다이어그램으로 쉽게 딥러닝을 적용해 볼 수 있다는 것입니다! 아주 최상의 성능은 내지 못하더라도 '딥러닝을 적용하면 어떻게 되지?'라는 질문에 대해서 쉽고 빠르게 적용해 볼 수 있는 솔루션인거죠. (성능도 곧 최고의 성능에 가깝게 따라잡을 것이라고 생각합니다.)

다음 편에서는 본격적으로 TensorFlow를 한번 설치하고 시작해보겠습니다. 다음편에서 만나요~
profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
91 [web] 제로보드처럼 url 줄이기 + 1 title: MoonBlonix 2017-08-04 1655
90 [php] 환경변수 $_SERVER title: MoonBlonix 2017-08-04 1686
89 [mysql] 테이블 수정 title: MoonBlonix 2017-08-04 1613
88 [Javascript] 섬세한 뒤로가기 구현 title: MoonBlonix 2017-08-01 1496
87 [php] 쿠키 사용하기 title: MoonBlonix 2017-08-01 1741
86 [javascript] POST 전송하기 title: MoonBlonix 2017-07-31 1605
85 [Web]다국적 웹사이트 제작 title: MoonBlonix 2017-07-27 1926
84 [php] 5 -> 7 변경점 정리 title: MoonBlonix 2017-07-23 1342
83 [php/mysqli] 설치 및 연동 + 2 title: MoonBlonix 2017-07-23 1691
82 [MySQL] 설치 및 기초명령어 title: MoonBlonix 2017-07-19 1006
81 [Web] JQuery 설치 title: MoonBlonix 2017-07-04 1673
80 [CSS] Toggle Switch Examples title: MoonBlonix 2017-07-01 1831
79 [CSS] Input Text Styles title: MoonBlonix 2017-07-01 1691
78 [Web] CSS 프론트엔드 워크프레임 소개 title: MoonBlonix 2017-06-25 1443
77 [C++] 코딩시 좋은 습관들 : 스타일 title: MoonBlonix 2017-06-11 1574
76 [PHP] 강좌 모음 + 1 title: MoonBlonix 2017-06-08 1907
75 [Arduino] 아두이노로 GPS(위치) 추적기(GPS Tracker)를 만들어 보았다 + 1 2N 2017-03-06 1424
» [AI]딥러닝 공부 가이드 (SW 준비편) title: MoonBlonix 2017-01-15 1500
73 [C++ STL] std::vector + 2 title: MoonBlonix 2016-12-14 1737