Deep Learning 1 — Nền tảng: neuron, mạng & activation

13 thg 7, 2026 6 lượt xem
#ai
#neural-network
#deep-learning
#perceptron
#mlp
#activation

Deep Learning 1 — Nền tảng: neuron, mạng & activation

Đây là bài mở màn của series Deep Learning chuyên sâu. Nếu bạn đã đọc bài AI zero — Deep Learning và muốn hiểu sâu hơn "bên trong một mạng neuron thực sự có gì", thì đây là điểm bắt đầu. Ta sẽ đi từ viên gạch nhỏ nhất — một neuron — lên tới mạng nhiều lớp (MLP), giải thích vì sao hàm kích hoạt phi tuyến là thứ khiến deep learning mạnh, và cuối cùng trả lời câu hỏi thực tế: khi nào nên dùng DL thay vì machine learning cổ điển?

Đây là danh mục AI. Các đoạn code Python trong bài là minh hoạ để bạn hình dung phép tính, không phải sandbox chạy được. Muốn chạy thật với framework, xem bài PyTorch trong thực chiến.


1. Vì sao lại có deep learning?

Machine learning cổ điển (hồi quy, cây quyết định, SVM…) hoạt động rất tốt trên dữ liệu bảng (tabular) — nơi mỗi cột đã là một đặc trưng có ý nghĩa: tuổi, thu nhập, số dư tài khoản. Nhưng hãy thử đưa cho một mô hình cổ điển một tấm ảnh dưới dạng ma trận điểm ảnh, hay một câu văn dưới dạng chuỗi ký tự. Từng điểm ảnh, từng ký tự riêng lẻ gần như vô nghĩa. Cái có nghĩa là tổ hợp của chúng: cạnh, góc, kết cấu, rồi mắt, mũi, khuôn mặt; hay từ, cụm từ, ý nghĩa câu.

Với ML cổ điển, ta phải tự tay thiết kế đặc trưng (feature engineering — xem ML feature engineering): tốn công, cần chuyên gia miền, và chạm trần rất nhanh.

Deep learning đảo ngược điều đó. Thay vì con người thiết kế đặc trưng, mạng nhiều lớp tự học ra các đặc trưng trực tiếp từ dữ liệu thô, theo tầng bậc: lớp đầu học cạnh, lớp giữa ghép cạnh thành hình, lớp sâu ghép hình thành khái niệm. Đây gọi là representation learning (học biểu diễn) — đóng góp cốt lõi của DL.

Ba điều kiện khiến DL bùng nổ (nói kỹ ở mục cuối):

  • Nhiều dữ liệu. DL rất "khát dữ liệu"; càng nhiều mẫu, mạng sâu càng phát huy.
  • Sức tính toán (GPU). Huấn luyện hàng triệu tham số cần phần cứng song song mạnh.
  • Loại dữ liệu. DL thắng rõ ở dữ liệu phi cấu trúc: ảnh, âm thanh, văn bản, chuỗi. Với dữ liệu bảng, câu chuyện lại khác (mục 8).

2. Neuron & perceptron — viên gạch cơ bản

Viên gạch nhỏ nhất của mạng neuron là một neuron nhân tạo. Ý tưởng đơn giản đến bất ngờ: lấy các đầu vào, nhân với trọng số, cộng lại, thêm một độ lệch, rồi cho qua một hàm.

Một neuron nhận vector đầu vào x = [x₁, x₂, …, xₙ], có vector trọng số w = [w₁, …, wₙ] và một bias b. Nó tính tổng có trọng số:

z = w·x + b = w₁x₁ + w₂x₂ + … + wₙxₙ + b

rồi đưa z qua một hàm kích hoạt a = f(z). Kết quả a là đầu ra của neuron.

Trực giác: w·x + b là một ranh giới tuyến tính (một đường thẳng trong 2D, một siêu phẳng trong không gian cao chiều). Trọng số quyết định độ dốc/hướng, bias quyết định dịch chuyển. Đây chính là mô hình perceptron — do Rosenblatt đề xuất từ năm 1958 — với hàm kích hoạt kiểu bậc thang (đầu ra 0 hoặc 1).

Nếu bạn đã đọc ML hồi quy tuyến tính & logistic, bạn sẽ thấy quen: một neuron với hàm kích hoạt sigmoid chính là hồi quy logistic. Đúng vậy — một neuron đơn không hơn gì một mô hình tuyến tính.

