brunch

You can make anything
by writing

C.S.Lewis

by Extreme Code Jun 13. 2021

AI 공부할 때 참고하면 좋은 내용들

AI 전문가가 되고 싶은데, 어떻게 공부하는게 좋을까요?

  주변에서 AI 공부를 어떻게 하면 좋은지에 관해서 질문을 자주 받습니다. 제가 머신러닝을 처음 접할 때는 이런 정보들이 많이 없었기 때문에 어려움을 겪기도 했는데요 (물론 그때 당시에도 Andrew Ng 교수님의 Machine Learning 강의가 있어서 도움이 많이 되었습니다.) 요즘에는 오히려 좋은 자료들이 너무나 많아서 문제인 것 같습니다.


시간은 한정되어 있는데 좋은 내용들이 너무 많다보니 어떤 것을 통해서 공부해야 될 지 감을 잡기 힘든 상태라고 할 수 있겠네요. 그렇기 때문에 교육과정이나 학원 등이 있는 것이겠죠. 하지만 그나마 가장 실무와 가깝다고 볼 수 있는 부트캠프 스타일의 교육과정은 사실 실무를 제대로 하기에는 좀 부족합니다. (특히 ML분야에서는 더더욱) 따라서, 개인이 스스로 다양한 공부를 하고 개발을 직접 해 볼 필요가 있습니다. 사실 이런 것은 이미 잘 정리된 것들이 많아서 검색하면 많이 나오긴 하지만, 저도 한번 간단하게 정리 해 보았습니다.




딥러닝/머신러닝을 처음 공부할 때

  딥러닝이나 머신러닝을 처음 공부할 때는 영상이 있는 강의로 시작하는 것이 좋습니다. 책이나 튜토리얼 정도로만 배우는 것은 쉽지 않기 때문입니다. 그래서 영상이 있는 강의들을 몇 가지 뽑아 보았습니다.


Nando de Freitas 의 Machine Learning

현재는 DeepMind 에 있는 Nando de Freitas 교수님이 UBC 교수로 있을 때 촬영한 강의입니다.

꽤 예전 (2013년 경) 강의입니다.

딥러닝 관련 내용도 조금 있지만 대부분 일반적인 머신러닝과 관련된 내용을 다룹니다. 머신러닝 기초부터 아직도 많이 사용되는 머신러닝 알고리즘까지 잘 설명하고 있습니다.

요즘에는 딥러닝이면 다 되는 줄 아는 사람들도 많던데, Classical Machine Learning 알고리즘들도 광범위하게 많이 쓰이고 있습니다. 이 강의는 머신러닝의 핵심적인 알고리즘들을 핵심만 뽑아서 잘 다루고 있어서 굉장히 추천드리는 강의입니다.

https://www.youtube.com/playlist?list=PLE6Wd9FR--EdyJ5lbFl8UuGjecvVw66F6&feature=view_all


Hugo Larochelle 의 Neural Network

현재는 Google Brain에 있는 Hugo Larochelle교수님이 퀘벡의 Sherbrooke 대학교 교수로 있을 때 촬영한 강의입니다.

말 그대로 Neural Network 과 관련된 내용만 다룹니다. 위에 있는 Nando 교수님 강의처럼 꽤 오래된 (2013년쯤) 강의인데요, 딥러닝 분야에서 7~8년은 굉장히 긴 시간이죠.

시간이 좀 지난 강의인데도 제가 이걸 추천드리는 이유는, 요즘에는 Neural Network 에 대해서 이렇게 다양하고 깊게 다루는 강의가 잘 없기 때문입니다. 특히나 요즘에는 딥러닝이 어떤 발전과정을 거쳐왔는지는 건너뛰고 최근 나온 아키텍쳐나 모델들만 배우는 경우가 많은데, 그러면 기초가 부족할 수 있습니다.

요즘 AI 업계를 관찰해 보면 최신 기술만 배우는 경향이 강한데, 어떠한 기술을 연구하거나 서비스를 개발해야 할 때, 최신기술만으로는 안되는 경우가 많습니다. 예전 기술들도 좋은 내용이 정말 많고, 특히나 다양한 시도와 최적화를 할 때 그런 기초 지식을 잘 알고 있는게 도움이 많이 됩니다.

