딥러닝 입문부터 심화까지 강의,책,공부소스 추천(개정4판)

딥러닝 입문부터 심화까지 강의,책,공부소스 추천(개정4판)

딥러닝이란?

개쩌는 비선형함수입니다.

농담이고, 간단히 설명하자면 인간의 뉴런을 모방해 신경망을 깊게 쌓아올려 어떠한 입력에 대해 어떠한 출력을 내는 구조를 Deep Neural Network, DNN이라 부릅니다. 주어진 입력에 대해 원하는 출력이 나오도록 DNN을 잘 조정하는 것을 딥러닝이라 부릅니다.

이렇게 말해봐야 별로 와닿지 않을 수 있을텐데 쉽게 말하면 요새 인공지능 기술은 다 딥러닝에서 나옵니다.

Pasted image 20221117215521.png
위 그림을 한번 봅시다. 아름답죠? AI가 그린 겁니다. 이런 거 만드는 인공지능 만드는 게, 딥러닝 공부하면 할 수 있는겁니다.

참고로 위 그림은 미술 대회 나가서 상 탔습니다. AI가 그린 그림이 미술대회에서 우승했다. 이 그림은 표절일까?을 참고해 보세요.

요새 Stable Diffusion 이후로 생성모델이 인기인데, 아무튼 비전 계열 생성모델을 예로 들면 텍스트가 주어졌을 때 그림을 출력으로 뱉는 것, 스케치를 줬을 때 완성된 그림을 뱉는 것, 그림의 일부를 가리고 줬을 때 알아서 비워진 부분을 채워서 주는 것(impainting) 등등을 할 수 있습니다.

Stable Diffusion 이후로 ChatGPT 붐도 왔었는데, 최근 이미지를 보내고 받을 수 있는 Visual ChatGPT도 공개했습니다. (소스코드도 900줄밖에 안 됩니다!) 그리고 GPT-4가 공개를 기다리고 있지요.

Pasted image 20230311143405.png

아무래도 잘 모르는 사람도 가시적으로 결과를 확인하기 쉬운 게 생성모델인지라 생성모델 위주로 소개를 했는데, 머신러닝/딥러닝은 생성모델 말고도 쓰임새가 정말로 엄청나게 많습니다. 대중에게 알려진, "붐"이라고 할 수 있는 사건은 알파고(2016년), Stable Diffusion(2022년), ChatGPT(2023년)정도밖에 없는 듯하지만 이 분야는 매일 수천 수만편의 논문이 쏟아져 나오고 있고 이 중 새롭고 재밌는 연구도 굉장히 많습니다.

딥러닝 배우기 위해 필요한 선행 지식

고등학교 수학을 알고 있다면 누구나 배울 수 있습니다. 기초적인 프로그래밍(주로 파이썬)을 할 수 있는 편이 좋으니 파이썬도 잘 모른다면 파이썬 강의를 먼저 듣고 그 다음 듣기를 권합니다. 참고로 파이썬은 다른 프로그래밍 언어에 비해 매우 쉬운 편이니 부담을 가질 필요가 없습니다. 딥러닝 역시도 일단 저는 수학이나 물리 등에 비해 매우 쉽다고(저는 주전공이 물리입니다) 생각하고 있는데, 이건 주관적인 거니 사람마다 다를 수 있습니다.

고등학교 수학과 기초 프로그래밍 말고 그나마 중요한 건 선형대수인데, 선형대수를 모른다고 하더라도 입문 강의를 듣는다면 필요한 만큼은 소개해주므로 크게 어렵다고 느끼진 않을 것 같습니다. 물론 그래도 잘 모르겠다, 또는 선형대수를 기초부터 들어보고 싶다면 관련 강의를 먼저 봐야 합니다.

그리고 당연히 ML을 깊게 파려면 수학 지식이 많이 필요합니다. 하지만 입문자용 강의 듣고 대충 딥러닝을 필요한 데에'공학적으로 써먹는 데에는 딱히 수학 지식이 필요하지 않은 경우가 많습니다. 그냥 코드 몇 줄 복사하면 원하는 게 돌아가는데 뭐... 개발 위주로 딥러닝을 사용하는 엔지니어라면 요구되는 수학적 능력의 하한선이 그리 높지는 않습니다.

