# ✅ Checkpoint: loss, gradient và numerical stability

By Better Wise



## Quiz

1. Với logits z = [1000.0, 1001.0, 1002.0] ở float32, vì sao softmax naive (không trừ max) trả về nan?
   - Vì phép chia trong softmax không hỗ trợ số lớn hơn 1000.
   - Vì exp(1000) underflow về 0, mẫu số bằng 0 nên 0/0 = nan.
   - Vì float32 không biểu diễn được số 1000.
   - Vì exp(1000) tràn thành inf, sau đó inf / inf = nan.
2. Sau khi trừ max, vì sao mẫu số của softmax luôn nằm trong khoảng [1, C]?
   - Vì softmax chuẩn hóa mẫu số về đúng bằng C.
   - Vì phần tử lớn nhất sau khi dịch bằng 0 nên exp của nó bằng 1, và mỗi hạng tử còn lại nằm trong (0, 1].
   - Vì mọi exp(z_i - m) đều bằng 1 sau khi trừ max.
   - Vì NumPy tự kẹp mẫu số vào khoảng [1, C] khi dùng float32.
3. Những phát biểu nào đúng về log-sum-exp và log_softmax? (chọn tất cả đáp án đúng)
   - log_softmax(z) = z - logsumexp(z), tính trực tiếp không qua bước softmax.
   - Đạo hàm của logsumexp theo z bằng softmax(z).
   - logsumexp(z) = m + log(tổng exp(z_i - m)) với m = max(z).
   - Nên tính log(softmax(z)) thay vì log_softmax(z) để đơn giản code.
4. Khi viết softmax cho batch logits shape (N, C), những lỗi nào sau đây gây sai kết quả âm thầm hoặc nan? (chọn tất cả đáp án đúng)
   - Quên kiểm tra z.dtype, để logits float32 vượt ngưỡng tràn exp khoảng 88.7.
   - Lấy log lên đầu ra của softmax thay vì dùng log_softmax.
   - Trừ max theo từng hàng với keepdims=True trước khi lấy exp.
   - Dùng z.max(axis=1) không có keepdims=True, khiến NumPy broadcasting trừ theo cột thay vì theo hàng.
5. Với nhãn one-hot y và p = softmax(z), đạo hàm của cross-entropy theo vector logits là ____ (viết dạng biểu thức theo p và y).
6. Trên mini-batch N mẫu, với G = p - y shape (N, C) và H là activation đầu vào shape (N, D), gradient theo weight của lớp tuyến tính cuối là ____ (viết dạng biểu thức ma trận).
7. Với sigmoid, đạo hàm lớn nhất bằng ____, nên sau 10 lớp tích gradient còn cỡ 9.5e-7.
8. Gradient check bằng central difference nên chạy ở độ chính xác nào và vì sao?
   - float64, vì machine epsilon của float32 (khoảng 1.19e-7) cùng bậc với sai số sai phân nên kết quả gần như vô nghĩa.
   - float32, vì float64 quá chậm và không cần thiết.
   - Không cần quan tâm dtype, miễn là h chọn đủ nhỏ.
   - float16, vì tiết kiệm bộ nhớ và sai số sai phân cũng nhỏ.
9. Những phát biểu nào đúng về chẩn đoán vanishing/exploding gradient và cách xử lý? (chọn tất cả đáp án đúng)
   - Vanishing gradient là hệ quả của tích các Jacobian có norm nhỏ hơn 1 qua nhiều lớp.
   - Gradient clipping theo norm giữ nguyên hướng cập nhật và chỉ rescale khi norm vượt ngưỡng.
   - Gradient clipping có thể chữa được công thức backward bị sai.
   - He initialization với Var(W) = 2/n_in phù hợp cho ReLU.
10. Hãy tự đánh giá mức độ nắm vững của bạn về việc cài đặt softmax ổn định, cross-entropy và gradient checking cho mạng 2 lớp trong capstone.


---

## Contents

Part of [🧠 Khóa 5: Toán cho Machine Learning — tích chập, softmax và lan truyền ngược cho deep learning](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho.md)

- **🖼️ Tích chập, shape và lan truyền ngược**
  - [🔲 Tích chập 1D và 2D: kernel, stride, padding](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/tich-chap-1d-2d-kernel-stride-padding.md)
  - [📐 Kiểm tra shape và vector hóa tích chập bằng im2col](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/kiem-tra-shape-va-vector-hoa-tich-chap-im2col.md) (sign-in required)
  - [🔁 Lan truyền ngược qua lớp tuyến tính và lớp tích chập](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/lan-truyen-nguoc-qua-lop-tuyen-tinh-va-lop-tich-chap.md)
  - [✅ Checkpoint: tích chập và backprop](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/checkpoint-tich-chap-va-backprop.md)
- **📉 Softmax, cross-entropy và numerical stability**
  - [📊 Softmax và log-sum-exp: ổn định số học](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/softmax-va-log-sum-exp-on-dinh-so-hoc.md)
  - [🎯 Cross-entropy và đạo hàm của loss theo từng tham số](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/cross-entropy-va-dao-ham-loss-theo-tham-so.md)
  - [🧪 Vanishing/exploding gradient, numerical stability và gradient checking](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/vanishing-exploding-gradient-numerical-stability-gradient-checking.md)
  - [✅ Checkpoint: loss, gradient và numerical stability](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/checkpoint-loss-gradient-va-numerical-stability.md) — this lesson
- **🚀 Capstone: forward/backward cho mạng 2 lớp**
  - [🏗️ Project: forward pass và kiểm tra shape cho mạng 2 lớp](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/project-forward-pass-va-kiem-tra-shape-mang-2-lop.md)
  - [⚙️ Project: backward pass, gradient checking và training loop](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/project-backward-pass-gradient-checking-va-training-loop.md) (premium content)
  - [✅ Checkpoint: capstone forward/backward](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/checkpoint-capstone-forward-backward.md) (premium content)
- [Course cheatsheet](https://everwise.study/courses/khoa-5-toan-cho-machine-learning-tich-chap-softmax-va-lan-truyen-nguoc-cho/cheatsheet.md) (premium content)