https://www.youtube.com/playlist?list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH


MIT의 Introduction to Deep Learning

비교적 최근에 만들어진 강의입니다. 딥러닝의 기초적인 내용들을 배울 수 있습니다.

최근에 나온 강의인 만큼 꽤나 최신 기술들에 관해서도 다루고 있습니다. 물론, 다양한 토픽을 다루는 만큼 해당 토픽들에 관한 깊이는 좀 부족하지만 딥러닝의 전체적인 그림을 볼 때는 추천할 만 합니다.

http://introtodeeplearning.com/


DeepLearning.AI 에서 제공하는 프로그램

AI 분야의 연예인 중 한명인 Andrew Ng 교수님이 만든 회사인 DeepLearning.AI 에서 제공하는 교육 프로그램입니다.

딥러닝 이외의 토픽들도 다루긴 하는데 위와 마찬가지로 딥러닝 위주의 토픽을 다루고 있습니다.

이 강의 프로그램들은 제가 직접 들어본건 아닙니다만, 평이 좋아서 넣었습니다.

https://www.deeplearning.ai/programs/


Andrew Ng의 Machine Learning

Andrew Ng 교수님의 머신러닝 강의는 추천 목록에서 절대로 빠질 수가 없죠. 정말 내용이 좋고 추천드릴 만 합니다.

근데 워낙에 강의를 왕성하게 하시는 교수님이라 그런지 인터넷에 공개된 강의가 굉장히 많습니다. 위에 있는 DeepLearning.AI 에서 제공하는 프로그램도 있고, 스탠포드 대학교에서 강의한 것을 직접 올린 버전도 있습니다.

