Neural Network là gì?
Bộ não con người có khoảng 86 tỉ neuron, mỗi neuron kết nối với hàng ngàn neuron khác. Khi bạn nhìn thấy một con mèo, tín hiệu từ mắt truyền qua hàng triệu neuron, xử lý từng bước, và cuối cùng não kết luận: "Đó là con mèo!"
Mạng nơ-ron nhân tạo (Artificial Neural Network) mô phỏng cách não hoạt động — nhưng đơn giản hơn rất nhiều. Thay vì 86 tỉ, mạng của chúng ta có thể chỉ có vài chục "neuron" (nút tính toán), sắp thành các lớp và nối với nhau bằng các "dây" có trọng số.
• Véc-tơ: in đậm, thẳng đứng, chữ thường — ví dụ: x, h, b
• Scalar: in nghiêng, không đậm, chữ thường — ví dụ: z, w, a, L
• Ma trận: in đậm, thẳng đứng, chữ HOA — ví dụ: W, X, U
Cấu trúc: 3 loại lớp
| Lớp | Vai trò | Ví dụ |
|---|---|---|
| 🔵 Input (Đầu vào) | Nhận dữ liệu thô từ bên ngoài | 64 pixel của ảnh 8×8 |
| 🟢 Hidden (Ẩn) | Xử lý, tìm đặc trưng (pattern) | Nhận ra cạnh, góc, đường cong |
| 🔴 Output (Đầu ra) | Đưa ra kết quả cuối cùng | "85% là số 3, 10% là số 8" |
Mỗi lớp ẩn giống như một "bộ lọc": lớp đầu tiên nhận ra nét cơ bản (cạnh ngang, dọc), lớp sau nhận ra hình phức tạp hơn (vòng tròn, góc vuông), lớp cuối ghép lại thành vật thể hoàn chỉnh.
Forward Pass — Dữ liệu chạy qua mạng
Khi mạng nhận dữ liệu, nó tính toán qua từng lớp theo 2 bước:
-
Tổng trọng số (Weighted Sum)
Mỗi neuron nhận tín hiệu từ tất cả neuron lớp trước, nhân với trọng số, rồi cộng lại:z = w₁·a₁ + w₂·a₂ + ... + wₙ·aₙ + bTrọng số lớn = ảnh hưởng mạnh. Trọng số âm = ức chế (triệt tiêu tín hiệu). -
Hàm kích hoạt (Activation Function)
Bóp kết quả z qua một hàm phi tuyến, quyết định neuron có "bật" hay không:a = f(z)Nếu không có hàm kích hoạt, toàn bộ mạng chỉ là một phép nhân ma trận — không thể học được gì phức tạp!
Giống như não: không phải mọi tín hiệu đều đủ mạnh để kích thích neuron. Hàm kích hoạt giúp mạng học được các mối quan hệ phi tuyến tính — tức là những thứ không phải đường thẳng (hầu hết mọi thứ trong thực tế!).
Các hàm kích hoạt phổ biến
| Hàm | Công thức | Đặc điểm |
|---|---|---|
| ReLU | f(x) = max(0, x) |
Đơn giản, nhanh. Phổ biến nhất hiện nay. |
| Sigmoid | f(x) = 1/(1+e−x) |
Bóp giá trị về khoảng (0, 1). Dùng cho xác suất. |
| Tanh | f(x) = (ex−e−x)/(ex+e−x) |
Bóp về (-1, 1). Trung tâm ở 0. |
| Softmax | σ(zᵢ) = ezᵢ / Σezⱼ |
Chuyển thành xác suất (tổng = 100%). Dùng ở lớp output. |
Backpropagation — Mạng "học" từ sai lầm
Ban đầu, trọng số là ngẫu nhiên → mạng đoán bừa → sai nhiều. Backpropagation là cách mạng tự sửa lỗi:
-
Tính sai số (Loss)
So sánh dự đoán với đáp án đúng. Ví dụ: mạng đoán "số 8" nhưng đáp án là "số 3" → Loss cao.L = −Σ yᵢ · log(ŷᵢ) (Cross-Entropy) -
Truyền lỗi ngược (Backward)
Dùng chain rule (quy tắc chuỗi) để tính: mỗi trọng số đóng góp bao nhiêu vào sai số?∂L/∂w = ∂L/∂ŷ × ∂ŷ/∂z × ∂z/∂w -
Cập nhật trọng số
Chỉnh trọng số một chút theo hướng giảm sai số:w_mới = w_cũ − lr × ∂L/∂wLearning rate (tốc độ học) quyết định bước chỉnh lớn hay nhỏ.
Quá trình Forward → Tính Loss → Backward → Cập nhật được lặp lại hàng ngàn, hàng triệu lần trên nhiều ảnh khác nhau. Mỗi lần, Loss giảm dần → mạng dự đoán chính xác hơn. Đây gọi là training (huấn luyện).
RNN — Mạng có "trí nhớ"
Mạng Feed-Forward xử lý mỗi input độc lập — không nhớ gì từ lần trước. Nhưng nhiều bài toán cần ngữ cảnh: dịch văn bản, nhận diện giọng nói, dự đoán chữ tiếp theo...
Recurrent Neural Network (RNN) giải quyết bằng cách thêm kết nối hồi quy: mỗi neuron ẩn gửi giá trị của mình quay lại chính nó ở bước thời gian tiếp theo.
hₜ = véc-tơ trạng thái ẩn tại thời điểm t
hₜ₋₁ = véc-tơ trạng thái ẩn từ bước trước (bộ nhớ!)
xₜ = véc-tơ input tại thời điểm t
W_x, W_h = ma trận trọng số
Ảnh → Số: Máy tính "nhìn" ảnh thế nào?
Con người nhìn ảnh và thấy hình dạng. Máy tính chỉ thấy một bảng số!
Ảnh 8×8 pixel = ma trận 8 hàng × 8 cột. Mỗi ô là một số từ 0 (đen) đến 255 (trắng). Trước khi đưa vào mạng, ta chuẩn hóa chia cho 255 để đưa về khoảng [0, 1].
Công cụ trực quan — Thử ngay!
Công cụ dưới đây cho phép bạn nhìn thấy toàn bộ quá trình hoạt động của một mạng nơ-ron:
- 🖼️ Chọn ảnh đầu vào (hoặc tải ảnh của bạn)
- ▶️ Nhấn Forward Pass — xem dữ liệu chạy qua từng lớp với animation
- 👆 Nhấn vào node — xem công thức tính toán chi tiết của neuron đó
- 👆 Nhấn vào dây nối — xem trọng số và đóng góp
- ⏭️ Dùng nút Step để đi từng bước thủ công
- 🔄 Đổi sang RNN để thấy kết nối hồi quy (đường nét đứt vàng)
- 🔙 Chạy Backpropagation để xem trọng số được cập nhật
(Cần chạy qua HTTP server — xem hướng dẫn bên dưới)
Mở Terminal (PowerShell / CMD) trong thư mục
nn-visualizer, rồi gõ:Tóm tắt — Những gì cần nhớ
| Khái niệm | Một câu giải thích |
|---|---|
| Neural Network | Hàm toán học gồm nhiều "neuron" nối nhau, học từ dữ liệu |
| Forward Pass | Dữ liệu chạy từ Input → Hidden → Output, tính tổng trọng số + kích hoạt |
| Activation Function | Hàm phi tuyến giúp mạng học được quan hệ phức tạp |
| Loss Function | Đo mức sai lệch giữa dự đoán và đáp án đúng |
| Backpropagation | Truyền lỗi ngược lại để chỉnh trọng số, giảm sai số |
| RNN | Mạng có bộ nhớ, neuron nhớ trạng thái bước trước |
| Training | Lặp Forward + Backward nhiều lần cho mạng "thông minh" dần |
1. Chạy Forward Pass với ảnh "Số 0" và "Chữ X" — so sánh giá trị output có gì khác?
2. Chạy Backpropagation 5 lần liên tiếp — Loss có giảm không?
3. Đổi hàm kích hoạt từ ReLU sang Sigmoid — giá trị các neuron ẩn thay đổi thế nào?
4. Tăng số lớp ẩn lên 4 — mạng có nhiều tham số hơn bao nhiêu?