딥 러닝 코스
(fleuret.org)- 제네바 대학교 14x050용으로 정리된 딥러닝 공개 강의 자료로, François Fleuret의 슬라이드·핸드아웃·녹화 영상을 한곳에서 볼 수 있음
- PyTorch 예제를 바탕으로 텐서 연산, 자동 미분, 경사 하강법부터 생성·순환·어텐션 모델까지 입문자가 따라갈 범위를 넓게 잡음
- 전체 PDF 아카이브는 1107장 슬라이드 규모이며, 스크린캐스트 자막은 OpenAI Whisper로 자동 생성된 ZIP 파일로 제공됨
- Practical 1~6, 해답 코드, 공통 Python prologue가 함께 제공되어 MNIST/CIFAR10 로딩과 전처리 옵션을 실습에 바로 활용할 수 있음
- 선형대수, 미분, Python, 확률·통계, 최적화, 알고리듬, 신호처리 기초가 필요하며 자료는 CC BY-NC-SA 4.0 조건으로 배포됨
코스 개요
- Deep Learning Course는 François Fleuret의 제네바 대학교 14x050 딥러닝 코스 슬라이드와 녹화 자료를 모아 둔 페이지임
- PyTorch 프레임워크 예제를 포함한 딥러닝 입문 강의로 구성됨
- 강의 범위는 다음 축으로 이어짐
- 머신러닝 목표와 주요 과제
- 텐서 연산
- 자동 미분과 경사 하강법
- 딥러닝 전용 기법
- 생성 모델, 순환 모델, 어텐션 모델
- 별도 자료로 "The Little Book of Deep Learning"도 제공함
- STEM 배경 독자를 위한 휴대폰 포맷의 짧은 딥러닝 입문서임
- 이 코스는 2018년 Idiap Research Institute에서 처음 개발됐고, 2022년까지 École Polytechnique Fédérale de Lausanne에서 EE-559로 강의됨
자료 형식과 다운로드
- 강의용 슬라이드 PDF는 발표에 맞춰 가로 방향과 오버레이를 사용함
- 핸드아웃 PDF는 세로 방향으로 컴파일되며, 오버레이 효과 없이 추가 노트를 포함함
- 스크린캐스트는 브라우저 스트리밍과 다운로드 가능한 mp4 파일로 볼 수 있음
- 전체 PDF 아카이브는 다음 파일로 받을 수 있음
- dlc-handout-all.zip: 101.7Mb
- dlc-slides-all.zip: 101.7Mb
- 스크린캐스트 자막은 OpenAI의 Whisper로 자동 생성됐으며, dlc-video-subtitles.zip 파일 크기는 502.1Kb임
13개 단원 흐름
- 전체 강의 자료는 13개 큰 단원으로 구성되며, 각 단원마다 슬라이드 수와 영상 시간이 함께 제공됨
- 초반부는 딥러닝과 머신러닝의 기본 개념을 잡는 데 초점을 둠
- Introduction: 신경망에서 딥러닝으로, 현재 응용과 성공 사례, 텐서 기초와 선형 회귀, 고차원 텐서, 텐서 내부 구조
- Machine learning fundamentals: 손실과 위험, 과적합과 과소적합, 편향-분산 딜레마, 평가 프로토콜, 클러스터링과 임베딩
- Multi-layer perceptron and back-propagation: 퍼셉트론, 선형 분류기의 확률적 관점, 선형 분리 가능성, MLP, 경사 하강법, 역전파
- 중반부는 PyTorch 사용법과 딥러닝 레이어·학습 기법으로 넘어감
- Graphs of operators, autograd, and convolutional layers: DAG 네트워크, Autograd, PyTorch 모듈과 배치 처리, 합성곱, 풀링, PyTorch 모듈 작성
- Initialization and optimization: 교차 엔트로피 손실, 확률적 경사 하강법, PyTorch optimizer, L2/L1 패널티, 파라미터 초기화, 아키텍처 선택과 학습 프로토콜, Autograd 함수 작성
- Going deeper: 깊이의 이점, Rectifier, Dropout, Batch Normalization, Residual Network, GPU 사용
- 후반부는 생성 모델, 컴퓨터 비전, 모델 내부 분석, 시퀀스 모델까지 확장됨
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
- VAE 스크린캐스트는 최신 상태가 아니므로 슬라이드를 확인해야 함
- Computer vision: 컴퓨터 비전 태스크, 이미지 분류 네트워크, 객체 탐지 네트워크, 의미론적 분할 네트워크, DataLoader와 neuro-surgery
- Under the hood: 파라미터 보기, 활성화 보기, 입력에서 처리 시각화, 입력 최적화
- Autoregression and Normalizing Flows: 자기회귀, Causal convolution, Non-volume preserving network
- Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN과 이미지 변환, 모델 지속성과 체크포인트
- Recurrent models and NLP: RNN, LSTM과 GRU, 단어 임베딩과 번역
- Attention models: 메모리와 시퀀스 번역을 위한 어텐션, 어텐션 메커니즘, Transformer Network
- 어텐션 단원 스크린캐스트는 최신 상태가 아니므로 슬라이드를 확인해야 함
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
실습 자료와 Python prologue
- 실습은 Practical 1~6으로 제공되며, 각 PDF와 해답 코드가 함께 링크됨
- 실습용 Python prologue는 dlc_practical_prologue.py로 제공됨
- prologue는 명령행 인자를 처리함
--full: 전체 데이터셋 사용--tiny: 빠른 확인을 위한 매우 작은 데이터셋 사용--seed SEED: 랜덤 시드 지정, 0 미만이면 시딩하지 않음--cifar: MNIST 대신 CIFAR 데이터셋 사용--data_dir DATA_DIR: PyTorch 데이터 위치 지정, 기본값은$PYTORCH_DATA_DIR또는./data
load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True)함수는 필요한 경우 데이터를 다운로드하고,flatten이 참이면 이미지를 1차원 벡터로 변환함- 반환값은
train_data,train_target,test_data,test_target네 개의 텐서임 cifar=True이면 CIFAR10을 사용하고,False이면 MNIST를 사용하며,None이면--cifar인자를 따름one_hot_labels=True이면 타깃을 클래스 수만큼 열을 가진 2Dtorch.Tensor로 바꾸고, 정답 위치만 1, 나머지는 -1로 설정함normalize=True이면 학습 데이터의 평균과 분산을 기준으로 데이터 텐서를 정규화함flatten=True이면 데이터는N × D2D 텐서가 되고, 거짓이면N × C × H × W4D 텐서가 됨- 기본 예시는 MNIST를 사용하고
--full이 없으면 학습 1000개, 테스트 1000개 샘플로 축소되며, 입력 크기는torch.Size([1000, 784])임
선수 지식과 참고 문서
- 선수 지식은 다음 영역을 포함함
- 선형대수: 벡터, 행렬, 유클리드 공간
- 미분: Jacobian, Hessian, Chain rule
- Python 프로그래밍
- 확률과 통계 기초: 이산·연속 분포, 대수의 법칙, 조건부 확률, Bayes, PCA
- 최적화 기초: 최소값 개념, 경사 하강법
- 알고리듬 기초: 계산 비용
- 신호처리 기초: Fourier transform, wavelet
- 참고 문서로 Python, Jupyter notebook, PyTorch 문서를 확인할 수 있음
이용 라이선스
- 페이지의 자체 자료는 Creative Commons BY-NC-SA 4.0 International License로 배포됨
- 정규 학술 교육 목적 사용은 허용되지만, 책, 광고가 많은 YouTube, 기타 수익화 모델에는 사용하지 않겠다는 조건이 명시돼 있음
댓글과 토론
Hacker News 의견들
-
Stanford의 YouTube 채널도 볼 만함. 머신러닝 강의 전체 시리즈 19개 영상을 올려둠
https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
채널에 들어가 보면 컴퓨터과학 강의가 꽤 많이 올라와 있고, 품질도 좋은 편임- 이 Stanford 강의는 꽤 고급스럽고 빡센 과정으로 보임
-
좋은 자료가 많이 올라왔지만, 목록에 Understanding Deep Learning이 빠진 것 같음
Simon J.D. Prince는 이 책으로 정말 대단한 일을 해냈다고 봄. 본문 내용뿐 아니라 각 장에 붙은 노트가 고급 참고문헌으로 바로 이어지고, 이해도를 제대로 시험하는 연습문제와 개념을 실제 코드로 구현한 훌륭한 노트북까지 제공함
딥러닝 수업을 가르친다면 학생들에게 줄 수 있는 무료 연습자료로도 좋지만, 아마 이 커뮤니티가 주 대상은 아닐 듯함
[0] https://udlbook.github.io/udlbook/ -
이 강의에 관심 있다면 같은 저자의 Little Book of Deep Learning도 꼭 확인해볼 만함
https://fleuret.org/francois/lbdl.html -
또 하나의 좋은 자료로 Yann LeCun과 Alfredo Canziani의 NYU Deep Learning 강의가 있고, YouTube에서 전체를 볼 수 있음
https://atcold.github.io/NYU-DLSP20/
https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq -
Practical Deep Learning for Coders도 참고할 만함
https://course.fast.ai/- Jeremy Howard가 AI 상위 100인 목록에 없었다는 게 충격이었음. 이 강의는 정말 훌륭함
-
영상을 보지 않아도 되는, 깊이 있는 좋은 강의가 있을까?
- https://www.deeplearningbook.org/ , PDF 버전: https://github.com/janishar/mit-deep-learning-book-pdf
- https://d2l.ai/
- 강의 자료와 슬라이드가 있음. 강사가 말로 채워 넣는 단순한 요약 bullet이 아니라, 자료 자체만으로도 완결적임
- https://arthurdouillard.com/deepcourse/
- 많은 사람들이 말했듯 Deep Learning Book은 좋은 선택임
이론은 조금 줄이고 응용을 조금 더 늘린 강의를 만들고 있음: https://github.com/VikParuchuri/zero_to_gpt
영상은 모두 선택 사항이고, 텍스트와 같은 내용을 다룸
-
Andrej Karpathy의 이 강의 묶음도 추천함. 첫 강의는 초보자 관점에서도 꽤 접근하기 쉬움
https://karpathy.ai/zero-to-hero.html- 좀 더 고급 수학이 부족한 사람에게도 괜찮을까?
-
Sebastian Raschka의 이 강의도 전체적으로 접근하기 쉬움. Python이나 비슷한 언어를 조금 알면 따라갈 수 있음
https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY -
몇 년 된, 감이 좀 무뎌진 풀스택 개발자로서 이 분야에 들어가 보고 싶긴 한데, 6개월 공부로 어느 정도든 진입이 가능한지 전혀 감이 안 옴
- 미분이 뭔지 기억하고 수학과 확률을 어느 정도 할 수 있다면 충분히 가능함. React보다도 대부분을 더 쉽게 익힐 수 있다고 봄
진입 경사의 가파름은 덜하지만, 전체 시간은 더 오래 걸릴 수 있어서 단거리 질주보다는 마라톤에 가까움
- 미분이 뭔지 기억하고 수학과 확률을 어느 정도 할 수 있다면 충분히 가능함. React보다도 대부분을 더 쉽게 익힐 수 있다고 봄