그래서 어떻게 딥러닝을 공부하는가?

  1. ML/DL 기초 강의를 듣는다.
  2. ML/DL 강의를 듣다가 기초 프로그래밍/기초 수학(주로 선형대수)가 부족하다고 느끼고 지금 듣는 강의로 해결이 안된다 싶으면 따로 강의를 듣든 책을 찾아보든 해야 한다.
  3. 여기까지가 딥러닝을 찍먹해볼 사람에게 필요한 정도입니다. 이후 최신 연구 내용은 강의에서 알려주지 않기 때문에 논문 알아서 찾아서 읽고 필요한 거 구현해서 쓰는 능력을 길러야 됩니다. 특히, 딥러닝의 경우 자기가 뭘 직접 구현하지 않아도 유용한 라이브러리 여러 가지를 갖다가 붙여서 많은 걸 만들 수 있기 때문에 그런 활용을 직접 해봐도 좋습니다.
  4. 또 요새 세상이 좋아져서 ML/DL 기초 강의를 들은 후에도 들어볼 만한 강의가 되게 많습니다. 예를 들어 ML 기초와 DL 기초를 듣고 난 후에 CV, NLP, RL, GNN 등 한 주제를 자세히 다루는 강의를 들을 수도 있고, 아예 수학적인 내용이 깊게 들어간 ML 강의를 들어볼 수도 있습니다. 인터넷에 공개된 강의도 많고 분야가 워낙 넓어서 한두개의 강의로 모든 분야를 공부하는 건 불가능합니다. 필요에 따라 찾아 들으면 됩니다.

1. 파이썬 및 컴퓨터공학 기초

파이썬은 워낙 쉬운 언어라 아무데서 조회수 많은 유튜브 강의를 보고 배우든 책을 보고 배우든 아무거나 보고 배워도 배우는데는 별 문제가 없습니다.

  • 점프 투 파이썬
    • 유명한 파이썬 책이고 인터넷에 책 내용이 전부 공개되어 있습니다.
  • Harvard CS50
    • 컴퓨터공학 기초를 24시간에 배우기에 매우 좋은 강의입니다. 마찬가지로 유튜브에 전 강의가 공개되어 있습니다. 파이썬만을 배우는 강의는 아닙니다.
  • 파이썬 추월코스
    • 넘파이, 컴퓨터비전 기초, OOP, GUI, HPC(멀티스레딩 등), 인터넷 프로그래밍, 딥러닝과 인공지능 등 내용은 상당히 충만해 보이고, 그래서 이 추천 목록에 넣었지만, 저는 수강한 적이 없음을 미리 밝힙니다. (미리보기 정도는 저도 확인했습니다.)
    • 수강한 적도 없는 유료 강의를 추천하는 것이 부적절하다는 것은 알고 있으나, "내가 파이썬을 처음 배웠을 때 이 강의를 봤으면 기꺼이 결재했을 것 같다"라는 생각이 들어서 여기 수록했습니다. 강사분도 전 교수로 압니다.
    • https://www.youtube.com/playlist?list=PLNfg4W25TapwHYK6p6cHe2JYBZbIKi8x2 이 링크가 "강의 미리보기"입니다. 제 추천이라고 의존하지 말고 직접 강의 목차와 수강후기 등을 찾아보고 수강을 결정하길 바랍니다.

2. ML/DL 기초 강의

Machine Learning 강의는 시간이 좀 지난 강의를 들어도 괜찮지만, 개인적으로 Deep Learning 강의는 가능한 최신 강의를 듣는 것이 좋다고 생각합니다. 1년만 지나도 변하는 게 엄청나게 많고 2년만 지나도 기초 강의에 내용이 좀 추가되어야 할 수준입니다.

ML 강의를 들은 후 DL 강의를 듣는 게 정석적인 절차이긴 한데, 보통은 그냥 바로 DL 강의를 들어도 됩니다.

이 글은 제가 확인한 강의 위주로 소개하며 더 많은 강의 목록을 보고 싶다면 https://github.com/dair-ai/ML-YouTube-Courses 같은 곳을 참고하셔도 좋습니다.

