Nhập môn Trí tuệ Nhân tạo·Learning - Học từ dữ liệu

Chế độ xem

Supervised Learning - Học có giám sát

Supervised Learning - Học có giám sát

Trong Supervised Learning (Học có giám sát), tập dữ liệu huấn luyện là một danh sách các cặp câu hỏi và đáp án đúng:

D={(x(1),y(1)),(x(2),y(2)),…,(x(n),y(n))}\mathcal{D} = \{(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), \ldots, (x^{(n)}, y^{(n)})\}

Nhiệm vụ của máy là tìm ra một quy tắc dự đoán (gọi là hàm giả thuyết hh - hypothesis) sao cho với bất kỳ dữ liệu mới x∗x^* nào trong tương lai, giá trị dự đoán y^=h(x∗)\hat{y} = h(x^*) càng gần với đáp án thật y∗y^* càng tốt.

⚠️ Quy tắc vàng: Mục tiêu của học có giám sát không phải là học thuộc lòng (memorize) toàn bộ nn ví dụ trong quá khứ, mà là rút ra quy luật tổng quát để dự đoán chính xác cho dữ liệu chưa từng thấy.


1. Hai bài toán kinh điển: Classification vs Regression

Tùy thuộc vào bản chất của đáp án yy, học có giám sát được chia làm hai nhánh chính:

1.1 Phân loại (Classification) - Chọn nhãn hộp

  • Đặc điểm: y∈{c1,c2,…,cK}y \in \{c_1, c_2, \dots, c_K\} là một tập hữu hạn các nhãn phân loại rời rạc.
  • Ví dụ:
    • Nhị phân (Binary): Tin nhắn rác (0) hay Hợp lệ (1), Khối u Lành tính (0) hay Ác tính (1).
    • Đa lớp (Multiclass): Nhận diện chữ số viết tay từ 0 đến 9, nhận diện loài hoa.

Ví dụ classification

1.2 Hồi quy (Regression) - Đo lường đại lượng

  • Đặc điểm: y∈Ry \in \mathbb{R} là một giá trị số thực liên tục trên trục số.
  • Ví dụ:
    • Dự đoán thời gian tài xế giao đồ ăn đến nơi (ví dụ: 24.524.5 phút).
    • Dự đoán giá thuê phòng trọ dựa vào diện tích và khoảng cách tới trường đại học.

Ví dụ regression

💡 Góc nhìn thực tế: Ranh giới giữa hai bài toán có thể chuyển đổi linh hoạt. Ví dụ: Dự đoán chính xác điểm thi môn AI (từ 0.00.0 đến 10.010.0) là bài toán Regression. Nhưng nếu trường chỉ quan tâm sinh viên Đậu (y≥5.0y \ge 5.0) hay Rớt (y<5.0y < 5.0), bài toán ngay lập tức trở thành Classification.


2. Thuật toán k-Nearest Neighbors (k-NN) - “Gần mực thì đen, gần đèn thì rạng”

k-NN là thuật toán đơn giản và trực quan nhất trong toàn bộ thế giới Machine Learning.

2.1 Ý tưởng cốt lõi

Muốn biết một người có tính cách thế nào, hãy nhìn kk người bạn thân nhất xung quanh họ. Muốn phân loại một mẫu dữ liệu mới xx, hãy tìm kk điểm dữ liệu trong quá khứ nằm gần nó nhất và lấy nhãn xuất hiện nhiều nhất (bỏ phiếu đa số - majority voting).

k-NN

2.2 Đo khoảng cách thế nào?

Để biết ai “gần” ai, ta dùng các công thức khoảng cách hình học. Phổ biến nhất là Khoảng cách Euclidean (khoảng cách đường chim bay).

Trong không gian 2 chiều với hai điểm x=(x1,x2)x = (x_1, x_2) và z=(z1,z2)z = (z_1, z_2):

d(x,z)=(x1−z1)2+(x2−z2)2d(x, z) = \sqrt{(x_1 - z_1)^2 + (x_2 - z_2)^2}

Tổng quát trong không gian dd chiều:

d(x,z)=∑j=1d(xj−zj)2d(x, z) = \sqrt{\sum_{j=1}^{d} (x_j - z_j)^2}

2.3 Ví dụ tính tay từng bước

Giả sử ta cần dự đoán một sinh viên mới XnewX_{\text{new}} có đặc trưng (x1,x2)=(3,2)(x_1, x_2) = (3, 2), tức vắng 3 buổi và muộn 2 buổi, có nguy cơ Trượt môn (1) hay Đậu môn (0):

