본문 바로가기

출처 : 페이스 북의 Tensorflow.Kr 그룹에 강민국님께서 공개하신 내용을 퍼온 글입니다.

https://www.facebook.com/groups/TensorFlowKR/permalink/608999666107762/?__tn__=-UC-R
저 뿐만 아니라 머신러닝을 공부하는 다른 분들에게 도움이 될것 같아 포스팅 합니다.


제목 : 비전공자의 머신러닝 스터디 정리
글쓴이 :가빈아빠 (강민국)
일자 : 2018. 8. 27


이번에는 비전공자인 제가 어떻게 머신러닝을 공부했고, 제가 발견한 머신러닝 공부자료를 공유해드리고자 글을 씁니다.^^
시작하기에 앞어 제 소개를 조금 하자면, 저는 기계공학부에 재학중인 학부생이며, 작년 8월부터 머신러닝 공부를 시작하였습니다. 당시 저는 학부 2학년 학생으로, 확률통계는 고등학교 때 배운 이상 공부하지 않았고, 프로그래밍 언어는 매트랩을 조금 다를 수 있는 것을 재외하고는 완전히 문외한 상태였습니다.


[강의 소개]


딥러닝에 대해 관심을 갖게 된 후 제일 처음 봤던 강의는 

1. 유투브 '생활코딩'님의 파이썬 강의 였습니다. 
파이썬을 하나도 모르는 상태였기에 이틀 동안 필요하다 싶은 강의만 골라서 수강을 하였지만, 파이썬을 처음봐서 그런지 for문 정도만 이해하였습니다.
** 딥러닝 공부를 하다보면 아시겠지만 Class를 사용해서 코딩을 정말 많이 합니다. 반드시 파이썬 강의를 들으신다면 for문, Class, def는 이해하고 딥러닝 공부 시작하시는게 좋습니다.
* 영어가 되시는 분들은 sentdex채널의 파이썬 강이를 들으면 좋다고 하네요!
(Seungwoo Lee님 감사합니다!)


2. '생활코딩'강의를 듣고나서 들은 것이 김성훈 교수님의 '모두의 딥러닝'강의 입니다. 듣기전부터 2회독을 하자는 마음을 가지고 들었고 제가 파이썬을 잘 몰랐기에 강의에 사용된 코드는 모조리 다 외워서 사용했습니다.
(같은 문제에 대한 코딩만 10번이상 한 것 같습니다.)


3. 그 다음 들었던 강의가 CS231N인데 제가 영알못이기도 했고, 모두의 딥러닝도 완벽히 이해를 하지 못한 상태여서 한번 완강을 했는데도(복습은 하지 않았습니다) 이해를 거의 하지 못했고 시간만 낭비했습니다 ㅠㅠ
이렇게 위의 3강의를 듣는데 1달 반정도 걸렸고, 이후로는 학기가 시작이되어 학기 공부를 한다고 딥러닝 공부는 많이 못한 것 같습니다.


4. 학기중에는 '라온피플'이라는 회사에서 운영하는 블로그 "https://laonple.blog.me/221196685472"에서 딥러닝에 관한 공부자료를 올리는데 이 자료를 읽으며 공부를 했습니다.


5. 또한 학기중에는 꾸준히 Tensorflow korea에서 올라오는 글들을 눈팅했는데, 눈팅한다고 딥러닝 실력이 느는 것은 아니지만 최신 딥러닝의 동향을 알 수 있었고, 제가 답할 수 있는 자료는 답변을 달면서 공부했던 것 같습니다.
이렇게 학기가 지나가고 겨울방학이 왔는데 이 때부터는 다음과 같이 공부를 한 것 같습니다.


6.CS231N을 다시 공부하였습니다. 확실히 '라온피플'에서 batch_normalization, CNN의 역활, Overfitting의 이유 등 여러가지 딥러닝 지식들을 공부하고 강의를 들으니 옛날에 이해했던 것보다 더 많이 이해가 되더군요. 그래서 일주일에 3강씩 1달 안걸려 CS231N을 다 공부한 것 같습니다.


7.CS231N을 공부하면서 같이 해본것이 Backpropagation에 대해 수학적으로 증명을 해보았습니다. 수학적으로 증명을 해봤는데 수식은 이해를 했는데 내용은 아직도 잘 이해를 못 한 것 같네요...ㅠ 아무튼 제가 생각하기에 Backpropagation은 반드시 한번 정리할 필요가 있다고 생각합니다.
7.CS231N도 공부했겠다. 이제 논문을 읽으면서 공부를 해야겠다라고 생각을 했고, 하필이면 처음 건드렸던 논문이 Restricted Boltzmann machine...입니다. MLE, MAP, Likelihood가 무엇인지 하나도 몰랐던 저는 이를 공부하기 위해 구글링과 페북에 수많은 질문을 하며..(죄송합니다 ㅠㅠ) 조금식 공부해나갔습니다.