Machine Learning

  • Andrew Ng, Machine Learning Specialization
    • 가장 보편적으로, 노베이스인 누구라도 들을 수 있는 강의로 머신러닝에 입문하고 싶은 누구에게나 추천하기 좋습니다.
    • DeepLearning.ai에서 제공하는 다양한 강의가 있는데, 자세한 정보를 얻기 위해서는 https://www.deeplearning.ai/ 을 참고하길 바랍니다.
  • CS229: Machine Learning(2018)
    • 유튜브에 공개된 Stanford의 강의로 바로 위에 소개한 Coursera 강의와 같은 강의자인 Andrew Ng이 강의합니다. 코세라의 강의보다 스탠포드에서 한 강의가 조금 더 학생들의 베이스가 있다고 상정해서 수학적인 내용 등이 더 자세하다고 알고 있지만 둘 모두를 들어보지 않아 정확히는 모릅니다.
    • Coursera의 경우 퀴즈 등으로 학생의 이해도를 점검하는 부분도 있어서 둘 중 뭐가 나을지는 저는 잘 모르겠습니다.
  • Introduction to Machine Learning (Tübingen, 2020/21)
    • University of Tübingen에서 제공하는 강의입니다.
    • 같은 채널에서 Statistical Learning 강의도 제공하는데, 수학이나 통계에 흥미가 있으신 분이 들으면 매우 재밌게 들을 수 있을 겁니다. 같은 채널에서 pml 강의도 제공하는데 이건 저도 잘 몰라서.. 또 Deep Learning과 Computer Vision 강의도 제공하니 관심 있으신 분 참고 바랍니다.
  • Google 머신러닝 교육
    • https://developers.google.com/machine-learning
    • 구글의 머신러닝 코스인데, 내용이 계속 추가되고 있습니다. 들어볼만하다 판단하여 여기 수록합니다.
    • Foundation courses의 Machine Learning Crach Course를 비롯하여 RecSys 등을 포함한 Advanced courses까지 제공합니다. 다만 강의보다 docs의 비중이 더 큰 듯? 그리고 약간 docs 하나 하나 내용이 미묘하게 적은 것 같긴 한데..
    • 그리고 Tensorflow의 고향(?)인 Google답게 TensorFlow를 주로 내용을 제공합니다.

참고할 만한 책자는, 아래에서 소개할 교과서들입니다만, 책을 안 보고 강의로 공부해도 무방하고 강의를 안 보고 책으로 공부해도 무방합니다.

Deep Learning

  • (추천) MIT 6.S191: introduction to Deep Learning
    • 이 강의를 추천하는 이유는 간단합니다. 매년, 심지어 지금인 2023년까지도 강의가 계속 업데이트되어 올라오고 있습니다. 올라오는 내용도 딥러닝의 여러 분야를 통틀어 넓은 내용을 다루고 있어 매우 들을만 하다고 판단됩니다.
    • 2023년 강의는 이 글을 쓰는 지금 올라오는 도중이고, 2022년 강의 기준으로 설명하자면..
      • RNN+Transformers, CNN, Deep Generative Models, RL, Deep Learning New Frontiers, 자율주행, ASR, AI for science, Uncertanity in DL 등을 소개합니다.
      • 내용이 매우 알차 보이고 특히 후반부 강의 내용(자율주행, AI for Science, ASR 등)은 외국 대학 강의에서 흔히 보이는 형태대로 외부 인사 초청강연으로 보입니다.
  • Andrew Ng, Deep Learning Specialization
    • Andrew Ng의 Machine Learning Specialization에서 이어지는 Deep Learning 강의입니다.
  • cs230: Deep Learning(2018)
    • Andrew NG이 스탠포드에서 강의한 Deep Learning 강의입니다. 2018년이면 꽤 옛날이라 위의 MIT 강의를 듣는 걸 더 추천합니다.
  • 모두를 위한 딥러닝 2(2019)
    • 글을 다 쓰고 보니 한글 강의가 단 하나도 없어서 급하게 추가했습니다. 저는 강의를 들을 때는 영어나 한글이나 그게 그거고 오히려 영어가 좀 더 편한 구석이 있어서 소개한 강의가 전부 영어 강의인지는 모르고 있었습니다. 다만 이 강의 역시 2019년으로 옛날(?) 강의라 위의 MIT 강의를 더 추천합니다.
    • 한글 자료가 더 궁금하신 분은 국문과 공대생님의 직접 보고 추천하는 머신러닝 & 딥러닝 & 수학 총정리 글을 참고 바랍니다.
    • 이 글에서 소개하는 책 중에 이름이 한글인 책이 있는데 그런 책은 다 한국에 나오는 한글로 된 책(보통 번역서)이니 걱정하지 않으셔도 됩니다.

