MinAI - Về trang chủ
Lý thuyết
2/2160 phút
Đang tải...

Neuron và Activation Functions

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

0

🎯 Mục tiêu bài học

TB5 min

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!

1

🧬 Neuron Sinh học vs Neuron Nhân tạo

TB5 min

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:

Biological vs Artificial Neuron Nguồn: Stanford CS231n - Neural Networks

Bảng so sánh

Thành phầnNeuron sinh họcNeuron nhân tạo
Đầu vàoDendritesInput xix_i
Xử lýCell bodyWeighted sum + Activation
Đầu raAxonOutput aa
Kết nốiSynapseWeight wiw_i
Ngưỡng kích hoạtAction potentialActivation function

Checkpoint

Bạn đã hiểu sự tương đồng giữa neuron sinh học và nhân tạo?

2

📐 Công thức tính toán của Neuron

TB5 min

Công thức cơ bản

z=i=1nwixi+b=wTx+bz = \sum_{i=1}^{n} w_i x_i + b = \mathbf{w}^T \mathbf{x} + b

a=f(z)a = f(z)

Giải thích từng thành phần

Ký hiệuTênGiải thíchVí dụ
xix_iInputCác giá trị đầu vàoTuổi, thu nhập
wiw_iWeightMức độ quan trọng của inputThu nhập quan trọng hơn tuổi
bbBiasHằng số điều chỉnhDịch chuyển ngưỡng kích hoạt
zzWeighted SumTổng có trọng sốz=w1×tuổi+w2×thu nhập+bz = w_1 \times \text{tuổi} + w_2 \times \text{thu nhập} + b
ffActivationHàm quyết định đầu raReLU, Sigmoid...
aaOutputKết quả sau activationGiá 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:

InputGiá trịWeightÝ nghĩa
Tuổi (x1x_1)30w1=0.1w_1 = 0.1Ít quan trọng
Thu nhập (x2x_2)50w2=0.8w_2 = 0.8🔥 Rất quan trọng
Đã xem QC (x3x_3)1w3=0.5w_3 = 0.5Quan trọng vừa

Bias: b=2b = -2

z=0.1×30+0.8×50+0.5×1+(2)=3+40+0.52=41.5z = 0.1 \times 30 + 0.8 \times 50 + 0.5 \times 1 + (-2) = 3 + 40 + 0.5 - 2 = \boxed{41.5}

a=sigmoid(41.5)1.0    Khả na˘ng cao se˜ mua! ✅a = \text{sigmoid}(41.5) \approx 1.0 \; \rightarrow \; \text{Khả năng cao sẽ mua! ✅}

Checkpoint

Bạn đã hiểu công thức tính toán của neuron?

3

⚡ Tại sao cần Activation Functions?

TB5 min

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!

Diagram
Đang vẽ diagram...

Ví dụ minh họa

Bài toánLinear (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?

4

📈 Sigmoid và Tanh

TB5 min

1. Sigmoid Function

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Đặc điểm:

  • Đầu ra: Luôn trong khoảng (0,1)(0, 1)
  • Ý 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 zzσ(z)\sigma(z)Ý nghĩa
z=10z = -100.00005\approx 0.00005Gần 0 → xác suất rất thấp
z=0z = 0=0.5= 0.550-50 (ranh giới) ⚖️
z=10z = 100.99995\approx 0.99995Gần 1 → xác suất rất cao

2. Tanh Function

tanh(z)=ezezez+ez\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}

Đặc điểm:

  • Đầu ra: Trong khoảng (1,1)(-1, 1)
  • Ư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ểmSigmoidTanh
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?

5

🚀 ReLU và Leaky ReLU

TB5 min

3. ReLU (Rectified Linear Unit)

ReLU(z)=max(0,z)={zneˆˊz>00neˆˊz0\text{ReLU}(z) = \max(0, z) = \begin{cases} z & \text{nếu } z > 0 \\ 0 & \text{nếu } z \leq 0 \end{cases}

Đặc điểm:

  • Đầu ra: [0,+)[0, +\infty)
  • 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 zzReLU(z)\text{ReLU}(z)Giải thích
z=5z = -500Âm → bị cắt về 0 ❌
z=0z = 000Ranh giới → output 0
z=3z = 333Dương → giữ nguyên ✅
z=100z = 100100100Dương lớn → giữ nguyên ✅

4. Leaky ReLU

LeakyReLU(z)={zneˆˊz>0αzneˆˊz0\text{LeakyReLU}(z) = \begin{cases} z & \text{nếu } z > 0 \\ \alpha z & \text{nếu } z \leq 0 \end{cases}

Đặc điểm:

  • Khắc phục Dying ReLU
  • Cho phép gradient nhỏ (α\alpha, thường = 0.01) khi z < 0

Ví dụ giá trị Leaky ReLU (với α=0.01\alpha = 0.01):

Input zzLeakyReLU(z)\text{LeakyReLU}(z)Giải thích
z=5z = -50.01×(5)=0.050.01 \times (-5) = -0.05Âm → vẫn có gradient nhỏ! 💡
z=0z = 000Ranh giới
z=3z = 333Dươ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

ReLUf(x) = max(0, x)xf(x)-4-22424x < 0 → output = 0 (neuron "chết")Leaky ReLUf(x) = max(αx, x), α = 0.1xf(x)-4-22424x < 0 → output = 0.1x (vẫn có gradient!)
ReLU

⚡ Nhanh nhất, đơn giản nhất. Nhưng neurons có thể "chết" khi z < 0 (gradient = 0)

Leaky ReLU

✅ 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?

6

🎯 Softmax Function

TB5 min

5. Softmax

Softmax(zi)=ezij=1Kezj\text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}

Đặ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): z=[2.0,  1.0,  0.1]z = [2.0, \; 1.0, \; 0.1]

