AI Core cho lập trình viên/Xếp lớp và hàm phi tuyến — vì sao một lớp không đủ
12/54
Bài 12 / 54~12 phútNão nhân tạo vừa đủMiễn phí lượt xem

Xếp lớp và hàm phi tuyến — vì sao một lớp không đủ

Chồng nhiều lớp tuyến tính vẫn thu gọn được về đúng một lớp, không mạnh hơn. Hàm phi tuyến giữa các lớp mới là thứ mở ra ranh giới cong.

TL;DR: Trực giác phổ biến nói rằng "nhiều tầng = model mạnh hơn". Điều đó đúng — nhưng chỉ khi giữa các tầng có hàm phi tuyến. Nếu mọi tầng đều là phép biến đổi tuyến tính (chỉ nhân rồi cộng), toàn bộ chuỗi đó thu gọn được về đúng một phép biến đổi tuyến tính duy nhất — dù bạn chồng bao nhiêu tầng. Hàm phi tuyến như ReLU phá vỡ khả năng thu gọn đó, cho phép mạng học ra ranh giới cong phức tạp thay vì chỉ đường thẳng. Đây là lý do cơ bản khiến mạng nơ-ron nhiều tầng hoạt động được.

Một neuron tính tổng có trọng số của các đầu vào cộng bias, rồi đưa qua hàm kích hoạt. Thứ duy nhất model học để thay đổi trong quá trình huấn luyện là các trọng số — kiến trúc và hàm kích hoạt được cố định trước.

1. Thêm tầng thì model có tự động mạnh hơn không?

Khi lần đầu nghe về mạng nơ-ron nhiều lớp, trực giác tự nhiên là: nhiều tầng hơn thì mạnh hơn. Nghe có lý — giống như nhiều nhân viên thì xử lý được nhiều việc hơn.

Nhưng trực giác đó thiếu một chi tiết quan trọng. Nếu mọi tầng đều làm cùng một loại phép tính (phép biến đổi tuyến tính: nhân rồi cộng), thì toàn bộ chuỗi tầng vẫn chỉ làm được đúng điều một tầng đơn lẻ làm được. Chi tiết thiếu đó là hàm phi tuyến — và đây là lý do cốt lõi khiến mạng nơ-ron nhiều tầng hoạt động được.

Bài này chỉ nói về hình dạng kiến trúc: tại sao phi tuyến cần thiết và MLP trông thế nào. Cách mạng học điều chỉnh trọng số là câu chuyện của bài 03–04.

2. Tại sao hai lớp tuyến tính gộp thành một?

2.1. Analogy: bộ lọc ảnh chồng lên nhau

Hãy tưởng tượng bạn xử lý ảnh qua hai bước liên tiếp: bước 1 nhân mỗi pixel với 1.5 (tăng sáng), bước 2 nhân kết quả đó với 0.8 (giảm sáng). Kết quả cuối giống hệt nhân pixel một lần duy nhất với 1.5 × 0.8 = 1.2. Hai bước cùng loại (nhân hằng số) gộp thành một bước — bạn có thể bỏ bước trung gian mà không mất gì.

Nhưng nếu bạn chèn vào giữa một phép cắt ngưỡng — ví dụ ép mọi pixel tối hơn 80 về 0 — ba bước đó không còn gộp được nữa. Phép cắt ngưỡng "phá vỡ chuỗi" vì nó là một loại thao tác khác.

Bộ lọc ảnhKhái niệm trong mạng nơ-ron
Nhân pixel với hằng sốLớp tuyến tính
Chồng nhiều lần nhân = một lần nhânNhiều lớp tuyến tính = một lớp
Phép cắt ngưỡng xen giữaHàm phi tuyến
Hiệu ứng phức hợp không thể gộpRanh giới quyết định cong

2.2. Bắt đầu từ số học lớp 6

Giả sử bạn có đầu vào x = 4.

  • Lớp 1 nhân x với 3. Kết quả là 12.
  • Lớp 2 nhân kết quả đó với 2. Kết quả cuối là 24.
Thử đoán

Bạn có thể làm cả hai bước đó trong một phép nhân duy nhất không? Nếu có, bạn cần nhân x với con số nào?

Câu trả lời: nhân x với 3 × 2 = 6 cho ra đúng 24. Hai bước nhân liên tiếp gộp lại hoàn toàn thành một bước nhân duy nhất — không có thông tin nào bị mất, và cũng không có thêm sức mạnh tính toán nào được tạo ra.

