지금까지 공부한 자료들(Python, ML, DL, NLP)
15 Nov 2020 | Daily
파이썬 책의 첫 페이지를 켜서 주피터 노트북을 설치하고 print(“Hello, Python”)을 입력한지 벌써 1년이 되었습니다. 이를 기념하여 1년동안 어떤 자료를 보며 공부를 했는지 정리하는 게시물을 작성해보려고 합니다.
본격적으로 글에 들어가기에 앞서 엔지니어를 생각하고 공부를 했지만 공부를 하면서 기획자로 직무를 변경하기로 하였으며 현재 기획자(라고 쓰고 잡부)로 일하고 있습니다. 코딩과 관련된 부분은 다소 부족할 수 있습니다. 책은 적어도 챕터 2장 이상 분량 읽은 것만을 썼으며 책을 가지고 있더라도 그 이하의 분량만 본 것은 제외하였습니다.
Python
최근에는 코드를 직접 작성하지는 않습니다만 코드를 보고 이해하려면 파이썬을 알아야 하기에 파이썬 관련 공부를 했습니다.
Book
-
(위키독스)점프 투 파이썬 : 만인의(?) 파이썬 입문서인 점프 투 파이썬입니다. 위키독스에 있기 때문에 무료로 모든 내용을 볼 수 있으며 저자께서 버전이 바뀌면 빠르게 업데이트 해주시는 것도 장점입니다. 내용 자체가 부족하다고 할 수는 있으나 파이썬을 처음 익히는 자에게 이만한 자료도 없다고 생각합니다.
-
데이터 분석을 위한 파이썬 철저 입문 : ‘데이터 분석을 위한’ 파이썬 철저 입문인 만큼 파이썬의 기본 내용이 있고 넘파이(Numpy), 판다스(Pandas) 등의 라이브러리와 크롤링, 웹API에 대한 설명이 있습니다.
데이터 분석에 입문하고자 하는 사람들이 개괄적으로 훑어보기에는 좋은 책일 수도 있겠으나 ‘파이썬’을 공부하고자 한다면 아래의 책이 좀 더 나아보입니다. 라이브러리나 크롤링에 관련된 내용도 대략적으로만 소개할 뿐 이를 좀 더 구체적으로 다룬 다른 책이나 자료를 참고하는 것이 좀 더 좋아 보입니다.
-
처음 시작하는 파이썬 : 현재는 2판이 나와 있는 대표적인 파이썬 기본서 입니다. 데이터 분석보다는 파이썬 자체의 내용이 많이 담겨있습니다. 데이터 분석 라이브러리에 대한 내용도 있기는 하지만 위 책과 비교했을 때는 부족한 감이 있습니다. 하지만 동시성이나 네트워크에 대한 부분까지 폭 넓게 다루고 있는 좋은 입문서라고 생각합니다.
-
파이썬 코딩의 기술 : 가장 유명한(?) 중급 파이썬 서적인 파이썬 코딩의 기술(이펙티브 파이썬)입니다. 최근 내용을 대폭 보강하고 파이썬3 와 관련된 내용만으로 되어있는 2판이 출시되었습니다. (1판은 파이썬2와 3에 대한 내용이 함께 있습니다) 파이썬 코딩을 잘하고 싶으신 분이라면 한번쯤은 보셔야 할 책이 아닌가 생각되네요. 제 경우는 코딩할 때 참고할 만한 부분만 찾아서 적용하는 방식으로 읽었습니다. (= 못 읽은 부분이 더 많습니다.)
-
파이썬 자료구조와 알고리즘 : 자료구조와 알고리즘을 익히기 위해서 샀던 책입니다. 기초적인 자료구조를 파이썬 코드로 훑어볼 수 있습니다. 시중에 C 혹은 자바로 자료구조를 다룬 책은 많지만 파이썬으로 자료구조를 다룬 책은 몇 안되는 것 같습니다. (파이썬이 자료구조를 이해하기에 다소 좋지 않은 언어라 그런 것도 있는 것 같습니다만…) 자신의 주 언어가 파이썬인데 자료구조를 공부하고 싶은 분들에게 좋은 책이 되지 않을까 하빈다. 다만 그래프 자료구조와 관련된 알고리즘에 대한 내용은 없습니다.
-
전문가를 위한 파이썬 : 파이썬 서적의 끝판왕이라고도 할 수 있는 전문가를 위한 파이썬(플루언트 파이썬) 입니다. 이 책을 보기에 실력이 모자라긴 합니다만 코딩하다 궁금한 내용이나 더 효율적으로 코딩하고 싶은 부분이 있을 때 파이썬 코딩의 기술과 같이 사전식으로 참고하고 있습니다.
Lecture
-
프로그래밍, 데이터 과학을 위한 파이썬 : 인프런에 있는 최성철 교수님의 파이썬 강의입니다. 개인적으로는 제 파이썬 첫 공부의 시작이 되었던 강의이며 위의 어떤 책들보다도 먼저 본 강의입니다. 교수님이 상당히 친절하게 알려주시며 책에서 잘 나오지 않는 부분이나 놓칠 수 있는 부분도 모두 알려주십니다. 매 장이 끝날 때마다 주시는 과제도 큰 도움이 되고요. “무료강의도 많은데 무슨 유료강의냐!”라고 하실 수도 있겠지만 그만큼의 가치가 충분한 강의라고 생각됩니다. (한빛아카데미에서 나온 책도 있는데 본 적은 없습니다)
-
데이터 구조 및 분석 : 아래에도 많이 등장할 에드위드에 있는 문일철 교수님의 강의입니다. 파이썬으로 배우는 자료구조 가 주요 내용으로 처음에는 파이썬 기본 문법과 OOP를 간단히 다루고 배열, 트리 등의 기본적인 자료구조를 다룹니다. 위에 있는 자료구조 책을 참고하며 재미있게 들었습니다. 그래프 등의 Non-linear 구조를 다룬 후속 강의는 이곳에 있습니다만 저는 아직 못봤네요 ㅠㅠ
Math
수학은 따로 책을 보며 공부하지는 않았습니다. 어떤 강의를 보았는지만 짧게 소개하겠습니다. 최근에는 모두의 연구소 풀잎스쿨을 통해 통계학을 공부하고 있습니다.
Book
-
선형대수학 : 한양대학교 이상화 교수님의 선형대수학입니다. 벡터를 다루는 ML, DL을 하기 위해서는 선형대수에 대한 이해가 필요한데 이를 공부하는 데 큰 도움이 되었습니다. 다른 분들도 많이 들으셨을 강의라고 생각합니다. 다른 선형대수학 강의로는 이상엽Math 님의 선형대수학이나 칸아카데미의 선형대수학이 있습니다.
-
확률론 기초 : 최근 통계학을 공부하면서 병행하여 보고 있는 하버드 확률론 강의입니다. 교수님이 설명을 매우 잘해주시며 ‘확률’이라는 것에 대해 많은 생각을 해 볼 수도 있는 강의입니다. 아직 다 들어본 것이 아니라서 확신은 할 수 없지만 확률을 공부하고자 하는 분들에게 좋은 가이드가 될 강의라고 생각합니다.
-
수리통계학 : KOCW에 있는 부산대학교 김충락 교수님의 수리통계학입니다. 이전에 동일한 수업에서 영어로 진행하신 강의가 있었는데 이번 년도에 온라인 수업 때문인지 국어로 진행하신 강의를 올려주셔서 듣고 있습니다. (사실 언어의 문제 보다는 최근에 촬영한 쪽이 화질이 좋아서 이쪽을 수강하고 있습니다) 교수님 설명이 친절하여 좋습니다. 개인적으로 확률론이나 수리통계학을 들으며 모르는 부분은 풀잎스쿨 - 수리통계학에서 해결하고 있습니다 :)
Machine Learning
Book
-
파이썬 머신러닝 완벽 가이드 : 많은 머신러닝 꿈돌이(?)의 길잡이가 된 권철민님의 책입니다. 싸이킷런(Scikit-Learn)기반으로 되어있으며 다양한 알고리즘을 캐글 예제로 굴려볼 수 있습니다. 텍스트 분석이나 추천 시스템에 관한 개괄적인 내용도 있고요. 다만 SVM에 대한 내용이 빠져 있는 점은 아쉽습니다 ㅠ
-
핸즈 온 머신러닝 : 위 책과 더불어 머신러닝을 공부하는 데 있어 가장 좋은 책이 아닐까 합니다. 무지막지한 책의 두께에서도 알 수 있듯 내용이 상당히 방대합니다. 머신러닝 입문자가 접할 수 있는 거의 모든 머신러닝의 내용을 담고 있습니다. 1판의 텐서플로 부분은 TF 1.x 를 기준으로 쓰여있는 반면, 올해 번역되어 나온 2판의 경우 2.x 코드로 쓰여진 것으로 알고 있습니다. 책 내용뿐만 아니라 번역의 퀄리티도 매우 좋아 보기에도 부담이 없습니다. 개인적으로 박해선 역자님의 번역본은 믿고 구매하는 편입니다.
-
패턴 인식과 머신 러닝 : 너무나도 유명한, 그리고 초심자에게는 너무도 어려운 비숍의 패턴 인식과 머신 러닝(PRML)입니다. 호기롭게 샀으나 수학적 지식이 부족해 참고 용도 외에는 거의 보지 못하고 있습니다. 아래에도 쓰겠지만 해당 책을 기준으로 한 강의를 수강하였는데 이해가 안되는 부분을 참고하기 위해서 구매 후 보고 있습니다. (다만 ) 그래도 머신러닝 전공서적 중 번역 퀄리티가 가장 좋은 편으로 알고 있습니다. 참고자료로는 Norman님의 깃허브가 있으며, 해당 책의 난이도가 너무 높은데 수학 베이스로 작성된 책을 보고 싶다면 단단한 머신러닝을 참고해보시는 것도 좋겠습니다. 단단한 머신러닝은 스르륵 훑어본 것 이상으로 자세히 본 적이 없어 생략하겠습니다.
Lecture
-
인공지능 및 기계학습 개론 : 카이스트 문일철 교수님의 인공지능 및 기계학습 개론입니다. 바로 위에 있는 패턴 인식과 머신 러닝 책을 기반으로 하는 강의입니다. 링크에 걸어놓은 1은 그래도 할만 하다는 느낌이었는데 2나 심화과정은 어려워서 일단 보류중입니다. 머신러닝에 대해 단순 코드가 아닌 수학적 접근이 필요하신 분이나 PRML을 독학하기 어려우셨던 분들께는 최고의 강의가 될 듯 합니다.
-
Business Analytics : 고려대학교 강필성 교수님의 Business Analytics 강의입니다. 차원 축소, 커널 기반 학습, 이상치 탐지 및 앙상블 기법에 대해 다룹니다. 2020년도에 온라인 강의를 위해 진행된 일반 대학원 강의이며 소홀히 할 수 있는 부분에 대해 깊이 다뤄주셔서 감사히 듣고 있습니다. 강의 자료를 모두 주실 뿐만 아니라 설명도 잘 해주십니다. 위의 인공지능 및 기계학습 개론과 동일하게 코드보다는 수학적 접근에 대한 내용이 주를 이룹니다.
Deep Learning
Book
-
밑바닥부터 시작하는 딥러닝 1 : 많은 사람의 입문서가 되었을 밑바닥부터 시작하는 딥러닝 1입니다. 별다른 라이브러리를 사용하지 않고 딥러닝에 필요한 여러가지 메커니즘을 코드로 구현합니다. 텐서플로우나 파이토치와 같은 딥러닝 라이브러리를 사용하여 모델을 구현하다보면 역전파가 어떤 방식으로 일어나는지, 초기화는 어떤 방식으로 이루어지는지 등에 대해 알기 어려울 때가 많습니다. 몇 가지 튜닝만으로도 이미 구현된 방식이 다 되기 때문이지요. 밑바닥부터 시작하는 딥러닝은 이런 요소를 넘파이만으로 구현하며 쉽게 넘어갈 수 있는 부분에 대한 이해를 돕습니다.
1판은 컴퓨터 비전을 위한 내용이라고 되어 있으나 딥러닝 전반에 대해 다루고 있고 끝부분에만 CNN 및 컴퓨터 비전에 관련된 모델을 다루고 있습니다. 따라서 자연어처리 만을 공부하려는 입문자라도 2판의 내용을 이해하기 위해서 1판의 내용을 먼저 숙지하는 것이 올바른 순서라고 생각됩니다.
-
케라스 창시자에게 배우는 딥러닝 with Python : 케라스 창시자인 숄레가 쓰고 믿을만한 역자인 박해선 님이 번역한 일명 ‘케라스 딥러닝’ 입니다. 케라스를 사용하여 MLP부터 CNN, RNN, LSTM, GAN까지 많은 부분을 구현하고 있습니다. 뛰어난 저자와 역자 덕분에 설명이 깔끔합니다. 특히 제가 공부할 당시 TF 2.x 를 기준으로 하는 책은 거의 없다시피 했는데 이 책에서는 케라스를 기준으로 했으므로 TF버전에 크게 상관없이 Colab에서 모두 실행해볼 수 있었습니다.
-
심층 학습 : 딥러닝의 대가인 벤지오와 GAN을 만든 굿펠로가 저자로 있는 심층 학습(Deep Learning)입니다. 전공서적으로 어마어마한 두께와 가격을 자랑합니다. 저자가 뛰어나니 내용도 역시 좋지만 입문자에게는 역시 어려운 편이고 번역이나 책의 디자인이 초심자가 보기에는 매우 어렵습니다. 저도 앞쪽 몇 부분을 제외하고는 거의 보지 못한 수준입니다. 원서가 부담스럽지 않은 분들이라면 이 책보다는 인터넷으로 볼 수 있는 Deep dive into Deep Learning 을 추천하는 바입니다.
Lecture
-
모두를 위한 딥러닝 : 이제는 네이버 클로바를 벗어나 Upstage의 CEO가 되신 김성훈 교수님의 모두를 위한 딥러닝입니다. 코세라의 Andrew Ng님의 강의와 함께 딥러닝에 입문하는 사람들이라면 한 번쯤은 거쳐가는 강의가 아닐까 싶습니다. 교수님의 내공인지 설명이 길지 않음에도 쉽게 이해할 수 있었습니다. 딥러닝에 처음 입문하는 분들에게 적극 추천합니다. 링크에 걸린 재생 목록은 시즌1로 오래 전에 촬영한 것이라 TF 1.x 버전의 코드가 실려있는 것으로 알고 있습니다. 교수님 채널에 TF 2.x 버전을 기준으로 한 코드 실습도 있는 것으로 알고 있으니 그쪽을 참고하시면 좋을 것 같습니다.
-
(위키독스)Pytorch를 이용한 딥 러닝 입문 : 아래 후술하게 될 ‘딥 러닝을 이용한 자연어 처리 입문’의 저자인 유원준님이 쓴 또 다른 위키독스 책입니다. 파이토치의 사용법을 공부하면서는 공식 튜토리얼과 해당 책만을 사용하여 공부하였습니다. (물론 제가 깊게 공부한 편이 아니라서 해당 자료만으로는 부족한 부분일 있을 수도 있습니다)
Natural Language Processing
Book
-
밑바닥부터 시작하는 딥러닝 2 : 밑바닥부터 시작하는 딥러닝 1판의 기조를 그대로 이어받은 시즌 2입니다. 자연어처리에서 사용되는 토큰의 벡터 표현(Representation) 뿐만 아니라 신경망을 기반으로 한 RNN, LSTM, GRU 등도 별다른 라이브러리 없이 구현해 볼 수 있습니다. 직접 구현해 봄으로써 모델의 구조를 좀 더 자세히 알 수 있다는 장점이 있습니다. 다만 이 책 하나로 자연어처리를 끝내기에는 자연어처리에서 사용되는 전처리나 토큰화(Tokenization) 등에 대한 부분이 부족하다고 생각됩니다.
-
(위키독스)딥 러닝을 이용한 자연어 처리 입문 : 자연어처리라는 어찌보면 협소한 분야에 한정된 책임에도 불구하고 위키독스 추천수 3위를 달리고 있는 유원준님의 딥러닝을 이용한 자연어처리 입문입니다. 일단 무료책이라는 최고의 장점이 있으며 심지어 다른 책과 동일한 가격이 책정되더라도 가격이 아깝지 않은 퀄리티를 자랑합니다. TF 2.x 와 케라스 기반으로 코드가 작성되어 있으며 저자분께서 여러 이미지나 도식을 설명에 사용하여 초심자도 자연어 처리에 쉽게 접근할 수 있다는 장점이 있습니다.
-
김기현의 자연어처리 딥러닝 캠프 : 파이토치 편 : 김기현님이 패스트캠퍼스의 강의를 기반으로 만든 책입니다. 파이토치를 사용하여 작성된 것이 파이토치 사용하여 자연어처리를 공부하는 초심자에게 반가울 수는 있습니다. 하지만 이 책으로 파이토치를 입문하기에는 다소 어려운 것이 사실입니다. 파이토치 입문서나 공식 자료를 보고 어느 정도 파이토치를 익힌 뒤에 해당 책은 자연어처리를 공부하기 위한 용도로만 사용하면 좋을 것 같습니다.
책 앞부분에는 매우 설명이 자세하게 되어 있기는 하지만 뒤로 가면서 여러 내용을 다루시려는 강의의 특성 때문인지 챕터마다 설명이 조금 부족한 느낌이 있었습니다. 그래도 파이토치를 사용하여 자연어처리를 공부하고자 하시는 분들께는 가장 적합한 책이 아닐까 생각해봅니다.
-
한국어 임베딩 : 이 블로그가 있게 해주신(?) 이기창(Ratsgo)님의 ‘한국어 임베딩’입니다. 개인적으로는 자연어처리 입문자들에게 가장 추천하는 책으로 하나를 꼽으라면 해당되는 책입니다. 처음에 등장하는 도커라는 환경설정 장벽(?)만 잘 넘긴다면 책을 보는데 큰 어려움이 없으며 설명도 깔끔합니다. 저자께서 기자 출신이기도 하고 블로그가 유명한데 이를 거쳐 나온 콘텐츠다 보니 처음 보는 사람도 큰 어려움 없이 볼 수 있다고 생각됩니다. 특히 책이 ‘한국어’ 임베딩이니만큼 책에 나오는 예시가 모두 한국어로 되어있습니다. 한국어 텍스트로 자연어처리를 하고자 하시는 분들이라면 당연히 읽어야 될 책입니다.
-
파이썬으로 배우는 자연어 처리 인 액션 : 서평단 이벤트를 통해 받아 읽어본 책입니다. 두께가 상당히 두꺼우며 상당히 많은 양을 싣고 있는 책입니다. 다만 번역이 그리 좋지는 못합니다. 종종 과도한 번역이 눈에 띕니다. 책 자체가 장황한 것인지 아니면 번역 탓인지는 모르겠으나 중구난방으로 설명이 되어있는 것도 단점이고요. 하지만 코드에 대한 주석이 한 줄 한 줄 자세히 달려 있으며 다양한 내용을 담고 있어 자연어 처리의 전반적인 내용을 훑어보기에 괜찮은 책이라고 생각됩니다.
-
텐서플로2와 머신러닝으로 시작하는 자연어처리 : 흔히 앵무새 책으로 불리는 책입니다. 링크에 걸려있는 개정판은 최근에 나온 것이며 저는 구판을 가지고 있습니다. 구판에서는 코드 오류가 나는 부분도 있고, 책은 TF 1.x 기준으로 코드가 작성되어 있지만 제가 TF 2.x 버전에 익숙하다 보니 코드 실습을 많이 해보지는 못했습니다. 다만 개정판에서는 이런 부분이 많이 개선된 것으로 알고 있으며 위에 서술된 책 중에서 가장 최근에 등장한 것이다보니 GPT2 까지의 내용을 다루고 있다는 장점이 있습니다.
Lecture
-
딥 러닝을 이용한 자연어처리 입문 : 조경현 교수님의 강연했던 딥 러닝을 이용한 자연어처리 입문입니다. 사실 강의 기간이 짧고 많은 내용을 강의하시려다 보니 완전 생초보에게 그렇게 쉬운 강의는 아닌듯한데 호기롭게 신청해서 들었습니다. 그래도 설명을 너무 잘하셨고 Q&A시간에 수강생들이 했던 질문이 궁금했던 내용을 긁어주어 좋았습니다. 아래 강의를 듣기 전에 자연어처리를 개괄하는 강의가 필요하다면 해당 강의를 들어보시는 것을 추천합니다.
-
Text Analytics : 고려대학교 강필성 교수님의 텍스트 분석 강의입니다. 자연어 처리에 대한 저의 대부분의 지식은 해당 강의를 통해 만들어졌다고 해도 과언이 아닙니다. 개념이나 수학 기반의 강의인지라 코드 부분이 부족할 수는 있겠습니다. 하지만 교수님이 설명을 매우 잘해주시고 강의가 커버하는 범위도 토큰의 벡터으로 표현하는 여러 방법부터 Topic Modeling이나 Transformer 이후의 언어모델까지 꽤 넓습니다. 다만 RNN, LSTM 같은 신경망 모델에 대한 설명은 빠져있는데 이 부분은 다른 강의나 도서를 통해 공부하시면 좋을 것 같습니다. CS224와 더불어 자연어를 익힐 수 있는 강의 중에는 최고의 강의라고 생각됩니다.
Others
블로그나 아카이빙된 페이지, 유튜브 채널 등은 분야에 상관없이 한 번에 적도록 하겠습니다. 위에서도 그랬듯 순서는 아무 상관 없습니다 :)
-
Ratsgo님 블로그 : 자연어 처리를 공부하는 분들이라면 모두 방문해보셨을 이기창님의 블로그입니다. 단순히 머신러닝 및 딥러닝과 관련된 지식뿐만 아니라 한국어의 다양한 언어적 특징도 잘 정리해주셔서 잘 읽고 있습니다. 블로그만 잘 보셔도 한국어 임베딩에 있는 내용의 대부분을 습득하실 수 있지 않을까 생각합니다.
-
Lovit님 블로그 : 역시 자연어 처리를 공부하시는 분들이라면 방문해보셨을 김현중님의 블로그입니다. 여러 예제를 실행해보는 데에 있어서 큰 도움을 얻었습니다.
-
Paul-hyun님 블로그 : 이번 랭콘2020에서 강의하셨던 현청천님의 블로그입니다. 블로그에 자료가 많지는 않지만 논문 구현 자료가 큰 도움이 되었습니다. 12월부터 자연어 논문 읽기를 할 생각인데 그 때 다시 한 번 참고할 생각입니다.
-
박해선님 블로그 : 위에서 언급했던 역자이자 저자인 박해선님의 블로그입니다. 해당 블로그에서 핸즈 온 머신러닝 2판에 대한 강의도 볼 수 있습니다.
-
tykimos님 블로그 : 케라스 코리아 관리자이신 김태영님의 블로그입니다. 케라스에 관련된 각종 자료를 포함해 다양한 자료를 볼 수 있습니다.
-
Beomi님 블로그 : KcBERT를 만들어 주신 이준범님의 블로그입니다. 블로그 자료뿐만 아니라 개인적으로는 ‘나만의 웹 크롤러 만들기’ 자료가 크롤링을 공부하면서 큰 도움이 되었습니다.
-
허민석님 유튜브 : 허민석님의 유튜브입니다. 신경망 기초에 대한 내용부터 논문리뷰까지 다양한 내용이 있습니다. 개인적으로는 GPT-3 논문에 대한 개략적인 내용을 가장 처음 알게 된 경로가 허민석님 유튜브를 통해서였습니다.
-
DSBA : Business Analytics와 Text Analytics 강의에서 언급했던 고려대학교 산업경영공학부 DSBA랩의 유튜브 채널입니다. 해당 강의뿐만 아니라 랩실에 계시 학생 분들이 해주시는 논문 리뷰 또한 큰 도움이 되었습니다. (아직 많이 보지는 못했습니다만…)
-
PR12 : 너무나도 유명한 논문 리뷰 스터디인 PR12입니다. 참여자분들의 내공도 상당하시고 벌써 약 300개의 논문 리뷰가 올라와 있습니다.
-
딥러닝 논문읽기 모임 : ‘딥러닝 논문읽기 모임’ 유튜브 채널입니다. 구독 후 흥미로운 주제의 논문이 올라올 때 (간혹ㅠㅠ) 보고 있습니다. 사실 논문 자체에 대한 두려움 같은 것이 있어서 위 3개 채널을 생각보다 많이 보지는 못합니다 ㅠㅠ
추가가 필요한 부분이나 수정이 필요한 부분에 대해서는 efrks@naver.com 으로 메일 주시면 감사하겠습니다. 빠진 부분에 대해서도 지속적으로 채워나갈 예정입니다. (여러 페북 페이지나 그룹 등은 찾으면 금방 난오는 부분이라 제외하였습니다.)
파이썬 책의 첫 페이지를 켜서 주피터 노트북을 설치하고 print(“Hello, Python”)을 입력한지 벌써 1년이 되었습니다. 이를 기념하여 1년동안 어떤 자료를 보며 공부를 했는지 정리하는 게시물을 작성해보려고 합니다.
본격적으로 글에 들어가기에 앞서 엔지니어를 생각하고 공부를 했지만 공부를 하면서 기획자로 직무를 변경하기로 하였으며 현재 기획자(라고 쓰고 잡부)로 일하고 있습니다. 코딩과 관련된 부분은 다소 부족할 수 있습니다. 책은 적어도 챕터 2장 이상 분량 읽은 것만을 썼으며 책을 가지고 있더라도 그 이하의 분량만 본 것은 제외하였습니다.
Python
최근에는 코드를 직접 작성하지는 않습니다만 코드를 보고 이해하려면 파이썬을 알아야 하기에 파이썬 관련 공부를 했습니다.
Book
-
(위키독스)점프 투 파이썬 : 만인의(?) 파이썬 입문서인 점프 투 파이썬입니다. 위키독스에 있기 때문에 무료로 모든 내용을 볼 수 있으며 저자께서 버전이 바뀌면 빠르게 업데이트 해주시는 것도 장점입니다. 내용 자체가 부족하다고 할 수는 있으나 파이썬을 처음 익히는 자에게 이만한 자료도 없다고 생각합니다.
-
데이터 분석을 위한 파이썬 철저 입문 : ‘데이터 분석을 위한’ 파이썬 철저 입문인 만큼 파이썬의 기본 내용이 있고 넘파이(Numpy), 판다스(Pandas) 등의 라이브러리와 크롤링, 웹API에 대한 설명이 있습니다. 데이터 분석에 입문하고자 하는 사람들이 개괄적으로 훑어보기에는 좋은 책일 수도 있겠으나 ‘파이썬’을 공부하고자 한다면 아래의 책이 좀 더 나아보입니다. 라이브러리나 크롤링에 관련된 내용도 대략적으로만 소개할 뿐 이를 좀 더 구체적으로 다룬 다른 책이나 자료를 참고하는 것이 좀 더 좋아 보입니다.
-
처음 시작하는 파이썬 : 현재는 2판이 나와 있는 대표적인 파이썬 기본서 입니다. 데이터 분석보다는 파이썬 자체의 내용이 많이 담겨있습니다. 데이터 분석 라이브러리에 대한 내용도 있기는 하지만 위 책과 비교했을 때는 부족한 감이 있습니다. 하지만 동시성이나 네트워크에 대한 부분까지 폭 넓게 다루고 있는 좋은 입문서라고 생각합니다.
-
파이썬 코딩의 기술 : 가장 유명한(?) 중급 파이썬 서적인 파이썬 코딩의 기술(이펙티브 파이썬)입니다. 최근 내용을 대폭 보강하고 파이썬3 와 관련된 내용만으로 되어있는 2판이 출시되었습니다. (1판은 파이썬2와 3에 대한 내용이 함께 있습니다) 파이썬 코딩을 잘하고 싶으신 분이라면 한번쯤은 보셔야 할 책이 아닌가 생각되네요. 제 경우는 코딩할 때 참고할 만한 부분만 찾아서 적용하는 방식으로 읽었습니다. (= 못 읽은 부분이 더 많습니다.)
-
파이썬 자료구조와 알고리즘 : 자료구조와 알고리즘을 익히기 위해서 샀던 책입니다. 기초적인 자료구조를 파이썬 코드로 훑어볼 수 있습니다. 시중에 C 혹은 자바로 자료구조를 다룬 책은 많지만 파이썬으로 자료구조를 다룬 책은 몇 안되는 것 같습니다. (파이썬이 자료구조를 이해하기에 다소 좋지 않은 언어라 그런 것도 있는 것 같습니다만…) 자신의 주 언어가 파이썬인데 자료구조를 공부하고 싶은 분들에게 좋은 책이 되지 않을까 하빈다. 다만 그래프 자료구조와 관련된 알고리즘에 대한 내용은 없습니다.
-
전문가를 위한 파이썬 : 파이썬 서적의 끝판왕이라고도 할 수 있는 전문가를 위한 파이썬(플루언트 파이썬) 입니다. 이 책을 보기에 실력이 모자라긴 합니다만 코딩하다 궁금한 내용이나 더 효율적으로 코딩하고 싶은 부분이 있을 때 파이썬 코딩의 기술과 같이 사전식으로 참고하고 있습니다.
Lecture
-
프로그래밍, 데이터 과학을 위한 파이썬 : 인프런에 있는 최성철 교수님의 파이썬 강의입니다. 개인적으로는 제 파이썬 첫 공부의 시작이 되었던 강의이며 위의 어떤 책들보다도 먼저 본 강의입니다. 교수님이 상당히 친절하게 알려주시며 책에서 잘 나오지 않는 부분이나 놓칠 수 있는 부분도 모두 알려주십니다. 매 장이 끝날 때마다 주시는 과제도 큰 도움이 되고요. “무료강의도 많은데 무슨 유료강의냐!”라고 하실 수도 있겠지만 그만큼의 가치가 충분한 강의라고 생각됩니다. (한빛아카데미에서 나온 책도 있는데 본 적은 없습니다)
-
데이터 구조 및 분석 : 아래에도 많이 등장할 에드위드에 있는 문일철 교수님의 강의입니다. 파이썬으로 배우는 자료구조 가 주요 내용으로 처음에는 파이썬 기본 문법과 OOP를 간단히 다루고 배열, 트리 등의 기본적인 자료구조를 다룹니다. 위에 있는 자료구조 책을 참고하며 재미있게 들었습니다. 그래프 등의 Non-linear 구조를 다룬 후속 강의는 이곳에 있습니다만 저는 아직 못봤네요 ㅠㅠ
Math
수학은 따로 책을 보며 공부하지는 않았습니다. 어떤 강의를 보았는지만 짧게 소개하겠습니다. 최근에는 모두의 연구소 풀잎스쿨을 통해 통계학을 공부하고 있습니다.
Book
-
선형대수학 : 한양대학교 이상화 교수님의 선형대수학입니다. 벡터를 다루는 ML, DL을 하기 위해서는 선형대수에 대한 이해가 필요한데 이를 공부하는 데 큰 도움이 되었습니다. 다른 분들도 많이 들으셨을 강의라고 생각합니다. 다른 선형대수학 강의로는 이상엽Math 님의 선형대수학이나 칸아카데미의 선형대수학이 있습니다.
-
확률론 기초 : 최근 통계학을 공부하면서 병행하여 보고 있는 하버드 확률론 강의입니다. 교수님이 설명을 매우 잘해주시며 ‘확률’이라는 것에 대해 많은 생각을 해 볼 수도 있는 강의입니다. 아직 다 들어본 것이 아니라서 확신은 할 수 없지만 확률을 공부하고자 하는 분들에게 좋은 가이드가 될 강의라고 생각합니다.
-
수리통계학 : KOCW에 있는 부산대학교 김충락 교수님의 수리통계학입니다. 이전에 동일한 수업에서 영어로 진행하신 강의가 있었는데 이번 년도에 온라인 수업 때문인지 국어로 진행하신 강의를 올려주셔서 듣고 있습니다. (사실 언어의 문제 보다는 최근에 촬영한 쪽이 화질이 좋아서 이쪽을 수강하고 있습니다) 교수님 설명이 친절하여 좋습니다. 개인적으로 확률론이나 수리통계학을 들으며 모르는 부분은 풀잎스쿨 - 수리통계학에서 해결하고 있습니다 :)
Machine Learning
Book
-
파이썬 머신러닝 완벽 가이드 : 많은 머신러닝 꿈돌이(?)의 길잡이가 된 권철민님의 책입니다. 싸이킷런(Scikit-Learn)기반으로 되어있으며 다양한 알고리즘을 캐글 예제로 굴려볼 수 있습니다. 텍스트 분석이나 추천 시스템에 관한 개괄적인 내용도 있고요. 다만 SVM에 대한 내용이 빠져 있는 점은 아쉽습니다 ㅠ
-
핸즈 온 머신러닝 : 위 책과 더불어 머신러닝을 공부하는 데 있어 가장 좋은 책이 아닐까 합니다. 무지막지한 책의 두께에서도 알 수 있듯 내용이 상당히 방대합니다. 머신러닝 입문자가 접할 수 있는 거의 모든 머신러닝의 내용을 담고 있습니다. 1판의 텐서플로 부분은 TF 1.x 를 기준으로 쓰여있는 반면, 올해 번역되어 나온 2판의 경우 2.x 코드로 쓰여진 것으로 알고 있습니다. 책 내용뿐만 아니라 번역의 퀄리티도 매우 좋아 보기에도 부담이 없습니다. 개인적으로 박해선 역자님의 번역본은 믿고 구매하는 편입니다.
-
패턴 인식과 머신 러닝 : 너무나도 유명한, 그리고 초심자에게는 너무도 어려운 비숍의 패턴 인식과 머신 러닝(PRML)입니다. 호기롭게 샀으나 수학적 지식이 부족해 참고 용도 외에는 거의 보지 못하고 있습니다. 아래에도 쓰겠지만 해당 책을 기준으로 한 강의를 수강하였는데 이해가 안되는 부분을 참고하기 위해서 구매 후 보고 있습니다. (다만 ) 그래도 머신러닝 전공서적 중 번역 퀄리티가 가장 좋은 편으로 알고 있습니다. 참고자료로는 Norman님의 깃허브가 있으며, 해당 책의 난이도가 너무 높은데 수학 베이스로 작성된 책을 보고 싶다면 단단한 머신러닝을 참고해보시는 것도 좋겠습니다. 단단한 머신러닝은 스르륵 훑어본 것 이상으로 자세히 본 적이 없어 생략하겠습니다.
Lecture
-
인공지능 및 기계학습 개론 : 카이스트 문일철 교수님의 인공지능 및 기계학습 개론입니다. 바로 위에 있는 패턴 인식과 머신 러닝 책을 기반으로 하는 강의입니다. 링크에 걸어놓은 1은 그래도 할만 하다는 느낌이었는데 2나 심화과정은 어려워서 일단 보류중입니다. 머신러닝에 대해 단순 코드가 아닌 수학적 접근이 필요하신 분이나 PRML을 독학하기 어려우셨던 분들께는 최고의 강의가 될 듯 합니다.
-
Business Analytics : 고려대학교 강필성 교수님의 Business Analytics 강의입니다. 차원 축소, 커널 기반 학습, 이상치 탐지 및 앙상블 기법에 대해 다룹니다. 2020년도에 온라인 강의를 위해 진행된 일반 대학원 강의이며 소홀히 할 수 있는 부분에 대해 깊이 다뤄주셔서 감사히 듣고 있습니다. 강의 자료를 모두 주실 뿐만 아니라 설명도 잘 해주십니다. 위의 인공지능 및 기계학습 개론과 동일하게 코드보다는 수학적 접근에 대한 내용이 주를 이룹니다.
Deep Learning
Book
-
밑바닥부터 시작하는 딥러닝 1 : 많은 사람의 입문서가 되었을 밑바닥부터 시작하는 딥러닝 1입니다. 별다른 라이브러리를 사용하지 않고 딥러닝에 필요한 여러가지 메커니즘을 코드로 구현합니다. 텐서플로우나 파이토치와 같은 딥러닝 라이브러리를 사용하여 모델을 구현하다보면 역전파가 어떤 방식으로 일어나는지, 초기화는 어떤 방식으로 이루어지는지 등에 대해 알기 어려울 때가 많습니다. 몇 가지 튜닝만으로도 이미 구현된 방식이 다 되기 때문이지요. 밑바닥부터 시작하는 딥러닝은 이런 요소를 넘파이만으로 구현하며 쉽게 넘어갈 수 있는 부분에 대한 이해를 돕습니다. 1판은 컴퓨터 비전을 위한 내용이라고 되어 있으나 딥러닝 전반에 대해 다루고 있고 끝부분에만 CNN 및 컴퓨터 비전에 관련된 모델을 다루고 있습니다. 따라서 자연어처리 만을 공부하려는 입문자라도 2판의 내용을 이해하기 위해서 1판의 내용을 먼저 숙지하는 것이 올바른 순서라고 생각됩니다.
-
케라스 창시자에게 배우는 딥러닝 with Python : 케라스 창시자인 숄레가 쓰고 믿을만한 역자인 박해선 님이 번역한 일명 ‘케라스 딥러닝’ 입니다. 케라스를 사용하여 MLP부터 CNN, RNN, LSTM, GAN까지 많은 부분을 구현하고 있습니다. 뛰어난 저자와 역자 덕분에 설명이 깔끔합니다. 특히 제가 공부할 당시 TF 2.x 를 기준으로 하는 책은 거의 없다시피 했는데 이 책에서는 케라스를 기준으로 했으므로 TF버전에 크게 상관없이 Colab에서 모두 실행해볼 수 있었습니다.
-
심층 학습 : 딥러닝의 대가인 벤지오와 GAN을 만든 굿펠로가 저자로 있는 심층 학습(Deep Learning)입니다. 전공서적으로 어마어마한 두께와 가격을 자랑합니다. 저자가 뛰어나니 내용도 역시 좋지만 입문자에게는 역시 어려운 편이고 번역이나 책의 디자인이 초심자가 보기에는 매우 어렵습니다. 저도 앞쪽 몇 부분을 제외하고는 거의 보지 못한 수준입니다. 원서가 부담스럽지 않은 분들이라면 이 책보다는 인터넷으로 볼 수 있는 Deep dive into Deep Learning 을 추천하는 바입니다.
Lecture
-
모두를 위한 딥러닝 : 이제는 네이버 클로바를 벗어나 Upstage의 CEO가 되신 김성훈 교수님의 모두를 위한 딥러닝입니다. 코세라의 Andrew Ng님의 강의와 함께 딥러닝에 입문하는 사람들이라면 한 번쯤은 거쳐가는 강의가 아닐까 싶습니다. 교수님의 내공인지 설명이 길지 않음에도 쉽게 이해할 수 있었습니다. 딥러닝에 처음 입문하는 분들에게 적극 추천합니다. 링크에 걸린 재생 목록은 시즌1로 오래 전에 촬영한 것이라 TF 1.x 버전의 코드가 실려있는 것으로 알고 있습니다. 교수님 채널에 TF 2.x 버전을 기준으로 한 코드 실습도 있는 것으로 알고 있으니 그쪽을 참고하시면 좋을 것 같습니다.
-
(위키독스)Pytorch를 이용한 딥 러닝 입문 : 아래 후술하게 될 ‘딥 러닝을 이용한 자연어 처리 입문’의 저자인 유원준님이 쓴 또 다른 위키독스 책입니다. 파이토치의 사용법을 공부하면서는 공식 튜토리얼과 해당 책만을 사용하여 공부하였습니다. (물론 제가 깊게 공부한 편이 아니라서 해당 자료만으로는 부족한 부분일 있을 수도 있습니다)
Natural Language Processing
Book
-
밑바닥부터 시작하는 딥러닝 2 : 밑바닥부터 시작하는 딥러닝 1판의 기조를 그대로 이어받은 시즌 2입니다. 자연어처리에서 사용되는 토큰의 벡터 표현(Representation) 뿐만 아니라 신경망을 기반으로 한 RNN, LSTM, GRU 등도 별다른 라이브러리 없이 구현해 볼 수 있습니다. 직접 구현해 봄으로써 모델의 구조를 좀 더 자세히 알 수 있다는 장점이 있습니다. 다만 이 책 하나로 자연어처리를 끝내기에는 자연어처리에서 사용되는 전처리나 토큰화(Tokenization) 등에 대한 부분이 부족하다고 생각됩니다.
-
(위키독스)딥 러닝을 이용한 자연어 처리 입문 : 자연어처리라는 어찌보면 협소한 분야에 한정된 책임에도 불구하고 위키독스 추천수 3위를 달리고 있는 유원준님의 딥러닝을 이용한 자연어처리 입문입니다. 일단 무료책이라는 최고의 장점이 있으며 심지어 다른 책과 동일한 가격이 책정되더라도 가격이 아깝지 않은 퀄리티를 자랑합니다. TF 2.x 와 케라스 기반으로 코드가 작성되어 있으며 저자분께서 여러 이미지나 도식을 설명에 사용하여 초심자도 자연어 처리에 쉽게 접근할 수 있다는 장점이 있습니다.
-
김기현의 자연어처리 딥러닝 캠프 : 파이토치 편 : 김기현님이 패스트캠퍼스의 강의를 기반으로 만든 책입니다. 파이토치를 사용하여 작성된 것이 파이토치 사용하여 자연어처리를 공부하는 초심자에게 반가울 수는 있습니다. 하지만 이 책으로 파이토치를 입문하기에는 다소 어려운 것이 사실입니다. 파이토치 입문서나 공식 자료를 보고 어느 정도 파이토치를 익힌 뒤에 해당 책은 자연어처리를 공부하기 위한 용도로만 사용하면 좋을 것 같습니다. 책 앞부분에는 매우 설명이 자세하게 되어 있기는 하지만 뒤로 가면서 여러 내용을 다루시려는 강의의 특성 때문인지 챕터마다 설명이 조금 부족한 느낌이 있었습니다. 그래도 파이토치를 사용하여 자연어처리를 공부하고자 하시는 분들께는 가장 적합한 책이 아닐까 생각해봅니다.
-
한국어 임베딩 : 이 블로그가 있게 해주신(?) 이기창(Ratsgo)님의 ‘한국어 임베딩’입니다. 개인적으로는 자연어처리 입문자들에게 가장 추천하는 책으로 하나를 꼽으라면 해당되는 책입니다. 처음에 등장하는 도커라는 환경설정 장벽(?)만 잘 넘긴다면 책을 보는데 큰 어려움이 없으며 설명도 깔끔합니다. 저자께서 기자 출신이기도 하고 블로그가 유명한데 이를 거쳐 나온 콘텐츠다 보니 처음 보는 사람도 큰 어려움 없이 볼 수 있다고 생각됩니다. 특히 책이 ‘한국어’ 임베딩이니만큼 책에 나오는 예시가 모두 한국어로 되어있습니다. 한국어 텍스트로 자연어처리를 하고자 하시는 분들이라면 당연히 읽어야 될 책입니다.
-
파이썬으로 배우는 자연어 처리 인 액션 : 서평단 이벤트를 통해 받아 읽어본 책입니다. 두께가 상당히 두꺼우며 상당히 많은 양을 싣고 있는 책입니다. 다만 번역이 그리 좋지는 못합니다. 종종 과도한 번역이 눈에 띕니다. 책 자체가 장황한 것인지 아니면 번역 탓인지는 모르겠으나 중구난방으로 설명이 되어있는 것도 단점이고요. 하지만 코드에 대한 주석이 한 줄 한 줄 자세히 달려 있으며 다양한 내용을 담고 있어 자연어 처리의 전반적인 내용을 훑어보기에 괜찮은 책이라고 생각됩니다.
-
텐서플로2와 머신러닝으로 시작하는 자연어처리 : 흔히 앵무새 책으로 불리는 책입니다. 링크에 걸려있는 개정판은 최근에 나온 것이며 저는 구판을 가지고 있습니다. 구판에서는 코드 오류가 나는 부분도 있고, 책은 TF 1.x 기준으로 코드가 작성되어 있지만 제가 TF 2.x 버전에 익숙하다 보니 코드 실습을 많이 해보지는 못했습니다. 다만 개정판에서는 이런 부분이 많이 개선된 것으로 알고 있으며 위에 서술된 책 중에서 가장 최근에 등장한 것이다보니 GPT2 까지의 내용을 다루고 있다는 장점이 있습니다.
Lecture
-
딥 러닝을 이용한 자연어처리 입문 : 조경현 교수님의 강연했던 딥 러닝을 이용한 자연어처리 입문입니다. 사실 강의 기간이 짧고 많은 내용을 강의하시려다 보니 완전 생초보에게 그렇게 쉬운 강의는 아닌듯한데 호기롭게 신청해서 들었습니다. 그래도 설명을 너무 잘하셨고 Q&A시간에 수강생들이 했던 질문이 궁금했던 내용을 긁어주어 좋았습니다. 아래 강의를 듣기 전에 자연어처리를 개괄하는 강의가 필요하다면 해당 강의를 들어보시는 것을 추천합니다.
-
Text Analytics : 고려대학교 강필성 교수님의 텍스트 분석 강의입니다. 자연어 처리에 대한 저의 대부분의 지식은 해당 강의를 통해 만들어졌다고 해도 과언이 아닙니다. 개념이나 수학 기반의 강의인지라 코드 부분이 부족할 수는 있겠습니다. 하지만 교수님이 설명을 매우 잘해주시고 강의가 커버하는 범위도 토큰의 벡터으로 표현하는 여러 방법부터 Topic Modeling이나 Transformer 이후의 언어모델까지 꽤 넓습니다. 다만 RNN, LSTM 같은 신경망 모델에 대한 설명은 빠져있는데 이 부분은 다른 강의나 도서를 통해 공부하시면 좋을 것 같습니다. CS224와 더불어 자연어를 익힐 수 있는 강의 중에는 최고의 강의라고 생각됩니다.
Others
블로그나 아카이빙된 페이지, 유튜브 채널 등은 분야에 상관없이 한 번에 적도록 하겠습니다. 위에서도 그랬듯 순서는 아무 상관 없습니다 :)
-
Ratsgo님 블로그 : 자연어 처리를 공부하는 분들이라면 모두 방문해보셨을 이기창님의 블로그입니다. 단순히 머신러닝 및 딥러닝과 관련된 지식뿐만 아니라 한국어의 다양한 언어적 특징도 잘 정리해주셔서 잘 읽고 있습니다. 블로그만 잘 보셔도 한국어 임베딩에 있는 내용의 대부분을 습득하실 수 있지 않을까 생각합니다.
-
Lovit님 블로그 : 역시 자연어 처리를 공부하시는 분들이라면 방문해보셨을 김현중님의 블로그입니다. 여러 예제를 실행해보는 데에 있어서 큰 도움을 얻었습니다.
-
Paul-hyun님 블로그 : 이번 랭콘2020에서 강의하셨던 현청천님의 블로그입니다. 블로그에 자료가 많지는 않지만 논문 구현 자료가 큰 도움이 되었습니다. 12월부터 자연어 논문 읽기를 할 생각인데 그 때 다시 한 번 참고할 생각입니다.
-
박해선님 블로그 : 위에서 언급했던 역자이자 저자인 박해선님의 블로그입니다. 해당 블로그에서 핸즈 온 머신러닝 2판에 대한 강의도 볼 수 있습니다.
-
tykimos님 블로그 : 케라스 코리아 관리자이신 김태영님의 블로그입니다. 케라스에 관련된 각종 자료를 포함해 다양한 자료를 볼 수 있습니다.
-
Beomi님 블로그 : KcBERT를 만들어 주신 이준범님의 블로그입니다. 블로그 자료뿐만 아니라 개인적으로는 ‘나만의 웹 크롤러 만들기’ 자료가 크롤링을 공부하면서 큰 도움이 되었습니다.
-
허민석님 유튜브 : 허민석님의 유튜브입니다. 신경망 기초에 대한 내용부터 논문리뷰까지 다양한 내용이 있습니다. 개인적으로는 GPT-3 논문에 대한 개략적인 내용을 가장 처음 알게 된 경로가 허민석님 유튜브를 통해서였습니다.
-
DSBA : Business Analytics와 Text Analytics 강의에서 언급했던 고려대학교 산업경영공학부 DSBA랩의 유튜브 채널입니다. 해당 강의뿐만 아니라 랩실에 계시 학생 분들이 해주시는 논문 리뷰 또한 큰 도움이 되었습니다. (아직 많이 보지는 못했습니다만…)
-
PR12 : 너무나도 유명한 논문 리뷰 스터디인 PR12입니다. 참여자분들의 내공도 상당하시고 벌써 약 300개의 논문 리뷰가 올라와 있습니다.
-
딥러닝 논문읽기 모임 : ‘딥러닝 논문읽기 모임’ 유튜브 채널입니다. 구독 후 흥미로운 주제의 논문이 올라올 때 (간혹ㅠㅠ) 보고 있습니다. 사실 논문 자체에 대한 두려움 같은 것이 있어서 위 3개 채널을 생각보다 많이 보지는 못합니다 ㅠㅠ
추가가 필요한 부분이나 수정이 필요한 부분에 대해서는 efrks@naver.com 으로 메일 주시면 감사하겠습니다. 빠진 부분에 대해서도 지속적으로 채워나갈 예정입니다. (여러 페북 페이지나 그룹 등은 찾으면 금방 난오는 부분이라 제외하였습니다.)
Comments