본문으로 바로가기

머신러닝 공부 순서, 방법 및 강의 정리

category Study/Developer Life 2019. 1. 16. 11:00

이번 포스팅에서는 작년부터 머신러닝 공부를 시작하면서 들었던 강의와 머신러닝 공부 방법에 대해서 정리해보려고 한다. 필자도 아직 머신러닝을 마스터하려면 갈 길이 멀었지만, 그간 공부했던 경험을 토대로 머신러닝 입문자들에게 조금이나마 도움이 됐으면 하는 마음으로 적어봤다.


※ 주의 : 이 글은 이제 막 머신러닝을 공부하려는 입문자를 위한 글입니다. 이미 머신러닝을 많이 공부하신 분들에게는 별로 도움이 되지 않을 것입니다. 


우선 필자에 대해 간략하게 소개하자면, 한국에서 자바 개발자로 시작해 이 후 여러 모바일 웹앱 프로젝트를 하면서 프론트엔드 개발자로 커리어를 바꾼 9년 차 개발자이다. 어쩌다 지금은 미국으로 건너와 1인 개발자로 일하고 있다. 필자가 미국으로 건너 오게 된 이야기는 부끄럽지만 나의 퇴사 이야기라는 글에 남겨보았다.


머신러닝 공부

0. 머신러닝을 공부한 계기

어쨌든 그렇게 자바 -> 안드로이드 -> 자바스크립트로 영역을 바꿔왔는데 작년에 진행했던 React 프로젝트에서 또다시 팔랑귀가 작동했다. 같이 일하는 분이 틈틈이 머신러닝 공부하는 것을 보고 의욕이 불타올랐던 것이다.


필자는 바람이 조금만 불어도 쉽게 팔락거리는 팔랑귀를 가지고 있어서 그런지 주위에서 뭐가 유행이더라 하면 궁금해서 못 참는 성격이다. 게다가 이세돌 알파고 이 후 조금씩 커져 왔던 머신러닝에 대한 순수한 호기심도 한 몫 했다.


프론트엔드 개발도 아직 공부할 것이 많고 처리해야 할 프로젝트도 많은데 당장 돈이 되지 않는 머신러닝에 시간을 투자하다니.. 스스로 자책을 하면서도 "이것도 미래를 위한 투자다!" 라는 자기합리화로 지금까지 오게 되었다. 하아..


머신러닝 공부의 어려움


1. 앤드류 응(Andrew Ng) 머신러닝 강좌

머신러닝 공부를 시작하기 위해 구글 검색을 해보면 열이면 아홉은 Andrew Ng 교수의 머신러닝 강좌부터 볼 것을 추천하고 있다. 앤드류 응 교수는 구글 브래인팀을 이끌었던 세계적인 AI 권위자로 스탠포드 대학 교수이자 코세라 창립자이다.


참고로 코세라 강의는 월 $45를 결제하면 Specializations에 있는 모든 과목을 무제한을 들을 수 있는데, 유명한 머신러닝 강의는 대부분 코세라에 있다. 가입 후 7일 동안은 무료라서 일단 가입했다.


코세라 머신러닝 강의 목록


앤드류 응 교수의 강의는 머신러닝 기본 강의라고 보면 될 것 같다. 수업은 원하는 때에 들을 수 있었고, 다만 숙제가 있다. 숙제는 Octave(옥타브)라는 스크립트 언어로 나왔다. 개인적으로 이 강의를 보고 난 후 파이썬을 공부했는데, 파이썬을 이미 공부한 사람들은 강의 숙제를 할 때 GitHub에 파이썬 코드로 재작성된 자료를 참고하면 될 것이다.


2. 파이썬(Python) 공부

어떤 머신러닝 전문가는 머신러닝을 배울 때 코딩부터 배우지 말라고 한다. 그런데 필자는 앤드류 응 교수의 머신러닝 수업을 대강 마무리 하고 바로 파이썬 문법을 공부했다. 삽질부터 해보는 개발자여서 그런지 이론보다는 코드에 먼저 눈이 갔던 것 같다. 


파이썬은 머신러닝에 즐겨 쓰이는 프로그래밍 언어이다. R이나 Matlab 같은 것도 있는데 머신러닝 언어 중 대세는 파이썬이라고 한다.


필자는 파이썬 공부를 하기 위해 파이썬 공식 사이트로 가서 문서들을 한 번 쭉 훑어보고 유데미(Udemy)에서 제일 짧은 강의부터 찾았다. 강의 이름은 처음 시작하는 파이썬이라는 강좌였는데 파이썬 문법 부분만 빠르게 넘겨 보았다. 여러가지 프로그래밍 언어를 다뤄봐서 그런지 몇몇 파이썬 만의 독특한 문법들 빼고는 크게 어렵지는 않았다. 개인적으로 파이썬 문법 공부는 하루면 충분했던 것 같다.