Giới hạn chí mạng của perceptron đơn: bài toán XOR

Vì một perceptron chỉ vẽ được một ranh giới thẳng, nó chỉ giải được các bài toán phân tách tuyến tính. Bài toán XOR là phản ví dụ kinh điển:

x₁x₂XOR
000
011
101
110

Hãy vẽ 4 điểm này lên mặt phẳng: hai điểm nhãn 1 nằm chéo nhau, hai điểm nhãn 0 cũng chéo nhau. Không tồn tại một đường thẳng nào tách được hai lớp. Một perceptron đơn không thể học XOR — phát hiện này (Minsky & Papert, 1969) từng khiến giới nghiên cứu mất niềm tin vào mạng neuron một thời gian dài (giai đoạn "mùa đông AI").

Lời giải? Xếp chồng nhiều neuron thành nhiều lớp và thêm phi tuyến vào giữa. Đó là MLP.


3. MLP — mạng perceptron nhiều lớp

Multi-Layer Perceptron (MLP) là mạng neuron truyền thẳng (feedforward) gồm nhiều lớp neuron xếp chồng:

  • Lớp đầu vào (input): nhận vector đặc trưng thô.
  • Một hoặc nhiều lớp ẩn (hidden): mỗi neuron nhận toàn bộ đầu ra của lớp trước (nên gọi là fully-connected / dense), tính w·x + b rồi qua hàm kích hoạt phi tuyến.
  • Lớp đầu ra (output): cho ra dự đoán cuối cùng (một số, một xác suất, hay một phân bố xác suất trên nhiều lớp).

Chữ "deep" (sâu) trong deep learning nghĩa là có nhiều lớp ẩn. Mỗi lớp biến đổi biểu diễn của dữ liệu một bước; càng nhiều lớp, mạng càng dựng được các đặc trưng trừu tượng tầng bậc.

Vì sao nhiều lớp + phi tuyến lại mạnh — universal approximation

Điều quan trọng nhất: nếu chỉ xếp chồng các phép tuyến tính mà không có phi tuyến ở giữa, cả mạng vẫn chỉ tương đương một phép tuyến tính duy nhất. Tổ hợp các hàm tuyến tính vẫn là hàm tuyến tính — xếp bao nhiêu lớp cũng vô ích, vẫn không giải được XOR.

Chính hàm kích hoạt phi tuyến giữa các lớp mới "bẻ cong" không gian, cho phép mạng vẽ ranh giới phức tạp. Với đủ neuron ở lớp ẩn và một phi tuyến, MLP có thể xấp xỉ gần như bất kỳ hàm liên tục nào — trực giác của định lý xấp xỉ phổ quát (universal approximation theorem).

Lưu ý cách diễn giải: định lý chỉ nói mạng tồn tại khả năng biểu diễn hàm đó, chứ không đảm bảo ta huấn luyện tìm ra được nó, cũng không nói cần bao nhiêu neuron. Thực tế, mạng sâu thường học hiệu quả hơn một lớp ẩn cực rộng. Việc học trọng số là chủ đề bài huấn luyện & lan truyền ngược.


4. Hàm kích hoạt — thứ tạo nên phi tuyến

Hàm kích hoạt là hàm phi tuyến áp lên z = w·x + b ở mỗi neuron. Không có nó, mạng vô dụng (như vừa nói). Dưới đây là các hàm phổ biến.

ReLU — lựa chọn mặc định cho lớp ẩn

ReLU(z) = max(0, z) — giữ nguyên phần dương, cắt phần âm về 0.

  • Ưu: rẻ (chỉ so sánh với 0), không bão hoà ở phần dương nên giảm mạnh vấn đề vanishing gradient, hội tụ nhanh. Đây là mặc định cho các lớp ẩn hiện đại.
  • Nhược: "dying ReLU" — nếu một neuron luôn nhận z < 0, gradient của nó bằng 0 và nó "chết", ngừng học. Các biến thể như Leaky ReLU (cho phần âm một độ dốc nhỏ) và GELU (dùng phổ biến trong Transformer) sinh ra để giảm nhược điểm này.

Sigmoid & tanh — bão hoà và vanishing gradient

  • Sigmoid σ(z) = 1/(1+e⁻ᶻ): nén giá trị về khoảng (0, 1) — hợp làm xác suất ở đầu ra nhị phân.
  • Tanh tanh(z): nén về (-1, 1), đối xứng quanh 0.

