개인 기록/대학원 진학 & Tip

Roadmap for Deep Learning : 딥러닝 공부 자료 및 로드맵 (updated in 2024)

CVMaster 2023. 12. 20. 16:21
반응형

예전에 동아리 후배들을 위해 기록했던 글이 오래되어서, 본 블로그에서 이어서 update하려고 합니다.

Deep Learning Roadmap for Mechanical Engineering Students - KAsimov Wiki (korea.ac.kr)

 

Deep Learning Roadmap for Mechanical Engineering Students - KAsimov Wiki

본 글의 목적은 KAsimov 회원 및 Machine Learning & Deep Learning을 학습하고자 하는 기계과 학생을 위한 학습 가이드라인입니다. 학습하는 데 있어서 추천되는 순서가 있겠지만, 반드시 따를 필요는 없으

kasimov.korea.ac.kr


본 글의 목적

이전과 달리, 본 글을 읽어야 하는 분들을 'AI를 본격적으로 시작하려는 분들'로 확장하려고 합니다. 이에 맞게, 추천하는 학습 컨텐츠의 수준과 순서를 조정하려고 합니다.

시작하기 전 : 커뮤니티를 찾아라

AI를 공부하는 과정은 길고, 때로는 힘든 경우가 많습니다. 그렇기에 혼자 공부하면 힘듭니다. 가능하다면 함께 공부할 수 있는 스터디, 동아리, 학회 등을 찾아서 들어가고, 학습에 지속성을 유지하세요. 대학생이라면 교내 학회를 찾아보고, 대학원생이거나 직장인이라면 팀 내에서 스터디를 만드는 것이 좋을 것 같습니다.

머신러닝 & 딥러닝 강의

가장 입문하기 좋은 강의는 모두를 위한 딥러닝 시즌2 - PyTorch - YouTube인 것 같습니다. 강의 자체도 쉬운 편이고, 양도 부담이 없는 편이라 입문하기에 좋습니다. 또한, 현재 연구 풀에서는 PyTorch 위주로 코드가 공유되고 있으니, PyTorch로 입문할 수 있는 자료라는 것도 매력적입니다.

 

이후에는 학부 전공 수준의 기계학습을 공부하면 될 것 같습니다. 가장 좋은 강의는 Coursera에 있는 Andrew Ng's Machine Learning입니다. 난이도도 적절한 편이며, 학부 수준에서 다룰만한 내용은 전부 다루고 있어 기본기를 다지기에 좋다고 생각됩니다. 이외에도 [MIT]인공지능개론 (edwith)와 같은 강의도 있습니다. 다만, 시간이 여유롭지 않다면 해당 강의는 스킵해도 좋다고 생각합니다.

다음은 본격적인 딥러닝 강의를 수강하면 좋습니다. 제가 가장 추천하는 강의는 Deep Learning for Computer Vision : EECS 498 - 007입니다. 컴퓨터 비전 연구자의 관점에서의 딥러닝을 다루고 있고, 현 시점에서도 유효한 주요 딥러닝 방법론들을 다룹니다. 자연어 처리로 딥러닝을 공부하고 싶다면 Stanford CS224N: Natural Language Processing with Deep Learning이 좋습니다. 이 재생목록의 경우 한글 자막이 제공되고 있습니다.

가능하다면, 이 두 강의 (Deep Learning for Computer Vision : EECS 498 - 007, Stanford CS224N: Natural Language Processing with Deep Learning)에서 제공하는 Assignment를 전부 풀어보고 solution과 비교해보면서 코드를 쓰는 능력을 키워가세요. 추후에 분명 도움이 됩니다.

논문 리뷰 및 구현

강의로 어느 정도 학습이 되었다면, 이제는 논문을 직접 읽어보고, 그 내용을 구현해보는 경험이 필요합니다. 다음은 논문 리뷰를 올려놓은 재생목록입니다. 처음 읽어보는 논문은 이해하기 어려우니, 다음과 같은 영상/블로그를 찾아 참고하면서 최대한 이해해보고, 구현을 시도해보세요.

DBSA 1DBSA 2나동빈 논문 리뷰, PR12 Season 1PR12 Season 2PR12 Season 3PR12 Season 4

저의 경우에는 Fully Convolutional Network를 읽고, PyTorch로 직접 구현했었습니다. 인턴을 할 때에는 CAM과 EPS라는 논문을 구현하는 경험을 했습니다.