Sinh viên trong quá khứVắng (x1x_1)Muộn (x2x_2)Nhãn thật (yy)Khoảng cách tới Xnew(3,2)X_{\text{new}} (3, 2)
A11Đậu (0)(1−3)2+(1−2)2=4+1=2.24\sqrt{(1-3)^2 + (1-2)^2} = \sqrt{4 + 1} = \mathbf{2.24}
B42Trượt (1)(4−3)2+(2−2)2=1+0=1.00\sqrt{(4-3)^2 + (2-2)^2} = \sqrt{1 + 0} = \mathbf{1.00}
C23Đậu (0)(2−3)2+(3−2)2=1+1=1.41\sqrt{(2-3)^2 + (3-2)^2} = \sqrt{1 + 1} = \mathbf{1.41}
D54Trượt (1)(5−3)2+(4−2)2=4+4=2.83\sqrt{(5-3)^2 + (4-2)^2} = \sqrt{4 + 4} = \mathbf{2.83}
  • Nếu chọn k=1k=1: Điểm gần nhất là B (d=1.00d = 1.00, nhãn Trượt). Dự đoán: Trượt.
  • Nếu chọn k=3k=3: Ba điểm gần nhất là B (1.001.00), C (1.411.41), A (2.242.24).
    • Nhãn gồm: 1 phiếu Trượt (B) và 2 phiếu Đậu (C, A).
    • Bỏ phiếu đa số: 2 phiếu Đậu thắng 1 phiếu Trượt. Dự đoán: Đậu.

2.4 Chọn kk thế nào?

  • k=1k=1: Rất nhạy cảm với nhiễu (noise) hoặc điểm gán nhãn sai. Ranh giới quyết định rất ngoằn ngoèo →\to Dễ bị Overfitting.
  • kk quá lớn (ví dụ k=Nk=N): Luôn luôn dự đoán lớp chiếm số đông trong toàn bộ dữ liệu, bất kể điểm mới nằm ở đâu →\to Dễ bị Underfitting.
  • Kinh nghiệm thực hành:
    • Với bài toán nhị phân 2 lớp, nên chọn kk là số lẻ (k=3,5,7,…k = 3, 5, 7, \dots) để không bao giờ xảy ra tình trạng hòa phiếu.
    • Chọn kk tối ưu bằng phương pháp Cross-Validation (sẽ học ở bài sau).

2.5 Bẫy chết người: Tại sao BẮT BUỘC phải Scale dữ liệu khi dùng k-NN?

Hãy nhìn vào ví dụ thực tế này:

  • Đặc trưng 1: Thu nhập (từ 5,000,0005,000,000 đến 50,000,00050,000,000 VNĐ).
  • Đặc trưng 2: Số con (từ 00 đến 44 con).

Khoảng cách giữa hai người:

d=(30,000,000−10,000,000)2+(3−1)2=4×1014+4≈20,000,000d = \sqrt{(30,000,000 - 10,000,000)^2 + (3 - 1)^2} = \sqrt{4 \times 10^{14} + 4} \approx 20,000,000

Số con lệch nhau 22 hoàn toàn bị con số 2020 triệu của thu nhập “nuốt chửng”. k-NN sẽ coi như đặc trưng số con không hề tồn tại! →\to Bắt buộc phải chuẩn hóa (Feature Scaling) đưa mọi đặc trưng về cùng một thang đo (ví dụ dùng Z-score: z=x−μσz = \frac{x - \mu}{\sigma} hoặc Min-Max scaling về đoạn [0,1][0, 1]).

2.6 Góc nhìn chuyên sâu: Bản chất “Lazy Learning” và Tai ương số chiều (Curse of Dimensionality)

  1. Lazy Learning (Học lười): k-NN không hề trải qua giai đoạn huấn luyện (training phase tốn O(1)O(1) thời gian, chỉ việc lưu dữ liệu vào bộ nhớ). Nhưng khi dự đoán, nó phải quét qua toàn bộ nn điểm trong dataset để tính khoảng cách (inference tốn O(n⋅d)O(n \cdot d) thời gian). Nếu hệ thống có hàng triệu người dùng, k-NN sẽ chạy cực kỳ chậm!
  2. Tai ương số chiều: Khi số đặc trưng dd tăng lên hàng trăm/nghìn chiều, thể tích không gian tăng theo cấp số nhân khiến dữ liệu trở nên cực kỳ thưa thớt (sparse). Mọi cặp điểm đều cách xa nhau một khoảng tương đương nhau, khiến khái niệm “hàng xóm gần nhất” mất đi ý nghĩa. Do đó, k-NN không phù hợp với ảnh thô hoặc văn bản trừ khi đã qua bước giảm số chiều.

