NLP 101: 딥러닝과 자연어 처리 학습을 위한 자료 저장소

May 12, 2021 · View on GitHub

본 문서는 딥러닝을 이용한 자연어 처리를 학습하고자 하는 분들을 대상으로 작성되었습니다. 추가되었으면 좋겠다 생각하시는 자료를 알려주시면 반영하도록 하겠습니다.

본 문서는 아래와 같은 규칙을 따라 작성되었습니다.

  • 기본적으로 동일한 내용을 다루는 자료는 중복해서 기록하지 않습니다.
  • 난이도가 유사하다고 판단되는 자료는 하나만 기록합니다.
  • 다만, 유사 난이도를 보유한 자료가 한글 자료일 경우, 영어에 어려움이 있으신 분들을 고려해 함께 기록합니다.
  • 난이도의 차이가 있는 자료, 이를테면 선후행 학습이 수반되어야 하는 자료는 모두 기록합니다.

언어: 한국어 | 영어


Mathematics

Statistics and Probabilities

SourceDescription
Statistics 110문과생도 이해할 수 있을 정도로 쉽게 확률론에 대한 설명을 해주는 강의입니다.
확률과 통계KOCW에서 높은 평점을 자랑하는 한양대학교 이상화 교수님의 확률과 통계 강의입니다.
Brandon Foltz's StatisticsYoutube에 확률과 통계 강의를 짤막하게 올리는 Brandon Foltz의 강의는 대중 교통을 통해 이동하며 짧은 시간 학습하기 좋은 자료입니다.

Linear Algebra

SourceDescription
Essence of Linear Algebra시각 자료를 통해 직관적 설명을 추구하는 3Blue1Brown 채널의 선형대수 강의입니다. 학부 수준의 선형대수 강의를 수강하기 앞서 해당 강의를 시청하는 것이 선형대수의 흐름 전반을 짚는데 큰 도움을 줄 수 있습니다.
Linear AlgebraGilbert Strang 교수의 전설적인 선형대수 강의입니다.
선형대수KOCW에서 높은 평점을 자랑하는 한양대학교 이상화 교수님의 선형대수 강의입니다.
Matrix methods in Data Analysis and Machine LearningGilbert Strang 교수의 선형대수 응용편입니다. 선형대수를 선수 지식으로 하기에 난이도가 있지만, 실제 선형대수가 머신러닝에 어떻게 활용되는지 학습할 수 있는 좋은 강의입니다.

Basic mathematics & Overview

SourceDescription
Essence of calculus선형대수 섹션에서 설명한 3Blue1Brown 채널의 미적분학 강의입니다. 마찬가지로 학부 수준의 미적분 강의를 진행하기 전 미적분을 이해하는데 도움을 줄 수 있는 강의입니다.
CalculusGilbert Strang 교수의 미적분학 교재입니다. 모든 챕터를 볼 필요는 없지만, Chapter 2-4, 11-13, 15-16 등은 학습하면 좋을 것 같다고 생각해 추가하였습니다.
Mathematics for Machine Learning머신러닝 학습에 수반되는 수학 지식을 모두 담은 책입니다. 개괄적 설명을 이어나가기에 이공계 학부 수준의 수학 지식은 선행되어야 이해하기 수월할 것이라 생각합니다.

Deep Learning and Natural Language Processing

Deep Learning

SourceDescription
모두를 위한 딥러닝Clova AI를 리드하고 계신 김성훈님의 딥러닝 강의입니다. 입문 수준으로 최고의 강의입니다.
모두를 위한 딥러닝2앞서 언급한 김성훈님 강좌의 후속작입니다. Tensorflow와 PyTorch 버전이 각각 존재하며, 최신 코드로 설명을 진행하기 때문에 가치가 있다고 생각합니다.
CS230말이 필요없는, 최근 deeplearning.ai이라는 인공지능 교육 스타트업까지 설립한 Andrew Ng 교수님의 스탠포드 내 딥러닝 강의입니다.
Deep Learning BookGAN의 아버지, Ian Goodfellow 주도로 작성된 명서입니다. 원서를 읽는데 어려움이 없으시다면, 해당 책은 꼭 읽어보시길 추천합니다.
Dive into Deep LearningDeep Learning Book이 이론을 중심으로 Deep Learning을 설명한다면, 본 책은 이론과 더불어 코드로 해당 개념이 어떻게 구현되는지를 함께 다룹니다.
Grokking Deep LearningDeep Learning 관련 Framework를 사용하지 않고, NumPy로 신경망의 기본 요소들을 작성하는 법을 학습할 수 있는 서적입니다. High-level API 내 실제 동작이 어떻게 이루어지는지 학습하기에 좋은 자료입니다.

