- 1. 포트폴리오
먼저, 프로젝트를 정하고 구현해보는 것이 좋다.
프로젝트 아이디어를 얻는데에 좋은 방법은 아래와 같다.
1) ML Sources를 얻기 좋은 곳
- Stanford's CS224n & CS231n projects
- ML Reddit's WAYR
- Kaggle Kernels
- Paper (ML : ICML, NIPS / CV : CVPR, ECCV, ICCV)
유투브, udemy, edwith, nomad, fast.ai, coursera 등.. 에서 인터넷 강의를 병행하며 기초를 탄탄히 하면서 관련 Paper들을 찾자. (논문 찾기 좋은 곳 : google scholar)
그 후 여러 논문, Reddit, Kaggle 글들을 읽어보면서 관심있는 주제, idea의 방향성을 먼저 잡는 것이 좋다.
프로젝트의 주제를 정했다면 관련된 기초되는 논문들부터 가볍고 빠르게 skimming하면서 기초를 다진다.
- 2. Theory 공부
프로젝트 주제와 관련된 기초 논문들을 skimming할때 중요한 것은 핵심되고 내가 몰랐던 notation들을 정리하는 것이다.
기초적이고 핵심되는 notation들은 반드시 익혀야한다.
논문리딩 실력향상에 중요한 3가지 key는 다음과 같다.
1) 자주나오는 알고리즘, gradient descent, linear regression, MLPs 등..을 이해하는 것
- Andrew Trask의 책, blog를 통해 numpy, gradient descent, linear regression, MLP를 배울 수 있다.
- 머신러닝 / 딥러닝 online 무료 교과서 16종 (https://www.facebook.com/awesomeai/posts/1803925309827212/)
- Ian Goodfellow의 Deep Learning책을 통해 여러 이론들을 배울 수 있다. (http://www.deeplearningbook.org/)
2) 수학적 notation들을 배우고 이해하는 것
- 논문에서 나오는 notation들은 바로바로 정리하는 것이 좋다.
3) algebra, calculus, statistics, ML의 기초를 다지고 이해하는 것
- 유투브 3Blue1Brown의 Essence of linear algebra, Essence of Calculus
- StartQuest의 the Basics (of statistics), Machine Learning
- 3. 논문 재구현
처음에 방향성을 잡은 논문과 관련된 기초 논문들을 위의 과정들을 통해 충분히 숙달하였다면
이제 그 방향성을 잡은 논문을 재구현하는 일이 남았다.
(현재 논문을 10편 정도 읽고 그 중 일부 논문에 대해서만 리뷰 및 재구현을 구현해본 시점에서 정리하는 글이니 처음 논문을 접하시는 분만 참고하시면 좋을 것 같습니다.)
논문을 공부하기 앞서 자신이 관심있던 분야를 아직 정하지 못했다면 다양한 프로젝트들을 검색해보면서 먼저 정하는게 좋다.
1. 자신이 관심있는 프로젝트에 필요한 기술들이 뭔지 찾았으면 해당 기술에 대해 기초가 되는 논문부터 읽어보기를 추천한다.
(ex. Object detection paper, Image retrieval papaer, Human object interaction papaer ...)
2. 영어가 익숙하지 않아 처음부터 논문을 그대로 읽기에 부담이 되는 경우 기초가 되는 유명한 논문들은 "논문이름" 리뷰와 같이 검색해보면 여러 블로그에서 한국어로 리뷰 및 요약한 것을 볼 수 있다.
이렇게 요약, 쉽게 정리해놓은 블로그들을 참고하면서 먼저 논문에 대한 큰 그림을 그리고나서부터 논문을 직접 읽으면 도움이 될 것이다.
3. 논문을 한 번 읽는다해서 절대로 해당 논문을 완벽히 분석할 수 없으므로 최소 5번은 읽는다는 생각으로 천천히 skimming하면서 읽는다.
논문을 읽고 재구현을 해보면서 정말로 이해했다 느끼는 순간은 직접 코딩을 통해 재구현을 했을때였다.
해당 논문을 Github에 검색해보면 논문저자가 올려놓은 공식 코드를 볼 수 있다.
맨바탕으로 논문을 재구현하는데에는 무리가 있으니
4. 논문저자가 공개한 공식 코드를 한줄한줄 읽어보며 전체적인 흐름과 핵심 기능들을 이해한다.
5. 마지막으로 공식 코드를 참고하며 직접 코딩하여 재구현을 해본다.
이렇게 1-5단계까지 모두 마쳐야 비로소 해당논문을 완전히 이해한 느낌이 들었다. 재구현을 해보기 전까지는 아무리
논문을 반복하여 읽어도 완벽히 세세한 부분까지 알고 이해하기 힘들다. 따라서 재구현이 정말 중요함을 강조한다.
출처 : https://github.com/Huffon/How-to-learn-Deep-Learning
여러 웹사이트와 지인분들의 조언을 통해 스스로 공부 순서를 정리하기위해 작성한 글입니다.
'인공지능 AI > 딥러닝' 카테고리의 다른 글
Linear Regression vs Logistic Regression (0) | 2020.01.09 |
---|---|
Objective Function, Loss Function, Cost Function의 차이 (0) | 2020.01.09 |
딥러닝 기본 용어 및 개념정리 (0) | 2020.01.04 |
Optimizer 종류 및 정리 (0) | 2020.01.04 |
머신러닝 기초 (1. ML Basic) (0) | 2020.01.02 |