만약 이미 코세라를 구독하고 있고 프로그래밍이 처음이거나 파이썬을 기초부터 제대로 배우고 싶다면 Python 3 Programming 강의를 추천한다.


3. 그래프 모형, 인공신경망 강의

머신러닝을 공부할 때는 머신러닝 개론 -> 그래프 모형 -> 인공신경망 순으로 공부하면 된다고 한다. 그래프 모형(Graphical Model)이란 머신러닝의 근간을 이루는 모델로 변수간 상호 의존 관계를 설명한다.


머신러닝 그래프 모형


그래프 모형에 대한 강의는 Daphne Koller 교수의 Probabilistic Graphical Models 강의가 가장 유명하다. 이 역시 코세라 강의이다.


다음으로 최근 머신러닝의 대세가 된 알고리즘인 인공신경망(Neural Network) & 딥러닝(Deep Learning) 공부를 했다. AI, 머신러닝, 인공신경망, 딥러닝 개념이 어렵다면 아래 그림과 같은 관계라고 보면 된다.


인공지능, 머신러닝, 인공신경망, 딥러닝 차이


AI(Artificial Intelligence)란 인간의 지능을 기계로 만든 것을 의미하며, 그 구체적인 방법 중 하나가 머신러닝(Machine Learning)인 것이다. 그리고 머신러닝을 구현하는 알고리즘 중의 하나가 인공신경망(Neural Network)과 딥러닝(Deep Learning)인 것이다.


딥러닝은 인공신경망에서 발전된 형태로 심화신경망 또는 개선된 인공신경망 등으로 불리기도 한다.


인공신경망 강의 역시 앤드류 응 교수의 코세라 강의인 Neural Networks and Deep Learning 강의를 들었다. 참고로 아직 보지는 않았지만 인공신경망 쪽에서 휴고 라로첼(Hugo Larochelle)의 유튜브 강의도 괜찮다고 한다.


4. 머신러닝 실습 강의

코세라 강의를 들으면서 잘 이해되지 않은 부분도 있고, 영어로 수업이 진행되다 보니 놓치는 부분도 많았던 것 같다. 그래서 조금 더 쉽고 실용적인 강의가 없나 찾다가 추가로 유데미에 있는 머신러닝 강의를 들었다.


참고로 유데미 강의는 프로그래밍을 전혀 해보지 않은 사람은 다소 따라가기 어려워 보였다. 강의는 텐서플로우와 케라스를 통해 인공 신경망 개발 환경을 구축해보고 딥러닝을 통한 이미지, 데이터 분류 실습을 해본다. 


또한 강화학습에 대한 내용과 Apache Sparks MLlib 통한 대량 데이터 머신러닝 처리에 대한 내용도 배울 수 있었다.


5. 추가 학습

유데미 강의는 아직도 틈틈히 수강하고 있다. 그 와중에 다른 머신러닝/딥러닝 강의를 알아보다가 홍콩과기대 김성 교수님의 강의를 보게 되었다. 뭔가 이전에 배웠던 내용을 recap 하는 차원에서 보게 되었는데 머신러닝 이론에 대해 깔금하게 정리되어 있다. 머신러닝 공부를 시작하거나 공부 중이라면 참고하면 괜찮은 강의이지 않을까 싶다.


6. 머신러닝 공부에 도움 될 만한 URL 모음

머신러닝 공부에 도움 될 만한 사이트나 자료에 대한 URL은 이곳에 계속 업데이트할 예정이다. 


- 딥러닝을 위한 기초 수학 : https://www.slideshare.net/theeluwin/ss-69596991

- 텐서플로우 연습 코드 모음 : https://github.com/golbin/TensorFlow-Tutorials

- 구글 딥러닝 강의 : https://www.udacity.com/course/deep-learning--ud730

- 머신러닝 오픈소스 튜토리얼 : https://scikit-learn.org/stable/tutorial/

- 옥스포드 머신러닝 수업자료 : https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/

- 머신러닝 용어집 : https://developers.google.com/machine-learning/glossary/?hl=ko



아리스토텔레스의 "시작이 반이다" 라는 명언이 있다. 그런데 영어 원문은 "Well begun, is half done." 이다. 한국어로 번역되면서 Well의 의미가 삭제된 것 같다. 제대로 해석하면 "좋은"시작이 반을 차지한다는 것이지 무작정 시작만 하면 된다는 의미는 아니다.


머신러닝, 딥러닝 공부 역시 마찬가지인 것 같다. 제대로 된 강의와 가이드로 공부를 시작해야 한다. 그리고 그 첫 시작은 앤드류 응 교수의 coursera 강의라고 생각한다. 아직도 머신러닝 공부를 망설이고 있다면, 일단 코세라에 접속해서 무료 강의부터 들어보자.



Deep Learning Specialization on Coursera


댓글을 달아 주세요