2.3. Lớp tuyến tính trong neural net

Mỗi lớp tuyến tính trong neural net tính: nhân đầu vào với trọng số rồi cộng bias. Với hai lớp liên tiếp không có phi tuyến ở giữa:

Lop 1: z1 = w1 * x + b1

Lop 2: z2 = w2 * z1 + b2
          = w2 * (w1 * x + b1) + b2      -- the z1 vao
          = (w2 * w1) * x + (w2 * b1 + b2)  -- phan phoi
          = W * x + B                    -- mot phep bien doi tuyen tinh duy nhat

Ở đây W = w2 × w1B = w2 × b1 + b2 đều là hằng số. Toàn bộ hai lớp tương đương một lớp tuyến tính duy nhất với trọng số W và bias B.

Lập luận này mở rộng đệ quy cho ba, bốn, hay một trăm lớp tuyến tính liên tiếp: kết quả cuối vẫn luôn là W_tong * x + B_tong với hai hằng số nào đó. Không có năng lực biểu diễn mới nào phát sinh — toàn bộ N lớp thu gọn về đúng một lớp.

Pitfall — thêm lớp mà quên phi tuyến

Nếu bạn xếp chồng nhiều lớp Dense trong code mà không thêm hàm kích hoạt giữa chúng, về mặt tính toán bạn vẫn chỉ có một lớp tuyến tính duy nhất — dù code trông có vẻ sâu.

3. Hàm phi tuyến — chiếc bản lề

Hàm phi tuyến (hay hàm kích hoạt) là hàm chèn giữa các lớp để phá vỡ khả năng thu gọn đó.

Hàm phổ biến nhất hiện nay là ReLU (Rectified Linear Unit). Mô tả bằng lời:

ReLU giữ nguyên mọi giá trị dương và ép mọi giá trị âm về 0.

ReLU(x) = x    neu x > 0
ReLU(x) = 0    neu x <= 0

Hãy xem điều gì xảy ra khi áp ReLU vào giữa hai lớp tuyến tính:

z1 = w1 * x + b1         -- lop tuyen tinh 1
h1 = ReLU(z1)            -- phi tuyen -- KHONG the gop voi buoc truoc
z2 = w2 * h1 + b2        -- lop tuyen tinh 2

Bước ReLU(z1) không phải phép nhân hay cộng — nó bẻ cong đường thẳng tại điểm 0, giữ phần dương và cắt bỏ phần âm. Sau bước đó, h1 không còn là hàm tuyến tính của x nữa. Vì vậy không thể gộp z2 = w2 * h1 + b2 cùng với lớp trước thành một phép tuyến tính đơn.

Ngoài ReLU, hai hàm phi tuyến khác cũng thường gặp:

  • Sigmoid: nén đầu ra về khoảng (0, 1) — hay dùng ở lớp output cho bài toán phân loại nhị phân.
  • Tanh: nén đầu ra về khoảng (-1, 1) — hay xuất hiện trong RNN và LSTM.

Tất cả đều phi tuyến và phá vỡ khả năng thu gọn theo cùng nguyên lý. Bài này không đi sâu vào từng hàm — ReLU đủ để nắm cơ chế.

4. Ranh giới thẳng hay cong — tại sao phân biệt?

Hàm XOR (exclusive OR) là ví dụ kinh điển: trả về 1 khi đúng một đầu vào bằng 1, và 0 trong trường hợp còn lại. Bốn điểm đầu vào vẽ lên mặt phẳng tạo ra hai nhóm nằm ở hai cặp góc chéo — không có đường thẳng nào tách được. Minsky và Papert chứng minh điều này cho perceptron đơn lớp năm 1969. Trong thực tế, bài toán phân loại phức hợp (gian lận dựa trên tổ hợp số tiền và tần suất, không phải một ngưỡng đơn) thường có cùng đặc điểm: ranh giới cong, không phải thẳng.

Loại bài toánVí dụLớp tuyến tínhMLP có phi tuyến
Tách được bằng đường thẳngPhân loại dựa trên một ngưỡng đơnLàm đượcLàm được
Không tách được bằng đường thẳngXOR, phân vùng giao dịch phức hợpKhông làm đượcLàm được