참고할 만한 기초적인 책자는,

  • 밑바닥부터 시작하는 딥러닝
    • 딥러닝의 기본을 numpy만 활용해 직접 구현하며 배워나가는 얇은 책으로, 딥러닝의 기초 중 기초를 배우기에 좋은 책입니다. 다만 당연히 책이 얇은만큼 내용도 빈약해서 딥러닝을 본격적으로 배우고자 한다면 추천하지 않습니다. 2편과 3편도 있는데 1편과 주제가 조금씩 다릅니다.
    • 딥러닝에 관심이 있는 고등학생에게 간단히 읽으라고 추천해주기 좋은 책입니다.
  • 케라스 창시자에게 배우는 딥러닝
    • 개정판도 나온 걸로 아는데 무난하게 괜찮은 책입니다. 다만 "케라스" 책이라는 게 장점이자 단점입니다. 케라스 책 중에서는 가장 좋지 않을까 싶습니다.
    • 케라스에 대해 간단히 설명하자면, 딥러닝을 할 때 쓰는 프레임워크로 크게 텐서플로우, 파이토치, 케라스가 있는데, 이 중 편의성에 중점을 둔 프레임워크가 케라스입니다. 코드 한두줄로 원하는 걸 짤 수 있다는 장점이 있으나 연구/개발할 때 파이토치/텐서플로보다 자주 쓰이진 않습니다.
    • 마찬가지로 딥러닝에 입문하는 사람들에게 추천해주기는 굉장히 좋은 책입니다. 이 책으로 간단하게 배우고 나중에 파이토치, 텐서플로 배우면 그만이라..

2.5 머신러닝 수학

ML/DL을 계속 공부해나간다면 수학이 굉장히 중요한데, 입문 레벨에서 수학이 그다지 크게 중요하진 않습니다. 고등학교 수학(미적분, 확통)와 선형대수만 알고있다면 별 문제 없을 수준입니다.

다만 공대생 중 생각 이상으로 수학을 모르는 사람이 많기 때문에 "머신러닝을 위한 수학"이라는 카테고리가 꾸준히 수요가 있고 공급도 있어 강의도 꽤 있습니다. 필요하신 분은 따로 찾아보시면 될 것 같습니다. 예를 들어 3b1b의 Essence of Linear Algebra 같은 영상이 유튜브에 올라와 있습니다. 추가적인 정보가 더 필요하신 분은 국문과 공대생님의 이 글의 3. 머신러닝 수학 섹션을 참고하시길 바랍니다.

서울대학교 컴공 기준, 공대생이라면 선형대수와 공학수학을 들은 후에는 왠만한 데서는 별 문제가 없을 겁니다. 제가 공학수학을 들어본 적은 없으나 대강 실라버스를 보니 꽤 알차게 배우는 듯 해서..

Section 4의 "교과서"에서 소개할 Mathematics for Machine Learning by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong(약칭 mml book)에서 머신러닝 수학을 잘 정리해 뒀고, 좋은 책임에 틀림이 없지만, 입문자에게 이 책의 내용이 전부 필요하진 않습니다.

이후로 수학을 좀 깊게 공부할 예정이라면 어디서 이상한 강의 주워듣지 말고 믿을만한 강의와 원서를 가지고 공부하길 추천합니다. 어디서 쉽고 간단하게 소개하는 강의 같은 거 잘못 주워들으면 왠만해서 틀린 내용을 가르치진 않지만(물론 내용도 틀릴수도..) 내용이 얕고 구성이 이상한 경우가 많습니다. 그냥 수리과학부 과목을 들으면서 그 강의에서 쓰는 원서를 사다 공부하는 것도 좋은 방법입니다.

3. 기타 기초 강의