8.RBM이 생각보다 만만치 않은 논문이였기에 최성준님의 강의도 보고, 여러가지 블로그들을 디벼보며 공부를 했습니다 . 결론적으로 MLE, MAP 및 고전 딥러닝에 대해서도 알아야 되겠다라고 생각했고, Kooc의 KAIST 문일철 교수님의 인공지능학개론1을 수강하였습니다.
이 것이 제가 지금까지 공부한 과정이며, 앞으로는 Kooc 문일철 교수님 인공지능학 개론2, 심화? 인공지능학개론을 수강할 예정입니다.


-------------------------------------------------------------------------------------------------------------------------------------------------------
[주관적인 생각]


1.프로그래밍도 중요하지만 확률 통계 '수학'도 상당히 중요한 것 같습니다. 특히 Generative model 또는 Reinforcement learning에서 수학을 많이 사용하는 것 같은데 이쪽으로 공부를 해보고 싶다고 생각하면 수학을 소훌히 하면 안될 듯 합니다.


2.Tensorflow ? Keras ? Pytorch? 어떤것을 사용해야 할까요?? => 저는 Tensorflow를 쓰지만 개인 취향인 것 같습니다. 하지만 들리는 소리에 의하면 놀때는 pytorch, 연구할때는 Tensorflow, 내 코드가 조금 더럽다 싶으면 Keras인 것 같습니다. 프레임 워크는 별로 안중요한 것 같네요.(초보자의 생각입니다 ㅋㅋ)


3. 자신이 연구자가 될지 개발자가 될지를 선택하고 이에 따라 공부방향을 선택하는게 좋을 것 같습니다. 연구자는 수학쪽이나 논리쪽으로 더욱 공부하면 좋을 것 같고, 개발자는 코드짜는 것을 공부하는데 더욱 많은 시간을 할애하는게 좋다고 생각합니다.



[공부자료]


1. 김성훈 교수님의 모두를 위한 딥러닝 강좌시즌1: https://www.youtube.com/watch…
** 딥러닝 입문강의로 수식이 적고 코드가 그렇게 복잡하지는 않습니다. 입문용으로 추천합니다.


2. 김성훈 교수님의 모두를 위한 RL강좌: https://youtu.be/dZ4vw6v3LcA
** 아직 안봐서 잘모르겠지만 김성훈 교수님 강좌임으로 강추합니다!


3. 김성훈 교수님의 Pytorch zero to all : https://www.youtube.com/playlist
** 김성훈 교수님의 딥러닝 파이토치 강의로 추천합니다.


4. PR12(논문 읽기 모임 유투브 녹화본): https://www.youtube.com/watch?v=auKdde7Anr8&t=4s
** 딥러닝관련 논문을 읽고 발표를 한 것을 동영상으로 올려주며 난이도는 조금 높을 수 도 있기때문에 논문을 읽어보신 분들께 추천합니다.


5. 테리의 딥러닝 토크: https://www.youtube.com/watch
** 엄태웅님의 딥러닝관련 토크로 저는 안봐서 잘모르지만 쉬운 영상도 있고 어려운 영상도 있다고 알고있습니다. 또한 엄태웅님이 원래는 기계공학 전공이기에 기구학? 관련 강의도 있는데 흥미있으신분들에게는 추천합니다!


6. 최성준님의 딥러닝 강의: http://www.edwith.org/search/show
** 입문용은 아닌 것 같고, 약간 어렵습니다. 하지만 다양하고 대표적인 주제들을(RBM, LSTM, GAN, IMAGE CAPTIONING, CNN, Neural style 등)을 가지고 있기에 cs231n을 듣고나서 본격적으로 딥러닝 공부를 시작하겠다 하시는 분들이 듣기에는 정말 좋은 강의인 것 같습니다. 영어발음이 너무 좋으십니다. 리스릭 보츠만 뭐신... ㅋㅋ


7. CS231N: 스텐포드 딥러닝 강좌로 딥러닝의 처음부터 최근에 뜨고있는 주제들에 대해서 강의가 진행됩니다. 매년 다루는 범위가 다르고, 강의해주시는 분들 실력도 엄청 출중하셔서 영어만 잘한다면 정말 추천드리는 강좌이고 영어를 잘못해도 꼭 들어야하는 강좌라고 생각합니다.


8. Natural language processing at stanford: https://www.youtube.com/watch…
** 컴퓨터 비전 분야에서는 CS231N이 있다면 Natural language processing에는 이 강좌가 있습니다!


9.Andrew NG 코세라 강의: 딥러닝의 대가 Andrew NG의 딥러닝 강의가 코세라에 있습니다. 강력 추천하지만 제가 안들어봐서 난이도가 어떤지는 잘 모르겠습니다.


10.문일철 교수님 인공지능학개론1 : http://kooc.kaist.ac.kr/machinelearning1_17
**전통 머신러닝에 대한 강의로 기본적인 확률통계 MLE, MAP부터 시작해서 SVM까지 진도를 나갑니다. 내용은 살짝 어려울 수가 있으며 개인적으로 Generative model공부하기전에 들으면 좋다고 생각합니다. 머신러닝에서 확률통계가 어떻게 사용되어 왔는지를 느낄 수 있는 강의라고 생각합니다. 강추!


