AI

[AI Blog #28] Nền Tảng Deep Learning & Trí Tuệ Nhân Tạo: Mạng Nơ-ron Sâu (MLP), Giải Mã Lan Truyền Ngược (Backpropagation), Thuật Toán Tối Ưu Hóa (Adam/AdamW) & Kỹ Thuật Chuẩn Hóa (BatchNorm vs. LayerNorm)

0 views
[AI Blog #28] Nền Tảng Deep Learning & Trí Tuệ Nhân Tạo: Mạng Nơ-ron Sâu (MLP), Giải Mã Lan Truyền Ngược (Backpropagation), Thuật Toán Tối Ưu Hóa (Adam/AdamW) & Kỹ Thuật Chuẩn Hóa (BatchNorm vs. LayerNorm)

1. Bối cảnh thực tế (Context & Problem Statement)

Trong khi Machine Learning truyền thống (Scikit-Learn, XGBoost) dựa rất nhiều vào việc con người phải tự tay trích xuất đặc trưng (Manual Feature Engineering), Deep Learning (Học sâu) tạo nên cuộc cách mạng nhờ khả năng Học biểu diễn tự động (Hierarchical Representation Learning):

  • Các tầng đầu tiên học các đặc trưng cấp thấp (đường nét, cạnh, âm vị).
  • Các tầng sâu hơn tự động kết hợp thành các khái niệm trừu tượng cấp cao (khuôn mặt đồ vật, ngữ nghĩa câu văn).

Tuy nhiên, việc huấn luyện một mạng nơ-ron sâu với hàng chục tầng hoặc các mô hình ngôn ngữ lớn (LLMs) với hàng tỷ tham số thường xuyên gặp phải những "cơn ác mộng" toán học: Biến mất đạo hàm (Vanishing Gradient), Bùng nổ đạo hàm (Exploding Gradient), Mất ổn định nội tại (Internal Covariate Shift).

Để làm chủ Deep Learning hiện đại, bạn bắt buộc phải hiểu rõ cơ chế vận hành bên dưới của Backpropagation, Optimizers, và Normalization.


2. Các Khái Niệm & Cơ Chế Cốt Lõi

2.1. Kiến Trúc Mạng Nơ-ron Truyền Thẳng (Multi-Layer Perceptron - MLP)

Một nơ-ron nhân tạo đơn lẻ thực hiện 2 phép tính toán cơ bản:

  1. Linear Combination (Tổ hợp tuyến tính): z=∑i=1nwixi+b=WTX+bz = \sum_{i=1}^{n} w_i x_i + b = W^T X + b
  2. Non-linear Activation (Hàm kích hoạt phi tuyến): a=σ(z)a = \sigma(z)
    • Tại sao cần hàm phi tuyến? Nếu không có hàm kích hoạt phi tuyến, việc xếp chồng 100 lớp nơ-ron dày đặc cũng chỉ tương đương với 1 phép biến đổi tuyến tính đơn lẻ (W100…W2W1X=WtotalXW_{100} \dots W_2 W_1 X = W_{\text{total}} X), khiến mạng không thể học được các quy luật phi tuyến phức tạp trong thế giới thực.

2.2. Bản Chất Toán Học Của Lan Truyền Ngược (Backpropagation & Chain Rule)

Mục tiêu của quá trình huấn luyện là tìm bộ trọng số WW sao cho hàm mất mát L\mathcal{L} (Loss Function) đạt giá trị nhỏ nhất.

  • Thuật toán Gradient Descent cập nhật trọng số theo hướng ngược chiều vector đạo hàm: W(t+1)=W(t)−η⋅∂L∂WW^{(t+1)} = W^{(t)} - \eta \cdot \frac{\partial \mathcal{L}}{\partial W} (trong đó η\eta là Tốc độ học - Learning Rate).
  • Quy tắc chuỗi (Chain Rule) trong Đồ thị tính toán (Computational Graph): ∂L∂wij=∂L∂aout⋅∂aout∂zout⋅∂zout∂ahidden⋅⋯⋅∂zk∂wij\frac{\partial \mathcal{L}}{\partial w_{ij}} = \frac{\partial \mathcal{L}}{\partial a_{\text{out}}} \cdot \frac{\partial a_{\text{out}}}{\partial z_{\text{out}}} \cdot \frac{\partial z_{\text{out}}}{\partial a_{\text{hidden}}} \cdot \dots \cdot \frac{\partial z_k}{\partial w_{ij}}
  • Vấn đề Vanishing Gradient (Biến mất đạo hàm):
    • Khi sử dụng hàm kích hoạt Sigmoid (σ′(z)≤0.25\sigma'(z) \le 0.25) hoặc Tanh (tanh⁡′(z)≤1.0\tanh'(z) \le 1.0), việc nhân liên tiếp hàng chục số thập phân <1< 1 qua nhiều tầng ẩn sẽ khiến đạo hàm ở các tầng đầu tiên tiến về 00 (∂L∂W1≈0\frac{\partial \mathcal{L}}{\partial W_1} \approx 0).
    • →\rightarrow Các tầng đầu tiên ngừng học hoàn toàn!
  • Giải pháp: Sử dụng ReLU (f(x)=max⁡(0,x)f(x) = \max(0, x)), LeakyReLU, hoặc GeLU (trong Transformers) có đạo hàm bằng 11 khi x>0x > 0, triệt tiêu hiện tượng bão hòa gradient.
FORWARD PASS:
Input (X) ---> [ Layer 1: z1 = W1*X+b1 -> a1 = ReLU(z1) ] ---> [ Layer 2: z2 = W2*a1+b2 ] ---> Loss (L)

BACKWARD PASS (Chain Rule):
dL/dW1 <=== [ dL/dz1 = (dL/dz2 * W2) * ReLU'(z1) ] <=== [ dL/dz2 = dL/da_out * ... ] <=== dL

2.3. Tiến Hóa Của Các Thuật Toán Tối Ưu Hóa (Optimizers)

  1. SGD (Stochastic Gradient Descent): Cập nhật dựa trên từng batch nhỏ, dễ bị dao động răng cưa và mắc kẹt tại điểm yên ngựa (Saddle Points).
  2. SGD with Momentum: Bổ sung quán tính vật lý (vận tốc vt=γvt−1+ηgtv_t = \gamma v_{t-1} + \eta g_t) giúp vượt qua các vùng phẳng và triệt tiêu dao động ngang.
  3. RMSprop: Tự động điều chỉnh Learning Rate cho từng tham số bằng cách chia cho căn bậc hai của trung bình bình phương gradient lịch sử (vt+ϵ\sqrt{v_t + \epsilon}).
  4. Adam (Adaptive Moment Estimation): Kết hợp cả Momentum (First Moment - Hướng đi) và RMSprop (Second Moment - Độ lớn bước nhảy).
  5. AdamW (Adam with Decoupled Weight Decay - Tiêu chuẩn vàng hiện nay): Tách rời phép phạt L2L_2 Regularization ra khỏi việc tính toán gradient thích ứng, khắc phục nhược điểm lớn của Adam trên các mô hình ngôn ngữ lớn (Transformers/LLMs).

2.4. Kỹ Thuật Chuẩn Hóa: BatchNorm vs. LayerNorm vs. RMSNorm

  • Batch Normalization (BatchNorm): Chuẩn hóa dữ liệu trên chiều Batch (NN) cho từng kênh/thuộc tính độc lập.
    • Rất mạnh trong Computer Vision (CNN) nhưng phụ thuộc vào kích thước Batch Size và thất bại trên dữ liệu chuỗi có độ dài biến thiên (NLP).
  • Layer Normalization (LayerNorm): Chuẩn hóa dữ liệu trên toàn bộ các thuộc tính/chiều ẩn (DD) của duy nhất 1 mẫu dữ liệu đơn lẻ, độc lập hoàn toàn với các mẫu khác trong Batch.
    • Là tiêu chuẩn bắt buộc cho kiến trúc Transformer, BERT, GPT và LLMs.
  • RMSNorm (Root Mean Square Layer Normalization): Biến thể tối ưu hóa của LayerNorm bỏ qua việc tính giá trị trung bình μ\mu, chỉ chia cho giá trị căn bậc hai trung bình bình phương (RMS), giúp tăng tốc độ tính toán 20%−30%20\% - 30\% (được dùng trong LLaMA 2/3, Mistral).

3. Các Bảng Markdown So Sánh Chi Tiết

📊 Bảng 1: So Sánh Toàn Diện Các Hàm Kích Hoạt (Activation Functions)

Hàm kích hoạtCông thức toán họcMiền giá trịĐạo hàm lớn nhấtƯu điểm & Nhược điểmUse-case phổ biến
Sigmoidσ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}(0,1)(0, 1)0.250.25Dễ bị Vanishing Gradient, không Zero-centeredTầng đầu ra của bài toán phân loại nhị phân (Binary Classification)
Tanhez−e−zez+e−z\frac{e^z - e^{-z}}{e^z + e^{-z}}(−1,1)(-1, 1)1.01.0Zero-centered tốt hơn Sigmoid, vẫn bị Vanishing GradientTầng ẩn của RNN cổ điển
ReLUmax⁡(0,z)\max(0, z)[0,+∞)[0, +\infty)1.01.0Tính toán siêu nhanh (O(1)O(1)), không bão hòa gradient dương. Nhược điểm: Dying ReLUChuẩn mặc định cho Mạng nơ-ron tích chập (CNN), MLP
GeLUz⋅Φ(z)z \cdot \Phi(z) (Gaussian Error)[−0.17,+∞)[-0.17, +\infty)≈1.0\approx 1.0Làm mượt màng chuyển tiếp xác suất, hiệu năng vượt trội trên dữ liệu phức tạpChuẩn mực trong Transformer, BERT, GPT-3/4
Swish / SiLUz⋅σ(βz)z \cdot \sigma(\beta z)[−0.28,+∞)[-0.28, +\infty)≈1.0\approx 1.0Mượt mà, cải thiện độ dốc gradient ở vùng âmLLaMA, EfficientNet, YOLOv8

📊 Bảng 2: So Sánh Các Thuật Toán Tối Ưu Hóa (Optimizers)

Thuật toánCơ chế học Learning RateKhả năng thoát khỏi Yên ngựa (Saddle Points)Bộ nhớ phụ trợ yêu cầuUse-case tối ưu
SGD + MomentumCố định toàn cục (kèm quán tính)KháThấp (1×1\times bộ nhớ trọng số)Computer Vision (ResNet), Đạt độ tổng quát hóa cao
RMSpropTự thích ứng theo từng tham số (Adaptive)TốtTrung bìnhBài toán không dừng (Non-stationary), RNN
AdamKết hợp Momentum + RMSpropRất tốtCao (2×2\times bộ nhớ: Momentum + Variance)Huấn luyện nhanh cho hầu hết các tác vụ Deep Learning
AdamWTách rời Weight Decay khỏi Adam Adaptive GradientXuất sắc nhấtCao (2×2\times bộ nhớ)Chuẩn mực bắt buộc cho Transformers, LLMs, Diffusion Models

📊 Bảng 3: So Sánh BatchNorm vs. LayerNorm vs. RMSNorm

Tiêu chíBatch Normalization (BatchNorm)Layer Normalization (LayerNorm)RMSNorm (Root Mean Square)
Phạm vi tính toán μ,σ\mu, \sigmaGom dọc theo chiều Batch (NN)Gom ngang qua các Features (DD) của 1 mẫuChỉ tính RMS ngang qua Features (DD) (Không tính μ\mu)
Phụ thuộc Batch SizeRất lớn (Batch size nhỏ <8< 8 hoạt động rất kém)Không phụ thuộc (Chạy tốt cả khi Batch Size =1= 1)Không phụ thuộc
Hành vi Train vs. InferenceKhác nhau (Lưu Running Mean/Var lúc Train)Hoàn toàn đồng nhất giữa Train và InferenceHoàn toàn đồng nhất
Tốc độ tính toánNhanh trên GPUTrung bình (cần tính Mean và Var)Nhanh nhất (Tiết kiệm 20% thời gian tính toán)
Lĩnh vực thống trịComputer Vision (CNN, ResNet)Transformers (BERT, GPT, T5)State-of-the-Art LLMs (LLaMA 2/3, Mistral, Gemma)

4. Best Practices & Kỹ Thuật Huấn Luyện Mạng Sâu (Pro-Tips)

💡 Kỹ thuật Khởi tạo Trọng số (Weight Initialization)

  • Tuyệt đối không khởi tạo toàn bộ W=0W = 0: Nếu mọi trọng số bằng 00, tất cả các nơ-ron ở cùng một tầng sẽ có đầu ra giống hệt nhau và nhận cùng một gradient (hiện tượng đối xứng - Symmetry Problem), khiến mạng không thể học được các tính chất đa dạng.
  • Quy tắc chọn khởi tạo:
    • Nếu dùng ReLU / LeakyReLU: Sử dụng He Initialization (Kaiming Init) (W∼N(0,2/nin)W \sim \mathcal{N}(0, \sqrt{2/n_{\text{in}}})).
    • Nếu dùng Sigmoid / Tanh / GeLU: Sử dụng Xavier / Glorot Initialization (W∼N(0,2/(nin+nout))W \sim \mathcal{N}(0, \sqrt{2/(n_{\text{in}} + n_{\text{out}})})).

💡 Chiến lược Learning Rate Schedule: Cosine Annealing with Warmup

Trong huấn luyện Transformers/LLMs:

  • Warmup Phase (5%–10% bước đầu): Tăng dần Learning Rate từ 00 lên giá trị đỉnh ηmax\eta_{\text{max}} để ổn định các lớp nơ-ron ban đầu.
  • Cosine Decay Phase: Giảm dần Learning Rate theo đồ thị hàm Cosine về gần 00 để mô hình hội tụ mượt mà vào đáy của vùng cực tiểu toàn cục.
Learning Rate (LR)
      ^
η_max |       / \
      |      /   \  <-- Cosine Decay
      |     /     \
      |    /       \____
      |   / Warmup      \
    0 +--------------------------> Training Steps

5. Góc Ôn Luyện Phỏng Vấn (Interview Corner)

❓ Câu hỏi 1: Giải thích hiện tượng Vanishing Gradient và Exploding Gradient trong Deep Neural Networks. Những kỹ thuật kiến trúc hiện đại nào giúp giải quyết triệt để vấn đề này?

  • Gợi ý trả lời:
    • Vanishing Gradient (Biến mất đạo hàm):
      • Khi đạo hàm ∂L∂W\frac{\partial \mathcal{L}}{\partial W} ở các tầng đầu tiên tiến sát về 00 do nhân chuỗi (Chain Rule) các giá trị đạo hàm nhỏ qua nhiều tầng ẩn. Trọng số ở các tầng đầu gần như không đổi, mô hình không thể học được biểu diễn cấp thấp.
      • Giải pháp: Dùng hàm kích hoạt ReLU / GeLU thay cho Sigmoid; sử dụng He/Xavier Initialization; áp dụng Normalization (BatchNorm/LayerNorm); và quan trọng nhất là sử dụng Residual Connections (Skip Connections: y=f(x)+xy = f(x) + x) trong ResNet/Transformers giúp gradient truyền thẳng không bị suy giảm (∂y∂x=∂f∂x+1\frac{\partial y}{\partial x} = \frac{\partial f}{\partial x} + 1).
    • Exploding Gradient (Bùng nổ đạo hàm):
      • Khi các giá trị đạo hàm >1> 1 nhân chuỗi qua nhiều tầng khiến trọng số tăng vọt tới vô cùng (NaN/Inf\text{NaN} / \text{Inf}), làm đồ thị hàm mất mát dao động dữ dội và phân kỳ.
      • Giải pháp: Áp dụng Gradient Clipping (cắt gọt vector gradient nếu chuẩn L2L_2 vượt quá một ngưỡng quy định, ví dụ max_norm = 1.0).

❓ Câu hỏi 2: So sánh cơ chế của Batch Normalization (BatchNorm) và Layer Normalization (LayerNorm). Tại sao BatchNorm lại cực kỳ phổ biến trong Computer Vision nhưng lại thất bại trên Natural Language Processing (Transformers) và buộc phải thay thế bằng LayerNorm?

  • Gợi ý trả lời:
    • Sự khác biệt về trục chuẩn hóa:
      • Giả sử tensor dữ liệu có kích thước [N,T,D][N, T, D] (NN: Batch size, TT: Độ dài câu Sequence Length, DD: Số chiều Hidden Dimension):
      • BatchNorm: Tính μ,σ\mu, \sigma dọc theo trục NN cho từng vị trí token độc lập.
      • LayerNorm: Tính μ,σ\mu, \sigma dọc theo trục DD cho từng token của từng câu đơn lẻ.
    • Lý do BatchNorm thất bại trong NLP:
      1. Độ dài câu biến thiên (Variable Sequence Lengths): Các câu văn trong một batch có độ dài ngắn khác nhau (phải dùng đệm <pad>). Ở các vị trí token xa, số lượng câu hợp lệ rất ít khiến việc tính toán μ,σ\mu, \sigma theo chiều batch bị nhiễu loạn và sai lệch nghiêm trọng.
      2. Phụ thuộc vào Batch Size: Trong các mô hình LLM lớn, do giới hạn VRAM GPU, Batch Size trên mỗi GPU thường rất nhỏ (N=1N = 1 hoặc N=2N = 2). BatchNorm hoạt động cực kém khi batch size nhỏ.
      3. Không đồng nhất giữa Train và Test: LayerNorm tính toán thống kê trực tiếp trên từng câu độc lập, đảm bảo hành vi lúc huấn luyện và lúc suy luận (Inference/Generation từng token) hoàn toàn giống nhau 100%100\%.

❓ Câu hỏi 3: Tại sao AdamW lại vượt trội hơn Adam truyền thống khi kết hợp với L2L_2 Regularization (Weight Decay)?

  • Gợi ý trả lời:
    • Trong thuật toán SGD truyền thống, việc cộng thêm thành phần phạt L2L_2 Regularization (12λW2\frac{1}{2} \lambda W^2) vào hàm mất mát hoàn toàn tương đương với việc thực hiện Weight Decay (trừ trực tiếp một tỷ lệ trọng số cũ: Wt+1=(1−ηλ)Wt−ηgtW_{t+1} = (1 - \eta \lambda) W_t - \eta g_t).
    • Tuy nhiên, trong Adam truyền thống, đạo hàm của thành phần phạt L2L_2 (λW\lambda W) bị đưa vào chung với gradient thực tế gtg_t để tính toán các giá trị trung bình mtm_t và phương sai thích ứng vtv_t.
    • Hệ quả: Các trọng số có gradient lịch sử lớn sẽ bị phạt L2L_2 ít hơn, trong khi các trọng số ít biến động lại bị phạt nhiều hơn →\rightarrow Làm mất đi ý nghĩa ban đầu của việc kiểm soát độ lớn trọng số.
    • Giải pháp của AdamW: Tách rời (Decoupled) hoàn toàn phép tính Weight Decay ra khỏi bước cập nhật gradient thích ứng: Wt+1=Wt−ηt⋅mtvt+ϵ−ηtλWtW_{t+1} = W_t - \eta_t \cdot \frac{m_t}{\sqrt{v_t} + \epsilon} - \eta_t \lambda W_t Điều này giúp mô hình đạt được khả năng tổng quát hóa (Generalization) vượt trội trên tập kiểm thử, trở thành tiêu chuẩn bắt buộc cho mọi mô hình Transformer/LLM hiện đại.

6. Tóm Tắt Ghi Nhớ Nhanh (Key Takeaways)

  1. Activation Function: Sử dụng GeLU / Swish cho Transformers/LLMs; sử dụng ReLU cho CNN/MLP cơ bản.
  2. Backpropagation: Dựa trên quy tắc chuỗi (Chain Rule); giải quyết Vanishing Gradient bằng Skip Connections (f(x)+xf(x) + x) và He Initialization.
  3. Optimizer: AdamW là chuẩn mực số 1 cho Deep Learning hiện đại nhờ tách rời Weight Decay khỏi Adaptive Gradients.
  4. Normalization: BatchNorm thống trị Computer Vision; LayerNorm & RMSNorm thống trị Natural Language Processing & Large Language Models.
0Claps