Computer Vision

  • cs231n: Convolutional Neural Networks for Visual Recognition (2017)
    • 딥러닝이 Computer Vision에 어떻게 응용되는지 배우는 강좌입니다.
    • 과거에는 CV(Computer Vision)가 딥러닝이 (상업적으로 사용할 수 있을 정도로) 성공적이었던 유일한 분야였고 여기서 딥러닝의 기초를 몰라도 배울 수 있을 정도로 알려주기에 "딥러닝 기초강의"로 추천해주는 경우가 많았습니다. 아예 딥러닝을 이 강의로 처음 배운 사람도 꽤 있을 겁니다.
    • 다만 현재는 CV 외에 성공한 분야로 NLP(자연어처리) 등 다른 분야가 생겼고, cs231n이 너무 옛날 강의라 Transformers 같은 매우 중요한 아키텍처 역시 소개해주지 않습니다. 또 완전 초심자가 보기에 난도가 낮지는 않습니다.
    • 이러한 이유로 2023년 현재 추천해주고 싶은 강좌는 아닙니다. 혹시나 Stanford에서 강의 영상을 최근 강의로 업데이트해준다면 모를까..
  • 미시간 Deep Learning for Computer Vision
    • 2020년에 공개된 강좌로 매우 중요한 아키텍처인 Transformers 역시도 배웁니다. 3D Vision, RL과 같은 내용도 커버해 커버하는 내용이 상당히 넓습니다. 단, 그만큼 많은 내용을 단기간에 습득하기 어려울 수 있습니다.
    • 마찬가지로 완전 초보자가 보기에 난도가 높을 수 있습니다.
  • Computer Vision - Andres Geiger
    • University of Tübingen에서 제공하는 강의로, Deep Learning을 알고 있다는 전제 하에 Computer Vision 내용을 기초부터 소개합니다.

Reinforcement Learning

아래 강의는 RL 기초 강의입니다. RL이 뭔지 모르는 사람은 한번 찾아보고 수강을 결정하세요!

Pasted image 20230310231812.png

  • Huggingface Deep RL course
  • Stanford CS234: Reinforcement Learning이라는 강의도 있는데 뭘 배우는지 제가 확인해보진 않았습니다.

NLP

아래 강의는 NLP 기초 강의입니다. NLP가 뭔지 간단히 설명하자면 Natural Language Processing(NLP) 말 그대로 자연어, 우리가 회화로 주고받는 말을 모델에 입출력으로 넣어서 써먹는 겁니다.

위에서 잠깐 소개한 https://github.com/dair-ai/ML-YouTube-Courses 에서는 CS25: Transformers United를 NLP 섹션에 넣어뒀던데 뭐 완전 틀린 말은 아닌데 동의하진 않습니다. Vision에도 쓰이고 RL에도 쓰이고 Audio에도 쓰이고 그냥 어디에서나 쓰이고, 그런 다양한 쓰임새를 다루는 게 CS25라는 강의라...

Graph Machine Learning

GNN을 배우는 강의라 보면 됩니다. 많은 사람들에게 약간은 생소한 분야입니다. 이 글을 읽으시는 분이 입문자라면 무시하고 넘어가도 될겁니다.

  • Stanford CS224W: Machine Learning with Graphs: 보기 드문 GNN 입문격의 강의입니다. 고전 그래프 이론도 소개해주니(Katz index 등) 참고하기 좋습니다. 근데 교수님은 왜 224W를 two twenty-four double-u라고 읽는걸까요?
  • AMMI Geometric Deep Learning Course 2022: Geometric Deep Learning을 소개하는 강의인데 저는 재밌게 봤지만 아무에게나 추천하고 싶은 그런 강의는 아닙니다. 이론적으로는 참 그럴듯한데 실제로 어떻게 쓸지는 잘..
    • 수학과, 통계학과, 물리학과 출신이라면 재밌게 들을 수 있을 겁니다.

4. 교과서

ML/DL을 계속 공부할 사람에게 있어 교과서는 굉장히 중요하고 기초를 다지는 데 있어 매우 도움이 되는 책입니다. 하지만 이 글을 읽는 독자들 중 단순히 ML/DL에 얕은 정도의 관심만 있어 이제 입문을 시작하는 사람도 있을텐데, 그런 독자들에게 교과서를 읽으라고는 추천하지 않습니다. 사람 별로 의견 차이가 있을 수 있겠지만 저는 그런 뉴비들은 교과서를 읽기보단 쉽고 빠르게 이해할 수 있는 강의를 듣는 게 더 좋을 거라 생각합니다. 저는 공부에 있어 동기부여가 굉장히 중요하다고 생각하고 무작정 베이스 없이 교과서를 읽었다간 이해도 잘 안 가니 재미가 없고 이 분야에 대한 흥미를 잃을 가능성이 높다고 생각하거든요.

그래도 교과서는 분명 굉장히 중요한 것이 틀림없기 때문에 이 글에 교과서도 몇 권 실어놓습니다.

