Kho lưu trữ mã nguồn các bài tập cá nhân của tôi trên nền tảng TensorTonic. Mục tiêu chính là tự lập trình lại các thuật toán cơ bản trong Học máy và Học sâu từ đầu bằng Python và NumPy, không dựa vào các thư viện bậc cao.
Link repository: https://github.com/Bravee9/TensorTonic-Solutions
Khi học Machine Learning, việc chỉ gọi hàm từ thư viện như scikit-learn hay PyTorch giúp làm bài nhanh nhưng khó nắm được chi tiết mô hình xử lý thế nào ở bên dưới.
Việc tự cài đặt lại từ đầu giúp tôi:
- Hiểu rõ bản chất toán học của từng thuật toán và luồng tính đạo hàm.
- Nắm được các vấn đề thường gặp trong thực tế như triệt tiêu đạo hàm, nơ-ron chết, hoặc hiện tượng phân kỳ khi chọn sai tốc độ học.
- Rèn luyện kỹ năng viết mã tính toán ma trận với NumPy.
Cài đặt hàm kích hoạt Sigmoid:
- Công thức:
$\sigma(x) = \frac{1}{1 + e^{-x}}$ . - Nội dung:
- Viết hàm truyền xuôi (forward pass) bằng NumPy, hỗ trợ mảng nhiều chiều.
- Tính đạo hàm:
$\sigma'(x) = \sigma(x)(1 - \sigma(x))$ . - Quan sát hiện tượng bão hòa đạo hàm khi giá trị
$|x|$ lớn (vanishing gradient).
Cài đặt hàm kích hoạt ReLU:
- Công thức:
$\text{ReLU}(x) = \max(0, x)$ . - Nội dung:
- Cài đặt forward pass bằng phép tính vector hóa.
- Tìm hiểu hiện tượng nơ-ron chết (dead ReLU) khi đầu vào luôn nhận giá trị âm dẫn đến đạo hàm bằng 0.
- So sánh tốc độ tính toán và khả năng truyền đạo hàm với Sigmoid trong mạng nhiều lớp.
Cài đặt hàm kích hoạt Leaky ReLU:
- Công thức:
$f(x) = x$ nếu$x > 0$ , ngược lại$f(x) = \alpha x$ (thường chọn$\alpha = 0.01$ ). - Nội dung:
- Cho phép tùy chỉnh tham số
$\alpha$ . - Giữ lại một độ dốc nhỏ ở miền âm để nơ-ron vẫn có thể cập nhật trọng số trong quá trình huấn luyện.
- Cho phép tùy chỉnh tham số
Cài đặt thuật toán hạ gradient (Gradient Descent) trên hàm bậc hai:
- Mô hình thử nghiệm:
$f(x) = ax^2 + bx + c$ . - Nội dung:
- Viết vòng lặp cập nhật tham số với tốc độ học (learning rate) và số bước tùy chọn.
- Vẽ biểu đồ đường đi của tham số qua từng bước lặp để theo dõi quá trình hội tụ.
- So sánh nghiệm tính bằng thuật toán với nghiệm giải tích chính xác.
- Khảo sát ảnh hưởng của learning rate: quá lớn gây phân kỳ, quá nhỏ khiến thuật toán hội tụ chậm.
- Python 3
- NumPy: Thực hiện các phép toán đại số tuyến tính và xử lý mảng
- Matplotlib: Vẽ đồ thị hàm số và quá trình hội tụ của thuật toán
- Softmax
- Cross-Entropy Loss
- Lan truyền ngược (Backpropagation)
- Mini-batch Gradient Descent
- Perceptron một lớp (Single-Layer Perceptron)