Cả hai đều bão hoà: khi z rất lớn hoặc rất nhỏ, đường cong nằm ngang, đạo hàm tiến về 0. Xếp nhiều lớp dùng sigmoid/tanh, các gradient nhỏ nhân với nhau qua nhiều lớp → tiến về 0 → các lớp đầu gần như không học được. Đó là vanishing gradient, lý do lịch sử khiến mạng sâu khó huấn luyện trước khi ReLU trở nên phổ biến. Vì vậy ngày nay ta hiếm khi dùng sigmoid/tanh ở lớp ẩn — chủ yếu để chúng ở lớp đầu ra.

Softmax — cho phân loại đa lớp

Softmax biến một vector số thực thành một phân bố xác suất (các phần tử dương, cộng lại bằng 1):

softmax(z)ᵢ = e^(zᵢ) / Σⱼ e^(zⱼ)

Dùng ở lớp đầu ra khi phân loại nhiều lớp (ví dụ: ảnh này là chó / mèo / chim). Phần tử lớn nhất được "phóng đại" thành xác suất cao nhất.

Vì sao bắt buộc phải có phi tuyến? Vì nếu không, f(f(...f(x))) vẫn tuyến tính, mạng sâu sụp về mô hình tuyến tính đơn — không tốt hơn hồi quy logistic. Phi tuyến là thứ duy nhất cho phép mạng học ranh giới phức tạp và các đặc trưng tầng bậc.


5. Forward pass — dữ liệu chảy qua mạng

Forward pass (lượt truyền xuôi) là quá trình đưa đầu vào chảy qua từng lớp để ra dự đoán. Với mỗi lớp l, ta lặp lại đúng hai bước:

zˡ = Wˡ · aˡ⁻¹ + bˡ        (biến đổi tuyến tính)
aˡ = f(zˡ)                  (hàm kích hoạt phi tuyến)

trong đó ma trận trọng số của lớp (mỗi hàng là trọng số của một neuron), là vector bias, aˡ⁻¹ là đầu ra lớp trước. Điểm mấu chốt về hiệu năng: mỗi lớp là một phép nhân ma trận — chính vì vậy DL chạy cực nhanh trên GPU, vốn được thiết kế để nhân ma trận song song hàng loạt.

Toàn bộ phép tính chỉ là nhân ma trận + cộng bias + áp hàm phi tuyến, lặp lại theo số lớp. Không có gì huyền bí ở forward pass.


6. Minh hoạ: forward pass của một MLP nhỏ bằng numpy

Đoạn code sau dựng một MLP 2 lớp (một lớp ẩn ReLU + lớp ra softmax) và chạy forward pass thủ công. Mục tiêu là thấy rõ hình dạng phép tính, không phải huấn luyện.

# (minh hoạ) forward pass của MLP nhỏ — chỉ để hiểu, không huấn luyện
import numpy as np

def relu(z):
    return np.maximum(0, z)

def softmax(z):
    z = z - z.max(axis=1, keepdims=True)      # ổn định số học
    e = np.exp(z)
    return e / e.sum(axis=1, keepdims=True)

# Mạng: 3 đầu vào -> 4 neuron ẩn (ReLU) -> 2 lớp đầu ra (softmax)
# Trọng số ở đây khởi tạo ngẫu nhiên; thực tế chúng được HỌC (xem dl-02).
rng = np.random.default_rng(0)
W1 = rng.normal(size=(3, 4)); b1 = np.zeros(4)   # lớp ẩn
W2 = rng.normal(size=(4, 2)); b2 = np.zeros(2)   # lớp ra

def forward(X):
    z1 = X @ W1 + b1     # (n,3)@(3,4) -> (n,4)  biến đổi tuyến tính
    a1 = relu(z1)        # phi tuyến ở lớp ẩn
    z2 = a1 @ W2 + b2    # (n,4)@(4,2) -> (n,2)
    return softmax(z2)   # phân bố xác suất 2 lớp

X = np.array([[0.5, -1.0, 2.0],
              [1.5,  0.0, -0.5]])   # 2 mẫu, mỗi mẫu 3 đặc trưng