아래에서 머피(저자 이름이 Murphy인 책을 '머피'라고 부릅니다)와 이안 굿펠로 딥러닝은 누구나 알법한 굉장히 유명한 책입니다. 안 읽어봤더라도 이름 정도는 알아두시면 좋습니다. 그리고 찾아보면 pdf는 다 찾을 수 있고 원서는 상당히 비싼 편입니다.

  • Mathematics for Machine Learning by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong
    - https://mml-book.github.io
    - http://savanna.korea.ac.kr/wp/?page_id=605 에서 간략한 요약을 확인할 수 있으나 진짜 '간략'해서 추천하진 않습니다.
  • Probabilistic Machine Learning: An Introduction by Kevin Patrick Murphy
    • 원래도 유명한 책이지만 2022년에 개정되며 최신 딥러닝 연구 내용도 추가되었습니다. 교과서치고 굉장히 트렌드를 잘 따라가는 책입니다.
    • https://probml.github.io/pml-book/book1.html
  • Deep Learning by Ian Goodfellow and Yoshua Bengio and Aaron Courville
  • 이것 외에는 '단단한 머신러닝'(번역서입니다) 같은 책자를 추천할 만합니다. 다들 성격이 상당히 다르니 내용을 잘 참고해서 고르길 바랍니다.

5. 자료 정리집

  • DAIR-AI에서 공개한 ML Youtube courses가 있습니다. 정말 많은 강의가 체계적으로 정리되어 있고 바로바로 링크 타고 들어가서 볼 수 있습니다.
  • 뭐 사실 이런 식으로 GitHub에 참고할 만한 소스 정리해둔 곳은 상당히 많습니다. awesome-뒤에 자신이 원하는 키워드 붙여서 검색하면 됩니다. 예를 들어, awesome-neural-ode 이런 것도 있고, awesome computer vision도 있고, 그냥 검색하면 대부분 나옵니다.
  • 입문자용 딥러닝 & 수학 강의 총정리본 by 국문과 공대생: 책과 강의를 많이 모아뒀으니 참고하기 좋습니다. 다만 외국 강의를 많이 담아두진 않았습니다.

Youtube Channels

기타등등..

6. 기타 자료실

아래 강좌나 자료는 제가 직접 들어보거나 확인한 자료입니다.

  • https://huggingface.co/blog 에서 다양한 튜토리얼을 huggingface 예제와 함께 확인할 수 있습니다.
  • Pennylane: Quantum ML 관련해서, 몇 안되는 쓸만하다고 볼 수 있는 라이브러리입니다. 홈페이지에서 양질의 각종 튜토리얼도 제공합니다. 비슷한 주제의 라이브러리로 qiskit, cirq, tensorflow quantum, NVIDIA QUDA 등이 있습니다. 양자컴퓨팅은 구글, MS, IBM, NVIDIA 등 많은 대기업에서 연구를 진행하고 있는 분야입니다.

아래 수록하는 강의나 자료는 거의 제가 목차 정도만 훑어보고 안의 내용은 제대로 보지 않은 것입니다. 알아서 걸러서 필요한 것만 보셔야 됩니다. 앞으로 계속 업데이트될 예정입니다.

논문 리뷰

논문 읽는 법

최신 연구 내용은 강의에서 알려주지 않기에 직접 논문을 찾아 읽어야 하는데, 처음 시작하기도 전에는 논문이 굉장히 어려워 보일 수 있는데 몇번 해보고 나면 생각보다 굉장히 쉽다는 것을 알게 될 겁니다.

논문을 읽는다는 건 1. 읽을 논문을 찾기 2. 찾은 그 논문을 읽기 이 두 과정이 모두 중요합니다. 특히 ML/DL 분야는 하루에도 수천 수만편의 논문이 쏟아져 나오기 때문에 아무 논문이나 찾아 읽는 건 물리적으로 불가능합니다. 그래서 자신에게 필요한 논문만 골라서 그것만 읽는 능력이 상당히 중요합니다.

그래서 결국 본인 연구 주제나 필요한 내용과 겹치는 논문 리스트를 쫙 뽑고, 하나씩 Abstract/Architecture/Results, 표나 그림, 또는 논문 Github 페이지나 데모 등을 훑어보며 진짜로 필요한 논문인지 확인하고(요새 논문들이 그림 다 잘 넣어줘서 그림만 봐도 핵심은 이해가 가는 경우가 많습니다), 필요한 논문만을 가져와 정독하는 과정이 필요합니다.

