[Tips] 머신러닝 혼자서 공부하는 방법

임수정·2022년 4월 2일
1

패스트 캠퍼스에서 김기현 강사님의 강의를 듣는 중,

혼란스러울 때마다 방향을 잡아줄 길잡이같은 강의 내용이 있어서 정리를 해 두려고 한다.

주제 : 머신러닝 혼자서 공부하는 방법

머신러닝 분야에서 실력을 쌓는다는 것을 크게 '이론'과 '실무'로 나누어 설명해주셨다.

I. 이론

  • 논문 읽기

  • 학회 참석

II. 실무

  • 사이드 프로젝트 수행

  • 경진대회 참가 ( feat. Kaggle )

하나씩 자세히 살펴보자.

1. 논문 읽기 - 논문 읽는 방법

모든 연구 분야에서 논문 읽기는 연구의 트렌드를 파악하고 앞으로의 연구 및 공부 방향을 정하기 위해

필수라는 것을 누구나 알고 있지만..!

어디서 어떻게 좋은 논문을 찾아서 어떻게 읽어야 하는지 모르는 사람들은 너무 많다. (나 포함..)

그래서 논문 읽기에 대한 김기현 강사님의 조언을 정리해보았다.

1-1. 논문 찾기

  • 논문 찾을 사이트

    • ArXiv

      • Peer reivew 없이 바로 논문이 등재 됨.

      • 매우 빠르게 업데이트되는 많은 새로운 논문들을 볼 수 있음.

    • OpenReview

  • 좋은 논문을 찾는 방법( 좋은 논문 추천 받는 방법 )

    • ArXive Sanity

      • 최신 논문들 모아보기, 다른 사람들이 많이 본 논문, 인기 논문들 모아 보기, 선택한 논문 저장하고 이를 바탕으로 논문 추천 받기 등의 기능이 있다.
    • Twitter

      • 유명한 논문 저자들, 개발자, 교수들의 트위터를 팔로우 해두면, 그 분들이 자신의 분야에서 괜찮은 논문이 나왔을 때 트위터에 올리실 수도 있다.
    • Facebook Community ( 추천 !! )

      • TensorFlow KR (한국에서는 가장 큰 커뮤니티)

      • PyTorch KR

      • Montreal AI (외국 커뮤니티)

  • 내가 원하는 논문을 '키워드'로 찾고 싶을 땐?

    • Google님께 생각하는 키워드를 검색한다.

    • 제목을 기준으로 괜찮은 페이퍼를 선택한다. 이 때 인용수도 고려한다. ( 인용수가 너무 적다면 고민해봐야 함 )

    • 해당 페이퍼를 인용한 논문들을 찾는다.

    • 해당 페이퍼가 인용한 논문들도 찾는다.

    • 그러면 한 논문을 기준으로 많은 논문들을 찾을 수 있다!

    • 그 논문들을 인용수 등을 고려해 우선 순위를 정해 차례로 읽기 시작하면 된다.

1-2. 논문 읽기

  • 전형적인 논문 구성

    • 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 고민하기

    • 이 논문이 이 분야에 어떤 기여를 했는지,

      어떤 참신성이 있고 어떤 영향을 주는지 생각하며 논문 읽기.

2. 학회 참석

2-1. 학회 이용

  • 최근에는 Virtual Conference로 사비로도 학회에 참여할 수 있는 기회가 많다.

  • 학회에서 Tutorial을 잘 이용해보자! 논문의 저자들이나 전문가분들이 나와서 강의를 해주신다.

2-2. 머신러닝 관련 학회 정리

  • 일반 머신러닝 분야

    • NeurIPS, ICML, ICLR
  • 자연어 처리 분야

    • ACL, EMNLP(EMNLP 2021)
  • 영상 처리 분야

    • CVPR, ICCV
  • 음성 인식/합성

    • Inter Speech

3. 사이드 프로젝트 수행

3-1. 실력 향상을 위한 프로젝트 수행 시

  • 평소에 관심 있는 분야의 (관련 논문의) 모델 구현하기

  • 모델을 실제로 적용해보기 : 하고 싶었던 프로젝트를 설정하여 진행

    • e.g. 주식 투자 알고리즘 만들기
  • 주의할 점

    • 완성도가 중요 → 디테일에 신경을 쓰자.

    • 논문에서 제시한 성능이 내가 구현한 모델에서도 나오는지,
      왜 잘되는지, 왜 잘 안되는지 끊임없이 고민하기.

    • 완성도와 디테일에 신경쓰고, '왜?' 되고 안되는지 고민하는 습관에서 실력이 향상된다.

  • GitHub는 나의 이력서나 마찬가지

    • 자신이 진행한 프로젝트들을 잘 정리해서 GitHub에 올려두자.

    • 연구기관이나 기업에서는 개인 프로젝트가 아닌 GitHub를 사용한 협업 경험도 중요하게 봄.

3-2. 머신러닝 프로젝트 팁

  • 천리 길도 한 걸음부터

    • 최소 성능을 보장하는 Baseline을 먼저 만들고,

      모델, learning rate 등을 하나씩 짚어가며 성능 개선하기.

  • 모르는 사람의 코드는 믿지 마라

    • 구글, 페이스북 등의 개발자들이나 저자의 코드 등은 어느 정도 신뢰 가능.

    • 하지만 다른 모르는 사람들의 코드는 오류가 있을 수 있고, 정리가 잘 안되어 있을 수도 있음.

    • 다른 사람의 코드를 차용하더라도 코드를 온전히 믿지 말고 내 프로젝트에 맞게 가공할 수 있어야 함.

  • 항상 '왜?'를 고민하자

    • 코드를 수정할 때도 수정하는 이유를 생각하며 진행하고,

      내 코드가 안되면 왜 안되는지, 되면 왜 되는지 분석하고 정리&기록해두는 습관이 필요.

    • 그래야 실력이 향상될 수 있음.

4. 경진대회 참가 ( feat. Kaggle )

  • 실제 데이터를 만져볼 수 있는 기회 → 실무와 비슷한 분석 / 모델링 과정을 거칠 수 있음.

  • 입상하지 못해도 좋은 경험이 될 것.

profile
유쾌하게, 열정적으로, 진심을 다해

0개의 댓글