- Đại số tuyến tính: véc-tơ, ma trận, phép nhân ma trận. Mỗi tầng mạng nơ-ron tính
W x + b; dữ liệu, tham số, gradient đều là ma trận hay tensor. - Giải tích: đạo hàm, đạo hàm riêng, quy tắc chuỗi. Mô hình học bằng cách đi ngược chiều đạo hàm của hàm mất mát (hạ gradient); lan truyền ngược là quy tắc chuỗi áp dụng có hệ thống.
- Xác suất và thống kê: phân phối, kỳ vọng, phương sai, xác suất có điều kiện, quy tắc Bayes. Dùng trong hàm mất mát, đánh giá mô hình, và để hiểu kết quả.
- Học toán song song với code. Mỗi khái niệm, viết một đoạn code nhỏ để thấy nó làm gì.
Bài này dựa trên mục lục sách Mathematics for Machine Learning, trang môn 18.06SC của MIT OpenCourseWare và trang 3Blue1Brown, đọc ngày 11/11/2026. Các con số trong ví dụ code là số giả định để minh họa.
Cần toán đến đâu
Mức toán cần thay đổi theo việc bạn làm:
- Dùng mô hình có sẵn, gọi API, làm ứng dụng: hiểu khái niệm là đủ (véc-tơ, xác suất, đọc được biểu đồ).
- Học các khóa nhập môn học máy như của Andrew Ng hay CS50 AI: toán năm nhất đại học. Machine Learning Specialization chỉ yêu cầu Python cơ bản và giải thích lại toán khi cần.
- Tự huấn luyện, chẩn đoán mô hình học sâu: thạo phép nhân ma trận, đạo hàm riêng, quy tắc chuỗi, phân phối xác suất.
- Nghiên cứu, đọc bài báo: thêm tối ưu, đại số tuyến tính nâng cao (phân rã ma trận), xác suất và thống kê sâu hơn.
Phần lớn người học AI bắt đầu ở mức thứ hai và lên dần. Đừng đợi học hết toán mới bắt đầu học máy.
Đại số tuyến tính
Cần biết: véc-tơ và phép cộng, nhân vô hướng; tích vô hướng (dot product); ma trận và phép nhân ma trận; ma trận chuyển vị; chuẩn (độ dài) của véc-tơ. Khi lên cao hơn: trị riêng, véc-tơ riêng, phân rã giá trị kỳ dị (SVD).
Dùng vào đâu: một ảnh 28 × 28 điểm là một véc-tơ 784 số. Một tầng mạng nơ-ron nhận véc-tơ đầu vào x, nhân với ma trận trọng số W, cộng véc-tơ độ lệch b, rồi qua hàm kích hoạt. Phân tích thành phần chính (PCA) để giảm chiều dữ liệu dùng véc-tơ riêng hoặc SVD. Cơ chế chú ý (attention) trong transformer là các phép nhân ma trận.
Tài liệu: môn 18.06SC Linear Algebra của MIT OpenCourseWare do giáo sư Gilbert Strang dạy, thiết kế để tự học với video bài giảng, ghi chú tóm tắt, video giải bài, bài tập và đề thi có lời giải, giấy phép CC BY-NC-SA. Phần đại số tuyến tính, hình học giải tích, phân rã ma trận trong sách Mathematics for Machine Learning (chương 2 đến 4) gắn trực tiếp với học máy hơn.
Giải tích
Cần biết: đạo hàm và ý nghĩa độ dốc; đạo hàm riêng của hàm nhiều biến; gradient (véc-tơ các đạo hàm riêng); quy tắc chuỗi. Khi lên cao hơn: ma trận Jacobi, khai triển Taylor, tối ưu có ràng buộc.
Dùng vào đâu: huấn luyện mô hình là tìm bộ tham số làm hàm mất mát nhỏ nhất. Hạ gradient (gradient descent) lặp lại một bước: w = w - tốc_độ_học * đạo_hàm. Lan truyền ngược tính gradient của hàm mất mát theo hàng triệu tham số bằng quy tắc chuỗi, đi từ đầu ra ngược về đầu vào.
Tài liệu: chương 5 (giải tích véc-tơ) và chương 7 (tối ưu liên tục) của Mathematics for Machine Learning. Để hiểu trực giác, 3Blue1Brown có các video trực quan về giải tích và về mạng nơ-ron. Video đầu của Karpathy Zero to Hero cho bạn tự viết lan truyền ngược, cách hay nhất để hiểu quy tắc chuỗi.
Xác suất và thống kê
Cần biết: biến ngẫu nhiên; phân phối (đều, Bernoulli, chuẩn Gauss); kỳ vọng, phương sai; xác suất có điều kiện; quy tắc Bayes; ước lượng hợp lý cực đại. Khi lên cao hơn: entropy, phân kỳ KL, suy luận Bayes.
Dùng vào đâu: mô hình phân loại trả về một phân phối xác suất trên các lớp; hàm mất mát cross-entropy đo khoảng cách giữa phân phối dự đoán và nhãn thật. Mô hình ngôn ngữ dự đoán xác suất của từ tiếp theo. Khi đánh giá, cần thống kê để biết độ chính xác 91% có thật sự tốt hơn 90% hay chỉ là may.
Tài liệu: chương 6 (xác suất và phân phối) của Mathematics for Machine Learning; tuần 2 (Uncertainty) của CS50 AI dạy xác suất, Bayes, mạng Bayes, mô hình Markov theo hướng lập trình.
Ba ví dụ bằng code
Đoạn Python dưới đây viết ba phép tính nhỏ, mỗi mảng một phép, bằng Python thuần không cần thư viện để bạn thấy rõ từng bước:
- Một tầng nơ-ron 3 đầu vào, 2 nơ-ron: nhân ma trận với véc-tơ, cộng độ lệch, rồi hàm ReLU (giữ số dương, đổi số âm thành 0).
- Hạ gradient trên hàm mất mát
(w - 3)^2 + 1, đạo hàm là2(w - 3): bắt đầu từw = 0với tốc độ học 0,1. - Quy tắc Bayes với một phép thử giả định: bệnh có ở 1% người, phép thử phát hiện đúng 99% người bệnh, và báo dương tính nhầm ở 5% người khỏe.
"""Ba mảng toán cho AI, mỗi mảng một phép tính nhỏ viết bằng Python thuần (không cần thư viện):
1. Đại số tuyến tính: một tầng mạng nơ-ron chính là phép nhân ma trận với véc-tơ rồi cộng độ lệch.
2. Giải tích: hạ gradient dùng đạo hàm để tìm điểm thấp nhất của hàm mất mát.
3. Xác suất: quy tắc Bayes cho biết vì sao một phép thử "chính xác 99%" vẫn báo nhầm nhiều.
Các con số trong ví dụ là số giả định để minh họa.
"""
def nhan_ma_tran_vec(W, x):
return [sum(w * xi for w, xi in zip(hang, x)) for hang in W]
def tang_no_ron(W, x, b):
"""y = relu(W x + b): 3 đầu vào, 2 nơ-ron."""
z = [zi + bi for zi, bi in zip(nhan_ma_tran_vec(W, x), b)]
return [max(0.0, zi) for zi in z]
def ha_gradient(dao_ham, w0, toc_do_hoc, so_buoc):
"""Đi ngược chiều đạo hàm: w <- w - toc_do_hoc * f'(w). Trả về các giá trị w qua từng bước."""
w, vet = w0, [w0]
for _ in range(so_buoc):
w = w - toc_do_hoc * dao_ham(w)
vet.append(w)
return vet
def bayes(ti_le_benh, do_nhay, duong_tinh_gia):
"""P(bệnh | dương tính) = P(dương | bệnh) P(bệnh) / P(dương)."""
p_duong = do_nhay * ti_le_benh + duong_tinh_gia * (1 - ti_le_benh)
return do_nhay * ti_le_benh / p_duong
def chay_thu():
dong = []
W = [[0.5, -1.0, 2.0],
[1.5, 0.0, -0.5]]
y = tang_no_ron(W, [1.0, 2.0, 3.0], [0.1, -0.2])
dong.append(f"1. Tầng nơ-ron: W x + b rồi relu = {[round(v, 2) for v in y]}")
mat_mat = lambda w: (w - 3) ** 2 + 1 # nhỏ nhất tại w = 3
dao_ham = lambda w: 2 * (w - 3)
vet = ha_gradient(dao_ham, w0=0.0, toc_do_hoc=0.1, so_buoc=30)
dong.append(f"2. Hạ gradient: w từ {vet[0]} -> {vet[1]:.2f} -> {vet[2]:.2f} -> ... -> {vet[-1]:.4f}, "
f"mất mát {mat_mat(vet[-1]):.4f}")
vet_lon = ha_gradient(dao_ham, w0=0.0, toc_do_hoc=1.1, so_buoc=5)
dong.append(f" Tốc độ học quá lớn (1,1): w = {[round(v, 1) for v in vet_lon]} (càng lúc càng xa)")
p = bayes(ti_le_benh=0.01, do_nhay=0.99, duong_tinh_gia=0.05)
dong.append(f"3. Bayes: bệnh 1%, độ nhạy 99%, dương tính giả 5% -> P(bệnh | dương tính) = {p:.1%}")
print("\n".join(dong))
return dong
if __name__ == "__main__":
chay_thu()
Kết quả: tầng nơ-ron cho ra [4.6, 0.0] (nơ-ron thứ hai ra số âm nên ReLU đổi thành 0). Hạ gradient đưa w từ 0 lên 0,6, 1,08 và sau 30 bước tới 2,9963, sát điểm thấp nhất w = 3; nhưng với tốc độ học quá lớn (1,1), w nhảy qua lại càng lúc càng xa, đúng hiện tượng phân kỳ bạn sẽ gặp khi huấn luyện. Ví dụ Bayes cho thấy dù phép thử "đúng 99%", người có kết quả dương tính chỉ có khoảng 16,7% khả năng mắc bệnh, vì bệnh hiếm nên số người khỏe bị báo nhầm nhiều hơn số người bệnh thật.
Khi đã hiểu, viết lại cả ba bằng numpy: phép nhân ma trận chỉ còn W @ x + b. Xem bài Python cho AI.
Học toán thế nào
- Học theo nhu cầu. Khi khóa học máy nhắc tới gradient, dừng lại học đạo hàm riêng; khi gặp PCA, học véc-tơ riêng.
- Mỗi khái niệm một đoạn code. Tích vô hướng, nhân ma trận, hạ gradient, mô phỏng xác suất bằng cách lấy mẫu ngẫu nhiên.
- Xem trực giác trước, công thức sau. Video trực quan giúp nhớ ý; sách giúp làm chính xác.
- Làm bài tập. MIT 18.06SC có bài tập và lời giải; tự làm trước khi xem.
- Ôn lại toán phổ thông nếu cần: hàm số, lũy thừa, logarit, tổng sigma.
Gợi ý 8 tuần ôn toán song song với học máy
Kế hoạch dưới đây là gợi ý của bài viết, khoảng 3 đến 4 giờ toán mỗi tuần, đặt cạnh một khóa nhập môn học máy:
| Tuần | Toán | Đoạn code tự viết |
|---|---|---|
| 1 | Véc-tơ, tích vô hướng, chuẩn | Tính độ tương đồng cosin giữa hai véc-tơ |
| 2 | Ma trận, nhân ma trận, chuyển vị | Viết một tầng nơ-ron như ví dụ trên |
| 3 | Đạo hàm, đạo hàm riêng | Tính đạo hàm số bằng sai phân, so với công thức |
| 4 | Gradient, hạ gradient | Hồi quy tuyến tính một biến bằng hạ gradient |
| 5 | Quy tắc chuỗi | Đạo hàm của hàm hợp, rồi một mạng hai tầng nhỏ |
| 6 | Xác suất, phân phối, kỳ vọng | Mô phỏng tung đồng xu, so tần suất với xác suất |
| 7 | Xác suất có điều kiện, Bayes | Ví dụ phép thử bệnh, đổi tỉ lệ nền xem kết quả đổi ra sao |
| 8 | Cross-entropy, hợp lý cực đại | Tính hàm mất mát của một bộ phân loại hai lớp |
Sau 8 tuần, bạn đủ toán để đọc phần lớn các khóa nhập môn mà không bị kẹt.
- Học hết một cuốn sách toán dày rồi mới bắt đầu học máy; thường bỏ cuộc trước khi tới phần AI.
- Học toán thuần lý thuyết mà không bao giờ viết code.
- Bỏ qua xác suất vì "chỉ cần đại số tuyến tính".
- Chọn tốc độ học tùy tiện mà không hiểu vì sao mô hình phân kỳ.
- Tin vào một con số "chính xác 99%" mà không xét tỉ lệ nền (ví dụ Bayes ở trên).
Câu hỏi thường gặp
Học AI có cần giỏi toán không?
Cần hiểu, không cần giỏi ở mức thi học sinh giỏi. Mức toán năm nhất đại học đủ để bắt đầu; sâu hơn khi bạn làm việc sâu hơn.
Nên học mảng nào trước?
Đại số tuyến tính và đạo hàm trước, vì gặp ngay từ mô hình đầu tiên. Xác suất học song song khi tới phân loại và hàm mất mát.
Có tài liệu toán cho AI bằng tiếng Việt không?
Blog Machine Learning cơ bản có các bài ôn xác suất và tối ưu lồi bằng tiếng Việt; xem bài học Machine Learning bằng tiếng Việt. Sách Mathematics for Machine Learning bằng tiếng Anh nhưng rất sát với học máy.
Thống kê có khác xác suất không?
Xác suất đi từ mô hình tới dữ liệu (biết phân phối, tính khả năng); thống kê đi từ dữ liệu tới mô hình (có dữ liệu, ước lượng phân phối). Học máy dùng cả hai.
Học tiếp
- Toàn cảnh tài liệu học AI theo bậc: tài liệu học AI miễn phí.
- Viết lại các phép tính bằng numpy: Python cho AI.
- Tự viết lan truyền ngược để hiểu quy tắc chuỗi: Karpathy Zero to Hero.
Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.
Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.