근데 뭐 이걸 할 정도면 이미 논문을 많이 읽어봤거나 근시일 내에 많이 읽을 예정인 사람이니 제가 더 해줄 말은 없고(오히려 제가 배워야 하는 입장..), 논문을 아예 처음 읽어서 아직 하나의 논문도 제대로 읽기 어려운 사람들을 위해 팁을 좀 적어보려고 합니다.

찾은 논문 읽고 이해하는 법

  1. 무식하게 논문 하나를 골라서 혼자서 전부 읽을 필요가 없습니다. 애초에 논문을 처음 읽어보는 사람이면 보통 좀 유명한 논문을 골라서 처음 읽기로 결심했을텐데 그럼 유명한 논문의 경우 다른 사람이 리뷰한 글이나 영상이 인터넷에 꽤 많습니다.
  2. 논문 리뷰를 전문적으로 해주는 유튜브 채널도 많고 블로그(영문/한국어 모두)도 많습니다. 대충 논문 이름 구글링만 해도 꽤 많이 나올겁니다. 추천할 만한 채널이나 블로그는 후술합니다.
  3. 특히 딥러닝 분야 논문의 경우 오픈소스인 경우도 많고 연구에 대한 Github 페이지를 운영하는 경우도 많습니다. 오픈소스인 경우 Github에서 소스코드를 읽으며 논문에서 모호했던 부분을 바로 이해할 수도 있고, Github pages가 있는 경우 거기 들어가서 논문에 대한 간결한 소개나 Demo를 확인할 수도 있습니다. 특히 Demo가 있는 경우 데모 이미지가 있기도 하고 데모 비디오가 있기도 하고 Interactive demo가 있는 경우도 종종 있는데 참고하면 이게 어떤 결과를 내는지 가시적으로 확인하기 좋습니다. 아니면 저자가 유튜브에 소개 영상을 올리는 경우도 종종 있습니다. 해당 논문이 올라간 컨퍼런스 유튜브 채널을 통해 확인할 수 있는 경우도 있고요.

저는 처음 딥러닝 배울 적에, cs231n 듣고 바로 논문리딩했었습니다. 개인적으로 논문 처음 읽기 시작한 몇달 간은, 먼저 혼자 논문을 전부 읽어보며 내용을 정리한 후에 리뷰 영상을 통해 내가 이해한 바가 맞는지, 리뷰해주는 사람의 인사이트를 더 얻어갈 수 있는지 봤습니다. 또는 처음 혼자 읽어보기 좀 버거운 논문의 경우 리뷰 영상을 먼저 보고 논문을 읽기도 했습니다. 물론 초록/아키텍처/결과 정도만 간단히 읽고 넘어가는 경우도 많았고요. 요새 들어서는 리뷰 글이나 영상 같은 거는 급할 때나 찾아보고 아니면 그냥 직접 읽습니다. 그게 더 straightforward해서요.

읽을 논문 찾는 법

  1. 일단 구글링이 기본입니다. 그냥 구글링할수도 있고, Google Scholars 이용해서 자신이 관심 가는 논문 많이 쓰는 저자를 찾아서 그 저자가 쓴 논문만 찾아볼 수도 있고, 어디 연구실에서 나오는 논문만 찾아볼 수도 있고, 아무튼 이런 식으로 찾으면 됩니다. Paperswithcode를 이용해도 좋습니다. 이게 뭔지는 아래에서 소개합니다.
  2. 여러 최신 연구 동향을 소개해주는 유튜브, 트위터 등을 참고하는 것도 좋습니다.
  3. 학회 참가도 좋은 방법입니다.

유튜브 채널

  • Yannic Kilcher: 논문 리뷰, 최신 연구동향, 최신 이슈, 도움되는 라이브러리 등 도움되는 것을을 많이 소개해줍니다. 강력 추천함.
  • PR-12: 마찬가지로 논문리뷰 해주는 채널인데 한국인들이 모인 모임이기 때문에 한국어로 진행됩니다. 여담인데 지인 중 PR-12 영상을 싹 다 다운로드해다가 점심시간마다 하나씩 봤다는 사람이 있습니다.
  • 고려대 산업경영공학부 DSBA: 논문 리뷰 영상이 종종 올라옵니다.
  • 하정우 소장님 Weekly Arxiv Casual Talk: 일단은 영상물이니 '유튜브 채널'에 넣어두긴 했지만 유튜브 영상이 올라오진 않습니다.

