Mục lục
- Mục tiêu bài học
- Machine Learning là gì
- Rule-based programming vs ML
- Khi nào dùng ML, khi nào dùng rule
- Các thành phần của một ML system
- Lịch sử ngắn của ML
- AI, ML, DL — phân biệt
- Sub-fields của ML
- Use case thực tế
- Giới hạn của ML
- Bạn sẽ học gì trong Series 2
- Tools chính
- Hello ML với sklearn
- Bài tập tư duy
- Bài tiếp theo
Mục tiêu bài học
Sau khi đọc bài này, bạn sẽ:
- Phát biểu được định nghĩa Machine Learning theo Tom Mitchell và diễn giải bằng từ ngữ thường ngày.
- So sánh được rule-based programming với ML qua input, output và cách viết logic.
- Liệt kê được 5 thành phần của một ML system: data, model, loss function, optimizer, evaluation metric.
- Phân biệt rõ AI, ML, DL và biết khi nào dùng từ nào cho đúng.
- Biết giới hạn của ML để không kỳ vọng sai.
Machine Learning là gì
Định nghĩa kinh điển của Tom Mitchell trong sách Machine Learning (McGraw-Hill, 1997):
"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
Diễn giải bằng từ ngữ thường ngày: chương trình được gọi là "học" nếu nó làm việc T tốt dần lên khi được cho thêm dữ liệu E, đo bằng thước đo P.
Ví dụ cụ thể với bài toán lọc spam:
- Task (T): phân loại email là spam hay không spam.
- Experience (E): tập email đã được gắn nhãn spam / không spam.
- Performance (P): tỉ lệ phân loại đúng trên tập email mới chưa thấy.
Nếu cho chương trình thêm dữ liệu E mà P tăng lên, ta nói chương trình đang học. Đây là điểm cốt lõi: program học từ dữ liệu thay vì hard-code rule.
Rule-based programming vs ML
Trong rule-based programming, con người trực tiếp viết rule. Ví dụ spam filter đơn giản:
# Rule-based: con người tự viết logic
def is_spam(email_subject: str) -> bool:
keywords = ["viagra", "win money", "click here", "free prize"]
subject_lower = email_subject.lower()
return any(k in subject_lower for k in keywords)
Ưu điểm: dễ đọc, dễ debug. Nhược điểm: spammer chỉ cần viết "v1agra" là rule fail; muốn cover thêm trường hợp phải viết thêm rule, càng nhiều rule càng khó maintain.
Với ML, con người không viết rule. Thay vào đó, ta đưa cho thuật toán nhiều cặp (email, nhãn spam/không spam), thuật toán tự tìm pattern và sinh ra một "rule" dưới dạng model (hàm có tham số):
# ML: con người cung cấp data, thuật toán tự học rule
# (pseudo-code, chi tiết ở các bài sau)
X = ["Win money now", "Họp 9h sáng mai", "Free viagra", ...] # input
y = [1, 0, 1, ...] # nhãn: 1=spam
model = LogisticRegression()
model.fit(X, y) # học pattern từ data
model.predict(["Free prize"]) # đưa ra dự đoán
3.1. Bảng so sánh
| Tiêu chí | Rule-based | Machine Learning |
|---|---|---|
| Ai viết logic? | Con người | Thuật toán học từ data |
| Input từ con người | Rule (if/else, regex, lookup) | Data có nhãn + thuật toán |
| Khi thêm trường hợp mới | Phải viết thêm rule thủ công | Thêm data và train lại |
| Tính giải thích | Cao — đọc code là hiểu | Thấp tới trung bình tùy model |
| Phù hợp với | Logic rõ ràng, ít biến thể | Pattern phức tạp, nhiều biến thể |
| Kết quả | Xác định (deterministic) | Xác suất, có sai số |
Khi nào dùng ML, khi nào dùng rule
Quy tắc thực dụng: nếu viết rule được thì viết rule trước, đừng vội đụng tới ML. Rule rẻ hơn, debug dễ hơn, không cần data.
4.1. Nên dùng rule khi
- Logic được mô tả rõ ràng bằng văn bản pháp luật, công thức, quy trình. Ví dụ: tính thuế thu nhập cá nhân — đã có biểu thuế lũy tiến cụ thể.
- Số trường hợp đặc biệt ít, có thể liệt kê hết.
- Không có hoặc rất ít dữ liệu lịch sử có nhãn.
- Yêu cầu giải thích từng quyết định (compliance, kiểm toán).
4.2. Nên dùng ML khi
- Pattern phức tạp, có nhiều ngoại lệ, không thể liệt kê rule hết. Ví dụ: nhận diện ảnh con mèo — không có rule "if có bốn chân và đuôi thì là mèo".
- Có sẵn dữ liệu lịch sử với nhãn đúng, lượng đủ lớn.
- Tác vụ liên quan tới ngôn ngữ tự nhiên, hình ảnh, âm thanh.
- Bài toán dự đoán dựa trên nhiều biến tương tác phức tạp. Ví dụ: dự đoán giá nhà từ diện tích, vị trí, năm xây, tiện ích xung quanh.
- Recommendation (gợi ý phim, sản phẩm) dựa trên hành vi của hàng triệu người.
Một số dự án thực tế dùng kết hợp cả hai: rule cho phần logic rõ ràng (validate input, business rule), ML cho phần pattern phức tạp.
Các thành phần của một ML system
Bất kỳ ML system nào — từ hồi quy tuyến tính đơn giản tới transformer hàng tỉ tham số — đều có 5 thành phần sau:
5.1. Data
Training set thường gồm features (X) và labels (y) (với supervised learning).
- Feature (X): các thuộc tính đầu vào. Ví dụ với bài toán dự đoán giá nhà: diện tích, số phòng, vị trí, năm xây.
- Label (y): đáp án đúng. Ví dụ: giá nhà thật trong dữ liệu lịch sử.
Một dòng dữ liệu (sample) là một cặp \((x_i, y_i)\). Toàn bộ tập gồm \(N\) sample được ký hiệu \(\{(x_i, y_i)\}_{i=1}^N\).
5.2. Model
Model là một hàm \(f\) có tham số \(\theta\), nhận input X và trả ra dự đoán \(\hat{y}\):
\[ \hat{y} = f_\theta(X) \]
Ví dụ với hồi quy tuyến tính một biến: \(\hat{y} = \theta_1 x + \theta_0\), tham số là \(\theta = (\theta_0, \theta_1)\). "Train" có nghĩa là tìm bộ \(\theta\) phù hợp nhất với data.
5.3. Loss function
Loss đo mức độ sai giữa dự đoán \(\hat{y}\) và label thật \(y\). Loss càng nhỏ, model càng khớp data. Ví dụ Mean Squared Error cho hồi quy:
\[ L(\theta) = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 \]
Loss function đã được giới thiệu trực quan ở Series 1 (bài về loss và đạo hàm trực quan). Trong Series 2, ta sẽ gặp lại MSE, Cross-Entropy, Hinge loss, ...
5.4. Optimizer
Optimizer là thuật toán cập nhật \(\theta\) để giảm loss. Phổ biến nhất là gradient descent: tại mỗi bước, dịch chuyển \(\theta\) ngược chiều gradient của loss:
\[ \theta \leftarrow \theta - \eta \cdot \nabla_\theta L(\theta) \]
Với \(\eta\) là learning rate. Gradient descent đã được học ở Series 1; trong Series 2 ta áp dụng để train các model cổ điển, sang Series 3 sẽ gặp biến thể như SGD, Adam.
5.5. Evaluation metric
Metric đánh giá model trên test data — tập dữ liệu model chưa thấy khi train. Mục đích: đo khả năng tổng quát hóa (generalization).
- Bài toán hồi quy: MAE, MSE, R-squared.
- Bài toán phân loại: accuracy, precision, recall, F1-score, AUC.
Lưu ý: loss dùng để train; metric dùng để báo cáo. Hai thứ này có thể khác nhau (ví dụ: train bằng Cross-Entropy, báo cáo bằng accuracy).
Lịch sử ngắn của ML
Mốc chính, không thổi phồng:
- 1950s — Perceptron và AI symbolic. Frank Rosenblatt giới thiệu Perceptron (1958) — mô hình neuron đơn giản học từ data. Cùng giai đoạn, AI symbolic (rule-based) phát triển ở MIT, Stanford.
- 1969 — AI winter đầu tiên. Minsky và Papert chỉ ra Perceptron không giải được XOR. Tài trợ cho neural network bị cắt.
- 1980s — Backpropagation revival. Rumelhart, Hinton, Williams công bố backpropagation (1986), giải quyết bài toán train mạng nhiều layer. Neural network trở lại nhưng vẫn hạn chế bởi compute và data.
- 1990s–2000s — ML cổ điển thống trị. SVM (Vapnik, 1995), Random Forest (Breiman, 2001), gradient boosting phát triển và được dùng rộng rãi trong industry.
- 2010s — Deep Learning explosion. ImageNet 2012: AlexNet (Krizhevsky, Sutskever, Hinton) giảm error rate phân loại ảnh từ ~26% xuống ~16%. AlphaGo (DeepMind, 2016) thắng Lee Sedol. Transformer xuất hiện 2017 ("Attention Is All You Need", Vaswani et al.).
- 2022+ — LLM era. ChatGPT (OpenAI, 11/2022) đưa LLM tới đại chúng. Claude (Anthropic), Gemini (Google), Llama (Meta) tiếp nối. LLM là một nhánh của Deep Learning, sẽ được deep dive ở Series 4.
Bài này tập trung vào ML cổ điển (Series 2). Deep Learning vào Series 3, LLM vào Series 4.
AI, ML, DL — phân biệt
Ba từ này thường bị dùng lẫn lộn. Quan hệ chính xác là tập con:
- AI (Artificial Intelligence): phạm vi rộng nhất — bất cứ chương trình nào mô phỏng năng lực "thông minh" của con người. Bao gồm rule-based expert system, AI symbolic, ML, DL, search/planning, ...
- ML (Machine Learning): tập con của AI. Đặc trưng: học từ data thay vì hard-code rule. Bao gồm hồi quy tuyến tính, cây quyết định, SVM, KNN, neural network, ...
- DL (Deep Learning): tập con của ML. Dùng neural network nhiều layer (deep). Bao gồm CNN, RNN, Transformer, GAN, diffusion model, ...
Hình dung bằng vòng tròn lồng nhau (Venn diagram dạng tập con):
┌──────────────────────────────────────────────┐
│ AI (rule-based, symbolic, search, ML, DL) │
│ ┌────────────────────────────────────────┐ │
│ │ ML (học từ data) │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ DL (neural network nhiều layer) │ │ │
│ │ │ - CNN, RNN, Transformer (LLM) │ │ │
│ │ └──────────────────────────────────┘ │ │
│ │ - Linear / Logistic Regression │ │
│ │ - Decision Tree, Random Forest, SVM │ │
│ └────────────────────────────────────────┘ │
│ - Rule-based expert system │
│ - Search algorithm, planning │
└──────────────────────────────────────────────┘
Vài nhầm lẫn thường gặp:
- "AI" trong báo chí thường nghĩa là LLM (như ChatGPT). Thật ra LLM là một nhánh nhỏ của DL, DL là một nhánh của ML, ML là một nhánh của AI.
- Không phải hệ AI nào cũng dùng ML. Một con bot cờ vua chạy theo thuật toán minimax + heuristic vẫn là AI nhưng không phải ML.
- Không phải ML nào cũng là DL. Hồi quy tuyến tính là ML thuần, không phải DL.
Sub-fields của ML
ML thường được chia thành 3 nhóm chính dựa trên loại dữ liệu và mục tiêu. Bài 2 sẽ deep dive — ở đây chỉ preview:
- Supervised Learning: data có label sẵn. Học mapping input → output. Ví dụ: phân loại email spam (có nhãn spam/không spam), dự đoán giá nhà (có giá thật).
- Unsupervised Learning: data không có label. Học cấu trúc ẩn trong dữ liệu. Ví dụ: phân cụm khách hàng (clustering), giảm chiều dữ liệu (PCA).
- Reinforcement Learning: agent học bằng cách tương tác với môi trường, nhận reward / penalty. Ví dụ: AlphaGo, robot học đi. Reinforcement Learning nằm ngoài scope chính của Series 2 — chỉ được nhắc tới như một preview.
Ngoài 3 nhóm chính còn có Semi-supervised Learning (data một phần có nhãn), Self-supervised Learning (tạo nhãn từ chính dữ liệu — nền tảng của LLM hiện đại).
Use case thực tế
Những bài toán đang được giải bằng ML trong industry (fact-based):
- Spam classification: Gmail, Outlook lọc email rác — bài toán phân loại nhị phân kinh điển.
- Recommendation system: Netflix gợi ý phim, YouTube gợi ý video, Shopee / Tiki gợi ý sản phẩm.
- Fraud detection: ngân hàng phát hiện giao dịch bất thường (anomaly detection).
- Image classification: phân loại ảnh y khoa (X-quang, MRI), phân loại sản phẩm trong ảnh.
- Machine translation: Google Translate, DeepL — dịch ngôn ngữ tự nhiên.
- Voice recognition: Siri, Google Assistant, Alexa nhận diện giọng nói.
- Credit scoring: ngân hàng đánh giá điểm tín dụng cho khoản vay.
- Demand forecasting: dự báo nhu cầu hàng hóa, logistics.
Phần lớn các ứng dụng này dùng ML cổ điển hoặc DL cỡ vừa, không cần LLM nghìn tỉ tham số. Đây là lý do Series 2 (ML cổ điển) vẫn rất giá trị dù LLM đang nổi.
Giới hạn của ML
Để không kỳ vọng sai, cần hiểu rõ các giới hạn:
- Cần nhiều data tốt. Data ít, nhiễu, sai nhãn — model sẽ học sai. Ở nhiều bài toán, công sức chuẩn bị data còn lớn hơn công sức build model.
- Không "hiểu" — chỉ tìm pattern thống kê. ML không có suy luận nhân quả (causal reasoning). Nó học tương quan: nếu trong data, "trẻ con ăn kem nhiều" trùng với "tai nạn đuối nước cao", model có thể học sai mối quan hệ này. Cả hai thật ra cùng do "mùa hè".
- Bias trong data → bias trong model. Nếu data tuyển dụng lịch sử thiên về nam giới, model dự đoán hiring sẽ thiên về nam. Đây là vấn đề đã được ghi nhận rộng rãi trong ngành.
- Không tốt với scenario chưa thấy (out-of-distribution). Model train trên ảnh mèo nhà chụp ban ngày sẽ kém khi gặp ảnh mèo đêm tối, ảnh đen trắng cổ.
- Khó giải thích quyết định. Với model phức tạp (random forest, neural network), việc giải thích "vì sao model dự đoán thế này" là một bài toán riêng (Explainable AI / XAI).
- Có thể bị tấn công. Adversarial examples: thay đổi vài pixel của ảnh có thể khiến model phân loại sai hoàn toàn.
ML là công cụ mạnh nhưng không phải búa vạn năng. Hiểu giới hạn giúp bạn chọn đúng bài toán để áp dụng.
Bạn sẽ học gì trong Series 2
Series 2 gồm 42 bài, chia thành 6 module:
- Nhập môn ML — định nghĩa, phân loại, quy trình ML, train/test split, overfitting.
- Tiền xử lý và feature engineering — làm sạch data, encoding, scaling, xử lý missing value, feature selection.
- Regression — Linear Regression, Polynomial Regression, Ridge, Lasso, đánh giá hồi quy.
- Classification — Logistic Regression, KNN, Decision Tree, Random Forest, SVM, Naive Bayes; precision/recall/F1, ROC-AUC.
- Unsupervised Learning — K-Means, Hierarchical Clustering, DBSCAN, PCA, t-SNE.
- Optimization và model selection — cross-validation, hyperparameter tuning, Grid Search, Bayesian Optimization, pipeline.
Sau Series 2, bạn có thể build hầu hết các ML system "cổ điển" trong industry và đủ nền để bước vào Series 3 (Deep Learning).
Tools chính
Series 2 dùng các tool đã quen từ Series 1:
- scikit-learn (sklearn): thư viện chuẩn ngành cho ML cổ điển. API thống nhất
fit / predict / transformgiúp dễ học. - pandas: đọc, biến đổi, làm sạch data dạng bảng.
- NumPy: tính toán ma trận, vector — nền tảng của tất cả thư viện ML khác.
- matplotlib / seaborn: vẽ biểu đồ để khám phá data và đánh giá model.
- Jupyter Notebook / VS Code Notebook: môi trường thử nghiệm.
Phiên bản tham chiếu trong series: scikit-learn 1.5.x, pandas 2.2.x, NumPy 2.x. API ổn định, code Series 2 chạy được trên các bản tương đương.
Hello ML với sklearn
Để thấy ML "thật" trông như thế nào, đây là chương trình ML đầy đủ trong vài dòng — train model phân loại hoa Iris (3 loài: setosa, versicolor, virginica) dựa trên 4 feature (chiều dài / chiều rộng cánh hoa và đài hoa):
# Demo "Hello ML": phân loại hoa Iris với Logistic Regression
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 1. Load dataset có sẵn trong sklearn
X, y = load_iris(return_X_y=True) # X: (150, 4) feature, y: (150,) nhãn 0/1/2
# 2. Chia 80% train, 20% test (giữ test riêng để đánh giá)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. Tạo model và train (sklearn tự lo optimizer + loss bên trong)
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 4. Đánh giá trên test set
accuracy = model.score(X_test, y_test)
print(f"Accuracy trên test: {accuracy:.2%}") # thường ~95-100% trên Iris
Vài quan sát:
- Đây là supervised classification: có X và y trong train.
train_test_splitđảm bảo ta đánh giá model trên dữ liệu chưa thấy khi train.fitlà bước "train" — sklearn chạy optimizer (LBFGS / SAG, tùy mặc định) để tối ưu cross-entropy loss.- API
fit / predict / scoregiống nhau cho hầu hết model trong sklearn — đây là sức mạnh chính của thư viện.
Bài 5 sẽ chạy lại ví dụ này chi tiết hơn (split train/val/test, đo precision/recall, confusion matrix). Bài 22 sẽ deep dive Logistic Regression: công thức, loss, optimization.
Bài tập tư duy
Hai bài tập không cần code — chỉ cần suy nghĩ và viết ra giấy (hoặc note).
14.1. Phân loại 5 use case: ML hay rule?
Với mỗi bài toán dưới đây, hãy chọn cách tiếp cận hợp lý nhất (rule-based, ML, hoặc kết hợp) và viết 1 câu giải thích:
- Tính tiền điện hàng tháng từ số kWh tiêu thụ theo biểu giá lũy tiến của EVN.
- Phát hiện ảnh con người mặc đồ không phù hợp trên một mạng xã hội.
- Gợi ý món ăn trên ứng dụng giao đồ ăn dựa trên lịch sử đặt hàng.
- Validate số CCCD có đủ 12 chữ số và chữ số đầu là mã tỉnh hợp lệ.
- Dự đoán khách hàng nào có khả năng hủy gói cước viễn thông trong 30 ngày tới.
Gợi ý đáp án (đọc sau khi tự làm):
- Rule — biểu giá đã có công thức cụ thể.
- ML — không thể liệt kê rule cho mọi loại ảnh không phù hợp; cần image classifier (DL).
- ML — recommendation dựa trên pattern hành vi của nhiều người.
- Rule — định dạng CCCD được quy định cụ thể.
- ML — bài toán churn prediction kinh điển, dựa trên nhiều feature tương tác phức tạp.
14.2. Thu thập data cho bài toán phân loại email
Giả sử bạn được giao nhiệm vụ xây model phân loại email khách hàng của một công ty SaaS thành 3 loại: câu hỏi kỹ thuật, khiếu nại, yêu cầu billing. Hãy liệt kê:
- Mỗi sample cần những trường gì? (input + label)
- Cần thu thập từ đâu, ai là người gán nhãn?
- Cỡ tập tối thiểu nên là bao nhiêu (ước lượng)?
- Vấn đề gì có thể gặp khi gán nhãn? (gợi ý: nhiều email vừa khiếu nại vừa hỏi kỹ thuật)
- Làm thế nào để đảm bảo data không bị lệch (ví dụ: 90% là kỹ thuật, 10% còn lại)?
Đây chính là loại câu hỏi nhà tuyển dụng hay hỏi cho vị trí ML Engineer entry-level: không phải lý thuyết, mà là tư duy về data.
Tài liệu tham khảo
- Tom Mitchell — Machine Learning, McGraw-Hill (1997)
- scikit-learn — Documentation
- scikit-learn — Iris dataset
- Ian Goodfellow, Yoshua Bengio, Aaron Courville — Deep Learning (MIT Press, 2016)
- LeCun, Bengio, Hinton — Deep Learning, Nature (2015)
- Krizhevsky, Sutskever, Hinton — ImageNet Classification with Deep CNN (NeurIPS 2012)
- Vaswani et al. — Attention Is All You Need (arXiv 2017)
- Stanford HAI — AI Index Report