3. Linear Classifier - Chia đôi thế giới bằng một đường thẳng

Thay vì phải ôm khư khư toàn bộ tập dữ liệu như k-NN, liệu ta có thể học ra một ranh giới quyết định (Decision Boundary) cố định?

Trong mặt phẳng 2D, một đường thẳng có phương trình:

w0+w1x1+w2x2=0w_0 + w_1 x_1 + w_2 x_2 = 0

Trong không gian dd chiều, đường thẳng trở thành một siêu phẳng (hyperplane):

wTx+b=0or∑j=1dwjxj+b=0w^T x + b = 0 \quad \text{or} \quad \sum_{j=1}^{d} w_j x_j + b = 0

Trong đó:

  • w=[w1,w2,…,wd]Tw = [w_1, w_2, \dots, w_d]^T là vector trọng số (weights).
  • bb (hoặc w0w_0) là hệ số tự do (bias).

Quy tắc phân loại:

h(x)={1if wTx+b≥00if wTx+b<0h(x) = \begin{cases} 1 & \text{if } w^T x + b \ge 0 \\ 0 & \text{if } w^T x + b < 0 \end{cases}

4. Thuật toán Perceptron (Rosenblatt, 1958)

Perceptron là mô hình học máy tự động tìm các trọng số ww bằng cách học từ sai lầm.

4.1 Luật cập nhật Perceptron (Perceptron Learning Rule)

Khởi tạo trọng số w=[0,0,…,0]w = [0, 0, \dots, 0] và bias b=0b = 0. Với mỗi mẫu huấn luyện (x,y)(x, y), mô hình đưa ra dự đoán y^\hat{y}. Sau đó cập nhật:

wj←wj+α(y−y^)xjw_j \leftarrow w_j + \alpha (y - \hat{y}) x_j b←b+α(y−y^)b \leftarrow b + \alpha (y - \hat{y})

Trong đó:

  • α>0\alpha > 0 là tốc độ học (learning rate), ví dụ α=0.1\alpha = 0.1.
  • yy là nhãn thật (00 hoặc 11), y^\hat{y} là nhãn dự đoán (00 hoặc 11).

4.2 Cơ chế sửa sai trực giác

Hãy xem hiệu số sai lệch (y−y^)(y - \hat{y}) hoạt động vi diệu thế nào:

  • Nếu dự đoán đúng (y^=y\hat{y} = y): (y−y^)=0→(y - \hat{y}) = 0 \to Trọng số giữ nguyên không đổi.
  • Nếu đoán thiếu (y=1y = 1 nhưng đoán y^=0\hat{y} = 0): (y−y^)=+1→(y - \hat{y}) = +1 \to Trọng số được cộng thêm một lượng αx\alpha x. Điều này làm cho tổng wTx+bw^T x + b ở lần sau sẽ tăng lên, kéo dự đoán tiến gần về 11.
  • Nếu đoán thừa (y=0y = 0 nhưng đoán y^=1\hat{y} = 1): (y−y^)=−1→(y - \hat{y}) = -1 \to Trọng số bị trừ đi một lượng αx\alpha x. Điều này làm cho tổng wTx+bw^T x + b ở lần sau sẽ giảm xuống, kéo dự đoán tiến về 00.

4.3 Bảng tính tay vết chạy Perceptron (Step-by-step Trace)

Cho bài toán học cổng logic OR với 2 đặc trưng x1,x2x_1, x_2, học với α=1\alpha = 1, ban đầu w=[0,0],b=0w = [0, 0], b = 0:

Lần lặpMẫu (x1,x2)(x_1, x_2)Nhãn thật yyTính z=w1x1+w2x2+bz = w_1 x_1 + w_2 x_2 + bĐoán y^\hat{y}Sai số (y−y^)(y - \hat{y})Cập nhật w1,w2,bw_1, w_2, b
1(0,0)(0, 0)00(0)+0(0)+0=0≥00(0) + 0(0) + 0 = 0 \ge 01 (Sai)0−1=−10 - 1 = -1w←[0,0]−[0,0]=[0,0]w \leftarrow [0, 0] - [0, 0] = [0, 0], b←0−1=−1b \leftarrow 0 - 1 = -1
2(0,1)(0, 1)10(0)+0(1)−1=−1<00(0) + 0(1) - 1 = -1 < 00 (Sai)1−0=+11 - 0 = +1w←[0,0]+[0,1]=[0,1]w \leftarrow [0, 0] + [0, 1] = [0, 1], b←−1+1=0b \leftarrow -1 + 1 = 0
3(1,0)(1, 0)10(1)+1(0)+0=0≥00(1) + 1(0) + 0 = 0 \ge 01 (Đúng)1−1=01 - 1 = 0Giữ nguyên: w=[0,1],b=0w = [0, 1], b = 0
4(1,1)(1, 1)10(1)+1(1)+0=1≥00(1) + 1(1) + 0 = 1 \ge 01 (Đúng)1−1=01 - 1 = 0Giữ nguyên: w=[0,1],b=0w = [0, 1], b = 0

Chỉ sau vài vòng lặp, Perceptron sẽ tìm được đường thẳng ngăn cách chính xác!

4.4 Giới hạn lịch sử của Perceptron: Vấn đề XOR (Minsky & Papert, 1969)

Năm 1969, hai nhà khoa học Marvin Minsky và Seymour Papert xuất bản cuốn sách chứng minh một sự thật chấn động: Perceptron đơn tầng không thể học được hàm XOR.

Cổng AND (Tách được)         Cổng OR (Tách được)          Cổng XOR (BÓ TAY!)
x₂                           x₂                           x₂
1 |   O       X              1 |   X       X              1 |   X       O
  |                            |                            |
0 |   O       O              0 |   O       X              0 |   O       X
  +------------- x₁            +------------- x₁            +------------- x₁
    0       1                    0       1                    0       1
 (Vẽ được 1 đường thẳng)      (Vẽ được 1 đường thẳng)     (Không thể vẽ 1 đường thẳng)
  • Nhãn của XOR nằm chéo nhau: (0,0)→0(0, 0) \to 0, (1,1)→0(1, 1) \to 0, nhưng (0,1)→1(0, 1) \to 1, (1,0)→1(1, 0) \to 1.
  • Dữ liệu này phi tuyến tính (Non-linearly Separable). Một nhát cắt thẳng không bao giờ chia tách được hình chữ X.
  • Phát hiện này đã nhấn chìm ngành nghiên cứu AI vào “Mùa đông AI” suốt hơn một thập kỷ, cho đến khi con người chứng minh được: Nếu xếp nhiều Perceptron thành nhiều tầng (Multi-Layer Perceptron) và dùng hàm kích hoạt phi tuyến, mạng neural có thể học được bất kỳ hình dạng nào! (Đây là nội dung của chương Neural Networks tiếp theo).

5. Từ Hard Threshold sang Xác suất: Hàm Sigmoid

Perceptron dùng hàm bước nhảy cứng (step function): hoặc là 00, hoặc là 11. Nhưng trong thực tế, ta thường muốn biết mức độ chắc chắn: “Mô hình đoán bệnh nhân này bị ung thư với xác suất 92% hay chỉ 51%?”

Hàm Sigmoid (Logistic Function) biến mọi số thực z∈(−∞,+∞)z \in (-\infty, +\infty) thành một xác suất nằm trọn vẹn trong khoảng (0,1)(0, 1):

σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}
   1.0 +---------------------------------*****
       |                           ******
       |                        ***
   0.5 |---------------------*----------------
       |                  ***
       |           ******
   0.0 *****----------------------------------
      -6  -4  -2   0   2   4   6    (z)
  • Nếu z=0→σ(0)=0.5z = 0 \to \sigma(0) = 0.5 (Lưỡng lự 50-50).
  • Nếu z=+5→σ(5)≈0.993z = +5 \to \sigma(5) \approx 0.993 (Rất tự tin nhãn 1).
  • Nếu z=−5→σ(−5)≈0.007z = -5 \to \sigma(-5) \approx 0.007 (Rất tự tin nhãn 0).