Hàm phi tuyến cho phép MLP bẻ cong ranh giới quyết định — từ một đường thẳng thành đường cong, rồi thành bề mặt phức tạp tùy ý khi tăng đủ sức chứa.

5. Mạng nơ-ron đa tầng (MLP)

MLP (Multi-Layer Perceptron) là kiến trúc căn bản nhất có phi tuyến: các lớp xếp tuần tự, giữa mỗi cặp lớp là hàm kích hoạt.

Mạng MLP nhỏ: lớp input gồm x1, x2 nối đầy đủ tới lớp ẩn 3 neuron; cả 3 neuron nối tới đầu ra ở lớp output

Lớp ẩn (hidden layer) là những lớp nằm giữa lớp đầu vào và lớp đầu ra — nơi mạng học ra các biểu diễn trung gian. Bài 06 sẽ nói sâu hơn về những biểu diễn đó.

Ranh giới của bài này

Bài này chỉ nói về hình dạng — xếp bao nhiêu lớp, tại sao cần phi tuyến. Cách mạng học điều chỉnh trọng số là câu chuyện của bài 03 (loss đo sai lệch) và bài 04 (gradient descent chỉnh trọng số từng bước).

6. Sức chứa — nhiều hơn không phải lúc nào cũng tốt hơn

Sức chứa (capacity) là khả năng của mạng biểu diễn các hàm phức tạp. Hai yếu tố chính điều chỉnh sức chứa:

  • Số lớp ẩn: mỗi lớp thêm vào cho phép học biểu diễn ở mức trừu tượng cao hơn.
  • Số neuron mỗi lớp: nhiều neuron hơn mở rộng không gian biểu diễn trong mỗi lớp.

Tăng sức chứa có đánh đổi hai chiều:

  • Thiếu sức chứa (underfitting): mạng quá nhỏ không đủ biểu diễn pattern — kết quả kém trên cả tập train lẫn tập test. Bài 07 sẽ cho bạn nhận ra dấu hiệu này từ đường cong loss.
  • Sức chứa thừa (overfitting): mạng quá lớn học thuộc cả nhiễu trong dữ liệu — kết quả tốt trên train nhưng kém trên test. Module 1 đã nói về overfitting; bài này chỉ nhắc lại đánh đổi.
Pitfall — sâu hơn không phải lúc nào cũng tốt hơn

Mạng quá lớn cho lượng dữ liệu sẽ overfit. Mạng quá nhỏ cho bài toán sẽ underfit. Người thiết kế cân bằng sức chứa với lượng dữ liệu rồi dùng đường cong loss để chẩn đoán — bài 07 sẽ cho bạn luyện kỹ năng đó.

Pitfall — nhầm số lớp với số tham số

Nói "mạng 3 lớp" không cho biết model lớn đến đâu. Một lớp ẩn với 1000 neuron có nhiều tham số hơn năm lớp ẩn mỗi lớp 10 neuron. Bài 05 sẽ đếm tham số chính xác từ kiến trúc.

7. Đào sâu

Nền tảng lý thuyết đứng sau những gì bài này trình bày:

  • Minsky, M. & Papert, S. (1969). Perceptrons: An Introduction to Computational Geometry. MIT Press. Chứng minh toán học rằng perceptron đơn lớp không thể giải các hàm không tách tuyến tính, điển hình là XOR. Cuốn sách góp phần đẩy nghiên cứu mạng nơ-ron vào giai đoạn suy thoái trong thập niên 1970 và thúc đẩy tìm kiếm giải pháp với nhiều lớp kết hợp phi tuyến. (Sách in, không có bản mở công khai.)

  • Cybenko, G. (1989). Approximation by superpositions of a sigmoidal function. Mathematics of Control, Signals, and Systems, 2(4), 303–314. DOI: 10.1007/BF02551274 — Định lý xấp xỉ toàn cục (universal approximation theorem): một mạng một lớp ẩn đủ rộng với hàm sigmoid có thể xấp xỉ bất kỳ hàm liên tục nào đến độ chính xác tùy ý. Bảo chứng lý thuyết rằng MLP đủ mạnh — nhưng không nói gì về cách học.

  • Rumelhart, D. E., Hinton, G. E. & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323, 533–536. DOI: 10.1038/323533a0 — Bài báo phổ biến thuật toán backpropagation cho mạng nhiều lớp, cho thấy MLP có phi tuyến học được các biểu diễn ẩn có ý nghĩa. Nền tảng thực tiễn của toàn bộ deep learning hiện đại.

