Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions docs/tutorial/python/10.ml.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "e48e4783-3013-4b8e-8653-b1db847e1741",
"metadata": {},
"source": [
"# Bài 8: Làm quen với Học máy"
]
},
{
"cell_type": "markdown",
"id": "71c8ded8-9527-4c5b-ad9f-2940de08854e",
"metadata": {},
"source": [
"## I. GIỚI THIỆU VỀ HỌC MÁY\n",
"\n",
"### 1. Lịch sử phát triển\n",
"\n",
"![](https://blogs.nvidia.com/wp-content/uploads/2016/07/Deep_Learning_Icons_R5_PNG.jpg.png)\n",
"\n",
"Alan Turing, có thể coi là cha đẻ của ngành trí tuệ nhân tạo, một bộ não cực kì vĩ đại, người được xem là đã cứu hàng ngàn sinh mạng vô tội trong Thế chiến thứ 2 trước quân phát xít Đức khi \"bẻ khóa\" thành công các thông điệp của quân đội Đức được mã hóa bởi Enigma. Công trình nghiên cứu của Alan có thể coi là khởi nguồn cho ngành AI những năm 1950. \n",
"\n",
"Học máy mới được ra đời những năm 1980 nhờ những phát hiện, những nghiên cứu sâu hơn trong thuật toán và từ 2010 trở lại đây, Học sâu (deep learning) bắt đầu phát triển và bùng nổ với khái niệm mô hình học máy trên mạng neurons. Học sâu cũng chính là công nghệ lõi đằng sau những sản phẩm săn đón hiện thời như xe tự hành Tesla, chấm điểm công dân Trung Quốc, hay những sản phẩm trong đời sống hàng ngày của mình Siri, Google Translate, ...\n",
"\n",
"### 2. Học máy là gì?\n",
"\n",
"Học máy là một tập hợp các phương pháp mà máy tính sử dụng để thực hiện và cải thiện các dự đoán hoặc hành vi dựa trên dữ liệu.\n",
"> A set of methods that computers use to make and improve predictions or behaviors based on data.\n",
"\n",
"Nhiều người cho rằng Học máy cũng không phải là cái gì cao siêu cả, nó chỉ đơn thuần là tập hợp các câu lệnh if - else nhưng gọi bằng cái tên nghe bắt tai vậy thôi? Dưới đây là 1 hình ảnh so sánh vui để giúp các bạn hiểu sự khác biệt giữa 1 chương trình phần mềm thông thường và chương trình học máy.\n",
"\n",
"![](https://christophm.github.io/interpretable-ml-book/images/programing-ml.png)\n",
"\n",
"- Với những code bình thường, thì ta cần cho máy tính những hướng dẫn cụ thể (nếu trời mưa thì phải mang ô, nếu trời mưa thì phải kéo quần áo vào trong nhà, ...)\n",
"\n",
"- Với Học máy, ta chỉ cần đưa vào dữ liệu có nhãn hoặc không có nhãn thì Học máy sẽ suy ra cho ta những cái mối quan hệ, những cái chỉ dẫn để giải quyết vấn đề.\n",
"\n",
"|Input|Types|Output|\n",
"|-|-|-|\n",
"|Data, Rules|Classical Programming|Answers|\n",
"|Data (with or without Answers)|Machine Learning|Rules|\n",
"\n",
"Tham khảo các khoá học về Học máy và Học sâu tại: \n",
"- [Machine Learning](https://www.coursera.org/learn/machine-learning)\n",
"- [Deep Learning](https://www.coursera.org/specializations/deep-learning)\n",
"\n",
"## II. CÁC KIỂU BÀI TOÁN TRONG HỌC MÁY\n",
"\n",
"![](https://www.7wdata.be/wp-content/uploads/2020/06/1FUZS9K4JPqzfXDcC83BQTw.png)\n",
"\n",
"### 1. Học máy có giám sát (Supervised Learning)\n",
"\n",
"Học máy có giám sát là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để luận suy ra mối quan hệ giữa dữ liệu đầu vào và kết quả đầu ra. Các dữ liệu này được gọi là dữ liệu huấn luyện và chúng là cặp các đầu vào - đầu ra. Học có giám sát sẽ xem xét các tập huấn luyện này để từ đó có thể đưa ra dự đoán đầu ra cho 1 đầu vào mới chưa gặp bao giờ. Về mặt toán học, ta có thể hiểu:\n",
"\n",
"- Ma trận X tương ứng tập mẫu (samples = examples = observations = records)\n",
"- Ma trận Y tương ứng tập nhãn\n",
"\n",
"Ví dụ, những bài toán có dữ liệu lịch sử và có nhãn cho từng dữ liệu có thể kể đến phần loại thư rác (spam/ not spam), chấm điểm tín dụng (good credit/ bad credit), ... \n",
"\n",
"Học máy có giám sát có thể chia thành 2 nhóm:\n",
"\n",
"- Bài toán phân loại (Classification) xác định 1 hoặc nhiều nhãn cho các mẫu: \n",
" - Phân loại nhị phân (Binary classification): ví dụ như khách hàng có gian lận hay không (fraud detection), khách hàng có ở lại không hay rời bỏ dịch vụ (customer retention vs customer churn),...\n",
" - Phân loại đa lớp (Multi-class classification): số lượng nhãn nhiều hơn 2, ví dụ như phân loại ảnh (image classification), nhìn vào ảnh chụp Xray chẩn đoán xem bệnh nhân có ung thư không (diagnostics)...\n",
" - Thuật toán: Logistic Regression, Decision Trees, SVM, Naive Bayes, K-NN, ...\n",
"\n",
"\n",
"- Bài toán hồi quy (Regression): ví dụ giá cổ phiểu ngày mai tăng lên hay giảm bao nhiều đồng, căn nhà ấy với diện tích ấy với số phòng ấy tại địa điểm ấy thì thị trường sẽ chấp nhận khoảng giá bao nhiêu để có thể giao bán, giá trị vòng đời khách hàng ...\n",
" - Thuật toán: Linear Regression, Ridge/Lasso Regression, ...\n",
" \n",
"### 2. Học máy phi giám sát (Unsupervised Learning)\n",
"\n",
"Khác với các bài toán học máy có giám sát, học phi giám sát sử dụng những dữ liệu chưa được gán nhãn từ trước để luận suy. Phương pháp này thường được sử dụng để tìm cấu trúc của tập dữ liệu tuy nhiên lại không có phương pháp đánh giá được cấu trúc tìm ra được là đúng hay sai. Ví dụ như phân cụm dữ liệu, triết xuất thành phần chính của một chất nào đó. Về mặt toán học, ta không có Y mà chỉ có ma trận X tương ứng các quan sát.\n",
"\n",
"Học máy phi giám sát có thể chia thành 2 nhóm:\n",
"\n",
"- Bài toán phân cụm (Clustering): bài toán này không bao giờ có 1 đáp án duy nhất, luôn luôn có nhiều đáp án, và thậm chí đáp án tối ưu cho năm nay sẽ khác đáp án tối ưu cho năm sau hoàn toàn, ...\n",
" - Thuật toán: K-Means, DBScan, Mean-Shift, ...\n",
"\n",
"- Bài toán giảm chiều dữ liệu (Dimension Reduction) sử dụng rất nhiều trong xử lý ảnh. \n",
" - Thuật toán: t-SNE, PCA, SVD, LDA, ...\n",
"\n",
"### 3. Học tăng cường (Reinforcement Learning)\n",
"\n",
"Học tăng cường có thể coi người em sinh sau đẻ muộn so với anh cả Học máy có giám sát và anh hai Học máy phi giám sát nhưng đây sẽ là tương lai của học máy sau này. Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác tử trong môi trường có thế hành động sao cho lấy được phần thưởng nhiều nhất có thể. Khác với học có giám sát, nó không có cặp dữ liệu gán nhãn trước làm đầu vào và cũng không có đánh giá các hành động là đúng hay sai. Cơ chế của học tăng cường giống như khi ta huấn luyện 1 con khỉ, con khỉ làm đúng thì mình thưởng, sai thì mình tét mông và ở đây, ta sử dụng toán học để tạo ra những phần thưởng huấn luyện để con khỉ biết làm đúng theo mong muốn của mình. \n",
"\n",
"Một trong những thành tựu tiêu biểu của Học tăng cường có thể kể đến AlphaGo thắng trong cờ vua, Xe tự hành Tesla của Elon Musk... Các bạn có thể tham khảo 1 số thuật toán như Q-Learning, Deep Q-Network,... \n",
"\n",
"Học tăng cường được đánh giá sẽ là ngành mũi nhọn trong thời gian tới, tuy nhiên phần toán bên dưới cũng như code rất nặng và khó, hiện tại nhiều bên đang nghiên cứu nhưng thực sự ở thời điểm hiện tại ở Việt Nam chưa có 1 sản phẩm cụ thể nào đã đưa vào production.\n",
"\n",
"Trong bài tiếp theo, chúng ta sẽ cũng nhau thực hành làm quen với bài toán học máy có giám sát sử dụng scikit-learn API, một thư viện phổ biến khi làm việc với học máy ở tầm sơ và trung cấp."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
117 changes: 117 additions & 0 deletions docs/tutorial/python/10.ml.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Bài 8: Làm quen với Học máy

## 🎯 Mục tiêu học tập

Sau khi hoàn thành bài này, bạn sẽ có thể:
- [ ] Hiểu được học máy là gì và lịch sử phát triển
- [ ] Phân biệt được các loại bài toán trong học máy (Supervised, Unsupervised, Reinforcement Learning)
- [ ] Hiểu được sự khác biệt giữa Classification và Regression
- [ ] Nắm được các thuật toán cơ bản cho từng loại bài toán

## I. GIỚI THIỆU VỀ HỌC MÁY

### 1. Lịch sử phát triển

![](https://blogs.nvidia.com/wp-content/uploads/2016/07/Deep_Learning_Icons_R5_PNG.jpg.png)

Alan Turing, có thể coi là cha đẻ của ngành trí tuệ nhân tạo, một bộ não cực kì vĩ đại, người được xem là đã cứu hàng ngàn sinh mạng vô tội trong Thế chiến thứ 2 trước quân phát xít Đức khi "bẻ khóa" thành công các thông điệp của quân đội Đức được mã hóa bởi Enigma. Công trình nghiên cứu của Alan có thể coi là khởi nguồn cho ngành AI những năm 1950.

Học máy mới được ra đời những năm 1980 nhờ những phát hiện, những nghiên cứu sâu hơn trong thuật toán và từ 2010 trở lại đây, Học sâu (deep learning) bắt đầu phát triển và bùng nổ với khái niệm mô hình học máy trên mạng neurons. Học sâu cũng chính là công nghệ lõi đằng sau những sản phẩm săn đón hiện thời như xe tự hành Tesla, chấm điểm công dân Trung Quốc, hay những sản phẩm trong đời sống hàng ngày của mình Siri, Google Translate, ...

### 2. Học máy là gì?

Học máy là một tập hợp các phương pháp mà máy tính sử dụng để thực hiện và cải thiện các dự đoán hoặc hành vi dựa trên dữ liệu.
> A set of methods that computers use to make and improve predictions or behaviors based on data.

Nhiều người cho rằng Học máy cũng không phải là cái gì cao siêu cả, nó chỉ đơn thuần là tập hợp các câu lệnh if - else nhưng gọi bằng cái tên nghe bắt tai vậy thôi? Dưới đây là 1 hình ảnh so sánh vui để giúp các bạn hiểu sự khác biệt giữa 1 chương trình phần mềm thông thường và chương trình học máy.

![](https://christophm.github.io/interpretable-ml-book/images/programing-ml.png)

- Với những code bình thường, thì ta cần cho máy tính những hướng dẫn cụ thể (nếu trời mưa thì phải mang ô, nếu trời mưa thì phải kéo quần áo vào trong nhà, ...)

- Với Học máy, ta chỉ cần đưa vào dữ liệu có nhãn hoặc không có nhãn thì Học máy sẽ suy ra cho ta những cái mối quan hệ, những cái chỉ dẫn để giải quyết vấn đề.

|Input|Types|Output|
|-|-|-|
|Data, Rules|Classical Programming|Answers|
|Data (with or without Answers)|Machine Learning|Rules|

Tham khảo các khoá học về Học máy và Học sâu tại:
- [Machine Learning](https://www.coursera.org/learn/machine-learning)
- [Deep Learning](https://www.coursera.org/specializations/deep-learning)

## II. CÁC KIỂU BÀI TOÁN TRONG HỌC MÁY

![](https://www.7wdata.be/wp-content/uploads/2020/06/1FUZS9K4JPqzfXDcC83BQTw.png)

### 1. Học máy có giám sát (Supervised Learning)

Học máy có giám sát là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để luận suy ra mối quan hệ giữa dữ liệu đầu vào và kết quả đầu ra. Các dữ liệu này được gọi là dữ liệu huấn luyện và chúng là cặp các đầu vào - đầu ra. Học có giám sát sẽ xem xét các tập huấn luyện này để từ đó có thể đưa ra dự đoán đầu ra cho 1 đầu vào mới chưa gặp bao giờ. Về mặt toán học, ta có thể hiểu:

- Ma trận X tương ứng tập mẫu (samples = examples = observations = records)
- Ma trận Y tương ứng tập nhãn

Ví dụ, những bài toán có dữ liệu lịch sử và có nhãn cho từng dữ liệu có thể kể đến phần loại thư rác (spam/ not spam), chấm điểm tín dụng (good credit/ bad credit), ...

Học máy có giám sát có thể chia thành 2 nhóm:

- Bài toán phân loại (Classification) xác định 1 hoặc nhiều nhãn cho các mẫu:
- Phân loại nhị phân (Binary classification): ví dụ như khách hàng có gian lận hay không (fraud detection), khách hàng có ở lại không hay rời bỏ dịch vụ (customer retention vs customer churn),...
- Phân loại đa lớp (Multi-class classification): số lượng nhãn nhiều hơn 2, ví dụ như phân loại ảnh (image classification), nhìn vào ảnh chụp Xray chẩn đoán xem bệnh nhân có ung thư không (diagnostics)...
- Thuật toán: Logistic Regression, Decision Trees, SVM, Naive Bayes, K-NN, ...


- Bài toán hồi quy (Regression): ví dụ giá cổ phiểu ngày mai tăng lên hay giảm bao nhiều đồng, căn nhà ấy với diện tích ấy với số phòng ấy tại địa điểm ấy thì thị trường sẽ chấp nhận khoảng giá bao nhiêu để có thể giao bán, giá trị vòng đời khách hàng ...
- Thuật toán: Linear Regression, Ridge/Lasso Regression, ...

### 2. Học máy phi giám sát (Unsupervised Learning)

Khác với các bài toán học máy có giám sát, học phi giám sát sử dụng những dữ liệu chưa được gán nhãn từ trước để luận suy. Phương pháp này thường được sử dụng để tìm cấu trúc của tập dữ liệu tuy nhiên lại không có phương pháp đánh giá được cấu trúc tìm ra được là đúng hay sai. Ví dụ như phân cụm dữ liệu, triết xuất thành phần chính của một chất nào đó. Về mặt toán học, ta không có Y mà chỉ có ma trận X tương ứng các quan sát.

Học máy phi giám sát có thể chia thành 2 nhóm:

- Bài toán phân cụm (Clustering): bài toán này không bao giờ có 1 đáp án duy nhất, luôn luôn có nhiều đáp án, và thậm chí đáp án tối ưu cho năm nay sẽ khác đáp án tối ưu cho năm sau hoàn toàn, ...
- Thuật toán: K-Means, DBScan, Mean-Shift, ...

- Bài toán giảm chiều dữ liệu (Dimension Reduction) sử dụng rất nhiều trong xử lý ảnh.
- Thuật toán: t-SNE, PCA, SVD, LDA, ...

### 3. Học tăng cường (Reinforcement Learning)

Học tăng cường có thể coi người em sinh sau đẻ muộn so với anh cả Học máy có giám sát và anh hai Học máy phi giám sát nhưng đây sẽ là tương lai của học máy sau này. Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác tử trong môi trường có thế hành động sao cho lấy được phần thưởng nhiều nhất có thể. Khác với học có giám sát, nó không có cặp dữ liệu gán nhãn trước làm đầu vào và cũng không có đánh giá các hành động là đúng hay sai. Cơ chế của học tăng cường giống như khi ta huấn luyện 1 con khỉ, con khỉ làm đúng thì mình thưởng, sai thì mình tét mông và ở đây, ta sử dụng toán học để tạo ra những phần thưởng huấn luyện để con khỉ biết làm đúng theo mong muốn của mình.

Một trong những thành tựu tiêu biểu của Học tăng cường có thể kể đến AlphaGo thắng trong cờ vua, Xe tự hành Tesla của Elon Musk... Các bạn có thể tham khảo 1 số thuật toán như Q-Learning, Deep Q-Network,...

Học tăng cường được đánh giá sẽ là ngành mũi nhọn trong thời gian tới, tuy nhiên phần toán bên dưới cũng như code rất nặng và khó, hiện tại nhiều bên đang nghiên cứu nhưng thực sự ở thời điểm hiện tại ở Việt Nam chưa có 1 sản phẩm cụ thể nào đã đưa vào production.

## ✅ Tóm tắt

Trong bài này, chúng ta đã tìm hiểu:

- **Học máy là gì**: Một tập hợp các phương pháp mà máy tính sử dụng để thực hiện và cải thiện các dự đoán hoặc hành vi dựa trên dữ liệu
- **Lịch sử phát triển**: Từ AI những năm 1950, học máy ra đời những năm 1980, đến học sâu bùng nổ từ 2010
- **Ba loại bài toán chính**:
- **Học máy có giám sát (Supervised Learning)**: Classification và Regression
- **Học máy phi giám sát (Unsupervised Learning)**: Clustering và Dimension Reduction
- **Học tăng cường (Reinforcement Learning)**: Học từ phần thưởng và hình phạt

## 💡 Lưu ý quan trọng

- Học máy có giám sát cần dữ liệu đã được gán nhãn (X và Y)
- Học máy phi giám sát chỉ cần dữ liệu không có nhãn (chỉ có X)
- Classification dùng để phân loại (ví dụ: spam/không spam)
- Regression dùng để dự đoán giá trị số (ví dụ: giá nhà, giá cổ phiếu)
- Học tăng cường phù hợp cho các bài toán tối ưu hóa hành động trong môi trường

## 🧪 Thực hành

Hãy thử phân loại các bài toán sau vào đúng loại:

1. Dự đoán giá nhà dựa trên diện tích, số phòng, vị trí
2. Phân loại email là spam hay không spam
3. Phân nhóm khách hàng dựa trên hành vi mua sắm
4. Xe tự lái học cách điều khiển từ môi trường

## ➡️ Bước tiếp theo

Trong bài tiếp theo, chúng ta sẽ cùng nhau thực hành làm quen với bài toán học máy có giám sát sử dụng scikit-learn API, một thư viện phổ biến khi làm việc với học máy ở tầm sơ và trung cấp.
Loading
Loading