Perceptron, XOR và kiến trúc mạng noron

Perceptron Rosenblatt, giới hạn XOR của Minsky-Papert, kiến trúc nhiều lớp, hidden layer và trực giác hình học của mạng noron sâu.
KhóThuật toán ~60 phút

Ôn lại trước khi học

Giới thiệu

Bài này học perceptron và vì sao cần tầng ẩn. Dùng để hiểu gốc của mọi mạng noron ngày nay.

Kiến thức cần nhớ

Perceptron

  • Định nghĩa: noron cộng dồn bằng chứng có trọng số rồi bật tắt.
  • Tổng vượt ngưỡng thì bắn tín hiệu, không thì im.
  • Ví dụ đời thường: như cân phiếu bầu có trọng số.
  • Học bằng cách dịch trọng số khi đoán sai.
  • Chỉ tách được dữ liệu chia được bằng 1 đường thẳng.

Giới hạn XOR

  • Định nghĩa: XOR cần 4 miền xen kẽ kiểu bàn cờ.
  • Một đường thẳng không tách được 2 cặp chéo nhau.
  • Ví dụ đời thường: như 1 nhát kéo không cắt chéo 2 lần.
  • Đây là giới hạn biểu diễn, không phải thiếu dữ liệu.
  • Muốn giải phải thêm tầng ẩn.
Mô hìnhXOR 4 điểmVì sao
Perceptron đơnTối đa ~75%Chỉ 1 đường thẳng
MLP 2 noron ẩn100%Ghép 2 đường ranh

Mạng nhiều lớp

  • Định nghĩa: xếp noron thành lớp vào, ẩn, ra.
  • Tầng ẩn biến đổi không gian cho tách được tuyến tính.
  • Ví dụ đời thường: như gấp giấy rồi cắt 1 nhát thẳng.
  • Sâu vừa phải thường lợi tham số hơn nông quá rộng.
  • Mạng tuyến tính thuần dù sâu vẫn gộp thành 1 phép.

Ví dụ

  • Input: 4 điểm XOR -> Output: perceptron đơn sai ít nhất 1 điểm.
  • Giải thích: không có đường thẳng nào tách được cặp chéo.
# Đếm tham số mạng 2 vào, 2 ẩn, 1 ra
tham_so = 2*2 + 2 + 2*1 + 1  # trọng số + ngưỡng
print(tham_so)  # 9

💻 Bài tập

Ngôn ngữ: Python 3 với NumPy. Không dùng thư viện học sâu. Nộp vào day-093/.

Bài 1: Perceptron

class Perceptron:
    def __init__(self, lr: float = 1.0, epochs: int = 100): ...
    def fit(self, X, y): ...        # y trong {0, 1}, cập nhật w += lr * (y - yhat) * x
    def predict(self, X): ...       # bậc thang: 1 nếu w.x + b > 0
    errors_: list[int]              # số lỗi mỗi epoch
AND -> hội tụ, 0 lỗi, in w và b
OR  -> hội tụ, 0 lỗi
XOR -> sau 100 epoch vẫn sai ít nhất 1 trên 4 điểm

Vẽ đường biên của AND và OR. Vẽ 4 điểm XOR và giải thích bằng hình vì sao không có đường thẳng nào tách được.

Bài 2: Mạng 2 lớp giải XOR bằng tay

Không huấn luyện. Chọn tay trọng số cho mạng 2 đầu vào, 2 nơ-ron ẩn (bậc thang), 1 đầu ra để tính XOR.

Gợi ý: nơ-ron ẩn 1 tính OR, nơ-ron ẩn 2 tính NAND, đầu ra tính AND của 2 nơ-ron ẩn.

forward([0,0]) = 0; forward([0,1]) = 1; forward([1,0]) = 1; forward([1,1]) = 0

In giá trị tầng ẩn cho 4 điểm. Vẽ 4 điểm trong không gian ẩn: chúng tách được bằng 1 đường thẳng.

Bài 3: MLP forward và giới hạn tuyến tính (nâng cao)

  1. Viết MLP(layer_sizes, activation) chỉ có forward với trọng số khởi tạo ngẫu nhiên (He/Xavier).
  2. Chứng minh bằng số: mạng 3 tầng không có hàm kích hoạt tương đương 1 ma trận duy nhất. Tính W = W3 @ W2 @ W1 và so output với mạng gốc trên 100 input ngẫu nhiên.
  3. Đếm số tham số của MLP [784, 256, 128, 10]. Viết công thức tổng quát.

✅ Tiêu chí hoàn thành

  • Perceptron hội tụ trên AND, OR và thất bại trên XOR.
  • Mạng tay giải đúng XOR, có hình không gian ẩn.
  • Bài 3 chứng minh bằng số mạng tuyến tính sâu gộp thành 1 phép.
  • Giải thích được vì sao XOR cần tầng ẩn.

❓ Câu hỏi ôn tập

  • Perceptron tính output thế nào?
  • Vì sao 1 đường thẳng không giải được XOR?
  • Tầng ẩn giúp gì cho XOR?
  • Mạng sâu khác mạng rộng ra sao?

🌕 Bạn đã hoàn thành ngày 93. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.