8. Liên hệ các bài khác

  • Bài 01 — Neuron và trọng số: "Lớp tuyến tính" trong bài này chính là chuỗi neuron của bài 01 — mỗi neuron tính tổng có trọng số. Hàm kích hoạt được nhắc đến trong bài 01 chính là hàm phi tuyến mà bài này giải thích tại sao cần.
  • Bài 03 — Loss: đo cái sai: Sau khi biết mạng có hình dạng gì (bài này), bài 03 nói về cách đo mạng sai bao nhiêu sau mỗi lần dự đoán.
  • Bài 05 — Tham số và siêu tham số: Đếm tham số chính xác từ kiến trúc MLP — nối tiếp trực tiếp phần Pitfall về nhầm số lớp với số tham số.
  • Bài 07 — Mini-challenge: đọc đường cong loss: Sử dụng khái niệm "model thiếu sức chứa" từ bài này để chẩn đoán một trong ba ca đường cong loss hỏng.

Bài tiếp theo: Loss — quy cái sai của model về một con số duy nhất

9. Tóm tắt

  • Chồng N lớp tuyến tính = đúng 1 lớp tuyến tính về năng lực biểu diễn — không có sức mạnh mới nào phát sinh.
  • Hàm phi tuyến như ReLU chèn giữa các lớp phá vỡ khả năng thu gọn đó và mở ra ranh giới cong.
  • Lớp tuyến tính chỉ học được ranh giới thẳng; MLP có phi tuyến học được ranh giới cong tùy ý.
  • Sức chứa tăng theo số lớp ẩn và số neuron, nhưng kéo theo nhu cầu dữ liệu và rủi ro overfit.
  • Bài này chỉ nói về hình dạng kiến trúc; cách mạng học (loss và gradient descent) là bài 03–04.

10. Tự kiểm tra

Tự kiểm tra
Q1
Nếu bạn xếp ba lớp tuyến tính liên tiếp không có phi tuyến nào giữa chúng, mạng đó mạnh hơn một lớp tuyến tính không? Vì sao?
Không mạnh hơn. Ba lớp tuyến tính liên tiếp thu gọn về đúng một phép biến đổi tuyến tính duy nhất — mọi phép nhân và cộng đều gộp lại thành W*x + B với W và B là hằng số mới. Không có năng lực biểu diễn nào thêm so với một lớp đơn.
Q2
ReLU làm gì với đầu vào? Tại sao đó là phép biến đổi phi tuyến chứ không phải tuyến tính?
ReLU giữ nguyên giá trị dương và ép giá trị âm về 0. Đó là phi tuyến vì phép ép về 0 không thể viết dưới dạng w*x + b — nó bẻ cong đường thẳng tại điểm 0, chia đầu vào thành hai chế độ xử lý khác nhau. Hàm tuyến tính không thể làm vậy.
Q3
Vì sao hàm XOR không giải được bằng một lớp tuyến tính?
Bốn điểm đầu vào của XOR không tách tuyến tính — nhóm nhãn 1 gồm (0,1) và (1,0) nằm ở hai góc chéo của mặt phẳng, còn nhóm nhãn 0 gồm (0,0) và (1,1) ở hai góc chéo kia. Không có đường thẳng nào tách được hai nhóm chéo nhau như vậy.
Q4
Điều gì xảy ra nếu một mạng thiếu sức chứa so với độ phức tạp của bài toán?
Mạng bị underfit — không đủ khả năng biểu diễn pattern trong dữ liệu. Kết quả kém trên cả tập train lẫn tập test. Đây khác với overfit (tốt trên train, kém trên test). Bài 07 sẽ cho bạn nhận ra dấu hiệu underfitting từ đường cong loss.
Q5
Một mạng có hai lớp ẩn mỗi lớp 10 neuron so với một mạng có một lớp ẩn 100 neuron — mạng nào có nhiều tham số hơn?
Thường mạng một lớp 100 neuron có nhiều tham số hơn, vì số tham số phụ thuộc tích kích thước lớp liền kề (lớp 100 neuron kết nối toàn phần với đầu vào tạo nhiều trọng số hơn). Điểm quan trọng: số lớp không đồng nghĩa với số tham số — bài 05 sẽ đếm chính xác.

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Loss — quy cái sai của model về một con số duy nhất