🎯 Mục tiêu bài học
Sau bài này, bạn sẽ:
✅ 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
Ôn lại bài trước
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!
🧬 Neuron Sinh học vs Neuron Nhân tạo
Neuron sinh học (trong não)
Não người có khoảng 86 tỷ neurons kết nối với nhau. Mỗi neuron:
- Nhận tín hiệu từ các dendrites (nhánh đầu vào)
- Xử lý tín hiệu tại cell body (thân tế bào)
- Truyền tín hiệu qua axon (sợi trục) đến các neurons khác
Neuron nhân tạo (Artificial 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
Bảng so sánh
| 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 |
| Ngưỡng kích hoạt | Action potential | Activation function |
Checkpoint
Bạn đã hiểu sự tương đồng giữa neuron sinh học và nhân tạo?
📐 Công thức tính toán của Neuron
Công thức cơ bản
Giải thích từng thành phần
| 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 |
Ví dụ trực quan
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:
Checkpoint
Bạn đã hiểu công thức tính toán của neuron?
⚡ Tại sao cần Activation Functions?
Vấn đề không có Activation
Không có activation function:
- Mạng neural chỉ là tổ hợp tuyến tính
- KHÔNG thể học các pattern phức tạp
- Nhiều layers = 1 layer (do tính chất tuyến tính)
Activation tạo ra gì?
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!
Ví dụ minh họa
| 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 | ❌ Accuracy thấp | ✅ Accuracy cao |
| Nhận dạng giọng nói | ❌ Không khả thi | ✅ Hoạt động tốt |
Checkpoint
Bạn hiểu tại sao activation function quan trọng chưa?
📈 Sigmoid và Tanh
1. Sigmoid Function
Đặc điểm:
- Đầu ra: Luôn trong khoảng
- Ý nghĩa: Có thể hiểu như xác suất
- Sử dụng: Output layer cho binary classification
Nhược điểm:
- ❌ Vanishing Gradient - gradient rất nhỏ khi z quá lớn/nhỏ
- ❌ Output không centered (không đối xứng quanh 0)
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 ✅ |
2. Tanh Function
Đặc điểm:
- Đầu ra: Trong khoảng
- Ưu điểm: Output centered (đối xứng quanh 0)
- Sử dụng: Hidden layers (ít phổ biến hơn ReLU)
Nhược điểm:
- ❌ Vẫn có Vanishing Gradient
So sánh Sigmoid vs Tanh
| Đặc điểm | Sigmoid | Tanh |
|---|---|---|
| Range | (0, 1) | (-1, 1) |
| Zero-centered | ❌ Không | ✅ Có |
| Vanishing gradient | ❌ Có | ❌ Có |
| Output layer (binary) | ✅ Dùng | ❌ Không dùng |
Checkpoint
Bạn đã hiểu Sigmoid và Tanh hoạt động như thế nào?
🚀 ReLU và Leaky ReLU
3. ReLU (Rectified Linear Unit)
Đặc điểm:
- Đầu ra:
- ⭐ Phổ biến nhất cho hidden layers
- Ưu điểm: Tính toán cực kỳ nhanh, giảm Vanishing Gradient
Nhược điểm:
- ❌ Dying ReLU - neurons có thể "chết" (luôn output 0)
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 ✅ |
4. Leaky ReLU
Đặc điểm:
- Khắc phục Dying ReLU
- Cho phép gradient nhỏ (, thường = 0.01) khi z < 0
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 ✅ |
Đồ thị so sánh
📊 Đồ thị so sánh ReLU vs Leaky ReLU
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"
Checkpoint
Bạn hiểu sự khác biệt giữa ReLU và Leaky ReLU chưa?
🎯 Softmax Function
5. Softmax
Đặc điểm:
- Đầu ra: Vector xác suất, tổng = 1
- Sử dụng: Output layer cho multi-class classification
Ví dụ thực tế
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ó | ||
| 🐈 Mèo | ||
| 🐦 Chim | ||
| Tổng |
Bước 2 — Tính xác suất:
Kiểm tra: ✅
→ Dự đoán: 🐕 Chó (xác suất cao nhất)
Khi nào dùng Softmax?
| Số classes | Activation | Loss function |
|---|---|---|
| 2 classes | Sigmoid | Binary Cross-Entropy |
| > 2 classes | Softmax | Categorical Cross-Entropy |
Checkpoint
Bạn đã hiểu Softmax và khi nào sử dụng nó?
📊 Bảng Tổng hợp & Chọn Activation
Bảng so sánh tất cả Activation Functions
| Activation | Công thức | Range | Ưu điểm | Nhược điểm | Dùng ở đâu |
|---|---|---|---|---|---|
| Sigmoid | (0, 1) | Output là xác suất | Vanishing gradient | Output (binary) | |
| Tanh | (-1, 1) | Centered | Vanishing 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) |
Hướng dẫn chọn Activation
Rule of thumb:
- Hidden layers: Bắt đầu với ReLU
- Output (binary): Dùng Sigmoid
- Output (multi-class): Dùng Softmax
- Output (regression): Không dùng activation (Linear)
Checkpoint
Bạn đã biết cách chọn activation function phù hợp chưa?
💻 Code Ví dụ
Implementing Activation Functions
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.0Checkpoint
Bạn đã chạy thử code và hiểu kết quả chưa?
🎯 Tổng kết
Những điểm quan trọng cần nhớ
-
Neuron nhân tạo mô phỏng neuron sinh học: Input → Weighted Sum → Activation → Output
-
Công thức:
-
Activation function tạo tính phi tuyến, cho phép học patterns phức tạp
-
5 Activation phổ biến:
- Sigmoid: Output layer binary (0-1)
- Tanh: Centered (-1, 1)
- ReLU: Hidden layer (⭐ phổ biến nhất)
- Leaky ReLU: Khắc phục Dying ReLU
- Softmax: Output multi-class (sum = 1)
-
Chọn activation:
- Hidden: ReLU
- Output binary: Sigmoid
- Output multi-class: Softmax
Bài tập thực hành
- Tính bằng tay
- Nếu , tính Softmax và kiểm tra tổng = 1
- Tại sao ReLU phổ biến hơn Sigmoid cho hidden layers?
🎉 Tuyệt vời! Bạn đã nắm vững về Neuron và Activation Functions!