(최근 스탠포드 강의 버전: http://cs229.stanford.edu/syllabus-fall2020.html)

또한 Andrew Ng 교수님이 Coursera 공동창업자이면서 Coursera 의 가장 베스트셀러인 Machine Learning 강의를 직접 만든 만큼 여기 올라와 있는 버전도 굉장히 내용이 좋습니다. 이건 버전이 계속 업데이트 되는데, 그냥 Coursera 가셔서 검색하면 나오기 때문에 링크는 따로 추가하지 않겠습니다.


Yann Lecun의 Deep Learning

AI계의 스타 중 한명인 Yann Lecun 교수님이 NYU에서 진행한 딥러닝 강의입니다.

이건 제가 직접 다 본건 아니지만, 내용을 살펴보니 구성이 좋고, 워낙에 유명한 분이기도 하고 평도 좋습니다.

https://atcold.github.io/pytorch-Deep-Learning/

참고로, 이번년도에 새로 업데이트된 버전도 있습니다. 계속 업데이트 되는거 같네요. (https://atcold.github.io/NYU-DLSP21/)



AI/ML 공부 시 참고할 점

  AI/ML 분야 강의는 좋은 강의들이 너무 많고 내용도 많이 겹쳐서, 머신러닝을 주로 다루는 강의 하나, 딥러닝을 주로 다루는 강의 하나 정도만 골라봐도 충분합니다. 그리고 위에 정리한 강의들은 AI/ML과 관련된 general 한 강의들이기 때문에, 특정한 토픽에 대해서 깊게 배우기 위해선 해당 토픽에 관한 것들을 추가로 공부해야 합니다. 예를 들어 Natural Language Processing, Computer Vision, Reinforcement Learning, Bayesian Network, Graph Netwrok, Unsupervised Learning, Generative Adversarial Network 등등 수많은 토픽들이 있으며, 특히나 NLP, CV, RL 등은 그 자체로 하나의 매우 방대한 분야이기 때문에 해당 분야에 대해서만 좀 더 깊게 다루는 강의들을 통해 추가로 공부해야 할 필요가 있습니다.


또한 위에 소개하지 않은 명강의들도 굉장히 많은데요. Daphne Koller, Christopher Manning, Richard Socher, Fei-Fei Li, Jeffrey Hinton 등 업계의 유명한 분들이 공개한 강의들의 경우 내용이 굉장히 좋기 때문에, 특정 분야를 더 깊게 알고 싶다면 찾아서 보는 것도 좋은 방법입니다. 구글링을 좀 해보거나 github나 youtube만 좀 검색 해 봐도 공부할 만한 리소스나 잘 정리된 사이트 등이 수도 없이 많습니다.


만일 MOOC을 통해서 공부하고 싶다고 한다면 Coursera와 Udacity 를 추천합니다. 두 곳 다 퀄리티 좋은 강의들이 많습니다. 특히나 수강을 완료하면 certification이 발급되는데 전세계적으로도 사용되는 cert이기 때문에 증명이 될 수도 있습니다. 국내에도 MOOC나 강의들도 다양하게 있기는 한데, 영어 강의를 듣는게 너무 어려운 것이 아니라면 구지 그런 걸 들을 필요가 있을까 싶네요. 내용도 좀 부실한 편이며, 이미 무료로 대가들 강의한 뛰어난 퀄리티 강의를 무료로 볼 수 있는데 구지 돈을 추가로 내고 들을 필요는 없을 것 같습니다.


강의와 과제 등으로 기본기를 다졌으면, Kaggle과 같은 곳에서 직접 공부한 테크닉을 적용해보는 것이 좋습니다. Kaggle에서는 강의에서 배운것만으로는 좋은 성적을 내기 힘들기 때문에, 좀 더 실전적인 테크닉들을 다양하게 다루어 볼 수 있습니다.


또한 AI/ML 분야는 매우 빠르게 바뀌고 있기 때문에 기본기를 다진 이후에는 논문 등을 보면서 기술 트렌드를 파악하는게 비교적 중요한 편입니다. 다른 분야 (예를 들어 백엔드, 프론트엔드, 게임 등) 는 논문 보고 이것을 직접 구현하고 하는게 드문 일이지만, AI/ML분야는 아직 정립된 게 많이 없고 빠르게 바뀌는 분야이기 때문에 논문을 직접 볼 일이 많습니다.



AI/ML 최신 기술 따라잡기

  위에서 이야기 한 것 처럼 AI/ML은 매우 빠르게 변하는 분야이기 때문에, 최신 기술 트렌드에 관해서도 어느정도 이해하는 것이 (아직까진) 꽤 중요한 편입니다. 따라서 최신 기술에 대해 파악하고 정보를 얻기 좋은 리소스들을 뽑아 봤습니다.


학회별 워크샵

AI/ML도 분야별로 다양한 학회가 있고, 그 학회에서도 다양한 워크샵이 있습니다.

학회에 나온 논문들을 살펴보는것도 최신 기술을 파악하는 데 좋겠지만, 그것은 academic쪽에 있거나 정말 특정 분야를 전문적으로 하는 것이 아니라면 구지 그럴 필요는 없을 것 같고, 워크샵 내용만 살펴봐도 도움이 많이 됩니다.

예를 들어, CV분야는 CVPR 이 가장 큰 규모의 학회인데 여기에 수 많은 워크샵들이 있고 굉장히 재미있는 토픽들이 많습니다. 많은 워크샵이 발표자료 등을 공개해 놓거나 유튜브에 올려 놓기 때문에 이런 것들을 살펴보면 도움이 많이 될 수 있습니다.


Yannic Kilcher 의 유튜브

논문을 읽어본 분들은 많이들 동감하시겠지만, 논문을 직접 읽는 것은 시간이 오래 걸리는 일이고, 글자도 작아서 꽤 힘듭니다.

그래서 누가 좀 대신 정리좀 해줬으면 할 때가 많은데, Yannic Kilcher의 유튜브는 꽤 디테일하게 논문을 요약해서 설명 해 줍니다.

특히 AI 업계에서 꽤 중요하다고 생각되는 논문은 정말 빠르게 업데이트 됩니다. 물론 여기서 안 다루는 연구들이 많기 때문에 그 점은 아쉽긴 하지만, 그래도 주요한 논문들을 잘 리뷰해 주기 때문에 시간을 많이 절약할 수 있어서 추천합니다.

https://www.youtube.com/channel/UCZHmQk67mSJgfCCTn7xBfew


Papers with Code

발표되는 논문들의 토픽을 일목 요연하게 성능 순으로 정리해 놓는 사이트 입니다.

정말 좋은 점은 특정 연구에 대해서 오픈소스로 코드를 공개한 경우 같이 링크를 시켜 놓는다는 점입니다. 그렇게 함으로써 매우 쉽게 코드를 가져다가 모델을 테스트 해 보고, 학습도 직접 해 볼 수 있습니다.

물론, 여기에 나온 리더보드 점수만 믿으면 안됩니다. (일반적으로 이런 점수는 입맛에 맞게 마사지하는 경우가 많습니다.) 하지만, 여기에서 github repository 를 링크해 놓는 것만으로도 실용적으로 사용할 수 있기 때문에 AI/ML 프로젝트를 진행한다면 많은 도움이 될 수 있는 사이트입니다.

https://paperswithcode.com/sota


Reddit - Machine Learning

전 세계적으로 AI/ML 관련 연구자들이 많이 보는 포럼입니다. 다양한 연구들을 많이 소개하고, 다양한 AI 기술 기반 프로젝트도 많이 소개됩니다.

AI 기술에 관한 토론도 활발하게 이뤄지는 편이고, 무엇보다도 최신 연구에 대한 소개가 많기 때문에 AI/ML 전문가를 희망한다면 꾸준히 확인해야 할 곳이라고 생각됩니다.

https://www.reddit.com/r/MachineLearning


Hacker News

HN는 AI/ML 관련 내용보다는 일반적인 SW개발과 관련된 내용이나 기술과 관련된 내용이 훨씬 많습니다.

그럼에도 불구하고 소개드리는 것은, AI/ML 전문가라고 하더라도 SW를 잘 하는게 중요하며 앞으로 이런 점이 더더욱 중요해 질 것이기 때문입니다.

얼마 전까지만 해도 AI/ML 분야는 모델링만을 연구하곤 했었지만, 현재는 모델링의 한계를 많이 깨닫고 데이터의 중요성이 더 강조되고 있으며, MLOps와 같은 분야의 중요성도 굉장히 높아지고 있습니다.

이런 것들의 기본은 SW기술이고, 그렇기 때문에 프로그래밍과 알고리즘 등에 관해서 잘 아는 것은 AI 전문가가 되기 위해서 굉장히 중요한 요소입니다.

HN에는 기술과 관련된 뛰어난 퀄리티의 아티클, 뉴스 등이 굉장히 많이 올라오기 때문에 공부하기에는 정말 좋은 리소스입니다.

https://news.ycombinator.com/



글을 마치며

  책을 읽지 않고 수집만 하는 사람도 있고, 강의도 수강하지 않고 북마크만 해놓는 사람도 많습니다. 세상에 정보는 너무나 많습니다. 하지만 실력을 키우는 데 가장 좋은 방법은 좋은 강의를 열심히 찾아다니는 게 아니라 하나를 정해서 진득히 수강하고, 이해될 때까지 반복하고, 그리고 직접 코딩을 하고 디버깅을 해 보며 직접 경험해 보는 것입니다.


따라서 구지 많은 정보를 찾아다닐 필요는 없습니다. 평이 좋은 강의를 하나 정해서 열심히 듣고, 과제를 열심히 수행한 후에 어느정도 이해가 된다고 생각하면, Kaggle에서 직접 코딩을 하며 다양한 테크닉들을 배우고 적용하고, 직접 프로젝트를 본격적으로 진행 해 보면서 경험을 쌓아야 합니다.


어떤 분야든지 그렇겠지만, 딱히 지름길은 없습니다. 그냥 의자에 앉아서 코딩하고, 디버깅하고, 안되는 문제를 해결하고, 머리를 쥐어짜며 고민하는 시간들이 길면 길수록 실력은 쌓이게 될 것입니다.


더 궁금하신 내용이 있으시면, 메일 보내 주시면 최대한 답변 드리도록 하겠습니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari