👶🏻

인공지능 신생아부터 어린이가 되기까지 공부한 강의 / 책 목록 및 후기

전제

나는 딥러닝은 Engineering이 아닌 Science와 Research라고 생각한다. 물론 엔지니어링 관점으로도 접근할 수 있지만 나는 어찌됐건 대학원에 가야하니 ... Science와 Research를 하기 위해서 공부한 기록을 남기려고 한다.
두가지 전제가 있는데,
1.
모르는 것이 나오면 쉬운 강의를 찾지 않고 인터넷 검색으로 해결했다.
2.
한글 자료보다는 무조건 영어 자료로 공부하려고 했다.

수학

수학은 나도 잘하지 못해서.... 선형대수학과 미분적분학 정도 빠삭하게 알고 있으면 논문 읽는데 지장 까지는 없다 (찾아보면서 읽으면...)

미적분학

Stewart Calculus 8판이다. 1학년때 봤던 책이라 그닥 기억은 잘 안나는데 뭐 여러모로...
수능 수학에서 나를 대학수학으로 이끌어준 책이다.

선형대수학

Lay의 Linear Algebra and Its Application
선형대수학을 이 책과 강의로 공부했는데 그닥 추천하고 싶지 않다. 필요 없는 내용도 상당히 많고 책이 좀 별로임...

통계학

통계학은 따로 공부한 책은 없고 관련 강의도 듣고 인터넷도 찾아보면서 배웠다.
성균관대 교양 수업으로 열렸던 “통계적 사고” 수업에서 많이 배웠던 것 같다.

확률론, 다변량 통계 등등

2022년 Todo

머신러닝

고전 머신러닝

회귀 분석부터 SVM, Decision Tree 고전 머신러닝에 대한 내용이다.
보통 Coursera 에서 Andrew Ng 교수님 수업을 많이 듣는 그 내용이다.
쉽기도 하고 막상 딥러닝 쪽으로 가면 그렇게 많이 나오는 내용이지만 은근 기초체력 처럼 필요한 것 같다. 완전히 내용을 몽땅 외우고 있을 필요는 없어도 (이런 능력은 통계학과나 그 기반의 머신러닝 연구에서 많이 사용하는 듯 하다) 관련 내용의 존재는 알고 그때 그때 찾아볼 수 있으면 되는 것 같다.
나는 성균관대학교 도전학기 수업인 ‘머신러닝과딥러닝’ [CHS7002] 수업으로 이 내용을 공부하였는데, 지금 돌이켜보면 꽤 도움이 많이 되었다. 이 강의를 공부한 기록은 여기에 있다.

머신러닝 코딩 및 분석

Python Scikit-Learn 패키지로 위의 수업과 병행하면서 공부하였다.

딥러닝 기초

딥러닝 기초를 위한 강의가 여러개가 있지만, 나는 무조건 아래의 두 강의로 공부하는 것을 권장하고 싶다. 내용도 내용이거니와 딥러닝 부터는 영어로 공부한 것이 크게 도움이 되고 있다.
한글로된 쉬운 강의나 블로그 글 같은 것도 있지만 기본적으로 아래 두 강의에 뿌리를 두고 그때그때 모르는 내용들을 찾아가며 공부하는 것이 더 좋은 것 같다.
처음 배우면 진짜 멘탈이 터지는데 여기서 터져서 포기할 거면 아예 시작을 안하는게 낫다...논문 하나 이해하기 위해 선행 논문들다 팔로업하다가 지지치는 것 보다는 미리 지지치는게 낫다...

CS231N 2017 (강의), 2021 (Slide)

