Tìm hiểu về Neuron nhân tạo, công thức tính toán, và 5 hàm kích hoạt quan trọng: Sigmoid, Tanh, ReLU, Leaky ReLU, Softmax
✅ Hiểu Neuron nhân tạo hoạt động như thế nào
✅ Biết công thức tính toán của neuron
✅ Hiểu 5 Activation Functions quan trọng
✅ Biết cách chọn activation function phù hợp
Bài 1 ta đã biết Deep Learning là gì và các thành phần cơ bản. Hôm nay sẽ đi sâu vào đơn vị nhỏ nhất của mạng neural: Neuron!
Não người có khoảng 86 tỷ neurons kết nối với nhau. Mỗi neuron:
Neuron nhân tạo mô phỏng cách hoạt động của neuron sinh học:
Nguồn: Stanford CS231n - Neural Networks
| Thành phần | Neuron sinh học | Neuron nhân tạo |
|---|---|---|
| Đầu vào | Dendrites | Input |
| Xử lý | Cell body | Weighted sum + Activation |
| Đầu ra | Axon | Output |
| Kết nối | Synapse | Weight |
Bạn đã hiểu sự tương đồng giữa neuron sinh học và nhân tạo?
Không có activation function:
Tính phi tuyến (non-linearity) - cho phép mạng học được các mối quan hệ phức tạp!
| Bài toán | Linear (không activation) | Non-linear (có activation) |
|---|---|---|
| XOR problem | ❌ Không giải được | ✅ Giải được |
| Phân loại ảnh |
Đặc điểm:
| Activation | Công thức | Range | Ưu điểm | Nhược điểm | Dùng ở đâu |
|---|---|---|---|---|---|
| Sigmoid |
1import numpy as np2import matplotlib.pyplot as plt34# 1. Sigmoid5def sigmoid(z):6 return 1 / (1 + np.exp(-z))78# 2. Tanh9def tanh(z):10 return np.tanh(z)1112# 3. ReLU13def relu(z):14 return np.maximum(0, z)1516# 4. Leaky ReLU17def leaky_relu(z, alpha=0.01):18 return np.where(z > 0, z, alpha * z)1920# 5. Softmax21def softmax(z):22 exp_z = np.exp(z - np.max(z)) # Trừ max để tránh overflow23 return exp_z / exp_z.sum()2425# Test các activation functions26z = np.array([-2, -1, 0, 1, 2])2728print("z :", z)29print("Sigmoid :", sigmoid(z).round(3))30print("Tanh :", tanh(z).round(3))31print("ReLU :", relu(z))32print("LeakyReLU:", leaky_relu(z).round(3))3334# Softmax cho multi-class35logits = np.array([2.0, 1.0, 0.1])36print("\nSoftmax:", softmax(logits).round(3))37print("Sum :", softmax(logits).sum()) # = 1.01z : [-2 -1 0 1 2]2Sigmoid : [0.119 0.269 0.5 0.731 0.881]3Tanh : [-0.964 -0.762 0. 0.762 0.964]4ReLU : [0 0 0 1 2]5LeakyReLU: [-0.02 -0.01 0. 1. 2. ]6 7Softmax: [0.659 0.242 0.099]8Sum : 1.0Bạn đã chạy thử code và hiểu kết quả chưa?
Neuron nhân tạo mô phỏng neuron sinh học: Input → Weighted Sum → Activation → Output
Công thức:
tạo tính phi tuyến, cho phép học patterns phức tạp
| Nguồn | Link | Ghi chú |
|---|---|---|
| TensorFlow Tutorials | https://www.tensorflow.org/tutorials | Hướng dẫn chính thức TensorFlow |
| Keras Documentation | https://keras.io/guides/ | Tài liệu Keras API |
| 3Blue1Brown - Neural Networks | https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi | Trực quan hóa Neural Networks |
| Stanford CS231n | https://cs231n.stanford.edu/ | Khóa Computer Vision từ Stanford |
| Ngưỡng kích hoạt | Action potential | Activation function |
| Ký hiệu | Tên | Giải thích | Ví dụ |
|---|---|---|---|
| Input | Các giá trị đầu vào | Tuổi, thu nhập | |
| Weight | Mức độ quan trọng của input | Thu nhập quan trọng hơn tuổi | |
| Bias | Hằng số điều chỉnh | Dịch chuyển ngưỡng kích hoạt | |
| Weighted Sum | Tổng có trọng số | ||
| Activation | Hàm quyết định đầu ra | ReLU, Sigmoid... | |
| Output | Kết quả sau activation | Giá trị truyền sang layer tiếp |
Dự đoán khách hàng có mua sản phẩm không:
| Input | Giá trị | Weight | Ý nghĩa |
|---|---|---|---|
| Tuổi () | 30 | Ít quan trọng | |
| Thu nhập () | 50 | 🔥 Rất quan trọng | |
| Đã xem QC () | 1 | Quan trọng vừa |
Bias:
Bạn đã hiểu công thức tính toán của neuron?
| ❌ Accuracy thấp |
| ✅ Accuracy cao |
| Nhận dạng giọng nói | ❌ Không khả thi | ✅ Hoạt động tốt |
Bạn hiểu tại sao activation function quan trọng chưa?
Nhược điểm:
Ví dụ giá trị Sigmoid:
| Input | Ý nghĩa | |
|---|---|---|
| Gần 0 → xác suất rất thấp ❌ | ||
| 50-50 (ranh giới) ⚖️ | ||
| Gần 1 → xác suất rất cao ✅ |
Đặc điểm:
Nhược điểm:
| Đặc điểm | Sigmoid | Tanh |
|---|---|---|
| Range | (0, 1) | (-1, 1) |
| Tâm tại 0 | ❌ Không | ✅ Có |
| Triệt tiêu gradient | ❌ Có | ❌ Có |
| Output layer (binary) | ✅ Dùng | ❌ Không dùng |
Bạn đã hiểu Sigmoid và Tanh hoạt động như thế nào?
Đặc điểm:
Nhược điểm:
Ví dụ giá trị ReLU:
| Input | Giải thích | |
|---|---|---|
| Âm → bị cắt về 0 ❌ | ||
| Ranh giới → output 0 | ||
| Dương → giữ nguyên ✅ | ||
| Dương lớn → giữ nguyên ✅ |
Đặc điểm:
Ví dụ giá trị Leaky ReLU (với ):
| Input | Giải thích | |
|---|---|---|
| Âm → vẫn có gradient nhỏ! 💡 | ||
| Ranh giới | ||
| Dương → giữ nguyên ✅ |
Leaky ReLU cho phép gradient nhỏ khi x < 0, khắc phục Dying ReLU
⚡ Nhanh nhất, đơn giản nhất. Nhưng neurons có thể "chết" khi z < 0 (gradient = 0)
✅ Khắc phục Dying ReLU: gradient nhỏ (α = 0.1) khi z < 0, neuron không bao giờ "chết"
Bạn hiểu sự khác biệt giữa ReLU và Leaky ReLU chưa?
Đặc điểm:
Phân loại ảnh: Chó/Mèo/Chim (3 lớp)
Logits (đầu ra từ layer trước):
Bước 1 — Tính :
| Lớp | ||
|---|---|---|
| 🐕 Chó |
Bước 2 — Tính xác suất:
Kiểm tra: ✅
→ Dự đoán: 🐕 Chó (xác suất cao nhất)
| Số classes | Activation | Loss function |
|---|---|---|
| 2 classes | Sigmoid | Binary Cross-Entropy |
| > 2 classes | Softmax | Categorical Cross-Entropy |
Bạn đã hiểu Softmax và khi nào sử dụng nó?
| (0, 1) |
| Output là xác suất |
| Triệt tiêu gradient |
| Output (binary) |
| Tanh | (-1, 1) | Centered | Triệt tiêu gradient | Hidden (ít dùng) |
| ReLU | [0, ∞) | Nhanh, đơn giản | Dying ReLU | Hidden (⭐ phổ biến) |
| Leaky ReLU | (-∞, ∞) | Không Dying | Thêm hyperparameter | Hidden |
| Softmax | (0, 1), sum=1 | Multi-class probs | Tốn tính toán | Output (multi-class) |
Rule of thumb:
Bạn đã biết cách chọn activation function phù hợp chưa?
5 Activation phổ biến:
Chọn activation:
🎉 Tuyệt vời! Bạn đã nắm vững về Neuron và Activation Functions!
| Jay Alammar Blog |
| https://jalammar.github.io/ |
| Giải thích Transformer, BERT trực quan |
| Activation Functions Comparison | https://mlfromscratch.com/activation-functions-explained/ | So sánh Activation Functions |
| 🐈 Mèo |
| 🐦 Chim |
| Tổng |