11.문일철 교수님 인공지능학개론2: http://kooc.kaist.ac.kr/machinelearning2__17
** 베이지안 네트워크, clustering, Markov 체인, mcmc 방법 등을 다루며, 내용이 상당히 어렵지만 논문을 읽다보면 항상나오는 그놈의 markov때문에 저는 수강하기로 했습니다.


12. 문일철 교수님기계학습 심화강좌: https://www.youtube.com/watch
** 대학원 수업정도의 난이도를 가진 강좌입니다. 변분추론 및 최근 유행하고?? 있는 Gaussian process에 대해 다루는 수업인데 아주 어렵습니다 ㅠㅠ(아직 안들었지만 느낌상으로 그럼..)


13. 남세동님의 휴먼 러닝: https://www.youtube.com/watch
** 안들어 봐서 잘은 모르겠지만 강의 시간이 그렇게 길지도 않고 남세동님이 워낙 똑똑하시고 자신만의 철학이 확고하시기에 들으면 정말 도움이 많이 될 것이라고 생각합니다!!



[공부 깃허브]


1. 활석님의 Gan Github: https://github.com/…/tensorflow-generative-model-collections
** 두말할 필요가 없습니다.


2. 최성준님의 깃헙: https://github.com/sjchoi86
** 정말 많은 공부자료들이 있습니다.


3. 김준호 님의 깃허브: https://github.com/taki0112
** 코드가 정말 깔끔하여 정말 좋습니다 ㅎ


4.차준범님의 깃허브: https://github.com/khanrc/tf.gans-comparison
** 활석님과 마찬가지로 ICCV 튜토리얼에 등장한 레포지토리 입니다.


5.HVASS-LABS: https://github.com/Hvass-Labs/TensorFlow-Tutorials
** 제가 초창기에 공부했던 자료입니다. 그렇게 어렵진 않지만 코드가 상당히 길어 힘들 수도 있습니다.


[수학관련 자료]


1. 비숍의 PRML 책을 한글로 번역해놓은 블로그: http://norman3.github.io/prml/
** 이 어려운 것을 이 분이 해냈습니.....ㄷ


2. 베이지안 딥러닝 관련 최성준님 자료 :https://github.com/sjchoi86/bayes-nn
** 대단하십니다 ...


3. 조준우 님의 PRML 요약 : http://nbviewer.jupyter.org/…/blob/m…/PRML/prml-chap2.ipynb…
** 세상에는 정말 잘하는 사람들이 많은 것 같네요.


4. 딥러닝에서 사용하는 Matrix Calculus: http://parrt.cs.usfca.edu/doc/matrix-calculus/index.html


5. 3Blue1Brown: https://www.youtube.com/watch…
** 이 유투브 주인의 정체가 궁금합니다. 외계인이 아닐...런지 ㅋㅋ


[공부 블로그]


1. 조대협님의 블로그 :http://bcho.tistory.com/1149
** 조대협님하면 두말없이 봐야되는거 아니겠습니까? ㅎㅎ


2. 초짜 대학원 생입장에서 이해하는 ~ 블로그: http://jaejunyoo.blogspot.com/…/generative-adversarial-nets…
** '자칭' 초짜라고 말하시는 갓재준님께서 운영하는 블로그인데 쉽게 여러가지 딥러닝 이론들을 설명해놨다고 합니다. 솔찍히 쉽지는 않은 그런 블로그입니다. 그렇다고 그렇게 어렵지도 않아요 ㅎ


3. 라온피플 블로그: https://laonple.blog.me/221196685472
** 제가 공부했던 블로그로 정말 쉽게 잘 설명 해놨습니다.


4. 송호연 님의 블로그: https://brunch.co.kr/magazine/ai-first
**KL-Divergence 잘봤습니다 ㅎ


5. 블로그는 아니지만 제가 만들었던 자료들 입니다. 이것도 많이 읽어주세요!
https://www.facebook.com/groups/TensorFlowKR/permalink/608541436153585/


[기타 링크자료]


1. 활석님 딥러닝 정리자료 : https://www.facebook.com/groups/TensorFlowKR/permalink/451098461897884/


2. 활석님 VAE자료: https://www.facebook.com/groups/TensorFlowKR/permalink/496009234073473/


3. 네이버 테크톡: http://tv.naver.com/v/2417457


4. 활석님의 입문자를 위한 글모음:https://www.facebook.com/groups/TensorFlowKR/permalink/490430184631378/


5. Jungwon Kim님의 코세라강의 후기: https://www.facebook.com/groups/TensorFlowKR/permalink/599358067071922/


6. 박재성님의 딥러닝 공부 후기: https://www.facebook.com/groups/TensorFlowKR/permalink/584811878526541/
** 아주 기억에 남았던 후기로 생각합니다.


이상이고 길이 상당히 길어 오탈자나 문법에 안맞는 말들이 많을 수도 있지만 이해해주시고 읽어주시길 부탁드립니다. ㅎ
다들 즐거운 하루되세요!

Agustinus Kristiadi's Blog
wiseodd.github.io

번호 제목 글쓴이 날짜 조회 수
2 styleGAN [16] 개발팀 2019.07.02 441
» 머신러닝 스터디를 위한 친절한 안내 [3] 개발팀 2019.02.01 2964