Đây chính là nền tảng của thuật toán Logistic Regression và là hàm kích hoạt kinh điển trong các mạng nơ-ron sơ khai.


6. Support Vector Machine (SVM) - Ranh giới an toàn tối đa

Nếu dữ liệu có thể phân tách tuyến tính, có vô số đường thẳng có thể chia tách hoàn hảo hai lớp. Vậy đường nào là tốt nhất?

SVM margin

6.1 Ý tưởng cốt lõi: Tối đa hóa Margin (Maximum Margin)

  • Margin (Lề): Khoảng cách ngắn nhất từ đường phân chia tới các điểm dữ liệu gần nó nhất của cả hai phía.
  • SVM tìm siêu phẳng sao cho Margin là lớn nhất có thể.
  • Tại sao cần Margin lớn nhất? Vì một đường phân chia có khoảng đệm an toàn rộng sẽ ít bị tổn thương nhất khi dữ liệu mới trong thực tế bị xê dịch nhẹ.

6.2 Support Vectors là gì?

Những điểm dữ liệu nằm sát mép đường lề (chạm vào ranh giới margin) được gọi là Support Vectors (Các vector hỗ trợ).

  • Điểm kỳ diệu của SVM: Vị trí của đường phân chia hoàn toàn chỉ phụ thuộc vào các Support Vectors này.
  • Tất cả những điểm dữ liệu nằm sâu bên trong vùng an toàn dù có bị xóa đi hay dịch chuyển nhẹ thì đường biên của SVM vẫn giữ nguyên không đổi!

