🧠 Khóa 5: Toán cho Machine Learning — tích chập, softmax và lan truyền ngược cho deep learning

By Better Wise · Generated by Everwise

Đi từ công thức tích chập và softmax đến tự tay viết lan truyền ngược cho một mạng nhỏ, đủ để đọc và kiểm chứng code deep learning.

Level
Advanced
Goal
Deep dive
Language
Vietnamese
Focus
tích chập và phép toán trên ảnh softmax và cross-entropy lan truyền ngược shape của gradient và numerical stability
Prior knowledge
Đã biết vector, ma trận và đạo hàm riêng, Đã biết xác suất cơ bản, Biết Python cơ bản
Practice
Capstone project
Time
~5.9h
Voice
một nghiên cứu viên deep learning thích bóc một lớp mạng nơ-ron thành từng phép toán nhỏ rồi kiểm tra bằng code chạy được
Not covered
kiến trúc transformer chi tiết, lý thuyết information theory đầy đủ, tối ưu phân tán trên nhiều GPU

Bạn sẽ đạt được gì

Sau khóa học, bạn có thể tự tay viết và kiểm chứng từng phép toán bên trong một mạng nơ-ron nhỏ, thay vì gọi thư viện như một hộp đen:

  • Cài đặt tích chập 1D và 2D từ đầu, hiểu rõ kernel, stride, padding và cách chúng quyết định shape đầu ra.
  • Vector hóa tích chập bằng im2col và kiểm tra shape của mọi tensor trước khi chạy forward.
  • Viết backward pass cho một lớp tuyến tính và một lớp tích chập, tức là đạo hàm của loss theo từng tham số.
  • Cài softmax ổn định số học bằng log-sum-exp và giải thích vì sao bản naive bị tràn số.
  • Tính cross-entropy, suy ra gradient của nó và đối chiếu với gradient checking bằng sai phân hữu hạn.
  • Chẩn đoán vanishing/exploding gradient và nhận ra các dấu hiệu numerical instability trong quá trình train.
  • Hoàn thành một mạng 2 lớp chạy được end-to-end: forward, backward, gradient check và training loop.

Mục tiêu của khóa là deep dive: bạn không chỉ biết công thức đúng mà còn biết cách chứng minh nó đúng bằng code chạy được.

Khóa học dành cho ai

Đây là khóa trình độ advanced, phù hợp với người đã quen với đại số tuyến tính ở mức thao tác và muốn hiểu sâu cơ chế bên dưới.

Kiến thức cần có trước khi bắt đầu:

  • Vector, ma trận và đạo hàm riêng. Bạn cần đọc được ký hiệu $\partial L / \partial W$ mà không dừng lại để tra cứu.
  • Xác suất cơ bản: phân phối rời rạc, kỳ vọng, xác suất có điều kiện.
  • Python cơ bản: viết hàm, vòng lặp, và đủ quen với NumPy để làm việc với mảng nhiều chiều.

Khóa không dạy lại các phần trên. Nếu bạn còn lung túng với phép nhân ma trận hoặc đạo hàm riêng, hãy ôn trước, vì mọi bài trong khóa đều dựa vào chúng.

Lộ trình khóa học

Khóa gồm 3 module, 11 bài, đi từ phép tích chập đến một mạng 2 lớp hoàn chỉnh.

Module 1: Tích chập, shape và lan truyền ngược

  • 1.1 Tích chập 1D và 2D: kernel, stride, padding. Bóc tích chập thành phép nhân và cộng lặp lại, rồi xem kernel, stride, padding thay đổi kết quả thế nào trên ảnh thật.
  • 1.2 Kiểm tra shape và vector hóa tích chập bằng im2col. Biến vòng lặp lồng nhau thành một phép nhân ma trận, kèm quy tắc kiểm tra shape để không bị lệch chiều.
  • 1.3 Lan truyền ngược qua lớp tuyến tính và lớp tích chập. Suy ra gradient cho từng tham số và viết backward pass tương ứng.
  • 1.4 Checkpoint: tích chập và backprop. Bài kiểm tra củng cố toàn bộ Module 1.

