# 📉 Khóa 3: Toán cho Machine Learning — đạo hàm, gradient và tối ưu hóa huấn luyện

By Better Wise · Generated by Everwise

Nắm đạo hàm và gradient descent qua các vòng lặp tính tay, để hiểu vì sao mô hình học được và khi nào quá trình huấn luyện thất bại.

- **Level:** Intermediate
- **Goal:** Fundamentals
- **Language:** Vietnamese
- **Focus:** [đạo hàm và độ dốc](/courses?q=%C4%91%E1%BA%A1o%20h%C3%A0m%20v%C3%A0%20%C4%91%E1%BB%99%20d%E1%BB%91c), [gradient nhiều biến](/courses?q=gradient%20nhi%E1%BB%81u%20bi%E1%BA%BFn), [gradient descent](/courses?q=gradient%20descent), [learning rate và hội tụ](/courses?q=learning%20rate%20v%C3%A0%20h%E1%BB%99i%20t%E1%BB%A5)
- **Prior knowledge:** Đã biết vector và ma trận cơ bản, Biết đọc đồ thị hàm số
- **Practice:** Exercises + capstone project
- **Time:** ~4.9h
- **Voice:** một kỹ sư ML thực chiến, luôn hỏi 'đạo hàm này giúp model giảm lỗi thế nào' rồi mới đưa ra công thức
- **Not covered:** đạo hàm ma trận nâng cao, chứng minh tối ưu lồi hình thức, lan truyền ngược trong mạng sâu

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

Sau khóa học này, bạn sẽ có khả năng:

- Đọc một đạo hàm và giải thích được nó đang nói gì về hình dạng của hàm số, chứ không chỉ tính ra một con số.
- Áp dụng chain rule để tính đạo hàm của hàm hợp, tức là chuỗi phép tính bên trong một model.
- Tính đạo hàm riêng và ghép thành vector gradient, rồi đọc gradient như hướng tăng nhanh nhất của hàm loss.
- Chạy gradient descent bằng tay từng bước trên một bài toán nhỏ, ghi lại loss sau mỗi vòng lặp và thấy nó giảm.
- Chọn learning rate có lý do, nhận ra dấu hiệu dao động và phân kỳ, và biết chỉnh gì khi quá trình huấn luyện không hội tụ.
- Phân biệt cực tiểu, cực đại và saddle point, hiểu vì sao điểm dừng chưa chắc là điểm tốt.
- Huấn luyện hồi quy tuyến tính bằng gradient descent tự viết và giải thích được từng con số trong vòng lặp.

Điểm chung của mọi mục tiêu trên: mỗi khi đưa ra một công thức, bạn sẽ trả lời được câu hỏi "đạo hàm này giúp model giảm lỗi thế nào".

## Khóa học này dành cho ai

Khóa học ở mức **intermediate**, dành cho người đã có nền tảng toán cơ bản và muốn hiểu gradient descent từ bên trong thay vì gọi thư viện rồi tin tưởng.

Bạn cần đã biết:

- Vector và ma trận cơ bản (cộng, nhân, chuyển vị).
- Cách đọc đồ thị hàm số: trục, độ dốc, điểm cao nhất và thấp nhất.

Bạn **không** cần biết trước đạo hàm, gradient hay machine learning. Khóa học bắt đầu từ ý nghĩa hình học của đạo hàm và đi lên.

Nếu bạn đã quen dùng `model.fit()` nhưng luôn thắc mắc bên trong nó làm gì, đây là khóa học dành cho bạn. Nếu bạn tìm một khóa dạy dùng framework, khóa này không phải vậy: chúng ta tính tay trước, code sau.

## Lộ trình khóa học

**Module 1: Đạo hàm, độ dốc và gradient**

- **1.1 Độ dốc và ý nghĩa hình học của đạo hàm.** Đạo hàm là độ dốc của tiếp tuyến, và độ dốc đó cho biết thay đổi nhỏ ở đầu vào làm đầu ra đổi bao nhiêu.
- **1.2 Đạo hàm hàm hợp và chain rule.** Model là một chuỗi hàm lồng nhau, nên chain rule chính là công cụ để lan truyền ảnh hưởng từ loss ngược về từng tham số.
- **1.3 Đạo hàm riêng và vector gradient.** Khi hàm có nhiều biến, đạo hàm riêng theo từng biến ghép lại thành gradient, một mũi tên chỉ hướng đi lên dốc nhất.
- **1.4 Checkpoint: Đạo hàm và gradient.** Bài kiểm tra ngắn để chắc rằng bạn tính đúng trước khi bước sang phần tối ưu.

**Module 2: Gradient descent và hồi quy tuyến tính**

