Khóa học Deep Learning
(fleuret.org)- Đây là bộ tài liệu bài giảng deep learning công khai được tổng hợp cho môn 14x050 của Đại học Geneva, nơi có thể xem tập trung slide, handout và video ghi hình của François Fleuret
- Dựa trên các ví dụ PyTorch, tài liệu bao quát phạm vi rộng để người mới bắt đầu theo học, từ phép toán tensor, tự động vi phân, gradient descent đến các mô hình sinh, hồi quy và attention
- Kho lưu trữ PDF đầy đủ có quy mô 1107 slide, còn phụ đề screencast được cung cấp dưới dạng tệp ZIP tạo tự động bằng OpenAI Whisper
- Kèm theo Practical 1~6, mã lời giải và Python prologue dùng chung, có thể áp dụng ngay cho thực hành tải và tiền xử lý MNIST/CIFAR10
- Cần có nền tảng về đại số tuyến tính, vi phân, Python, xác suất-thống kê, tối ưu hóa, thuật toán và xử lý tín hiệu cơ bản; tài liệu được phát hành theo giấy phép CC BY-NC-SA 4.0
Tổng quan khóa học
- Deep Learning Course là trang tập hợp slide và tài liệu ghi hình của khóa học deep learning 14x050 tại Đại học Geneva do François Fleuret giảng dạy
- Đây là khóa nhập môn deep learning có kèm các ví dụ trong framework PyTorch
- Phạm vi bài giảng được triển khai theo các trục sau
- Mục tiêu của machine learning và các bài toán chính
- Phép toán tensor
- Tự động vi phân và gradient descent
- Các kỹ thuật chuyên dùng cho deep learning
- Mô hình sinh, mô hình hồi quy và mô hình attention
- Ngoài ra còn có tài liệu riêng "The Little Book of Deep Learning"
- Đây là sách nhập môn deep learning ngắn gọn, định dạng phù hợp điện thoại, dành cho độc giả có nền tảng STEM
- Khóa học này được phát triển lần đầu tại Idiap Research Institute vào năm 2018 và được giảng dạy với mã EE-559 tại École Polytechnique Fédérale de Lausanne đến năm 2022
Định dạng tài liệu và tải về
- Slide PDF dùng cho bài giảng được trình bày theo chiều ngang và sử dụng overlay theo tiến trình trình chiếu
- Handout PDF được biên dịch theo chiều dọc, không có hiệu ứng overlay và có thêm ghi chú bổ sung
- Screencast có thể xem qua trình duyệt hoặc tải về dưới dạng tệp mp4
- Toàn bộ kho lưu trữ PDF có thể tải bằng các tệp sau
- dlc-handout-all.zip: 101.7Mb
- dlc-slides-all.zip: 101.7Mb
- Phụ đề screencast được tạo tự động bằng Whisper của OpenAI; tệp dlc-video-subtitles.zip có dung lượng 502.1Kb
Mạch nội dung 13 chương
- Toàn bộ tài liệu bài giảng gồm 13 chương lớn, mỗi chương đều có kèm số lượng slide và thời lượng video
- Phần đầu tập trung xây dựng các khái niệm nền tảng của deep learning và machine learning
- Introduction: từ neural network đến deep learning, các ứng dụng hiện tại và ví dụ thành công, cơ sở tensor và linear regression, tensor nhiều chiều, cấu trúc bên trong của tensor
- Machine learning fundamentals: loss và risk, overfitting và underfitting, bài toán tiến thoái lưỡng nan bias-variance, giao thức đánh giá, clustering và embedding
- Multi-layer perceptron and back-propagation: perceptron, góc nhìn xác suất của linear classifier, khả năng phân tách tuyến tính, MLP, gradient descent, backpropagation
- Phần giữa chuyển sang cách dùng PyTorch cùng các layer và kỹ thuật huấn luyện deep learning
- Graphs of operators, autograd, and convolutional layers: mạng DAG, Autograd, module PyTorch và xử lý batch, convolution, pooling, cách viết module PyTorch
- Initialization and optimization: cross-entropy loss, stochastic gradient descent, PyTorch optimizer, penalty L2/L1, khởi tạo tham số, lựa chọn kiến trúc và giao thức huấn luyện, cách viết hàm Autograd
- Going deeper: lợi ích của độ sâu, Rectifier, Dropout, Batch Normalization, Residual Network, sử dụng GPU
- Phần cuối mở rộng sang mô hình sinh, computer vision, phân tích bên trong mô hình và mô hình chuỗi
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
- Screencast về VAE chưa được cập nhật nên cần xem slide
- Computer vision: tác vụ computer vision, mạng phân loại ảnh, mạng phát hiện đối tượng, mạng phân đoạn ngữ nghĩa, DataLoader và neuro-surgery
- Under the hood: xem tham số, xem activation, trực quan hóa quá trình xử lý từ đầu vào, tối ưu hóa đầu vào
- Autoregression and Normalizing Flows: tự hồi quy, Causal convolution, Non-volume preserving network
- Generative Adversarial Networks: GAN, Wasserstein GAN, Conditional GAN và chuyển đổi ảnh, tính bền vững của mô hình và checkpoint
- Recurrent models and NLP: RNN, LSTM và GRU, word embedding và dịch máy
- Attention models: attention cho bộ nhớ và dịch chuỗi, cơ chế attention, Transformer Network
- Screencast của chương attention chưa được cập nhật nên cần xem slide
- Autoencoders: Transposed convolution, Deep Autoencoder, Denoising Autoencoder, Variational Autoencoder
Tài liệu thực hành và Python prologue
- Phần thực hành được cung cấp dưới dạng Practical 1~6, mỗi phần đều có PDF và mã lời giải đi kèm
- Python prologue dùng cho thực hành được cung cấp tại dlc_practical_prologue.py
- Prologue xử lý các đối số dòng lệnh
--full: dùng toàn bộ tập dữ liệu--tiny: dùng tập dữ liệu rất nhỏ để kiểm tra nhanh--seed SEED: chỉ định random seed; nếu nhỏ hơn 0 thì không seed--cifar: dùng tập dữ liệu CIFAR thay cho MNIST--data_dir DATA_DIR: chỉ định vị trí dữ liệu PyTorch, mặc định là$PYTORCH_DATA_DIRhoặc./data
- Hàm
load_data(cifar=None, one_hot_labels=False, normalize=False, flatten=True)sẽ tải dữ liệu nếu cần, và nếuflattenlà true thì chuyển ảnh thành vector 1 chiều - Giá trị trả về là bốn tensor
train_data,train_target,test_data,test_target - Nếu
cifar=Truethì dùng CIFAR10, nếuFalsethì dùng MNIST, cònNonethì làm theo đối số--cifar - Nếu
one_hot_labels=Truethì target được đổi thànhtorch.Tensor2D với số cột bằng số lớp; chỉ vị trí đáp án đúng là 1, còn lại là -1 - Nếu
normalize=Truethì tensor dữ liệu được chuẩn hóa theo trung bình và phương sai của dữ liệu huấn luyện - Nếu
flatten=Truethì dữ liệu là tensor 2DN × D, còn nếu false thì là tensor 4DN × C × H × W - Ví dụ mặc định dùng MNIST; nếu không có
--fullthì dữ liệu được rút gọn còn 1000 mẫu huấn luyện và 1000 mẫu kiểm tra, với kích thước đầu vào làtorch.Size([1000, 784])
Kiến thức nền và tài liệu tham khảo
- Kiến thức nền yêu cầu gồm các mảng sau
- Đại số tuyến tính: vector, ma trận, không gian Euclid
- Vi phân: Jacobian, Hessian, Chain rule
- Lập trình Python
- Cơ sở xác suất và thống kê: phân phối rời rạc/liên tục, luật số lớn, xác suất có điều kiện, Bayes, PCA
- Cơ sở tối ưu hóa: khái niệm cực tiểu, gradient descent
- Cơ sở thuật toán: chi phí tính toán
- Cơ sở xử lý tín hiệu: Fourier transform, wavelet
- Có thể tham khảo tài liệu về Python, Jupyter notebook và PyTorch
Giấy phép sử dụng
- Tài liệu do trang này tự cung cấp được phát hành theo Creative Commons BY-NC-SA 4.0 International License
- Có nêu rõ là được phép dùng cho mục đích giáo dục học thuật chính quy, nhưng không dùng cho sách, YouTube nhiều quảng cáo hoặc các mô hình kiếm tiền khác
2 bình luận
Tiếc là bài giảng không có phụ đề..
Ý kiến trên Hacker News
Kênh YouTube của Stanford cũng đáng xem. Họ đã đăng toàn bộ loạt bài giảng về machine learning gồm 19 video
https://m.youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy
Vào kênh sẽ thấy có khá nhiều bài giảng khoa học máy tính, chất lượng cũng khá tốt
Đã có nhiều tài liệu hay được đưa lên, nhưng có vẻ danh sách thiếu Understanding Deep Learning
Tôi nghĩ Simon J.D. Prince đã làm một việc thực sự xuất sắc với cuốn sách này. Không chỉ phần nội dung chính, các ghi chú kèm theo từng chương còn dẫn thẳng tới các tài liệu tham khảo nâng cao; sách cũng cung cấp các bài tập kiểm tra mức độ hiểu một cách nghiêm túc và những notebook tuyệt vời hiện thực hóa các khái niệm bằng code thực tế
Nếu dạy một lớp về deep learning thì đây cũng là nguồn bài tập miễn phí tốt để giao cho sinh viên, nhưng có lẽ cộng đồng này không phải là đối tượng chính
[0] https://udlbook.github.io/udlbook/
Nếu quan tâm đến khóa học này, Little Book of Deep Learning của cùng tác giả cũng rất đáng xem
https://fleuret.org/francois/lbdl.html
Một tài liệu hay khác là khóa Deep Learning của NYU do Yann LeCun và Alfredo Canziani giảng dạy, có thể xem toàn bộ trên YouTube
https://atcold.github.io/NYU-DLSP20/
https://www.youtube.com/playlist?list=PLLHTzKZzVU9eaEyErdV26ikyolxOsz6mq
Practical Deep Learning for Coders cũng đáng tham khảo
https://course.fast.ai/
Có khóa học chuyên sâu nào hay mà không cần xem video không?
Tôi đang làm một khóa học bớt lý thuyết một chút và tăng phần ứng dụng lên một chút: https://github.com/VikParuchuri/zero_to_gpt
Tất cả video đều là tùy chọn và bao quát cùng nội dung với phần văn bản
Cũng xin đề xuất bộ bài giảng này của Andrej Karpathy. Bài đầu tiên khá dễ tiếp cận ngay cả từ góc nhìn người mới bắt đầu
https://karpathy.ai/zero-to-hero.html
Khóa học này của Sebastian Raschka nhìn chung cũng dễ tiếp cận. Chỉ cần biết một chút Python hoặc một ngôn ngữ tương tự là có thể theo được
https://youtube.com/playlist?list=PLTKMiZHVd_2KJtIXOW0zFhFfBaJJilH51&si=ocsN2zSPN7YsrGiY
Là một full-stack developer đã làm vài năm và cảm giác hơi cùn đi, tôi muốn thử bước vào lĩnh vực này, nhưng hoàn toàn không hình dung được liệu học 6 tháng thì có thể chen chân vào ở mức nào đó hay không
Độ dốc khi nhập môn không quá gắt, nhưng tổng thời gian có thể kéo dài hơn, nên nó giống một cuộc marathon hơn là chạy nước rút