6.3 Soft Margin và Tham số CC

Trong dữ liệu thực tế, các lớp thường lẫn vào nhau do nhiễu, không thể vẽ đường nào tách rời 100% (Hard Margin). SVM giải quyết bằng Soft Margin, cho phép một số điểm được phép lọt vào trong margin hoặc bị phân loại sai, nhưng đi kèm một khoản tiền phạt được kiểm soát bởi tham số CC:

  • CC lớn: Phạt rất nặng mỗi lỗi sai →\to Cố gắng phân loại đúng từng điểm huấn luyện →\to Margin hẹp →\to Dễ bị Overfitting.
  • CC nhỏ: Chấp nhận lỗi sai dễ dãi hơn →\to Ưu tiên mở rộng margin rộng rãi →\to Dễ bị Underfitting.

6.4 Trực giác về Kernel Trick: “Uốn cong không gian để bẻ khóa phi tuyến”

Làm sao SVM phân loại được dữ liệu không phân tách tuyến tính (như bài toán XOR hoặc các vòng tròn đồng tâm)?

  • Ý tưởng: Nếu không thể kẻ đường thẳng ở không gian 2D, hãy chiếu dữ liệu lên không gian 3D cao hơn.
  • Ví dụ kinh điển: Các điểm nằm trong vòng tròn bán kính RR. Trong 2D với (x1,x2)(x_1, x_2), ta không thể dùng đường thẳng tách được hình tròn. Nhưng nếu tạo thêm chiều thứ ba x3=x12+x22x_3 = x_1^2 + x_2^2, tất cả các điểm bên trong hình tròn sẽ chìm xuống dưới, còn các điểm bên ngoài sẽ nổi lên cao. Lúc này, chỉ cần lấy một mặt phẳng ngang cắt ngang qua là tách đôi được dữ liệu!
  • Kernel Trick: SVM có thể tính toán trong không gian vô hạn chiều mà không cần thực sự biến đổi tọa độ của từng điểm, nhờ các hàm nhân (Kernel) như RBF (Radial Basis Function), Polynomial Kernel.

7. Triển khai chuẩn công nghiệp với scikit-learn

Trong thực tế, ta luôn bọc các bước tiền xử lý (Scaling) và mô hình (Model) vào trong một Pipeline duy nhất để code gọn gàng và ngăn chặn rò rỉ dữ liệu:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression

# 1. Pipeline cho k-NN
knn_pipeline = make_pipeline(
    StandardScaler(),
    KNeighborsClassifier(n_neighbors=5, metric="euclidean")
)

# 2. Pipeline cho SVM với RBF Kernel
svm_pipeline = make_pipeline(
    StandardScaler(),
    SVC(kernel="rbf", C=1.0, gamma="scale")
)

# 3. Pipeline cho Logistic Regression
lr_pipeline = make_pipeline(
    StandardScaler(),
    LogisticRegression(C=1.0, max_iter=1000)
)

# Huấn luyện và dự đoán cực kỳ nhất quán:
# knn_pipeline.fit(X_train, y_train)
# y_pred = knn_pipeline.predict(X_test)

8. Bảng so sánh tổng kết các thuật toán

