2. Cách tạo ra AI
Ở bài học trước, bạn đã biết:
- Trí tuệ là khả năng học hỏi, hiểu biết, suy luận và vận dụng kiến thức để giải quyết vấn đề, thích nghi với hoàn cảnh mới và đạt được mục tiêu
- Có hai dạng trí tuệ: trí tuệ tự nhiên và trí tuệ nhân tạo
- Trí tuệ tự nhiên là trí tuệ nằm trong bộ não của con người và các loài động vật
- Trí tuệ nhân tạo là trí tuệ do con người tạo ra, vận hành trên nền tảng kỹ thuật số
Vậy con người đã tạo ra trí tuệ nhân tạo bằng cách nào?
Cụ thể hơn, làm sao tạo ra được một hệ thống mà nó có khả năng: Học hỏi - Suy luận - Giải quyết vấn đề - Thích nghi - Trừu tượng hóa
2.1 Các hướng tiếp cận chính
Để tạo ra một hệ thống AI, có một số hướng tiếp cận phổ biến sau:
[1] Hướng tiếp cận dựa trên Luật và Tri thức (Symbolic AI / Rule-based)
- Con người viết sẵn các quy tắc logic, kiến thức chuyên môn dưới dạng mã lệnh hoặc cơ sở tri thức
- Máy suy luận theo đúng những gì con người đã định nghĩa
- Ưu điểm: Dễ giải thích, kiểm soát được
- Nhược điểm: Khó mở rộng, không tự học được tình huống mới
Ví dụ: Hệ thống chẩn đoán bệnh cũ, phần mềm tư vấn pháp lý theo quy định, chatbot theo kịch bản cứng.
[2] Hướng tiếp cận dựa trên Dữ liệu – Học máy (Machine Learning)
- Không viết quy tắc chi tiết. Thay vào đó, cung cấp dữ liệu để máy “tự học” quy luật
- Đây là hướng đang phổ biến và mạnh mẽ nhất hiện nay
- Bao gồm các nhánh:
+ Học có giám sát
+ Học không giám sát
+ Học tăng cường
+ Học sâu (Deep Learning)
Ví dụ: Nhận diện khuôn mặt, dịch ngôn ngữ, gợi ý sản phẩm, xe tự lái (phần nhận diện).
[3] Hướng tiếp cận Lai (Hybrid AI)
- Kết hợp cả hai cách trên: vừa dùng luật/tri thức, vừa dùng Học máy
- Mục tiêu: Vừa có khả năng học từ dữ liệu, vừa giữ được tính giải thích và kiểm soát
Ví dụ: Hệ thống AI y tế vừa học từ hồ sơ bệnh án, vừa tuân thủ các quy tắc y khoa bắt buộc.
[4] Các hướng tiếp cận khác (ít phổ biến hơn nhưng vẫn quan trọng)
|
Hướng tiếp cận |
Ý tưởng chính |
Ví dụ ứng dụng |
|
Thuật toán tiến hóa |
Mô phỏng chọn lọc tự nhiên để tìm giải pháp |
Tối ưu thiết kế, lập lịch |
|
Logic mờ (Fuzzy Logic) |
Xử lý khái niệm mơ hồ (“hơi nóng”, “khá tốt”) |
Điều hòa, máy giặt thông minh |
|
Hệ thống đa tác tử |
Nhiều “agent” nhỏ phối hợp với nhau |
Mô phỏng giao thông, game |
|
Tiếp cận dựa trên tìm kiếm & lập kế hoạch |
Máy tìm đường đi hoặc chuỗi hành động tối ưu |
AI chơi cờ, robot lập kế hoạch |
2.2 Cài đặt một số ví dụ
Để có ý niệm ban đầu về một hệ thống AI, chúng ta cùng cài đặt một số ví dụ đơn giản.
Ví dụ 1
Tạo một AI dựa trên luật (rule based). Chúng ta sẽ tạo một chatbot trả lời theo kịch bản.
[python]
def chatbot(cau_hoi):
cau_hoi = cau_hoi.lower()
# Các luật "nếu... thì..." do con người viết sẵn
if "xin chào" in cau_hoi:
return "Chào bạn! Tôi có thể giúp gì cho bạn?"
elif "giờ mở cửa" in cau_hoi:
return "Cửa hàng mở cửa từ 8h đến 17h."
elif "địa chỉ" in cau_hoi:
return "Địa chỉ: 123 Đường ABC."
else:
return "Xin lỗi, tôi chưa hiểu câu hỏi của bạn."
print("Xe bán bánh mì Bác Tèo \n")
while True:
chuoi = input("Bạn cần gì? (nhập 'no' để thoát): ")
if chuoi == 'no':
print("chào bạn!")
break;
print(chatbot(chuoi))
Bạn chạy chương trình trên. Nhập một số giá trị để trải nghiệm. Ví dụ: xin chào, giờ mở cửa, địa chỉ, bán gì, no.
Bạn thấy là:
- Mọi câu trả lời đều do con người viết sẵn bằng các luật if... elif... else
- Ưu điểm: dễ hiểu, biết chắc máy sẽ trả lời gì (dễ giải thích, kiểm soát được)
- Nhược điểm: câu hỏi mà không có luật nào khớp, máy sẽ không tự học được. Muốn trả lời, con người phải viết thêm luật (khó mở rộng)
- Vậy nếu cửa hàng có 1.000 loại câu hỏi, ta phải viết bao nhiêu luật?
Ví dụ 2
Ở Ví dụ 1, bạn đã được làm quen với một chương trình AI viết theo hướng dựa trên luật.
Phần này, bạn sẽ viết tiếp một chương trình AI, nó không dựa trên luật, mà dựa trên dữ liệu cho trước (hướng học máy).
Đây là một bài toán Phân loại (Classification).
Bài toán sử dụng thuật toán K-Nearest Neighbors (KNN - Hàng xóm gần nhất). Ý là: “Muốn biết bạn là ai, hãy nhìn vào những người hàng xóm (những người có hoàn cảnh giống bạn) xung quanh bạn”.
Bài toán: Dự đoán học sinh Đậu hay Rớt
Giả sử chúng ta có dữ liệu lịch sử của một lớp học gồm hai yếu tố (đặc trưng):
- [1] Số giờ tự học mỗi ngày
- [2] Số giờ ngủ mỗi đêm
AI sẽ học từ dữ liệu quá khứ để tự động phán đoán xem một học sinh mới, với thói quen học tập/nghỉ ngơi tương ứng sẽ Đậu (1) hay Rớt (0) môn học, mà không cần con người phải viết sẵn các câu lệnh điều kiện if... else phức tạp.
[python]
from sklearn.neighbors import KNeighborsClassifier
# 1. Chuẩn bị dữ liệu huấn luyện (Training Data)
# Mỗi dòng là một học sinh: [Số giờ tự học, Số giờ ngủ]
X = [
[1, 5], # Học ít, ngủ ít -> Rớt
[2, 6], # Học ít, ngủ trung bình -> Rớt
[1, 4], # Học ít, ngủ ít -> Rớt
[4, 7], # Học khá, ngủ đủ -> Đậu
[5, 8], # Học chăm, ngủ tốt -> Đậu
[4, 6] # Học khá, ngủ trung bình -> Đậu
]
# Nhãn tương ứng: 0 = Rớt, 1 = Đậu
y = [0, 0, 0, 1, 1, 1]
# 2. Khởi tạo mô hình AI (Thuật toán K-Nearest Neighbors - xét 3 hàng xóm gần nhất)
model = KNeighborsClassifier(n_neighbors=3)
# 3. Cho máy "tự học" quy luật từ dữ liệu
model.fit(X, y)
# 4. Kiểm thử với một học sinh mới
# Ví dụ: Một học sinh mới có thói quen học 4.5 tiếng và ngủ 7.5 tiếng
hoc_sinh_moi = [[4.5, 7.5]]
# Dùng AI để dự đoán kết quả
ket_qua_du_doan = model.predict(hoc_sinh_moi)
# 5. Hiển thị kết quả cho người dùng
print("--- KẾT QUẢ DỰ ĐOÁN CỦA AI ---")
if ket_qua_du_doan[0] == 1:
print("Dự đoán: Học sinh này khả năng cao sẽ ĐẬU!")
else:
print("Dự đoán: Học sinh này cần cố gắng hơn vì có nguy cơ RỚT!")
Bạn hãy cài đặt thư viện scikit-learn trên máy để chạy chương trình trên và xem kết quả.
Kết quả:
Chương trình sẽ xuất ra kết quả là: Dự đoán: Học sinh này khả năng cao sẽ ĐẬU!
Một vài nhận xét:
- Trong chương trình, bạn sẽ không thấy có dòng lệnh như “Nếu học > 3 giờ thì đậu”. Thay vào đó, chúng ta đưa cho máy một tập dữ liệu mẫu (số giờ tự học, số giờ ngủ, đậu hay rớt), đây là các vạch mốc cũ
- Khi máy tính học (model.fit), nó sẽ ghi nhớ toàn bộ vị trí các điểm dữ liệu cũ trên một không gian tọa độ
- Quá trình suy luận (model.predict), khi có một học sinh mới xuất hiện (với 4.5 giờ tự học và 7.5 giờ ngủ), máy sẽ "nhìn quanh" xem 3 học sinh cũ nào có thói quen gần giống nhất (hàng xóm gần nhất). Vì các "hàng xóm" đó đều đậu, máy tự động suy luận học sinh mới cũng sẽ đậu.
2.3 Xem và đọc thêm
Sử dụng các từ khóa sau, tìm kiếm trên Google, Youtube, Chatbot để xem và đọc thêm: Các cách tiếp cận để tạo ra AI
2.4 Bài tập và câu hỏi
Bài tập
Bài tập 2.1: Cài đặt các bài toán trong phần lý thuyết.
Câu hỏi
Câu 2a: Trong các hướng tiếp cận chính để tạo ra AI, hướng tiếp cận nào mà con người phải viết sẵn toàn bộ các quy tắc logic và kiến thức chuyên môn dưới dạng mã lệnh?
A. Hướng tiếp cận dựa trên Dữ liệu (Machine Learning)
B. Hướng tiếp cận dựa trên Luật và Tri thức (Rule-based / Symbolic AI)
C. Hướng tiếp cận Học sâu (Deep Learning)
D. Hướng tiếp cận Thuật toán tiến hóa
Câu 2b: Trong ví dụ về chương trình AI phân loại kết quả học tập của học sinh bằng thuật toán KNN, đặc trưng đầu vào (input) được dùng để đánh giá là gì?
A. Số lượng sách giáo khoa và số bài tập về nhà
B. Chiều cao và cân nặng của học sinh
C. Số giờ tự học mỗi ngày và số giờ ngủ mỗi đêm
D. Điểm số các môn Toán, Văn, Anh
Câu 2c: Điểm khác biệt cơ bản nhất giữa hướng tiếp cận dựa trên Luật (Rule-based) và hướng tiếp cận dựa trên Dữ liệu (Machine Learning) là gì?
A. Hướng dựa trên luật bắt buộc phải dùng ngôn ngữ Python, còn học máy dùng ngôn ngữ khác
B. Hướng dựa trên luật không cần máy tính, còn học máy bắt buộc phải có máy tính siêu mạnh
C. Hướng dựa trên luật con người phải viết sẵn câu lệnh điều kiện, còn học máy cho phép máy tự học quy luật từ dữ liệu mẫu
D. Hướng dựa trên luật thông minh hơn và xử lý được mọi tình huống mới, còn học máy rất hạn chế
Câu 2d: Khi đoạn chương trình Python sử dụng thuật toán KNN chạy câu lệnh model.fit(X, y), hành động thực tế của máy tính là gì?
A. Máy tính tự động viết thêm các câu lệnh if... else mới
B. Máy tính ghi nhớ toàn bộ vị trí các điểm dữ liệu cũ trên không gian tọa độ để làm mốc đối chiếu
C. Máy tính bắt đầu xóa bớt dữ liệu cũ để tiết kiệm bộ nhớ
D. Máy tính tự động sinh ra thêm các câu hỏi trắc nghiệm cho học sinh ôn tập
-----