컴퓨터 비전 기반의 딥러닝 기초 강의이다.
설명도 너무 깔끔하고 직관적인 이해와 수식적인 이해가 동시에 팍팍 꽂힌다. 이 강의를 번역한 한글 영상 강의가 성균관대에 열려서 들었는데 그 교수님이 한글로 설명해주시는 것 보다 영어 강의가 더 이해가 잘됐다....ㅋㅋ
물론 영어 강의도 처음이고 딥러닝(머신러닝 포함)을 아예 이걸로 처음 배워서 1시간 수업듣고 7~8시간은 찾아보고 공부한 것 같지만 지금 생각해보면 CS231N으로 공부하길 참 잘한 것 같다.
한가지 단점은 강의가 너무 엣날 강의라 최신 내용들을 하나도 반영을 못하고 있다. 나 같은 경우는 연구실 교수님께서 최근에 진행된 연구들을 2021 Slide를 기반으로 보충해서 설명해주셨는데 도움이 많이 되었다.

CS224N 2021

자연어 처리 기반의 딥러닝 기초 강의이다.
매닝 교수님이 너무 귀엽다.
내용은 딥러닝 기초긴 한데 딥러닝 기초를 이 강의로 공부하기는 CS231N보다 더 힘들 것 같다는 생각이 든다 ... 그 이유는 두가지인데,
1.
첫번째는 너무 많은 내용을 다루고 있다는 것이다. 이 차이는 CS231N 2017의 단점과도 연결되는데, CS231N 2017의 단점이 최신 연구 내용을 팔로업 하지 못하고 있다는 것이 단점이었는데 이 강의는 Word2Vec부터 T5까지 딥러닝 자연어 처리의 거의 모든 내용을 다루고 있다 보니 기초 딥러닝 내용을 CS231N보다는 비중 적게 다루고 있다.
2.
두번째는 CNN에 비해 LSTM이나 GRU의 모델 구조가 더 복잡하다 보니 초심자들이 이해하기 조금 더 어려울 것 같다는 생각이 든다. CNN은 Convolution으로 Feature를 뽑고 뽑고 뽑는 과정이 직관적으로 받아들여지는데 LSTM은 Hidden State부터 ifog까지 대체 이게 뭐지뭐지뭐야... 할 것 같은 느낌..
물론 그래도 객관적으로 어려운 강의는 아니기 때문에 이 강의로 입문해도 괜찮을 것 같다.

PyTorch

공식문서 개좋음 ㄱㄱ 공식문서 읽으면서 공부하자 괜히 이상한거 보지말고

딥러닝 심화 & 기타 강의

조경현 교수님 자연어 처리 강의

자연어에 대한 간단한 감을 잡으려고 들은 강의이다.
설명을 굉장히 잘해주시고 한글 강의라는 장점이 있지만 디테일 하게 공부하기는 다소 아쉬웠던 것 같다.
심지어 옛날 강의라 그냥 CS224N이 나은듯...

CMU 11-1777 Multi-Modal Machine Learning

멀티모달 머신러닝에 대한 강의이다.
지금 듣고 있는데 교수님 발음이 좋아서 들을 맛이 난다.
어려운 주제이지만 쉽게 가르쳐주셔서 매우 만족하고 있다.

논문 & 인터넷

CS231N정도 떼고 나면 그때부터는 논문의 내용을 30% 정도는 이해할 수 있다.
그래서 나는 CS231N을 이해하고 나면 자신이 관심 있거나 진학하고 싶은 분야의 논문을 읽어가면서 공부하는게 좋다고 생각한다.
논문 처음 읽으면 딥러닝 처음 배울때의 그 좌절감을 다시 한번 맛볼 수 있는데, 그러면 나는 다음과 같이 해결했다.
1.
한글 리뷰가 있는지 찾아본다.
a.
안 읽히는 것이 영어 실력의 문제인지 컴퓨터 실력의 문제인지를 검증하기 위해서 몇번 써먹었고 영어가 익숙해진 다음 부터는 거의 보지 않거나 논문을 먼저 읽고 보았다.
2.
선행 논문을 따라가본다.
3.
읽히는 데 까지만 읽고 나중에 다시 읽어본다
a.
나중에 다시 읽으면 거짓말 같이 이해가 된다. 특히 수식이 많이 나오는 Method 파트나 Experiment 파트가 좀 그런데 다른 논문들 읽다가 다시 읽어보면 이해가 잘 된다.
읽을 논문들은 아래 예시와 같은 Github의 Awesome 시리즈들을 사용하면 좋다.