Giải tích
Mục tiêu
Phần tiêu đề “Mục tiêu”Sau bài này, bạn sẽ:
- Hiểu bản chất cốt lõi của đạo hàm (derivative) như tốc độ thay đổi tức thời và độ dốc của tiếp tuyến.
- Mở rộng sang hàm nhiều biến với đạo hàm riêng (partial derivatives) và vectơ Gradient () — “kim chỉ nam” định hướng tối ưu hóa mô hình.
- Làm chủ Quy tắc chuỗi (Chain Rule) và hiểu rõ cách nó tạo nên thuật toán lan truyền ngược (Backpropagation) trong mạng nơ-ron sâu.
- Hiểu ý nghĩa của khai triển xấp xỉ Taylor và ma trận Hessian (độ cong bậc hai), giải thích hiện tượng bùng nổ hoặc dao động gradient khi chọn tốc độ học không phù hợp.
Cần biết trước
Phần tiêu đề “Cần biết trước”- Đại số tuyến tính, thuộc phần Toán cho AI (Đã học)
Trực giác
Phần tiêu đề “Trực giác”Hãy tưởng tượng bạn đang bị bịt mắt và đứng trên đỉnh một ngọn núi sương mù dày đặc. Nhiệm vụ của bạn là phải tìm đường xuống đáy thung lũng an toàn và nhanh nhất có thể. Bạn sẽ làm thế nào?
Vì không thể nhìn thấy toàn cảnh, cách duy nhất là dùng chân cảm nhận độ nghiêng của mặt đất ngay tại vị trí bạn đang đứng:
- Bạn xoay người một vòng để tìm xem hướng nào làm mặt đất dốc xuống mạnh nhất.
- Bạn bước một bước nhỏ cẩn thận về hướng dốc xuống đó.
- Tại điểm mới, bạn lặp lại phép đo độ nghiêng và tiếp tục bước.
Trong học máy:
- Ngọn núi sương mù chính là bề mặt hàm mất mát (loss surface) phức tạp nhiều chiều.
- Độ nghiêng mặt đất dưới chân bạn chính là đạo hàm và vectơ Gradient.
- Mỗi bước chân di chuyển chính là một bước cập nhật trọng số trong thuật toán Gradient Descent.
Giải tích chính là công cụ toán học giúp máy tính “cảm nhận độ dốc” để tự động bước về điểm cực tiểu tối ưu!
Lý thuyết
Phần tiêu đề “Lý thuyết”1. Đạo Hàm: Tốc Độ Biến Thiên Tức Thời
Phần tiêu đề “1. Đạo Hàm: Tốc Độ Biến Thiên Tức Thời”Xét một hàm số một biến . Khi ta thay đổi đầu vào một lượng nhỏ , đầu ra thay đổi một lượng . Đạo hàm của hàm số tại điểm , ký hiệu là hay , là tỉ số biến thiên khi tiến dần về :
Ý nghĩa hình học: chính là hệ số góc (độ dốc - slope) của đường tiếp tuyến với đồ thị tại điểm :
- Nếu : hàm số đang đồng biến (tăng). Tăng sẽ làm tăng ; muốn giảm , ta phải giảm .
- Nếu : hàm số đang nghịch biến (giảm). Tăng sẽ làm giảm .
- Nếu : tiếp tuyến nằm ngang, điểm có thể là cực tiểu, cực đại hoặc điểm uốn.
2. Đạo Hàm Riêng và Vectơ Gradient
Phần tiêu đề “2. Đạo Hàm Riêng và Vectơ Gradient”Trong thực tế, mô hình AI có hàng ngàn hoặc hàng tỉ trọng số . Hàm mất mát là một hàm nhiều biến.
Đạo Hàm Riêng (Partial Derivatives)
Phần tiêu đề “Đạo Hàm Riêng (Partial Derivatives)”Đạo hàm riêng của hàm theo biến , ký hiệu là , đo lường mức độ biến thiên của khi ta chỉ thay đổi một mình biến và giữ nguyên toàn bộ các biến khác như những hằng số:
Vectơ Gradient ()
Phần tiêu đề “Vectơ Gradient (∇f\nabla f∇f)”Khi gom tất cả các đạo hàm riêng của một hàm số thành một vectơ cột, ta được vectơ Gradient, ký hiệu là :
Định lý quan trọng nhất của Gradient trong tối ưu hóa:
- Vectơ luôn trỏ về hướng mà giá trị hàm số tăng nhanh nhất.
- Độ dài biểu thị mức độ dốc lớn nhất tại điểm đó.
- Vectơ ngược chiều luôn trỏ về hướng mà giá trị hàm số giảm nhanh nhất (hướng giảm dốc nhất).
Chính vì vậy, quy tắc cập nhật tham số trong thuật toán Gradient Descent có dấu trừ:
Trong đó là tốc độ học (learning rate) điều khiển độ dài của mỗi bước bước chân.
3. Quy Tắc Chuỗi (Chain Rule) và Lan Truyền Ngược
Phần tiêu đề “3. Quy Tắc Chuỗi (Chain Rule) và Lan Truyền Ngược”Một mạng nơ-ron sâu là một hàm hợp khổng lồ gồm nhiều tầng xếp chồng lên nhau: Đầu vào Lớp 1 () Lớp 2 () Dự đoán Mất mát .
Làm sao ta có thể tính đạo hàm của hàm mất mát cuối cùng đối với một trọng số ở tận lớp đầu tiên?
Quy Tắc Chuỗi Trong Giải Tích
Phần tiêu đề “Quy Tắc Chuỗi Trong Giải Tích”Nếu biến phụ thuộc vào , và phụ thuộc vào (), thì tốc độ thay đổi của theo bằng tích các tốc độ thay đổi trung gian:
Với trường hợp biến trung gian nhiều nhánh: nếu và mỗi , thì:
Ứng Dụng Trong Lan Truyền Ngược (Backpropagation)
Phần tiêu đề “Ứng Dụng Trong Lan Truyền Ngược (Backpropagation)”Xét một nơ-ron hồi quy đơn giản:
- Lan truyền tiến (Forward pass):
- Lan truyền ngược (Backward pass):
- Đạo hàm của loss theo dự đoán:
- Đạo hàm của dự đoán theo trọng số và bias :
- Áp dụng quy tắc chuỗi:
Nhờ quy tắc chuỗi, ta không cần giải phương trình đạo hàm phức tạp cho cả mạng nơ-ron cùng lúc. Thay vào đó, mỗi tầng chỉ cần tính đạo hàm cục bộ (local gradient) của phép toán của riêng nó, rồi nhân dồn ngược từ đầu ra về đầu vào.
4. Đạo Hàm Bậc Hai và Ma Trận Hessian
Phần tiêu đề “4. Đạo Hàm Bậc Hai và Ma Trận Hessian”Đạo hàm bậc nhất cho biết độ nghiêng (hướng dốc), nhưng không cho biết bề mặt đang phẳng hay uốn cong gấp khúc. Đạo hàm bậc hai đo lường mức độ uốn cong (độ cong - curvature) của hàm số.
Với hàm nhiều biến, tất cả các đạo hàm riêng bậc hai được gom thành ma trận Hessian :
Theo khai triển Taylor bậc hai:
- Nếu ma trận Hessian có trị riêng lớn nhất là (), độ cong theo hướng đó rất dốc. Nếu chọn tốc độ học , thuật toán Gradient Descent sẽ bị văng ra khỏi lòng chảo và phân kỳ (diverge).
- Sự chênh lệch giữa độ cong lớn nhất và nhỏ nhất (tỉ số điều kiện ) giải thích vì sao hàm mất mát dạng “thung lũng hẹp” khiến Gradient Descent dao động qua lại rất chậm chạp.
Giới hạn
Phần tiêu đề “Giới hạn”- Điểm yên ngựa (Saddle points): Trong không gian hàng nghìn chiều, gradient bằng thường rơi vào điểm yên ngựa (một chiều cong lên, một chiều cong xuống) thay vì đáy cực tiểu toàn cục.
- Biến mất / bùng nổ gradient: Khi mạng nơ-ron có nhiều lớp, việc nhân liên tiếp hàng chục đạo hàm cục bộ có độ lớn nhỏ hơn sẽ khiến gradient tiến dần về (vanishing gradient) làm mô hình ngừng học; ngược lại nếu lớn hơn sẽ gây bùng nổ gradient (exploding gradient).
Minh họa
Phần tiêu đề “Minh họa”Sơ đồ dưới đây minh họa sự khác biệt giữa đạo hàm giải tích và kiểm tra số trị bằng sai phân, cùng dòng chảy của quy tắc chuỗi trong lan truyền ngược:
1. SAI PHÂN HỮU HẠN KIỂM TRA ĐẠO HÀM (GRADIENT CHECKING): Sai phân tiến (lệch một bên, sai số O(ε)): f(x + ε) - f(x) ───────────────────────── ε Sai phân trung tâm (đối xứng hai phía, sai số O(ε²)): f(x + ε) - f(x - ε) ───────────────────── ◄── Độ chính xác gấp hàng triệu lần! 2ε
2. DÒNG CHẢY QUY TẮC CHUỖI (BACKPROPAGATION): Lan truyền tiến (Forward): x ──► [ × w ] ──► z ──► [ + b ] ──► y_hat ──► [ Loss ] ──► L Lan truyền ngược (Backward): dL/dw ◄── [ * x ] ◄── dL/dz ◄── [ * 1 ] ◄── dL/dy_hat ◄── dL/dL (= 1)Ví dụ code
Phần tiêu đề “Ví dụ code”Các ô dưới đây chạy độc lập và không phụ thuộc vào trạng thái trước đó.
Ô đầu tiên thực hiện kỹ thuật Gradient Checking: so sánh gradient giải tích (tính bằng công thức toán) với gradient số trị (tính bằng sai phân trung tâm) để đảm bảo không bị sai sót công thức.
Kiểm tra gradient giải tích bằng sai phân trung tâm
import numpy as np
# Hàm mục tiêu mẫu f(x) = x0^2 + 3*x0*x1 + 2*x1^2def f(x): return x[0]**2 + 3.0 * x[0] * x[1] + 2.0 * x[1]**2
# Gradient giải tích (analytical gradient)def grad_analytical(x): df_dx0 = 2.0 * x[0] + 3.0 * x[1] df_dx1 = 3.0 * x[0] + 4.0 * x[1] return np.array([df_dx0, df_dx1])
# Gradient số trị bằng sai phân trung tâm (central difference)def grad_numerical(func, x, eps=1e-5): grad = np.zeros_like(x) for i in range(len(x)): x_plus, x_minus = x.copy(), x.copy() x_plus[i] += eps x_minus[i] -= eps grad[i] = (func(x_plus) - func(x_minus)) / (2.0 * eps) return grad
# Điểm kiểm tra đạo hàmpoint = np.array([2.0, -1.0])g_ana = grad_analytical(point)g_num = grad_numerical(f, point)diff = np.linalg.norm(g_ana - g_num)
# In kết quả kiểm tra gradient (gradient checking)print(f"Point (x) : {point}")print(f"Analytical gradient : {g_ana}")print(f"Numerical gradient : {g_num}")print(f"Absolute difference : {diff:.8e}")print(f"Gradient check pass?: {diff < 1e-7}")Lần chạy đầu cần tải Python, khoảng 10 MB.
Kết quả chạy cho thấy:
- Tại điểm kiểm tra , gradient giải tích tính ra đúng bằng .
- Gradient số trị tính bằng sai phân trung tâm với bước cũng cho ra .
- Sai số tuyệt đối giữa hai phương pháp đạt mức cực nhỏ: . Phép kiểm tra
diff < 1e-7trả vềTrue, xác nhận công thức đạo hàm đã được cài đặt chính xác tuyệt đối.
Ô thứ hai minh họa thuật toán lan truyền ngược từng bước (Backpropagation) cho một nơ-ron hồi quy đơn giản bằng cách áp dụng trực tiếp quy tắc chuỗi và đối chiếu với đạo hàm giải tích trực tiếp.
Cài đặt quy tắc chuỗi từng bước cho lan truyền ngược
# Giá trị đầu vào, nhãn và tham số ban đầux = 2.0y = 7.0w = 1.5b = 0.5
# Lan truyền tiến (Forward pass): L = (w * x + b - y)^2y_hat = w * x + bloss = (y_hat - y) ** 2
# Lan truyền ngược từng bước bằng Quy tắc chuỗi (Chain Rule)dL_dyhat = 2.0 * (y_hat - y)dyhat_dw = xdyhat_db = 1.0
# Kết hợp gradient theo quy tắc chuỗi: dL/dw = (dL/dy_hat) * (dy_hat/dw)dL_dw = dL_dyhat * dyhat_dwdL_db = dL_dyhat * dyhat_db
# Đạo hàm giải tích trực tiếp để kiểm chứng đối chiếudirect_dL_dw = 2.0 * (w * x + b - y) * xdirect_dL_db = 2.0 * (w * x + b - y)
# In kết quả đối chiếu giữa lan truyền ngược và đạo hàm trực tiếpprint(f"Prediction (y_hat) : {y_hat:.4f}")print(f"Loss (L) : {loss:.4f}")print(f"dL/dw (chain rule) : {dL_dw:.4f}")print(f"dL/dw (direct) : {direct_dL_dw:.4f}")print(f"dL/db (chain rule) : {dL_db:.4f}")print(f"dL/db (direct) : {direct_dL_db:.4f}")Lần chạy đầu cần tải Python, khoảng 10 MB.
Kết quả in ra đối chiếu:
- Với , , , , mô hình dự đoán , dẫn tới hàm mất mát .
- Bằng quy tắc chuỗi qua biến trung gian , ta thu được và .
- Cả hai đạo hàm tính theo chuỗi đều trùng khớp hoàn toàn với công thức đạo hàm trực tiếp. Giá trị âm cho thấy nếu ta tăng và lên, sẽ tiến gần về hơn và hàm mất mát sẽ giảm xuống.
Lỗi hay gặp
Phần tiêu đề “Lỗi hay gặp”Kiểm tra nhanh
Phần tiêu đề “Kiểm tra nhanh”Tóm tắt và đọc thêm
Phần tiêu đề “Tóm tắt và đọc thêm”Ý chính:
- Đạo hàm đo tốc độ biến thiên tức thời; vectơ gradient tổng hợp các đạo hàm riêng và trỏ về hướng làm hàm số tăng dốc nhất.
- Gradient Descent tối ưu hóa mô hình bằng cách bước ngược chiều gradient: .
- Quy tắc chuỗi (Chain Rule) là nền móng toán học cho phép thuật toán lan truyền ngược (Backpropagation) tính đạo hàm hiệu quả qua hàng trăm tầng mạng nơ-ron.
- Đạo hàm bậc hai và ma trận Hessian quyết định độ cong của bề mặt mất mát và chi phối việc lựa chọn tốc độ học .
Đọc thêm:
- Grant Sanderson (3Blue1Brown) (2017). Essence of Calculus, loạt video trực quan hóa trực giác giải tích vi tích phân xuất sắc.
- Ian Goodfellow, Yoshua Bengio, Aaron Courville (2016). Deep Learning, Chương 4: Numerical Computation, phân tích gradient descent, điểm yên ngựa và ma trận Hessian.
- Michael Nielsen (2015). Neural Networks and Deep Learning, Chương 2: How the backpropagation algorithm works, dẫn dắt 4 phương trình cơ bản của lan truyền ngược.
- Christopher M. Bishop (2006). Pattern Recognition and Machine Learning, Mục 5.3 (Error Backpropagation).
Trình duyệt đang chặn lưu dữ liệu. Tiến độ sẽ mất khi bạn tải lại trang.
Nội dung theo giấy phép CC BY-NC-SA 4.0. Mã nguồn theo giấy phép MIT.Giới thiệu