Module 2: Softmax, cross-entropy và numerical stability

  • 2.1 Softmax và log-sum-exp: ổn định số học. Vì sao softmax naive tràn số với logit lớn, và log-sum-exp sửa điều đó ra sao.
  • 2.2 Cross-entropy và đạo hàm của loss theo từng tham số. Đi từ loss đến gradient, kèm các rút gọn đáng nhớ.
  • 2.3 Vanishing/exploding gradient, numerical stability và gradient checking. Nhận diện triệu chứng và xác minh gradient bằng sai phân hữu hạn.
  • 2.4 Checkpoint: loss, gradient và numerical stability. Bài kiểm tra củng cố toàn bộ Module 2.

Module 3: Capstone: forward/backward cho mạng 2 lớp

  • 3.1 Project: forward pass và kiểm tra shape cho mạng 2 lớp. Dựng forward pass và khóa chặt shape trước khi nghĩ đến train.
  • 3.2 Project: backward pass, gradient checking và training loop. Viết backward, kiểm tra gradient, rồi chạy training loop đầu tiên.
  • 3.3 Checkpoint: capstone forward/backward. Bài kiểm tra tổng kết toàn khóa.

Khóa học vận hành thế nào

Khóa trộn bốn dạng bài:

  • Lý thuyết: suy ra công thức theo từng bước nhỏ, có hình minh họa cho tích chập và shape.
  • Thực hành: bài tập code ngắn, thường là viết một hàm forward hoặc backward rồi kiểm tra output.
  • Project: chuỗi bài của Module 3, nối tiếp nhau thành một chương trình hoàn chỉnh.
  • Checkpoint quiz: bài kiểm tra cuối mỗi module để xác nhận bạn đã nắm chắc trước khi đi tiếp.

Tổng thời lượng ước tính khoảng 355 phút cho 11 bài, tức trung bình hơn 30 phút mỗi bài. Các bài project ở Module 3 thường tốn thời gian hơn phần lý thuyết.

Cách học khuyến nghị: đi tuần tự. Module 2 dùng lại ký hiệu và quy ước shape từ Module 1, còn Module 3 ghép mọi thứ lại. Nếu bạn đã vững phần nào, có thể đọc lướt lý thuyết nhưng đừng bỏ qua bài thực hành và checkpoint, vì đó là nơi lỗi hiểu bài lộ ra. Một checkpoint không đạt là tín hiệu nên quay lại bài tương ứng trước khi đi tiếp.

Đồ án của khóa

Đồ án xuyên suốt khóa tên là "Mạng 2 lớp tự viết: forward, backward và training loop". Đây là một thread liên tục, không phải các bài tập rời rạc.

Bạn sẽ tự xây một mạng nơ-ron 2 lớp từ con số không, không dùng autograd của framework:

  1. Viết forward pass, bao gồm lớp tích chập hoặc tuyến tính, activation và softmax ổn định.
  2. Kiểm tra shape ở từng bước để chắc chắn tensor khớp nhau.
  3. Viết backward pass, tính gradient của loss theo từng tham số.
  4. Xác minh gradient bằng gradient checking trước khi tin vào kết quả.
  5. Chạy training loop và quan sát loss giảm, đồng thời theo dõi dấu hiệu bất ổn số học.

Các bài nuôi đồ án theo thứ tự: 1.1 đến 1.3 cung cấp phép tích chập và backward pass cho từng lớp; 2.1 đến 2.3 cung cấp softmax, cross-entropy, gradient và công cụ chẩn đoán; 3.1 và 3.2 là nơi bạn lắp tất cả lại thành chương trình chạy được. Khi kết thúc, bạn giữ trong tay một mạng nhỏ hoạt động thật, cùng khả năng giải thích từng dòng trong đó.