probs = forward(X)
print(probs)              # mỗi hàng cộng lại = 1
print(probs.sum(axis=1))  # -> [1. 1.]

Nhìn kỹ: mỗi lớp đúng là X @ W + b rồi qua hàm kích hoạt. Đầu ra là hai xác suất cộng lại bằng 1. Ở giai đoạn này trọng số còn ngẫu nhiên nên dự đoán vô nghĩa — bước biến trọng số ngẫu nhiên thành trọng số "biết dự đoán" chính là huấn luyện, chủ đề bài kế tiếp.


7. Đầu ra & hàm mất mát theo bài toán

Kiến trúc lõi giống nhau, nhưng lớp đầu rahàm mất mát (loss) phải khớp với loại bài toán. Đây là bảng cần thuộc:

Bài toánKích hoạt lớp raLoss thường dùng
Hồi quy (dự đoán số)Không (linear)MSE (sai số bình phương trung bình)
Phân loại nhị phânSigmoid (1 neuron)Binary cross-entropy
Phân loại đa lớpSoftmax (K neuron)Categorical cross-entropy

Trực giác: hàm kích hoạt lớp ra định hình dự đoán (số thực tự do / xác suất / phân bố), còn loss đo mức sai để mạng biết hướng cần sửa. Vì sao cặp softmax + cross-entropy phổ biến cho phân loại: nó phạt nặng khi mô hình tự tin mà sai, và có đạo hàm đẹp giúp học ổn định. Cách loss dẫn dắt việc cập nhật trọng số được giải thích ở bài huấn luyện & backprop.


8. Deep Learning vs Machine Learning cổ điển

Câu hỏi thực tế nhất: khi nào nên chọn DL, khi nào dùng ML cổ điển? Bảng so sánh:

Tiêu chíML cổ điển (cây/ensemble, tuyến tính)Deep Learning
Dữ liệu bảng (tabular)Thắng rõ (XGBoost/LightGBM là chuẩn)Thường thua hoặc ngang, phức tạp hơn
Ảnh / âm thanh / videoYếuThắng áp đảo (CNN)
Văn bản / chuỗi / ngôn ngữHạn chếThắng áp đảo (RNN, Transformer)
Lượng dữ liệu cầnÍt – vừa cũng tốtCần nhiều dữ liệu mới phát huy
Phần cứngCPU đủ dùngThường cần GPU
Đặc trưngCần feature engineering thủ côngTự học đặc trưng từ dữ liệu thô
Khả năng giải thíchDễ hơn (nhất là cây, tuyến tính)Khó, thiên về "hộp đen"
Chi phí huấn luyện/vận hànhThấpCao hơn (tính toán, hạ tầng)

Thông điệp then chốt — và là hiểu lầm phổ biến: deep learning KHÔNG phải lúc nào cũng tốt hơn. Trên dữ liệu bảng, các mô hình cây tăng cường gradient (gradient boosting) như XGBoost/LightGBM thường thắng deep learning cả về độ chính xác lẫn công sức — xem chi tiết ở ML cây & ensemble. DL tỏ ra vượt trội khi dữ liệu phi cấu trúc (ảnh, text, âm thanh) và có nhiều dữ liệu.

Đánh đổi cần cân nhắc: DL đòi hỏi nhiều dữ liệu hơn, nhiều tính toán (GPU) hơn, khó giải thích hơn, và tốn công vận hành hơn. Nếu bài toán của bạn là dữ liệu bảng với vài nghìn dòng, hãy bắt đầu từ gradient boosting trước — đơn giản, nhanh, mạnh.


9. Lịch sử ngắn: vì sao DL bùng nổ vào thập niên 2010?

Ý tưởng mạng neuron có từ thập niên 1950–1960, và lan truyền ngược được phổ biến từ thập niên 1980. Vậy vì sao mãi tới ~2012 DL mới bùng nổ? Ba yếu tố hội tụ:

  1. Dữ liệu. Internet tạo ra các tập dữ liệu khổng lồ (như ImageNet với hàng triệu ảnh gán nhãn) — đủ "thức ăn" cho mạng sâu.
  2. Phần cứng (GPU). GPU hoá ra cực hợp để nhân ma trận song song — phép tính lõi của mạng neuron — khiến huấn luyện mạng lớn trở nên khả thi.
  3. Thuật toán & kỹ thuật. ReLU (giảm vanishing gradient), khởi tạo trọng số tốt hơn, regularization như dropout, và các framework dễ dùng (xem PyTorch).