다음은 제가 직접 구현했던 것들을 기록해놓은 Github repo입니다.


앞서 언급한 과정 정도면 딥러닝을 공부하고 연구하기에 충분하다고 생각합니다만, 더 나은 연구를 하고 더 나은 실무를 수행하기에는 부족함을 느낄 것 입니다. 이를 위해 다음과 같은 일종의 appendix를 추가했습니다.

부족한 부분 채우기 1 : 학교 수업을 최대한 활용하기

딥러닝과 머신러닝을 더 잘 공부하려면, 학교 수업을 최대한 활용해야합니다. 위에 언급해놓은 강의 개수만으로도 최소한 2개의 강의이고, 코드를 쓰는 연습까지 하는 것을 생각하면 상당한 수련 시간이 듭니다. 학교 수업과 딥러닝 공부가 완전히 따로 논다면, 공부하기 많이 어려운게 사실입니다. 따라서, 최대한 학교에서 공부하는 과목을 부족한 부분을 채우는 과목으로 선정하세요. 저의 경우에는 근본적인 computer vision 지식이 부족하다고 생각해서, fundamental computer vision 강의나 image processing을 들었고, 기본적인 CS나 수학적 지식도 보충하기 위해서 data structure, linear algebra, probability & random process 위주로 들었습니다.

부족한 부분 채우기 2 : 수학

AI, 특히 딥러닝을 연구하는데 필수적인 수학적 지식은

1. 선형대수 (linear algebra)
2. 확률론 (probability)

입니다. 그 외에도 미적분학 등이 있지만 Gradient의 존재를 제외하면 큰 지분을 차지한다고 생각하지는 않습니다. 이런 필수적인 수학은 boostcourse에서 잘 다뤄주고 있습니다.

선형대수를 공부하기에 좋은 강의에는 [칸아카데미] 모두를 위한 선형대수학이 있습니다. 이에 이어서 인공지능을 위한 선형대수를 이어서 보시면 될 것 같습니다.

확률론의 경우 [하버드] 확률론 기초: Statistics 110를 들으시면 될 것 같습니다. 학부 수준에서 다룰만한 주요 확률론을 전부 다루어 줍니다.

부족한 부분 채우기 3 : 더 발전한 수학

Learning Theory를 학습하고, Deep Learning의 근본 원리를 탐구하려면 더 복잡한 수학이 필요합니다. 대체로 실해석학/함수해석학을 요구하며, 이외에도 변분법이나 범함수, 측도론을 요구한다는 얘기가 나오기도 하지만 주요 연구 분야에 따라서 다르다고 생각됩니다.

제가 학습하기 위해 찾아보았던 자료는 다음과 같습니다.

부족한 부분 채우기 4 : 머신러닝 & 딥러닝 Textbook

Learning Theory를 학습하는 데 있어서 전부 lecture를 들을 수는 없습니다. 학부/대학원 코스웍을 듣는 데에는 시간도 한정적이며, 그 모든 것이 연구에 도움이 되지는 않기 때문이죠. 거기다 코스웍이 Learning Theory를 많이 커버하기도 어렵습니다.

그래서 실력이 어느정도 있고, 기회가 있을 때 textbook을 보아야합니다. 이 영상과 같은 추천 영상도 있지만, 해당 영상이 오래 되기도 했고, 이러한 textbook을 모두 읽는 것은 무리고 그럴 필요도 없다고 생각합니다. 

Learning Theory를 공부하는 데 있어서는 Kevin Murphy의 Probabilistic Machine Learning을 추천합니다. 넓은 범위를 다루면서 동시에 확률론적인 관점으로도 해석해주고, 수학적인 해석력을 기르는데에도 도움이 되는 textbook입니다.

다음으로는 GPML = Gaussian Processes for Machine Learning을 추천합니다. Deep Learning 이외에도 현대까지도 사용하는 Learning mechanism이기도 하고, robustness를 다루는데 있어서 피할 수 없는 내용을 다룹니다.

해당 도서들은 전부 무료로 pdf가 공개되어있습니다. 아래 링크로 들어가셔서 조금만 찾아보시면 pdf를 받을 수 있습니다.

부족한 부분 채우기 5 : 빠르게 분야에 적응할만한 강의 훑기

이외에도 boostcourse 등에서 제공하는 강의가 간략하고도 세부 분야에 적응하는데 도움이 될 것 같아서, 들어볼만한 것 같습니다.

 

반응형