- **2.1 Gradient descent tính tay từng bước.** Chạy thuật toán trên giấy với vài con số, cập nhật tham số từng vòng và ghi lại loss.
- **2.2 Learning rate, dao động và phân kỳ.** Cùng một thuật toán, learning rate quá nhỏ thì chậm, quá lớn thì nhảy qua lại hoặc nổ tung. Bạn sẽ thấy cả ba trường hợp.
- **2.3 Cực trị, saddle point và điểm dừng.** Gradient bằng 0 chưa đủ để kết luận đã tới đáy; cần phân biệt các loại điểm dừng.
- **2.4 Project: Hồi quy tuyến tính với gradient descent.** Ghép toàn bộ kiến thức để huấn luyện một model hồi quy từ đầu và theo dõi loss giảm qua từng vòng lặp.
- **2.5 Checkpoint: Gradient descent và hồi quy tuyến tính.** Kiểm tra tổng hợp cho cả module và cho project.

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

Khóa học gồm **9 bài**, tổng thời lượng ước tính **khoảng 295 phút**, tức gần 5 giờ học tập trung. Bạn có thể chia thành vài buổi, mỗi buổi một module.

Các dạng bài bạn sẽ gặp:

- **Lý thuyết ngắn.** Giải thích súc tích, đặt câu hỏi "cái này giúp model giảm lỗi thế nào" trước khi đưa công thức.
- **Bài tập tính tay.** Bạn tự tính đạo hàm, tự chạy một vài vòng cập nhật, rồi đối chiếu kết quả.
- **Ví dụ thực tế.** Mỗi khái niệm gắn với một tình huống huấn luyện cụ thể, không phải bài toán trừu tượng.
- **Project xuyên suốt.** Một bài toán hồi quy tuyến tính được xây dần qua các bài.
- **Checkpoint quiz.** Hai bài kiểm tra ở cuối mỗi module để bạn tự đánh giá trước khi đi tiếp.

Cách học khuyến nghị: đi **tuần tự** từ 1.1 đến 2.5, vì mỗi bài dùng lại kết quả của bài trước và project được xây nối tiếp. Tuy nhiên bạn có thể **bỏ qua** phần lý thuyết đã vững: nếu đã tính thạo đạo hàm hàm hợp, hãy làm nhanh bài tập của 1.2 rồi đi tiếp. Đừng bỏ qua hai checkpoint, vì chúng cho biết bạn đã sẵn sàng cho module sau chưa.

## Project của khóa học

Project tên là **"Hồi quy tuyến tính bằng gradient descent từ đầu"**.

Bạn sẽ xây một quy trình huấn luyện hoàn chỉnh, không dùng thư viện tối ưu nào:

1. Định nghĩa model tuyến tính và hàm loss.
2. Tính gradient của loss theo từng tham số.
3. Viết vòng lặp gradient descent, cập nhật tham số sau mỗi vòng.
4. Ghi lại loss theo từng vòng lặp và vẽ đường loss giảm dần.
5. Thử thay đổi learning rate và giải thích điều gì xảy ra với đường loss.

Các bài nuôi project:

- **1.1 đến 1.3** cho bạn công cụ tính đạo hàm và gradient.
- **2.1** là lần chạy tay đầu tiên, chính là bản nháp của vòng lặp bạn sẽ code.
- **2.2** dạy bạn chọn và chỉnh learning rate cho project.
- **2.3** giúp bạn đọc đúng trạng thái khi loss ngừng giảm.
- **2.4** là nơi bạn lắp tất cả lại thành một chương trình chạy được.

Đây là **một mạch liên tục**, không phải các bài tập rời rạc: mỗi bài thêm một mảnh vào cùng một file, và đến cuối bạn có một model tự viết mà bạn hiểu từng dòng.

## Contents

- **📐 Đạo hàm, độ dốc và gradient**
  - [📈 Độ dốc và ý nghĩa hình học của đạo hàm](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/do-doc-va-y-nghia-hinh-hoc-cua-dao-ham.md)
  - [🔗 Đạo hàm hàm hợp và chain rule](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/dao-ham-ham-hop-va-chain-rule.md) (sign-in required)
  - [🧭 Đạo hàm riêng và vector gradient](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/dao-ham-rieng-va-vector-gradient.md)
  - [✅ Checkpoint: Đạo hàm và gradient](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/checkpoint-dao-ham-va-gradient.md)
- **📉 Gradient descent và hồi quy tuyến tính**
  - [✍️ Gradient descent tính tay từng bước](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/gradient-descent-tinh-tay-tung-buoc.md)
  - [🎚️ Learning rate, dao động và phân kỳ](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/learning-rate-dao-dong-va-phan-ky.md)
  - [⛰️ Cực trị, saddle point và điểm dừng](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/cuc-tri-saddle-point-va-diem-dung.md)
  - [🛠️ Project: Hồi quy tuyến tính với gradient descent](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/project-hoi-quy-tuyen-tinh-voi-gradient-descent.md)
  - [✅ Checkpoint: Gradient descent và hồi quy tuyến tính](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/checkpoint-gradient-descent-va-hoi-quy-tuyen-tinh.md)
- [Course cheatsheet](https://everwise.study/courses/khoa-3-toan-cho-machine-learning-dao-ham-gradient-va-toi-uu-hoa-huan-luyen/cheatsheet.md) (premium content)