Natural Language Processing

SourceDescription
한국어 임베딩ratsgo라는 필명으로 유명한 이기창님의 자연어 처리 서적입니다. 제목은 한국어 '임베딩' 이지만 현대 자연어 처리의 근간이 되는 모든 지식을 함축하고 있는 좋은 책입니다. 특히 수식으로 가득하여 어려울 수 있는 내용들이 정말 간결한 설명으로 소개하고 있기 때문에 자연어 처리를 처음 접하는 분들에게는 좋은 입문 서적이 될수도, 자연어 처리를 접하기는 했지만 수식에 대한 정확한 이해가 부족했던 분들에게는 좋은 보충서가 될 수 있는 명저입니다.
밑바닥부터 시작하는 딥러닝2밑바닥 시리즈의 자연어 처리 버전입니다. 신경망 이론을 선수 지식으로 필요로 하기에 난이도가 살짝 있지만, 한국어로 번역된 혹은 한국어로 작성된 자연어 책 중 수준급의 책입니다.
딥러닝을 이용한 자연어 처리 GRU로 유명한 조경현 교수님이 D2 캠퍼스에서 강의하신 자연어 처리 강의입니다. 딥러닝 지식에 대한 복습 이후, 자연어 처리를 개괄적으로 설명해주기 때문에 딥러닝 기본 지식이 선수 지식으로 필요합니다.
Neural Network Methods for NLP Yoav Goldberg가 작성한 딥러닝을 이용한 자연어 처리 전문 서적입니다. 위트있는 설명으로 핵심을 잘 짚어주는 명서입니다.
Eisenstein's NLP Note머신러닝을 이용한 자연어 처리 뿐 아니라 자연어 처리를 학습하기 위해 필요한 기본적인 언어학 지식을 함께 다루는 명서입니다. 본 Note를 기반으로 한 Eisenstein의 책 Introduction to Natural Language Processing 이 출간되었습니다.
CS224N Stanford 대학의 자연어 처리 명강의입니다. 2019년 버전까지 나왔기 때문에 최신 트렌드까지 다룬다는 큰 장점이 있습니다.
CS224U GLUE 벤치마크의 등장 이후 그 중요성이 한층 더해진 자연어 이해 강의입니다. CS224N 이후 수강하면 좋을 것 같아보이며, PyTorch로 과제를 제공한다는 점이 매력적입니다.
Natural Language Processing Seminar자연어 처리 관련 연구로 유명한 워싱턴 대학교 Allen School의 자연어 처리 세미나 플레이 리스트입니다. 유명 연구진들이 여러 주제로 유익한 세미나를 진행합니다.
Code-First Intro to Natural Language Processingfast.ai의 공동 설립자 Rachel Thomas가 진행하는 코드로 이해하는 자연어 처리 강의입니다. 강의를 듣다보면 Rachel Thomas가 내뿜는 Motivation에서 헤어나올 수 없게 됩니다.
Natural Language Processing with PyTorch양질의 데이터 과학 책을 출판하기로 유명한 O'REILLY 사의 자연어 처리 서적입니다. 기본 코드가 PyTorch로 작성되어 있으므로, PyTorch 유저분들이 읽기 좋은 책입니다.
Linguistic Fundamentals for Natural Language ProcessingBender rule로 유명한 언어학자 Emily Bender의 언어학 서적입니다. 딥러닝 관련 서적은 아니지만 언어학과 관련된 도메인 지식을 기를 수 있는 훌륭한 입문서입니다.