Thuật toánBản chất toán họcTốc độ Train / PredictĐộ nhạy với ScalingKhả năng xử lý Phi tuyếnƯu điểm & Ứng dụng
k-NNInstance-based (Khoảng cách Euclidean)Train: O(1)O(1)
Predict: Chậm O(nd)O(nd)
Cực kỳ nhạy (Bắt buộc scale)Tốt (Tùy thuộc hình dạng cụm)Rất trực quan, tốt cho bài toán gợi ý hoặc tập dữ liệu nhỏ.
PerceptronLinear threshold (wTx+b≥0w^T x + b \ge 0)Train: Rất nhanh
Predict: O(d)O(d)
NhẹKém (Chỉ học được tuyến tính)Đơn giản, là nền móng lịch sử để xây dựng Mạng nơ-ron.
Logistic RegressionLinear + Sigmoid xác suấtTrain: Rất nhanh
Predict: O(d)O(d)
Trung bìnhKém (Trừ khi tự tạo feature đa thức)Chuẩn mực vàng khi cần biết xác suất và cần giải thích trọng số feature.
SVMTối đa hóa Margin (wTx+bw^T x + b)Train: Trung bình O(n2→n3)O(n^2 \to n^3)
Predict: Nhanh
Cực kỳ nhạy (Bắt buộc scale)Rất mạnh nhờ Kernel TrickBaseline cực mạnh cho dữ liệu có số chiều cao (như text, gene, sinh học).

9. Câu hỏi tự kiểm tra & Thảo luận

1. Tại sao nói k-NN là một thuật toán “học lười” (Lazy Learner)? Điều này gây bất lợi gì khi đưa mô hình vào sản phẩm thực tế?

k-NN không hề tính toán hay tối ưu hóa bất kỳ tham số nào trong lúc huấn luyện (nó chỉ lưu toàn bộ dữ liệu vào RAM). Bất lợi khi đưa vào sản phẩm: thời gian suy luận (inference) rất lâu vì mỗi lần có người dùng mới gửi request, hệ thống lại phải lôi toàn bộ hàng triệu dòng dữ liệu cũ ra tính khoảng cách từ đầu.

2. Một bạn sinh viên chạy k-NN phân loại khách hàng và quên không chuẩn hóa (scaling) đặc trưng. Kết quả mô hình dự đoán chỉ phụ thuộc vào Tổng tiền mua sắm mà bỏ qua Độ tuổi. Giải thích tại sao?

Vì Tổng tiền mua sắm có thang đo hàng triệu VNĐ, trong khi Độ tuổi chỉ từ 18 đến 60. Khi tính khoảng cách Euclidean bình phương (x1−z1)2+(x2−z2)2(x_1 - z_1)^2 + (x_2 - z_2)^2, con số hàng triệu triệu sẽ áp đảo hoàn toàn con số vài chục đơn vị, khiến độ tuổi không đóng góp gì vào khoảng cách.

3. Tại sao Perceptron không thể giải được bài toán XOR? Làm thế nào các hệ thống AI hiện đại vượt qua được hạn chế này?

Vì bài toán XOR không thể phân tách tuyến tính (các điểm nhãn 1 nằm chéo góc nhau, không một đường thẳng nào có thể chia cắt). Để vượt qua, AI hiện đại kết hợp nhiều tầng Perceptron lại với nhau (Multi-Layer Perceptron / Deep Neural Networks) kết hợp với các hàm kích hoạt phi tuyến như ReLU, Sigmoid.

4. Trong SVM, điều gì xảy ra nếu ta tăng giá trị tham số CC lên rất lớn?

Khi CC rất lớn, mô hình phạt rất nặng những điểm bị phân loại sai hoặc lọt vào margin. Kết quả là mô hình sẽ cố ép lề (margin) hẹp lại để bao bọc chính xác từng điểm huấn luyện, dẫn đến nguy cơ cao bị Overfitting (học vẹt theo cả dữ liệu nhiễu).


10. Tài liệu tham khảo

  • CS50 AI Lecture 4 - Learning: Nearest-Neighbor, Perceptron, Support Vector Machines.
  • Rosenblatt, F. (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain.
  • Minsky, M., & Papert, S. (1969), Perceptrons: An Introduction to Computational Geometry, MIT Press.
  • Cortes, C. & Vapnik, V. (1995), Support-Vector Networks, Machine Learning, 20, 273–297.
  • Scikit-learn Documentation: Nearest Neighbors, Support Vector Machines, Preprocessing Data.