패스트 캠퍼스에서 김기현 강사님의 강의를 듣는 중,
혼란스러울 때마다 방향을 잡아줄 길잡이같은 강의 내용이 있어서 정리를 해 두려고 한다.
머신러닝 분야에서 실력을 쌓는다는 것을 크게 '이론'과 '실무'로 나누어 설명해주셨다.
논문 읽기
학회 참석
사이드 프로젝트 수행
경진대회 참가 ( feat. Kaggle )
하나씩 자세히 살펴보자.
모든 연구 분야에서 논문 읽기는 연구의 트렌드를 파악하고 앞으로의 연구 및 공부 방향을 정하기 위해
필수라는 것을 누구나 알고 있지만..!
어디서 어떻게 좋은 논문을 찾아서 어떻게 읽어야 하는지 모르는 사람들은 너무 많다. (나 포함..)
그래서 논문 읽기에 대한 김기현 강사님의 조언을 정리해보았다.
논문 찾을 사이트
ArXiv
Peer reivew 없이 바로 논문이 등재 됨.
매우 빠르게 업데이트되는 많은 새로운 논문들을 볼 수 있음.
OpenReview
좋은 논문을 찾는 방법( 좋은 논문 추천 받는 방법 )
ArXive Sanity
Facebook Community ( 추천 !! )
TensorFlow KR (한국에서는 가장 큰 커뮤니티)
PyTorch KR
Montreal AI (외국 커뮤니티)
내가 원하는 논문을 '키워드'로 찾고 싶을 땐?
Google님께 생각하는 키워드를 검색한다.
제목을 기준으로 괜찮은 페이퍼를 선택한다. 이 때 인용수도 고려한다. ( 인용수가 너무 적다면 고민해봐야 함 )
해당 페이퍼를 인용한 논문들을 찾는다.
해당 페이퍼가 인용한 논문들도 찾는다.
그러면 한 논문을 기준으로 많은 논문들을 찾을 수 있다!
그 논문들을 인용수 등을 고려해 우선 순위를 정해 차례로 읽기 시작하면 된다.
전형적인 논문 구성
Title : 제목
Abstract : 요약
Introduction : 소개
Previous Work : 기존 연구들의 한계와 motivation 언급
Methodology : 연구 방법 ( 실험 방식이나 모델 등 )
Experiment Result : 연구 결과
Discussion
Conclusion
Reference
(Appendix)
김기현 강사님께서 추천해주신 읽기 순서 및 집중해야 할 포인트
Abstract
Experiment Result
논문의 실험이 내가 하고자 하는 세팅과 비슷한지, 성능은 얼마나 향상되었는지 확인.
( 연구 결과를 읽고나서 성능이 충분히 좋고 괜찮은 연구 같으면 계속 읽기. 아니면 패스. )
Introduction & Previous work
Methodology
Discussion & Conclusion
Reference & Appendix
3단계에 걸친 논문 읽기
1단계 : 훑어보기 ( < 10mins )
2단계 : 읽기 ( < 1hour )
3단계 : 자세히 읽기 ( > 2hours )
문장 하나하나 신경 써서 읽기
논문의 Contribution 고민하기
이 논문이 이 분야에 어떤 기여를 했는지,
어떤 참신성이 있고 어떤 영향을 주는지 생각하며 논문 읽기.
최근에는 Virtual Conference로 사비로도 학회에 참여할 수 있는 기회가 많다.
학회에서 Tutorial을 잘 이용해보자! 논문의 저자들이나 전문가분들이 나와서 강의를 해주신다.
일반 머신러닝 분야
자연어 처리 분야
영상 처리 분야
음성 인식/합성
평소에 관심 있는 분야의 (관련 논문의) 모델 구현하기
모델을 실제로 적용해보기 : 하고 싶었던 프로젝트를 설정하여 진행
주의할 점
완성도가 중요 → 디테일에 신경을 쓰자.
논문에서 제시한 성능이 내가 구현한 모델에서도 나오는지,
왜 잘되는지, 왜 잘 안되는지 끊임없이 고민하기.
완성도와 디테일에 신경쓰고, '왜?' 되고 안되는지 고민하는 습관에서 실력이 향상된다.
GitHub는 나의 이력서나 마찬가지
자신이 진행한 프로젝트들을 잘 정리해서 GitHub에 올려두자.
연구기관이나 기업에서는 개인 프로젝트가 아닌 GitHub를 사용한 협업 경험도 중요하게 봄.
천리 길도 한 걸음부터
최소 성능을 보장하는 Baseline을 먼저 만들고,
모델, learning rate 등을 하나씩 짚어가며 성능 개선하기.
모르는 사람의 코드는 믿지 마라
구글, 페이스북 등의 개발자들이나 저자의 코드 등은 어느 정도 신뢰 가능.
하지만 다른 모르는 사람들의 코드는 오류가 있을 수 있고, 정리가 잘 안되어 있을 수도 있음.
다른 사람의 코드를 차용하더라도 코드를 온전히 믿지 말고 내 프로젝트에 맞게 가공할 수 있어야 함.
항상 '왜?'를 고민하자
코드를 수정할 때도 수정하는 이유를 생각하며 진행하고,
내 코드가 안되면 왜 안되는지, 되면 왜 되는지 분석하고 정리&기록해두는 습관이 필요.
그래야 실력이 향상될 수 있음.
실제 데이터를 만져볼 수 있는 기회 → 실무와 비슷한 분석 / 모델링 과정을 거칠 수 있음.
입상하지 못해도 좋은 경험이 될 것.