Bước 1 — Tính ezie^{z_i}:

Lớpziz_iezie^{z_i}
🐕 Chó2.02.07.397.39
🐈 Mèo1.01.02.722.72
🐦 Chim0.10.11.111.11
Tổng11.2211.22

Bước 2 — Tính xác suất:

P(choˊ)=7.3911.22=0.66  (66%)P(\text{chó}) = \frac{7.39}{11.22} = 0.66 \; (66\%)

P(meˋo)=2.7211.22=0.24  (24%)P(\text{mèo}) = \frac{2.72}{11.22} = 0.24 \; (24\%)

P(chim)=1.1111.22=0.10  (10%)P(\text{chim}) = \frac{1.11}{11.22} = 0.10 \; (10\%)

Kiểm tra: 0.66+0.24+0.10=1.000.66 + 0.24 + 0.10 = 1.00

Dự đoán: 🐕 Chó (xác suất cao nhất)

Khi nào dùng Softmax?

Số classesActivationLoss function
2 classesSigmoidBinary Cross-Entropy
> 2 classesSoftmaxCategorical Cross-Entropy

Checkpoint

Bạn đã hiểu Softmax và khi nào sử dụng nó?

7

📊 Bảng Tổng hợp & Chọn Activation

TB5 min

Bảng so sánh tất cả Activation Functions

ActivationCông thứcRangeƯu điểmNhược điểmDùng ở đâu
Sigmoid11+ez\frac{1}{1+e^{-z}}(0, 1)Output là xác suấtVanishing gradientOutput (binary)
Tanhezezez+ez\frac{e^z-e^{-z}}{e^z+e^{-z}}(-1, 1)CenteredVanishing gradientHidden (ít dùng)
ReLUmax(0,z)\max(0, z)[0, ∞)Nhanh, đơn giảnDying ReLUHidden (⭐ phổ biến)
Leaky ReLUmax(αz,z)\max(\alpha z, z)(-∞, ∞)Không DyingThêm hyperparameterHidden
Softmaxeziezj\frac{e^{z_i}}{\sum e^{z_j}}(0, 1), sum=1Multi-class probsTốn tính toánOutput (multi-class)

Hướng dẫn chọn Activation

Diagram
Đang vẽ diagram...

Rule of thumb:

  1. Hidden layers: Bắt đầu với ReLU
  2. Output (binary): Dùng Sigmoid
  3. Output (multi-class): Dùng Softmax
  4. Output (regression): Không dùng activation (Linear)

Checkpoint

Bạn đã biết cách chọn activation function phù hợp chưa?

8

💻 Code Ví dụ

TB5 min

Implementing Activation Functions

python.py
1import numpy as np
2import matplotlib.pyplot as plt
3
4# 1. Sigmoid
5def sigmoid(z):
6 return 1 / (1 + np.exp(-z))
7
8# 2. Tanh
9def tanh(z):
10 return np.tanh(z)
11
12# 3. ReLU
13def relu(z):
14 return np.maximum(0, z)
15
16# 4. Leaky ReLU
17def leaky_relu(z, alpha=0.01):
18 return np.where(z > 0, z, alpha * z)
19
20# 5. Softmax
21def softmax(z):
22 exp_z = np.exp(z - np.max(z)) # Trừ max để tránh overflow
23 return exp_z / exp_z.sum()
24
25# Test các activation functions
26z = np.array([-2, -1, 0, 1, 2])
27
28print("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))
33
34# Softmax cho multi-class
35logits = np.array([2.0, 1.0, 0.1])
36print("\nSoftmax:", softmax(logits).round(3))
37print("Sum :", softmax(logits).sum()) # = 1.0
Expected Output
1z : [-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.0

Checkpoint

Bạn đã chạy thử code và hiểu kết quả chưa?

9

🎯 Tổng kết

TB5 min

Những điểm quan trọng cần nhớ

  1. Neuron nhân tạo mô phỏng neuron sinh học: Input → Weighted Sum → Activation → Output

  2. Công thức: a=f(wixi+b)a = f(\sum w_i x_i + b)

  3. Activation function tạo tính phi tuyến, cho phép học patterns phức tạp

  4. 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)
  5. Chọn activation:

    • Hidden: ReLU
    • Output binary: Sigmoid
    • Output multi-class: Softmax

Bài tập thực hành

  1. Tính sigmoid(2)\text{sigmoid}(2) bằng tay
  2. Nếu z=[1,2,3]z = [1, 2, 3], tính Softmax và kiểm tra tổng = 1
  3. 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!