SourceDescription
NumPy머신러닝 연산에 필수적으로 사용되는 NumPy를 Stanford CS231N 강좌에서 정리해주었습니다.
TensorflowTensorflow에서 직접 제공하는 튜토리얼입니다. 기본적인 지식을 그림 자료와 함께 훌륭하게 설명합니다.
PyTorchFacebook이 제공하는 PyTorch Tutorial로 양질의 퀄리티를 자랑합니다.
tensor2tensorGoogle에서 제공하는 Sequence to Sequence Tool Kit 입니다. Tensorflow로 작성되었습니다.
fairseqFacebook에서 제공하는 Sequence to Sequence Tool Kit 입니다. PyTorch로 작성되었습니다.
Hugging Face TransformersTransformer를 기반으로 한 Pre-trained 모델들을 손 쉽게 사용할 수 있도록 프랑스의 Hugging Face가 제공해주고 있는 라이브러리입니다. 개발자 뿐만 아니라 연구자들도 많이 활용하는 자연어 처리의 핵심 라이브러리라 할 수 있겠습니다.
Hugging Face TokenizersHugging Face가 관리하는 토크나이저 라이브러리입니다. 핵심 기능들이 Rust로 구현되어 빠른 속도를 자랑하며, BPE를 비롯한 최신 토크나이징 기술을 실험해볼 수 있다는 장점이 있습니다.
spaCy최근 자연어 처리 분야에서 각광을 받고 있는 spaCy의 핵심 개발자 Ines가 작성한 튜토리얼입니다.
flair베를린 훔볼트 대학에서 개발되고 있는 라이브러리로, 다양한 시퀀스 라벨링 태스크를 실험해보기 편리한 라이브러리입니다.
torchtextPyTorch 사용 시, 손 쉽게 데이터 전처리가 가능한 torchtext의 튜토리얼입니다. 공식 문서보다 더 자세한 설명을 수반하고 있습니다.
SentencePieceSubword Information을 이용해 BPE 기반의 Vocabulary 구축을 도와주는 Google의 오픈 소스 라이브러리입니다.
KoNLPy한국어 자연어 처리에 있어 중요하게 활용되는 여러 형태소 분석기를 포함하고 있는 라이브러리입니다.
soynlp한국어 자연어 처리를 수행할 때 비지도 학습 기반의 여러 훈련을 가능케 해주는 라이브러리입니다.
NLTK김도형 박사님이 제공하는 NLTK 튜토리얼로 보기도 편하며, 내용도 알찹니다.

Useful materials


AWESOME blogs

BlogArticle you should read
Christopher Olah's BlogUnderstanding LSTM Networks
Jay Alammar's BlogIllustrated Word2vec
Sebastian Ruder's BlogTracking Progress in Natural Language Processing
Chris McCormick's BlogWord2Vec Tutorial - The Skip-Gram Model
The GradientEvaluation Metrics for Language Modeling
Distill.pubVisualizing memorization in RNNs
Thomas Wolf's BlogThe Current Best of Universal Word Embeddings and Sentence Embeddings
dair.aiA Light Introduction to Transfer Learning for NLP
Machine Learning MasteryHow to Develop a Neural Machine Translation System from Scratch
ratsgo님 블로그Word2Vec의 학습 방식
스캐터랩 핑퐁팀 블로그카톡 데이터는 어떻게 정제할 수 있을까?
김현중님 블로그Unsupervised tokenizers in soynlp project
박상길님 블로그BERT 톺아보기

Communities


NLP Specialists You should remember

(not enumarted by rank)

NameDescriptionKnown for
Kyunghyun ChoProfessor @NYUGRU
Yejin ChoiProfessor @Washington Univ.Grover
Yoon KimPh.D Candidate @Harvard Univ.CNN for NLP
Minjoon SeoResearcher @Clova AI, Allen AIBiDAF
Kyubyong ParkResearcher @Kakao BrainPaper implementation & NLP with Korean language
Tomas MikolovResearcher @FAIRWord2vec
Omer LevyResearcher @FAIRVarious Word Embedding techniques
Jason WestonResearcher @FAIRMemory Networks
Yinhan LiuResearcher @FAIRRoBERTa
Guillaume LampleResearcher @FAIRXLM
Alexis ConneauResearcher @FAIRXLM-R
Mike LewisResearcher @FAIRBART
Ashish VaswaniResearcher @GoogleTransformer
Jacob DevlinResearcher @GoogleBERT
Kenton LeeResearcher @GoogleE2E Coref
Matthew PetersResearcher @Allen AIELMo
Alec RadfordResearcher @Open AIGPT-2
Sebastian RuderResearcher @DeepMindNLP Progress
Richard SocherResearcher @SalesforceGlove
Jeremy HowardCo-founder @Fast.aiULMFiT
Thomas WolfLead Engineer @Hugging facepytorch-transformers
Luke ZettlemoyerProfessor @Washington Univ.ELMo
Yoav GoldbergProfessor @Bar Ilan Univ.Neural Net Methods for NLP
Chris ManningProfessor @Stanford Univ.CS224N
Dan JurafskyProfessor @Stanford Univ.Speech and Language Processing
Graham NeubigProfessor @CMUNeural Nets for NLP
Sam BowmanProfessor @NYUNLI Benchmark
Nikita KitaevPh.D Candidate @UC BerkeleyReformer
Zihang DaiPh.D Candidate @CMUTransformer-XL
Zhilin YangPh.D Candidate @CMUXLNet
Abigail SeePh.D Candidate @Stanford Univ.Pointer Generator
Kevin ClarkPh.D Candidate @Stanford Univ.ELECTRA
Eric WallacePh.D Candidate @Berkely Univ.AllenNLP Interpret

Research Conferences