블로그

  • hoya012님 블로그: 논문 리뷰한 여럿 글이 있는데, 특히 비전 관련 주요 모델 전부를 시간대에 따라 싹 다 요약한 시리즈물(링크는 시리즈 첫번째 글)이 있습니다. 비전이 관심 분야가 아니어도 읽어보기를 강력 추천합니다.

제 블로그에서도 논문리뷰를 하고 있기는 합니다. 하고 싶을 때 하고 싶은 논문을 마음대로 리뷰해서 추천하기는 좀 그렇지만..

트위터

  • AI Pub: Stable Diffusion 설명해준 글로 처음 접했는데 아주 이해하기 쉽게 설명을 잘 해줍니다.
  • 비슷하게 DAIR AI 등 Weekly Best Papers 같이 좋은 자료를 트윗으로 남겨주는 곳이 좀 있습니다.
  • 예를 들어 3월의 트렌드 페이퍼 이런 거 트위터에 누군가 다 올려줍니다!

뉴스레터(이메일 구독)

하나의 논문을 찝어서 리뷰해준다기보다는 좀 넓게 최신 이슈, 최신 연구 동향을 주로 알려줍니다.

  • 위클리 NLP
  • Smilegate.AI
  • AI타임스

기타 유용한 사이트

  • Paperswithcode: 각종 논문 metric과 implementation 쉽게 바로바로 확인할 수 있습니다. 데이터셋별 SOTA도 바로 확인할 수 있습니다. 정말로 유용한 사이트입니다. 다만 사람이 많이 없는 분야(또는 최신 논문, 아니면 그냥 묻힌 논문 등)의 경우 메트릭이 등록되어 있지 않아 직접 등록을 하든 직접 찾아보든 해야됩니다. Trending paper 같은 것도 바로 보여줍니다.

유용한 Repository

  • wandb: 로깅에 매우 유용함. Hyperparameter tuning에도 활용 가능함(wandb sweep)
  • timm: 비전 계열 모델 쉽게 불러와서 사용하기에 매우 유용합니다.
  • open-mmlab 라이브러리: open-mmlab에서 나온 라이브러리가 굉장히 많은데, 개인적으로 그 중 mmdet(2d object detection), mmdet3d(3d object detection)을 유용히 쓴 경험이 있습니다. mmcls(2d image classification)도 매우 유용한데, timm 모델과 연동 기능도 있을 정도입니다. 뭐 오픈소스가 늘 그렇듯 부족한 점도 좀 있고 그래서 기여도 조금 했었는데 메이저 버전이 넘어가며 급격히 쓸만해지는 걸 보면 감회가 새롭습니다.
  • huggingface 라이브러리: 위에 소개한 huggingface blog글을 참고하면 더 좋습니다. 라이브러리도 한두개 속한 게 아니고 웹 서비스도 특색있어 뭔지 한마디로 소개하기는 뭐한데.. 그냥 매우 매우 매우 매우 좋은 겁니다. 다양한 모델 구현본 원클릭으로 웹에서 재현해볼 수도 있고 바로바로 가져다 쓸 수도 있습니다.
  • stable-diffusion-webui: 요새 SD가 핫하고, 그리고 보기 드문 대형 라이브러리가 있어서 공유합니다. SD 관련 툴박스 같은 느낌으로 엄청나게 많은 기능이 있습니다.
  • jax, pytorch lightning, DeepSpeed 등등... 라이브러리는 세상에 넘쳐날 만큼 많고 쓸모있는 것도 많으니(물론 자신의 목적에 따라 쓸모없는 것도 굉장히 많겠죠?) 알아서 잘 찾아서 알아서 잘 사용해야 합니다.
  • 또, 위에서 말했듯 왠만한 딥러닝 분야 연구는 보통 오픈소스고 repository가 공개되어 있기 때문에 필요한 게 있으면 해당 repository 찾아가서 사용하는 법 따라하면 되는 경우가 많습니다. 그렇게 쓸 수 있는 repository만 해도 정말로 엄청나게 많습니다. 물론 딱 보고 바로 갖다 쓸 수 있게 만들어놨는지는 좀 별개의 문제긴 한데..

우스갯소리(?)

Changelog

  • 2022년 1월 30일
    • 초판
  • 2022년 11월 17일
    • 개정 2판
  • 2023년 3월 10일
    • 개정 3판
  • 2023년 3월 15일
    • 개정 3판 추가수정
  • 2023년 3월 26일
    • 개정 4판(분야별 입문강의 분류, MIT 딥러닝 강의 추천, 한글강의 추가)