Cột mốc thường được nhắc: năm 2012, mạng AlexNet (một CNN) thắng lớn cuộc thi nhận dạng ảnh ImageNet, bỏ xa các phương pháp thủ công — khơi mào làn sóng deep learning hiện đại.


Use case thực tế — khi nào DL, khi nào GBM?

Chọn Deep Learning khi: dữ liệu là ảnh, âm thanh, văn bản, video, chuỗi thô; bạn có nhiều dữ liệu và truy cập được GPU; hoặc cần các năng lực chỉ DL làm được như hiểu ngôn ngữ tự nhiên và sinh nội dung. Ví dụ: nhận dạng khuôn mặt (xem CNN), dịch máy, chatbot (xem Transformer), trợ lý ảo.

Chọn ML cổ điển (gradient boosting) khi: dữ liệu là bảng với các đặc trưng có ý nghĩa (số dư, tuổi khách hàng, số giao dịch); dữ liệu vừa phải; cần giải thích được vì lý do tuân thủ; hoặc muốn triển khai nhanh, rẻ, ổn định. Ví dụ ngân hàng: chấm điểm tín dụng, dự báo rời bỏ khách hàng, phát hiện giao dịch bất thường trên dữ liệu giao dịch có cấu trúc — đây là sân nhà của XGBoost/LightGBM.

Tình huống lai. Nhiều hệ thống thực tế trộn cả hai: dùng DL để trích đặc trưng từ dữ liệu thô (ví dụ biến văn bản thành embedding — xem NLP & embeddings trong series AI zero), rồi đưa các đặc trưng đó vào một mô hình cổ điển. Đừng coi DL và ML cổ điển là kẻ thù; chúng là hai công cụ cho hai loại bài toán.


Ghi nhớ

  • Neuron = w·x + b rồi qua hàm kích hoạt. Một neuron sigmoid chính là hồi quy logistic.
  • Perceptron đơn chỉ vẽ được ranh giới thẳng → không giải được XOR. Cần nhiều lớp + phi tuyến.
  • MLP = nhiều lớp neuron fully-connected; "deep" nghĩa là nhiều lớp ẩn.
  • Phi tuyến là bắt buộc: không có nó, mạng sâu sụp về một phép tuyến tính duy nhất.
  • Universal approximation: MLP đủ rộng xấp xỉ được gần như mọi hàm — nhưng tồn tại khác với huấn luyện tìm ra được.
  • Hàm kích hoạt: ReLU mặc định cho lớp ẩn; sigmoid/tanh bão hoà gây vanishing gradient; softmax cho phân loại đa lớp ở lớp ra.
  • Forward pass = nhân ma trận + cộng bias + áp phi tuyến, lặp theo lớp → chạy nhanh trên GPU.
  • Đầu ra khớp bài toán: linear+MSE (hồi quy), sigmoid+BCE (nhị phân), softmax+cross-entropy (đa lớp).
  • DL không phải luôn tốt hơn: dữ liệu bảng → gradient boosting thắng; ảnh/text/chuỗi → DL thắng. Đánh đổi: dữ liệu, GPU, khả năng giải thích.
  • DL bùng nổ nhờ hội tụ của dữ liệu + GPU + thuật toán (~2012, AlexNet).

Nền tảng của series. Bài sau: huấn luyện & lan truyền ngược. Kiến trúc chuyên biệt: CNN cho ảnh, Transformer & attention. Thực chiến: PyTorch. So sánh với ML cổ điển: cây & ensemble. Bản nhập môn ngắn: AI zero — Deep Learning.

Bài viết liên quan

Phân biệt AI/ML/DL, các kiểu học máy, quy trình ML end-to-end và thuật ngữ nền tảng.

13 thg 7, 2026 14

Chất lượng dữ liệu, xử lý thiếu/ngoại lai, mã hoá, chuẩn hoá, tạo đặc trưng và tránh data leakage.

13 thg 7, 2026 13

Mô hình ngôn ngữ lớn hoạt động ra sao, token, context window, tham số sinh, và kỹ thuật viết prompt.

13 thg 7, 2026 13

Retrieval-Augmented Generation, vector database, tool calling, agent và MCP để xây ứng dụng LLM thực tế.

13 thg 7, 2026 11