You are on page 1of 190

Trí tuệ Nhân tạo

Giới thiệu môn học

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Thông tin chung
† Tên môn học
„ Trí tuệ Nhân tạo
† Khối lượng lượng
„ 45 LT
„ 15 BTL
† Thời khóa biểu
„ Chiều T4, T6, tiết 4-5
† Giảng viên
„ Trần Đức Khánh
„ Bộ môn HTTT
„ khanhtd@it-hut.edu.vn
Mục tiêu môn học
† Các khái niệm cơ bản của Trí tuệ
nhân tạo
† Các kỹ thuật cơ bản của Trí tuệ nhân
tạo
† Các ứng dụng của Trí tuệ nhân tạo
trong thực tế
Nội dung
† Tổng quan về Trí tuệ nhân tạo
† Tác tử
† Giải quyết vấn đề
„ Tìm kiếm
„ Thỏa mãn ràng buộc
† Tri thức và Suy diễn
† Học máy
† Giải thuật di truyền
† Lập kế hoạch
Tài liệu học tập
† Bài giảng
† Sách
„ S. Russell and P. Norvig. Artificial
Intelligence: A Modern Approach.
Trí tuệ Nhân tạo
Tổng quan

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Trí tuệ Nhân tạo
† Các định nghĩa (quan điểm) về TTNT được chia thành 4
nhóm:
„ (1) Các hệ thống suy nghĩ (thông minh) như con người
† "The exciting new effort to make computers think ... machines
with minds, in the full and literal sense." (Haugeland, 1985)
† "[The automation of] activities that we associate with human
thinking, activities such as decision-making, problem solving,
learning ..." (Bellman, 1978)

„ (2) Các hệ thống suy nghĩ hợp lý


† "The study of mental faculties through the use of
computational models." (Charniak and McDermott, 1985)
† "The study of the computations that make it possible to
perceive, reason, and act." (Winston, 1992)
Trí tuệ Nhân tạo
„ (3) Các hệ thống hành động (thông minh) như con
người
† "The art of creating machines that perform functions
that require intelligence when performed by people."
(Kurzweil, 1990)
† "The study of how to make computers do things at
which, at the moment, people are better." (Rich and
Knight, 1991)

„ (4) Các hệ thống hành động hợp lý


† "Computational Intelligence is the study of the design of
intelligent agents." (Poole et al., 1998)
† "AI . . .is concerned with intelligent behavior in artifacts."
(Nilsson, 1998)
Trí tuệ Nhân tạo
† Các định nghĩa (1) và (2) liên quan đến các
quá trình suy nghĩ và suy diễn
† Các định nghĩa (3) và (4) liên quan đến
cách hành động
† Các định nghĩa (1) và (3) đánh giá mức độ
thành công (sự thông minh) theo tiêu
chuẩn của con người
† Các định nghĩa (2) và (4) đánh giá mức độ
thành công (sự thông minh) theo tiêu
chuẩn của sự hợp lý
„ Một hệ thống hành động hợp lý, nếu nó làm các
việc phù hợp đối với những gì nó (hệ thống) biết
Hành động như con người: Turing
Test
† Turing (1950) “Máy tính toán và sự thông minh":
† “Máy tính có thể suy nghĩ được không?" Æ “Máy tính có thể
hành động một cách thông minh được không?"
† Thí nghiệm kiểm chứng hành động thông minh: Imitation
Game

† Dự đoán rằng đến năm 2000, máy tính sẽ có 30% khả năng
vượt qua một người không có chuyên môn đối với một bài kiểm
tra (Turing test) trong 5 phút
† Turing (vào năm 1950) đã dự đoán trước các vấn đề tranh luận
quan trọng trong TTNT trong vòng 50 năm sau
† Turing đã đề xuất các thành phần quan trọng của TTNT: tri
thức, suy diễn, hiểu ngôn ngữ, học
Suy nghĩ như con người: Khoa học nhận
thức
† Cuộc “cách mạng nhận thức” những năm1960:
„ Xem bộ não người như một cấu trúc xử lý thông tin
„ Nghiên cứu về tâm lý nhận thức thay thế cho các nghiên
cứu trước đó về hành vi ứng xử
† Cần các lý thuyết khoa học về các hoạt động bên trong
của bộ não người
† Làm thế nào để xác nhận (kiểm chứng)? Yêu cầu:
1) Dự đoán và kiểm chứng các hoạt động (hành vi) của chủ thể
con người (hướng tiếp cận top-down), hoặc
2) Nhận dạng (xác định) trực tiếp từ các dữ liệu về hệ thần
kinh (hướng tiếp cận bottom-up)
† Hiện nay, cả 2 hướng tiếp cận này (Cognitive Science và
Cognitive Neuroscience) được tách rời với lĩnh vực TTNT
Suy nghĩ hợp lý: Các luật suy
nghĩ
† Chuẩn hóa (hoặc quy tắc hóa), hơn là mô tả
† Aristotle: Thế nào là các quá trình suy nghĩ / tranh luận
đúng đắn?
† Một số trường học ở Hy Lạp đã phát triển những dạng
logic: ký hiệu và các luật dẫn xuất đối với các quá trình
suy nghĩ
† Mối liên hệ trực tiếp, thông qua toán học và triết học, đối
với khoa học TTNT hiện đại
† Các vấn đề:
1. Không phải tất cả các hành vi (hành động) thông minh đều
xuất phát từ các cân nhắc (suy nghĩ) logic
2. Mục đích của sự suy nghĩ là gì? Những suy nghĩ nào mà tôi
nên thực hiện, trong số các suy nghĩ mà tôi có thể có?
Hành động một cách hợp lý
† Hành động một cách hợp lý: thực hiện đúng
việc cần làm
† Đúng việc cần làm: là việc (hành động) giúp
cực đại hóa việc đạt được các mục tiêu, đối với
các thông tin hiện có
† Không nhất thiết liên quan đến sự suy nghĩ – ví
dụ, phản xạ chớp mắt
† Tuy nhiên, sự suy nghĩ nên được xem là thuộc
vào hệ thống (nhóm) các hành động hợp lý
Tác tử hợp lý
† Một tác tử (agent) là một thực thể có khả năng
nhận thức và hành động
† Một cách khái quát, một tác tử có thể được biểu
diễn bằng một ánh xạ: từ quá trình (lịch sử) nhận
thức đến hành động:
f: P* → A
† Đối với một tập (lớp) các môi trường và nhiệm vụ,
chúng ta cần tìm ra tác tử (hoặc một lớp các tác tử)
có hiệu suất tốt nhất
† Lưu ý: Các giới hạn về tính toán (của máy tính)
không cho phép đạt được sự hợp lý hoàn hảo (tối
ưu)
Æ Mục tiêu: Thiết kế chương trình máy tính tối ưu
đối với các tài nguyên máy tính hiện có
Nền tảng của TTNT
† Triết học
„ Logic
„ Các phương pháp suy diễn
„ Các cơ sở (nền tảng) của việc học
„ Ngôn ngữ
„ Sự hợp lý

† Toán học
„ Biểu diễn hình thức và các giải thuật chứng minh
„ Tính toán
„ Bài toán (vấn đề) giải quyết được và không giải quyết được
„ Bài toán (vấn đề) áp dụng được và không áp dụng được (độ
phức tạp tính toán - thời gian để giải quyết bài toán - là hàm
mũ)
„ Xác suất
Nền tảng của TTNT
† Kinh tế học
„ Hàm lợi ích (tiện ích)
„ Lý thuyết ra quyết định

† Khoa học thần kinh


„ Nền tảng (cơ sở) tự nhiên của các hoạt động trí óc

† Tâm lý học
„ Sự thích nghi
„ Các dấu hiệu của nhận thức và điều khiển vận động
„ Các kỹ thuật thực nghiệm (vd: tâm sinh lý học,…)
Nền tảng của TTNT
† Công nghệ máy tính
„ Xây dựng các máy tính có tốc độ tính toán
nhanh

† Lý thuyết điều khiển


„ Thiết kế các hệ thống nhằm cực đại hóa một
hàm mục tiêu nào đó

† Ngôn ngữ học


„ Biểu diễn tri thức
„ Ngữ pháp (của một ngôn ngữ)
Lịch sử tóm tắt của TTNT
† 1943: McCulloch & Pitts trình bày công trình nghiên cứu đầu
tiên về AI, đề xuất mô hình các nơ-ron nhân tạo 2 trạng thái
(on/off)
† 1950: Khái niệm về TTNT lần đầu tiên được Turing đề cập
trong bài báo "Computing Machinery and Intelligence"
† 1956: Workshop đầu tiên (diễn ra trong 2 tháng ) ở
Dartmouth (Mỹ) bàn về lĩnh vực TTNT, khái niệm TTNT được
thừa nhận
† 1952-1969: Các thành tựu ban đầu trong TTNT
† 1950s: Các chương trình TTNT đầu tiên
„ Chương trình chơi cờ của Samuel
„ Chương trình lý luận logic của Newell & Simon
„ Chương trình chứng minh các định lý hình học của Gelernter
Lịch sử tóm tắt của TTNT
† 1965: Robinson đề cử giải thuật hoàn chỉnh cho việc suy diễn logic
† 1966-1973:
„ Các nhà nghiên cứu về TTNT nhận ra khó khăn về độ phức tạp tính
toán
„ Gần như là không còn các nghiên cứu về các mạng nơ-ron nhân
tạo
† 1969-1979: Sự hình thành và phát triển ban đầu của các hệ thống
dựa trên tri thức
† 1980: TTNT trở thành một ngành công nghiệp (các hệ thống, chương
trình TTNT dùng trong thương mại)
† 1980-1988: Sự xuất hiện bùng nổ của các hệ chuyên gia
† 1986: Các mạng nơ-ron nhân tạo xuất hiện trở lại, trở nên phổ biến
† 1987: TTNT trở thành một lĩnh vực khoa học
† 1995: Sự xuất hiện của các tác tử thông minh
Các thành tựu quan trọng trong TTNT
† Lập kế hoạch và lập lịch tự động
„ NASA đã thiết kế được chương trình lập kế hoạch tự động
(gọi là Remote Agent) để điều khiển việc xếp lịch các hoạt
động của tàu vũ trụ

† Chơi cờ
„ Deep Blue (hệ thống máy tính của IBM) đã đánh bại kiện
tướng cờ vua Thế giới Garry Kasparov vào năm 1997

† Điều khiển tự động


„ Một xe tải nhỏ được điều khiển tự động bởi hệ thống
ALVINN (của CMU) trong suốt 98% của khoảng thơi gian đi
từ Pittsburgh đến San Diego (~2850 miles)

† Người máy
„ Ngày nay, rất nhiều cuộc phẫu thuật trong y tế sử dụng các
trợ giúp người máy trong các thao tác vi phẫu
(microsurgery)
Các thành tựu quan trọng trong TTNT
† Chẩn đoán
„ Các chương trình chuẩn đoán y tế dựa trên phân tích
xác suất đã có thể thực hiện ở mức tương đương các
bác sỹ chuyên môn trong một số lĩnh vực của y tê
† Lập kế hoạch hậu cần cho quân đội
„ Trong cuộc chiến tranh Vùng Vịnh năm 1991, các lực
lượng của quân đội Mỹ đã triển khai sử dụng một
chương trình lập kế hoạch và xếp lịch cho công tác
hậu cần để di chuyển 50.000 xe cộ, hàng hóa, và
quân lính

† Hiểu ngôn ngữ và giải quyết vấn đề


„ Chương trình máy tính PROVERB có thể giải được các
bài toán đố chữ (crossword puzzles) tốt hơn khả năng
của nhiều người
Các hướng nghiên cứu trong TTNT
† Nhận dạng và Tổng hợp
„ Tiếng nói, Hình ảnh, Chữ viết
† Xử lý ngôn ngữ tự nhiên
† Lập kế hoạch
† Trợ giúp quyết định
† Trợ giúp lập trình
† Học và Thích nghi
† Trò chơi
† Y tế
Người và Máy
† Nhiệm vụ « khó khăn » với Người nhưng
« dễ dàng » với Máy
„ Lập kế hoạch vận tải (Hệ DART tại DARPA)
„ Lập lịch bay cho các hãng hàng không
„ Phát hiện gian lận (Viễn thông)
„ Sắp xếp thư từ
„ Chứng minh định lý
„ Thiết kế tự động
„ Một số trò chơi
Người và Máy
† Nhiệm vụ « dễ dàng » với Người nhưng
« khó khăn » với Máy
„ Nhận dạng tiếng nói
„ Nhận dạng khuôn mặt
„ Sáng tác nhạc và nghệ thuật
„ Lái xe máy, ôtô
„ Hiểu ngôn ngữ tự nhiên
„ Suy diễn, lập luận về phạm trù đạo đức,
triết học
„ Nhận thức về cảm xúc
Trí tuệ Nhân tạo
Tác tử

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Nội dung
† Tổng quan về Trí tuệ nhân tạo
† Tác tử
† Giải quyết vấn đề
„ Tìm kiếm
„ Thỏa mãn ràng buộc
† Tri thức và Suy diễn
† Học máy
† Giải thuật di truyền
† Lập kế hoạch
Tác tử - Định nghĩa
† Tác tử là bất cứ cái gì (con người, người máy, software
robots, các bộ ổn nhiệt,…)
„ có khả năng cảm nhận (nhận biết) môi trường xung quanh
nó thông qua các bộ phận cảm biến (sensors)
„ hành động phù hợp theo môi trường đó thông qua các bộ
phận hoạt động (actuators)
† Tác tử con người
„ Các bộ phận cảm biến: mắt, tai, và một số bộ phận cơ thể
khác
„ Các bộ phận hoạt động: tay, chân, miệng, và một số bộ
phận cơ thể khác
† Tác tử người máy
„ Các bộ phận cảm biến: các máy quay (cameras), các bộ
truy tìm tín hiệu hồng ngoại
„ Các bộ phận hoạt động: các loại động cơ (motors)
Tác tử và Môi trường

† Hàm tác tử: là hàm ánh xạ từ lịch sử nhận thức tới các
hành động:
f: P* → A
† Chương trình tác tử: hoạt động (chạy) dựa trên kiến trúc
thực tế của hàm f
„ Tác tử = Kiến trúc + Chương trình
Ví dụ : Thế giới của máy hút bụi

† Các nhận thức


„ Ví trí và mức độ sạch sẽ
„ Ví dụ: [A, Bẩn], [B, Sạch]

† Các hành động


„ Di chuyển (máy hút bụi) sang trái, sang phải, hút bụi, hoặc
không làm gì cả
Tác tử máy hút bụi
Bảng hành động của tác tử máy hút bụi
Chuỗi các nhận thức Hành động
[A, Sạch] Di chuyển sang phải
[A, Bẩn] Hút bụi
[B, Sạch] Di chuyển sang trái
[B, Bẩn] Hút bụi
[A, Sạch], [A, Sạch] Di chuyển sang phải
[A, Sạch], [A, Bẩn] Hút bụi
...
function Reflex-Vacuum-Agent( [location,status]) returns an action
if status = Dirty then return Suck
else if location = A then return Right
else if location = B then return Left
Tác tử hợp lý
† Tác tử cần phấn đấu để “làm đúng việc cần làm”, dựa trên
những gì nó nhận thức (nhận biết) được và dựa trên các
hành động mà nó có thể thực hiện.

† Một hành động đúng (hợp lý) là hành động giúp cho tác tử
đạt được thành công cao nhất đối với mục tiêu đặt ra

† Đánh giá hiệu quả hoạt động: là tiêu chuẩn để đánh giá
mức độ thành công trong hoạt động của một tác tử
„ Ví dụ: Tiêu chí đánh giá hiệu quả hoạt động của một tác
tử máy hút bụi có thể là: mức độ làm sạch, thời gian hút
bụi, mức độ điện năng tiêu tốn, mức độ tiếng ồn gây ra, …
Tác tử hợp lý
† Tác tử hợp lý
„ Với mỗi chuỗi nhận thức có được,
„ Một tác tử hợp lý cần phải lựa chọn một
hành động giúp cực đại hóa tiêu chí đánh
giá hiệu quả hoạt động của tác tử đó,
„ Dựa trên các thông tin được cung cấp bởi
chuỗi nhận thức và các tri thức được sở hữu
bởi tác tử đó
Tác tử hợp lý
† Sự hợp lý ≠ Sự thông suốt mọi thứ
„ Sự thông suốt mọi thứ = Biết tất cả mọi thứ, với tri
thức vô hạn
† Vì các nhận thức có thể không cung cấp tất cả các
thông tin liên quan

† Các tác tử có thể thực hiện các hành động


nhằm thay đổi các nhận thức trong tương lai,
với mục đích thu được các thông tin hữu ích (ví
dụ: thu thập thông tin, khám phá)
„ Tác tử tự trị (autonomous agent) là một tác tử mà
các hành động của nó được quyết định bởi chính
kinh nghiệm của tác tử đó (cùng với khả năng học
và thích nghi)
Mô hình PEAS
† PEAS
„ Performance measure: Tiêu chí đánh giá hiệu quả
hoạt động
„ Environment: Môi trường xung quanh
„ Actuators: Các bộ phận hành động
„ Sensors: Các bộ phận cảm biến

† Để thiết kế một tác tử thông minh (hợp lý),


trước tiên cần phải xác định (thiết lập) các giá
trị của các thành phần của PEAS
Mô hình PEAS
† Ví dụ: Thiết kế một tác tử lái xe taxi tự động
„ Đánh giá hiệu quả hoạt động (P): an toàn, nhanh,
đúng luật giao thông, mức độ hài lòng của khách
hàng, tối ưu lợi nhuận, …
„ Môi trường xung quanh (E): các con đường (phố),
các phương tiện khác cùng tham gia giao thông,
những người đi bộ, các khách hàng, …
„ Các bộ phận hành động (A): bánh lái, chân ga,
phanh, đèn tín hiệu, còi xe,…
„ Các bộ phận cảm biến (S): máy quay (cameras),
đồng hồ tốc độ, GPS, đồng hồ đo khoảng cách quãng
đường, các bộ cảm biến động cơ,…
Mô hình PEAS
† Ví dụ: Thiết kế một tác tử chẩn đoán y tế
„ Đánh giá hiệu quả hoạt động (P): mức độ sức khỏe
của bệnh nhân, cực tiểu hóa các chi phí, các việc kiện
cáo, …
„ Môi trường xung quanh (E): bệnh nhân, bệnh viện,
nhân viên y tế, …
„ Các bộ phận hành động (A): hiển thị trên màn hình
các câu hỏi, các xét nghiệm, các chuẩn đoán, các
điều trị, các chỉ dẫn, …
„ Các bộ phận cảm biến (S): bàn phím để nhập vào
các thông tin về triệu chứng, các trả lời của bệnh
nhân đối với các câu hỏi, …
Mô hình PEAS
† Ví dụ: Thiết kế một tác tử nhặt đồ vật
„ Đánh giá hiệu quả hoạt động (P): tỷ lệ (bao nhiêu
phần trăm) các đồ vật được đặt vào đúng các thùng

„ Môi trường xung quanh (E): dây chuyền chuyển


động trên đó có các đồ vật, các thùng đựng

„ Các bộ phận hành động (A): cánh tay và bàn tay


được kết nối

„ Các bộ phận cảm biến (S): máy quay (camera), các


bộ cảm biến các góc độ (các hướng)
Mô hình PEAS
† Ví dụ: Thiết kế một tác tử dạy tiếng Anh tương
tác
„ Đánh giá hiệu quả hoạt động (P): cực đại hóa điểm
thi tiếng Anh của học viên

„ Môi trường xung quanh (E): một nhóm học viên

„ Các bộ phận hành động (A): hiển thị màn hình các
bài tập, các gợi ý, sửa (chữa) bài tập

„ Các bộ phận cảm biến (S): bàn phím


Các kiểu tác tử
† 4 kiểu tác tử cơ bản
„ Tác tử phản xạ đơn giản (simple reflex
agents)

„ Tác tử phản xạ dựa trên mô hình (model-


based reflex agents)

„ Tác tử dựa trên mục tiêu (goal-based


agents)

„ Tác tử dựa trên lợi ích (utility-based agents)


Tác tử phản xạ đơn giản
Tác tử phản xạ đơn giản
Tác tử phản xạ đơn giản:
→Hành động theo một quy tắc (luật) có điều kiện phù hợp với
trạng thái hiện thời (của môi trường)

function SIMPLE-REFLEX-AGENT(percept)
static: rules (tập các luật có dạng: điều kiện-hành động)

state ← INTERPRET-INPUT(percept)
rule ← RULE-MATCH(state, rules)
action ← RULE-ACTION[rule]
return action
Tác tử phản xạ dựa trên mô hình
Tác tử phản xạ dựa trên mô hình
Tác tử phản xạ dựa trên mô hình:
„ Sử dụng một mô hình nội bộ để theo dõi (giám sát) trạng thái hiện
tại của môi trường
„ Lựa chọn hành động: giống như đối với tác tử phản xạ đơn giản

function REFLEX-AGENT-WITH-STATE(percept)
static: state (mô tả trạng thái hiện tại của môi trường)
rules (tập các luật có dạng: điều kiện-hành động)
action (hành động gần nhất)

state ← UPDATE-STATE(state, action, percept)


rule ← RULE-MATCH(state, rules)
action ← RULE-ACTION[rule]
return action
Tác tử dựa trên mục tiêu
Tác tử dựa trên mục tiêu
† Biết về trạng thái hiện tại của môi trường: chưa đủ - cần
biết thêm thông tin về mục tiêu
„ Trạng thái hiện tại của môi trường: Ở một ngã tư, xe taxi
có thể rẽ trái, rẽ phải, hoặc đi thẳng
„ Thông tin về mục tiêu: xe taxi cần đi tới đích đến của hành
khách

† Tác tử dựa trên mục tiêu


„ Theo dõi trạng thái hiện tại của môi trường
„ Lưu giữ một tập các mục tiêu (cần đạt được)
„ Chọn hành động cho phép (rốt cuộc) sẽ đạt đến các mục
tiêu
Tác tử dựa trên lợi ích
Tác tử dựa trên lợi ích
† Trong nhiều môi trường, thông tin về các mục tiêu không
đủ để đánh giá hiệu quả của các hành động
„ Có rất nhiều chuỗi các hành động cho phép taxi đi đến đích
(tức là đạt đến mục tiêu)
„ Nhưng: chuỗi hành động nào nhanh hơn, an toàn hơn,
đáng tin cậy hơn, chi phí thấp hơn?

† Cần sự đánh giá lợi ích đối với tác tử

† Hàm lợi ích (utility function)


„ Ánh xạ từ (chuỗi các) trạng thái của môi trường tới một giá
trị số thực (thể hiện mức lợi ích đối với tác tử)
Tác tử có khả năng học
Tác tử có khả năng học
† Khả năng học cho phép tác tử cải thiện hiệu quả hoạt
động của nó

† 4 thành phần tạo nên một tác tử có khả năng học


„ Thành phần hành động: đảm nhiệm việc lựa chọn các hành
động
„ Thành phần đánh giá (bình luận): đánh giá hiệu quả hoạt
động
„ Thành phần học: giúp cải thiện hiệu quả hoạt động - dựa
trên các đánh giá, để thay đổi (cải thiện) thành phần hành
động
„ Thành phần sản sinh kinh nghiệm: có nhiệm vụ đề xuất các
hành động giúp sản sinh ra (dẫn đến) các kinh nghiệm mới
Môi trường
† Có thể quan sát được hoàn toàn (hay có thể quan sát
được một phần)?
„ Các bộ cảm biến của một tác tử cho phép nó truy cập tới trạng thái
đầy đủ của môi trường tại mỗi thời điểm
† Xác định (hay ngẫu nhiên)?
„ Trạng thái tiếp theo của môi trường được xác định hoàn toàn dựa
trên trạng thái hiện tại và hành động của tác tử (tại trạng thái hiện
tại này)
„ Nếu một môi trường là xác định, ngoại trừ đối với các hành động
của các tác tử khác, thì gọi là môi trường chiến lược
† Phân hồi (hay liên tiếp)?
„ Kinh nghiệm của tác tử được chia thành các giai đoạn (chương/hồi)
„ Mỗi giai đoạn bao gồm việc nhận thức của tác tử và hành động mà
nó thực hiện
„ Ở mỗi giai đoạn, việc lựa chọn hành động để thực hiện chỉ phụ
thuộc vào giai đoạn đó (không phụ thuộc vào các giai đoạn khác)
Môi trường
† Tĩnh (hay động)?
„ Môi trường không thay đổi trong khi tác tử cân nhắc
(xem nên đưa ra hành động nào)
„ Môi trường bán động (semi-dynamic) là môi trường
mà khi thời gian trôi qua thì nó (môi trường) không
thay đổi, nhưng hiệu quả hoạt động của tác tử thì
thay đổi
† Rời rạc (hay liên tục)?
„ Một tập hữu hạn các nhận thức và các hành động,
được định nghĩa phân biệt rõ ràng
† Tác tử đơn lẻ (hay đa tác tử)?
„ Một tác tử hoạt động độc lập (không phụ thuộc / liên
hệ với các tác tử khác) trong một môi trường
Các kiểu môi trường – Ví dụ
Chơi cờ Chơi cờ không Lái xe taxi
tính giờ tính giờ
Quan sát đầy đủ? có có không
Xác định? chiến lược chiến lược không
Phân đoạn? không không không
Tĩnh? bán động có không
Rời rạc? có có không
Tác tử đơn? không không không

† Kiểu của môi trường có ảnh hưởng quyết định đối với việc thiết
kế tác tử

† Môi trường trong thực tế thường có các đặc điểm: chỉ có thể
quan sát được một phần, ngẫu nhiêu, liên tiếp, thay đổi
(động), liên tục, đa tác tử
Tác tử - Tổng kết
† Tác tử tương tác với môi trường thông qua các bộ phận
cảm biến và các bộ phận hành động
† Hàm tác tử mô tả các hành động mà tác tử thực hiện
trong các tình huống
† Một tác tử hợp lý sẽ cực đại hóa hiệu quả hoạt động của

† Các chương trình tác tử cài đặt (thực hiện) các hàm tác
tử
† Các mô tả PEAS xác định môi trường công việc
† Các môi trường được phân loại dựa theo các tiêu chí:
Có thể quan sát được? Xác định? Phân đoạn? tĩnh? Rời
rạc? Tác tử đơn lẻ?
† Các kiến trúc tác tử cơ bản: Phản xạ, Phản xạ theo
trạng thái, Dựa trên mục tiêu, Dựa trên lợi ích
Trí tuệ Nhân tạo
Giải quyết vấn đề - Tìm kiếm

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Nội dung
† Tổng quan về Trí tuệ nhân tạo
† Tác tử
† Giải quyết vấn đề
„ Tìm kiếm
„ Thỏa mãn ràng buộc
† Tri thức và Suy diễn
† Học máy
† Giải thuật di truyền
† Lập kế hoạch
Giải quyết vấn đề bằng tìm kiếm
† Giải quyết vấn đề bằng tìm kiếm
„ Tìm chuỗi các hành động cho phép đạt đến
các trạng thái mong muốn
Giải quyết vấn đề bằng tìm kiếm
† Xác định mục tiêu cần đạt đến (goal
formulation)
„ Là một tập hợp của các trạng thái đích
„ Dựa trên: trạng thái hiện tại của môi trường và đánh
giá hiệu quả hành động của tác tử
† Phát biểu bài toán (problem formulation)
† Với một mục tiêu, xác định các hành động và trạng
thái cần xem xét
† Quá trình tìm kiếm (search process)
† Xem xét các chuỗi hành động có thể
† Chọn chuỗi hành động tốt nhất
Giải quyết vấn đề bằng tìm kiếm
† Giải thuật tìm kiếm
„ Đầu vào: một bài toán cần giải quyết
„ Đầu ra: một giải pháp, dưới dạng một chuỗi
các hành động cần thực hiện
Tác tử giải quyết vấn đề bằng tìm
kiếm
Ví dụ: Du lịch ở Rumani
Ví dụ : Du lịch ở Rumani
† Một người du lịch đang trong chuyến đi du lịch ở Rumani
„ Anh ta hiện thời đang Arad
„ Ngày mai, anh ta có chuyến bay khởi hành từ Bucharest
„ Bây giờ, anh ta cần di chuyển (lái xe) từ Arad đến
Bucharest

† Phát biểu mục tiêu:


„ Cần phải có mặt ở Bucharest

† Phát biểu bài toán:


„ Các trạng thái: các thành phố
„ Các hành động: lái xe giữa các thành phố

† Tìm kiếm giải pháp:


„ Chuỗi các thành phố cần đi qua, ví dụ: Arad, Sibiu,
Fagaras, Bucharest
Các kiểu bài toán
† Xác định, có thể quan sát hoàn toàn Æ Bài toán trạng thái
đơn
„ Tác tử biết chính xác trạng thái tiếp theo mà nó sẽ chuyển
qua
„ Giải pháp của bài toán: một chuỗi hành động
† Không quan sát được Æ Bài toán đa trạng thái
„ Tác tử có thể không biết là nó đang ở trạng thái nào
„ Giải pháp của bài toán: một chuỗi hành động
† Không xác định Æ Bài toán có sự kiện ngẫu nhiên
„ Các nhận thức cung cấp các thông tin mới về trạng thái
hiện tại
„ Giải pháp của bài toán: một kế hoạch
„ Thường kết hợp đan xen giữa: tìm kiếm và thực hiện kế
hoạch
† Không biết về không gian trạng thái (không xác định và
không quan sát được ) Æ Bài toàn thăm dò
Ví dụ: Máy hút bụi
† Nếu là bài toán
trạng thái đơn
„ Bắt đầu ở trạng thái
#5

† Giải pháp?
„ [Sang phải, Hút bụi]
Ví dụ: Máy hút bụi
† Nếu là bài toán đa
trạng thái
„ Bắt đầu (có thể) ở
trạng thái
{#1,#2,#3,#4,#5,#6
,#7,#8}
„ Luôn bắt đầu bằng di
chuyển sang phải

† Giải pháp?
„ [Sang phải, Hút bụi,
Sang trái, Hút bụi]
Ví dụ: Máy hút bụi
† Nếu là bài toán có
sự kiện ngẫu nhiên
„ Bắt đầu ở trạng thái
#5
„ Không xác định: Hút
bụi có thể làm bẩn
một cái thảm sạch!
„ Có thể quan sát một
phần: vị trí, mức độ
bẩn ở vị trí hiện thời

† Giải pháp?
„ [Sang phải, if Bẩn
then Hút bụi]
Phát biểu bài toán
† Không gian trạng thái
„ Ví dụ: tất cả các thành phố ở Rumani

† Trạng thái đầu


„ Ví dụ: “đang ở thành phố Arad“
† Các hành động
„ Xác định bởi hàm chuyển trạng thái: S(x) = tập các cặp
<hành động, trạng thái>
† Ví dụ: S(Arad) = {<Arad Æ Zerind, Zerind>, … }
† Kiểm tra mục tiêu
„ Xác định trạng thái hiện tại có phải là trạng thái đích
† Ví dụ: x = “đang ở thành phố Bucharest“
† Chi phí đường đi (giải pháp)
„ Ví dụ: tổng các khoảng cách, số lượng các hành động, …
Không gian trạng thái
† Các bài toán thực tế thường được mô tả phức tạp
„ Không gian trạng thái cần được khái quát (abstracted) để
phục vụ cho việc giải quyết bài toán

† Trạng thái khái quát = Một tập các trạng thái thực tế
† Hành động khái quát = Một kết hợp phức tạp của các
hành động thực tế
„ Ví dụ: Hành động "Arad Æ Zerind" biểu diễn một tập kết
hợp các đường, đường vòng, chỗ nghỉ, …

† Để đảm bảo việc thực hiện quá trình tìm kiếm, bất kỳ
trạng thái thực tế nào cũng phải có thể đạt đến được từ
trạng thái thực tế khác
† Giải pháp khái quát = Một tập các đường đi giải pháp
trong thực tế
Không gian trạng thái
Đồ thị không gian trạng thái
† Các trạng thái
„ Nút
† Các hành động
„ Cung
† Mục tiêu
„ Nút mục đích
† Đường đi và chi phí
„ Chuỗi các cung và giá thành tương ứng
Ví dụ: Máy hút bụi
Ví dụ: Máy hút bụi
† Các trạng thái?
„ Chỗ bẩn và vị trí máy hút bụi
† Các hành động?
„ Sang trái, sang phải, hút bụi, không làm gì
† Kiểm tra mục tiêu?
„ Không còn chỗ (vị trí) nào bẩn
† Chi phí đường đi?
„ 1 (mỗi hành động), 0 (không làm gì cả)
Ví dụ: Puzzle-8
Ví dụ: Puzzle-8
† Các trạng thái?
„ Các vị trí của các ô số
† Các hành động?
„ Di chuyển ô trống sang trái, sang phải,
lên trên, xuống dưới
† Kiểm tra mục tiêu?
„ Đạt trạng thái đích (goal state)
† Chi phí đường đi?
„ 1 cho mỗi di chuyển
Bài tập: 8-Hậu
† Xếp 8 quân Hậu
trên bàn cờ vua sao
cho không quân
Hậu nào có thể tấn
công quân Hậu
khác
„ Các trạng thái?
„ Trạng thái ban đầu?
„ Các hành động?
„ Kiểm tra mục tiêu?
Bài tập: 8-Hậu
† Các trạng thái?
„ Tất cả các sắp xếp của 0-8 quân Hậu trên bàn cờ
† Trạng thái ban đầu?
„ Không quân Hậu nào trên bàn cờ
† Các hành động?
„ Thêm một quân Hậu vào bàn cờ
† Kiểm tra mục tiêu?
„ 8 quân Hậu trên bàn cờ và không thể tấn công nhau

=>68^8 trạng thái


Bài tập: 8-Hậu
† Các trạng thái?
„ K = 0,…, 8 quân Hậu ở trên K cột phía trái
† Trạng thái ban đầu?
„ Không quân Hậu nào trên bàn cờ
† Các hành động?
„ Thêm một quân Hậu vào cột trống đầu tiên phía trái
† Kiểm tra mục tiêu?
„ 8 quân Hậu trên bàn cờ và không thể tấn công nhau

=>2067 trạng thái


Giải thuật tìm kiếm
† Các giải thuật tìm kiếm theo cấu trúc cây
„ Khám phá không gian trạng thái bằng cách sinh ra các
trạng thái kế tiếp của các trạng thái đã khám phá
„ Còn gọi là phương pháp khai triển các trạng thái
Ví dụ: Du lịch ở Rumani
Ví dụ: Du lịch ở Rumani
Ví dụ: Du lịch ở Rumani
Giải thuật tìm kiếm theo cấu trúc cây
Các trạng thái vs. Các nút
† Một trạng thái là một biểu diễn của một hình trạng thực tế
† Một nút của cây là một phần cấu thành nên cấu trúc dữ liệu
của một cây tìm kiếm
„ Một nút chứa các thuộc tính: trạng thái, nút cha, nút con,
hành động, độ sâu, chi phí đường đi g(x)

† Hàm Expand tạo nên các nút mới,


„ Gán giá trị cho các thuộc tính (của nút mới)
„ Sử dụng hàm SuccessorFn để tạo nên các trạng thái tương
ứng với các nút mới đó
Các chiến lược tìm kiếm
† Một chiến lược tìm kiếm được xác định bằng việc chọn
trình tự phát triển các nút
† Các chiến lược tìm kiếm được đánh giá theo các tiêu chí:
„ Tính đầy đủ: Có đảm bảo tìm được một lời giải?
„ Độ phức tạp về thời gian: Số lượng các nút được sinh ra
„ Độ phức tạp về bộ nhớ: Số lượng tối đa các nút được lưu
trong bộ nhớ
„ Tính tối ưu: Có đảm bảo tìm được lời giải có chi phí thấp
nhất?
† Độ phức tạp về thời gian và bộ nhớ được đánh giá bởi:
„ b: hệ số phân nhánh tối đa của cây tìm kiếm
„ d: độ sâu của lời giải có chi phí thấp nhất
„ m: độ sâu tối đa của không gian trạng thái (độ sâu của
cây)
Các chiến lược tìm kiếm cơ bản
† Các chiến lược tìm kiếm cơ bản (uninformed search
strategies) chỉ sử dụng các thông tin chứa trong định
nghĩa của bài toán

„ Tìm kiếm theo chiều rộng (breadth-first search)

„ Tìm kiếm với chi phí cực tiểu (uniform-cost search)

„ Tìm kiếm theo chiều sâu (depth-first search)

„ Tìm kiếm giới hạn độ sâu (depth-limited search)

„ Tìm kiếm sâu dần (iterative deepening search)


Các chiến lược tìm kiếm với tri thức bổ
sung
† Các chiến lược tìm kiếm với tri thức bổ sung
(informed search strategies) sử dụng các tri thức cụ
thể của bài toán → Quá trình tìm kiếm hiệu quả hơn
„ Các giải thuật best-first
† Greedy best-first
† A*, IDA*, SMA*
„ Các giải thuật cục bộ
† Hill-climbing
† Simulated annealing
† Local beam
† Genetic algorithms
Trí tuệ Nhân tạo
Giải quyết vấn đề - Tìm kiếm

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Các chiến lược tìm kiếm cơ bản
† Các chiến lược tìm kiếm cơ bản (uninformed search
strategies) chỉ sử dụng các thông tin chứa trong định
nghĩa của bài toán

„ Tìm kiếm theo chiều rộng (breadth-first search)

„ Tìm kiếm với chi phí cực tiểu (uniform-cost search)

„ Tìm kiếm theo chiều sâu (depth-first search)

„ Tìm kiếm giới hạn độ sâu (depth-limited search)

„ Tìm kiếm sâu dần (iterative deepening search)


Tìm kiếm theo chiều rộng
(Breadth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều
rộng (chiều ngang)
† Cài đặt:
„ fringe là một cấu trúc
kiểu hàng đợi(FIFO –
các nút mới được bổ
sung vào cuối của
fringe)
Tìm kiếm theo chiều rộng
(Breadth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều
rộng (chiều ngang)
† Cài đặt:
„ fringe là một cấu trúc
kiểu hàng đợi(FIFO –
các nút mới được bổ
sung vào cuối của
fringe)
Tìm kiếm theo chiều rộng
(Breadth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều
rộng (chiều ngang)
† Cài đặt:
„ fringe là một cấu trúc
kiểu hàng đợi(FIFO –
các nút mới được bổ
sung vào cuối của
fringe)
Tìm kiếm theo chiều rộng
(Breadth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều
rộng (chiều ngang)
† Cài đặt:
„ fringe là một cấu trúc
kiểu hàng đợi(FIFO –
các nút mới được bổ
sung vào cuối của
fringe)
Tìm kiếm theo chiều rộng
(Breadth-first search)
† Tính đầy đủ?
„ Có (nếu b là hữu hạn)
† Độ phức tạp về thời gian?
„ 1+b+b2+b3+… +bd + b(bd-1) = O(bd+1)
† Độ phức tạp về bộ nhớ?
„ O(bd+1) (lưu tất cả các nút trong bộ nhớ)
† Tính tối ưu?
„ Có (nếu chi phí =1 cho mỗi bước)
† Vấn đề về chi phí bộ nhớ quan trọng hơn vấn
đề về chi phí thời gian
Tìm kiếm với chi phí cực tiểu
(Uniform-cost search)
† Phát triển các nút chưa xét (chưa mở
rộng) có chi phí thấp nhất
† Cài đặt:
„ fringe là một cấu trúc hàng đợi, trong đó các
phần tử được sắp xếp theo chi phí đường đi
† Trở thành phương pháp tìm kiếm theo
chiều rộng, nếu các chi phí ở mỗi bước
(mỗi cạnh của cây tìm kiếm) là như
nhau
Tìm kiếm với chi phí cực tiểu
(Uniform-cost search)
† Tính đầy đủ?
„ Có (nếu chi phí ở mỗi bước ≥ ε)

† Độ phức tạp về thời gian?


„ Phụ thuộc vào tổng số các nút có chi phí ≤ chi phí của
lời giải tối ưu: O(b⎡C*/ ε⎤), trong đó C* là chi phí của lời
giải tối ưu

† Độ phức tạp về bộ nhớ?


„ Phụ thuộc vào tổng số các nút có chi phí ≤ chi phí của
lời giải tối ưu: O(b⎡C*/ ε⎤)

† Tính tối ưu?


„ Có (nếu các nút được xét theo thứ tự tăng dần về chi
phí g(n))
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Phát triển các nút
chưa xét (chưa mở
rộng) theo chiều sâu
† Cài đặt:
„ fringe là một cấu
trúc kiểu ngăn xếp
(LIFO) – các nút
mới được bổ sung
vào đầu của fringe)
Tìm kiếm theo chiều sâu
(Depth-first search)
† Tính đầy đủ?
„ Không – Thất bại (không tìm được lời giải) nếu không
gian trạng thái có độ sâu vô hạn, hoặc nếu không
gian trạng thái chứa các vòng lặp giữa các trạng thái
„ Đề cử: Sửa đổi để tránh việc một trạng thái nào đó bị
lặp lại (bị xét lại) theo một đường đi tìm kiếm
† Đạt tính đầy đủ đối với không gian trạng thái hữu
hạn
† Độ phức tạp về thời gian?
„ O(bm): rất lớn, nếu m lớn hơn nhiều so với d
† Độ phức tạp về bộ nhớ?
„ O(bm) - độ phức tạp tuyến tính
† Tính tối ưu?
„ Không
Tìm kiếm giới hạn độ sâu
(Depth-limited search)
† Sử dụng giới hạn về độ sâu trong quá trình tìm kiếm
„ các nút ở độ sâu không có nút con
Tìm kiếm sâu dần
(Iterative deepening search)
† Tăng dần độ sâu trong quá trình tìm kiếm
„ các nút ở độ sâu không có nút con
Tìm kiếm sâu dần
(Iterative deepening search)
† Độ sâu d = 0
Tìm kiếm sâu dần
(Iterative deepening search)
† Độ sâu d = 1
Tìm kiếm sâu dần
(Iterative deepening search)
† Độ sâu d = 2
Tìm kiếm sâu dần
(Iterative deepening search)
† Độ sâu d = 3
Tìm kiếm sâu dần
(Iterative deepening search)
† Tính đầy đủ?
„ Có
† Độ phức tạp về thời gian?
„ (d+1)b0 + d b1 + (d-1)b2 + … + bd = O(bd)
† Độ phức tạp về bộ nhớ?
„ O(bd)
† Tính tối ưu?
„ Có - nếu chi phí cho mỗi bước (mỗi cạnh của
cây tìm kiếm) = 1
Các chiến lược tìm kiếm cơ bản
Bài tập
† Cho không gian tìm kiếm
„ Trạng thái đầu là số 1
„ Mỗi trạng thái n có hai trạng thái kế tiếp
† 2n
† 2n+1
Trình bày không gian tìm kiếm

† Giả sử trạng thái đích là 11. Liệt kê các trạng thái sẽ


được duyệt bằng các chiến lược
„ TK rộng
„ TK sâu
„ TK giới hạn độ sâu là 3
„ TK sâu dần
Bài tập: Tower of Hanoi
Bài tập: Tower of Hanoi
† Phát biểu bài toán “Tower of Hanoi”
„ Không gian trạng thái, Hành động
„ Hàm kế tiếp
„ Đồ thị không gian trạng thái
† Giải bài toán trong trường hợp 3 đĩa,
bằng các giải thuật
„ TK rộng
„ TK sâu
„ TK sâu dần
Trí tuệ Nhân tạo
Giải quyết vấn đề - Tìm kiếm

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Các chiến lược tìm kiếm với tri thức bổ
sung (Informed search strategies)
† Các chiến lược tìm kiếm với tri thức bổ sung sử
dụng các tri thức cụ thể của bài toán

→ Quá trình tìm kiếm hiệu quả hơn


„ Các giải thuật best-first
† Greedy best-first
† A*, IDA*, SMA*
„ Các giải thuật cục bộ
† Hill-climbing
† Simulated annealing
† Local beam
† Genetic algorithms
Các giải thuật best-first
† Ý tưởng: Sử dụng một hàm đánh giá f(n) cho
mỗi nút của cây tìm kiếm
„ f(n) đánh giá mức độ phù hợp của nút n
„ Ưu tiên xét các nút có mức độ phù hợp cao nhất
trong quá trình tìm kiếm

† Cài đặt giải thuật


„ Sắp thứ tự các nút trong cấu trúc fringe theo trật tự
giảm dần về mức độ phù hợp

† Các trường hợp đặc biệt của giải thuật Best-


first search
„ Greedy best-first
„ A*
Greedy best-first
† Hàm đánh giá f(n) là hàm heuristic h(n)
† Hàm heuristic h(n) đánh giá chi phí để đi từ
nút hiện tại n đến nút đích
„ Ví dụ: Trong bài toán tìm đường đi từ Arad đến
Bucharest, sử dụng: hSLD(n) = Ước lượng khoảng
cách “đường chim bay” từ thành phố hiện tại n đến
Bucharest

† Phương pháp tìm kiếm Greedy best-first search


sẽ xét nút “có vẻ” gần với nút đích nhất
Greedy best-first
Greedy best-first
Greedy best-first
Greedy best-first
Greedy best-first
Greedy best-first
† Tính đầy đủ?
„ Không – Vì có thể bị vướng (tắc) trong các vòng lặp
kiểu như: Iasi Æ Neamt Æ Iasi Æ Neamt Æ…

† Độ phức tạp về thời gian?


„ O(bm)
„ Một hàm heuristic tốt có thể mang lại cải thiện lớn

† Độ phức tạp về bộ nhớ?


„ O(bm) – Lưu giữ tất cả các nút trong bộ nhớ

† Tính tối ưu?


„ Không
A*
† Ý tưởng

„ Tránh việc xét các nhánh tìm kiếm đã xác định


(cho đến thời điểm hiện tại) là có chi phí cao

† Sử dụng hàm đánh giá f(n) = g(n) + h(n)


„ g(n) = chi phí từ nút gốc cho đến nút hiện tại n

„ h(n) = chi phí ước lượng từ nút hiện tại n tới đích

„ f(n) = chi phí tổng thể ước lượng của đường đi qua
nút hiện tại n đến đích
A*
A*
A*
A*
A*
A*
A*
† Tính đầy đủ?
„ Có (trừ khi có rất nhiều các nút có chi phí f
≤ f(G) )
† Độ phức tạp về thời gian?
„ Bậc của hàm mũ
† Độ phức tạp về bộ nhớ?
„ Lưu giữ tất cả các nút trong bộ nhớ
† Tính tối ưu?
„ Có (đối với một ước lượng)
Ước lượng chấp nhận được
† Một ước lượng (heuristic) h(n) được xem là chấp nhận
được nếu đối với mọi nút n: h(n) ≤ h*(n), trong đó h*(n)
là chi phí thật để đi từ nút n đến đích
† Một ước lượng chấp nhận được không bao giờ đánh giá
quá cao đối với chi phí để đi tới đích
„ Thực chất, ước lượng chấp nhận được có xu hướng đánh
giá “lạc quan”
† Ví dụ: Ước lượng hSLD(n) không bao giờ đánh giá quá
cao khoảng cách đường đi thực tế
† Định lý: Nếu h(n) là đánh giá chấp nhận được, thì
phương pháp tìm kiếm A* sử dụng giải thuật TREE-
SEARCH là tối ưu
Ước lượng chấp nhận được
Ví dụ đối với trò chơi ô chữ 8 số:
† h1(n) = số các ô chữ nằm ở sai vị trí
„ h1(S) = 8
† h2(n) = khoảng cách dịch chuyển (←,→,↑,↓) ngắn nhất
để dịch chuyển các ô chữ nằm sai vị trí về vị trí đúng
„ h2(S) = 3+1+ 2+2+ 2+3+ 3+2 = 18
Ước lượng ưu thế
† Ước lượng h2 được gọi là ưu thế hơn ước lượng h1 nếu:
„ h1(n) và h2(n) đều là các ước lượng chấp nhận được
„ h2(n) ≥ h1(n) đối với tất cả các nút n
† Nếu h2 ưu thế hơn ước lượng h1, thì h2 tốt hơn cho quá
trình tìm kiếm
† Ví dụ ô chữ 8 số: Chi phí = Số lượng trung bình của các
nút phải xét:
„ Với độ sâu d =12
† IDS (Tìm kiếm sâu dần): 3.644.035 nút phải xét
† A*(sử dụng ước lượng h1): 227 nút phải xét
† A*(sử dụng ước lượng h2): 73 nút phải xét
„ Với độ sâu d =24
† IDS (Tìm kiếm sâu dần): Quá nhiều nút phải xét
† A*(sử dụng ước lượng h1): 39.135 nút phải xét
† A*(sử dụng ước lượng h2): 1.641 nút phải xét
Các giải thuật cục bộ
† Trong nhiều bài toán tối ưu, đường đi để tới đích không
quan trọng – mà quan trọng là trạng thái đích
„ Trạng thái đích = Lời giải của bài toán
† Không gian trạng thái = Tập hợp các các cấu hình “đầy
đủ”
† Mục tiêu: Tìm một cấu hình thỏa mãn các ràng buộc
„ Ví dụ: Bài toán n quân hậu Trong những bài toán như thế,
chúng ta có thể sử dụng các giải thuật tìm kiếm cục bộ

† Tại mỗi thời điểm, chỉ lưu một trạng thái “hiện thời" duy
nhất – Mục tiêu: cố gắng “cải thiện” trạng thái hiện thời
này đối với một tiêu chí nào đó
Bài toán 4 quân hậu
† Bố trí 4 quân hậu trên một bàn cờ có
kích thước 4x4, sao cho không có 2
quân hậu nào trên cùng hàng, hoặc trên
cùng cột, hoặc trên cùng đường chéo
Hill climbing
Hill climbing
† Nhược điểm: Tùy vào trạng thái đầu, giải thuật tìm
kiếm leo đồi có thể “tắc” ở các điểm cực đại cục bộ
„ Không tìm được lời giải tối ưu toàn cục
Hill climbing
† Ước lượng h = tổng số các cặp quân hậu ăn nhau, hoặc
là trực tiếp hoặc gián tiếp
„ Trong trạng thái trên: h =17
Hill climbing
† Trạng thái bàn cờ trên là một giải pháp tối ưu cục bộ
„ Với ước lượng h =1 (vẫn còn 1 cặp hậu ăn nhau)
Simulated annealing
† Ý tưởng: Thoát khỏi các điểm tối ưu cục bộ bằng cách
cho phép cả các dịch chuyển “tồi” từ trạng thái hiện
thời, nhưng giảm dần tần xuất của các di chuyển tồi này
Simulated annealing
† Nếu giá trị của tham số T (xác định mức độ
giảm tần xuất đối với các di chuyển tồi) giảm
chậm, thì phương pháp tìm kiếm Simulated
Annealing Search sẽ tìm được lời giải tối ưu
toàn cục với xác suất xấp xỉ 1

† Phương pháp tìm kiếm Simulated Annealing


Search rất hay được sử dụng trong các lĩnh vực

„ Thiết kế sơ đồ bảng mạch VLSI

„ Lập lịch bay, …


Local beam
† Ở mỗi thời điểm (trong quá trình tìm kiếm), luôn lưu giữ
k – thay vì chỉ 1 – trạng thái tốt nhất

† Bắt đầu giải thuật: Chọn k trạng thái ngẫu nhiên

† Ở mỗi bước tìm kiếm, sinh ra tất cả các trạng thái kế


tiếp của k trạng thái này

† Nếu một trong số các trạng thái là trạng thái đích, thì
giải thuật kết thúc (thành công); nếu không, thì chọn k
trạng thái tiếp theo tốt nhất (từ tập các trạng thái tiếp
theo), và lặp lại bước trên
Giải thuật di truyền
† Trạng thái tiếp theo được sinh ra bằng cách “kết hợp” 2 trạng
thái trước (cha mẹ)
† Bắt đầu giải thuật: Sinh ra (ngẫu nhiên) k trạng thái
„ Tập k trạng thái này được gọi là một quần thể (population)
† Mỗi trạng thái được biểu diễn bằng một chuỗi ký tự, mà mỗi ký
tự này thuộc vào một tập hữu hạn (thường là {0,1})
† Hàm đánh giá mức độ “phù hợp” của một trạng thái - fitness
function
„ Giá trị đánh giá càng cao = Trạng thái càng tốt (càng phù hợp)

† Sản sinh ra thế hệ (tập hợp) các trạng thái tiếp theo bằng cách
áp dụng các toán tử di chuyền
„ Lựa chọn / tái tạo (selection / replication)
„ Lai ghép (crossover)
„ Đột biến (mutation)
Giải thuật di truyền
Giải thuật di truyền
Trí tuệ Nhân tạo
Thỏa mãn ràng buộc

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Nội dung
† Tổng quan về Trí tuệ nhân tạo
† Tác tử
† Giải quyết vấn đề
„ Tìm kiếm
„ Thỏa mãn ràng buộc
† Tri thức và Suy diễn
† Học máy
† Giải thuật di truyền
† Lập kế hoạch
Bài toán thỏa mãn ràng buộc
Constraints Satisfaction Problems
† Ví dụ TMRB
† Tìm kiếm quay lui trong TMRB
† Cấu trúc bài toán và phân rã bài toán
† Tìm kiếm cục bộ trong TMRB
TMRB
† Bài toán tìm kiếm thông thường
„ Trạng thái là một “hộp đen”
† Bất kỳ cấu trúc dữ liệu nào hỗ trợ trạng thái
đầu/đích và hàm kế tiếp
† TMRB
„ Trạng thái là các biến Xi có giá trị từ
miền Di
„ Kiểm tra mục tiêu là một tập các ràng
buộc trên các biến
Ví dụ: Tô màu bản đồ
† Biến
„ WA, NT, Q, NSW, V ,
SA
† Miền
„ Di = {red,green,blue}
† Ràng buộc
„ Các vùng liền kề nhau
phải khác màu
† WA /= NT
† WA /= SA
† NT /= SA
† …
Ví dụ: Tô màu bản đồ
† Nghiệm là một phép
gán biến thỏa mãn
các ràng buộc
„ WA=red, và
„ NT=green, và
„ Q=red, và
„ NSW=green, và
„ V=red, và
„ SA=blue
Đồ thị ràng buộc
Constraint Graph
† TMRB nhị phân
„ Mỗi ràng buộc
liên hệ tối đa 2
biến
† Đồ thị ràng buộc
„ Nút là biến
„ Cung là ràng
buộc
Các kiểu bài toán TMRB
† Biến rời rạc
„ Miền hữu hạn
† E.g, bài toán SAT
„ Miền vô hạn, e.g., lập lịch làm việc
† biến là bắt đầu/kết thúc ngày cho mỗi công việc
† cần có một ngôn ngữ ràng buộc, e.g., StartJob1 + 5 <=
StartJob3
† ràng buộc tuyến tính giải quyết được, ràng buộc phi
tuyến không thể giải quyết được
† Biến liên tục
„ e.g., thời gian bắt đầu/kết thúc quan sát bằng kính
kính viễn vọng Hubble
„ Ràng buộc tuyến tính giải quyết được bằng
phương pháp quy hoạch tuyến tính
Các kiểu ràng buộc
† Ràng buộc đơn biến
„ e.g., SA /= green
† Ràng buộc nhị phân
„ e.g., SA /= WA
† Ràng buộc đa biến
„ Liên hệ ít nhất 3 biến
† Ràng buộc mềm
„ Ưu tiên, e.g., red tốt hơn green
„ Thông thương được biểu diễn bằng giá thành đối
với mỗi biến
Ví dụ: Mã số học
† Biến TWO
„ F,T,O,U,R,W, X1,X2,X3 + TWO
† Miền FOUR
„ {0,1,2,3,4,5,6,7, 8,9}
† Ràng buộc
„ Alldiff(F,T,O,U,R,W)
„ O+O = R+10*X1
„ X1+W+W= U+10*X2
„ X2+T+T= O+10*X3
„ X3=F
Các bài toán TMRB trong thực tế
† Bài toán phân công
„ E.g., ai dạy lớp nào
† Bài toán lập lịch
„ E.g., lớp học lúc nào, ở đau
† Cấu hình phần cứng
† Spreadsheets
† Lập lịch vận tải
† Lập lịch sản xuất
TMRB bằng tìm kiếm thông thường
† Trạng thái
„ Định nghĩa bằng giá trị của các biến
† Trạng thái đầu
„ Không biến nào được gán giá trị
† Hàm kế tiếp
„ Gán giá trị cho một biến chưa được gán giá trị
mà không tạo ra xung đột
„ Thất bại nếu không tìm được phép gán
† Trạng thái đích
„ Toàn bộ các biến được gán giá trị và không có
xung đột
TMRB bằng tìm kiếm thông thường
† Lời giải luôn xuất hiện ở độ sâu n với
n biến
„ Dùng giải thuật tìm kiếm sâu
† Đường đi không ảnh hưởng đến lời
giải
† Số nút lá
„ n!dn
† Quá lớn
Tìm kiếm quay lui
† Các phép gán biển có thể giao hoán
„ {WA=red,NT =green}
„ {NT =green,WA=red}
† Gán đơn biến
„ Chỉ cần quan tâm đến gán một biến tại mỗi nút
„ dn nút lá
† Tìm kiếm quay lui
„ Tìm kiếm sâu
„ Gán đơn biến được gọi là
† Tìm kiếm quay lui là phương pháp tìm kiếm
cơ bản cho bài toán TMRB
„ Giải được bài toán n-Hậu với n = 25
Tìm kiếm quay lui
Tìm kiếm quay lui
Cải tiến Tìm kiếm quay lui
† Chọn biến để gán như thế nào?
† Gán giá trị nào?
† Có thể biết trước thất bại hay không?
† Có thể tận dụng cấu trúc bài toán hay
không?
Chọn biến để gán
† Minimum remaining values (MRV)
„ Chọn biến còn ít giá trị phù hợp
† Degree heuristic
„ Chọn biến xuất hiện nhiều nhất trong
các ràng buộc
Gán giá trị
† Least constraining value (LCV)
„ Đối với mỗi biến, chọn giá trị ít bị ràng
buộc nhất
„ Giá trị mà loại bỏ ít nhất các giá trị còn
lại của các biến khác
† Lưu trữ các giá trị phù hợp còn lại của
các biến chưa gán
„ Kết thúc quá trình tìm kiếm khi toàn bộ
biến chưa gán không còn giá trị phù hợp
nào
Biết trước thất bại
† Lan truyền ràng buộc

† NT và SA không thể đồng thời blue


Tận dụng cấu trúc bài toán
† Ví dụ có thêm
vùng T
† T và phân còn lại
là 2 bài toán con
độc lập
„ 2 hợp phần
không kết nối
của đồ thị ràng
buộc
Tận dụng cấu trúc bài toán
† Cấu trúc cây

† Định lý
„ Nếu đồ thị ràng buộc không có vòng lặp, thì bài
toán TMRB có thể giải được với độ phức tạp thời
gian là O(nd2)
Tận dụng cấu trúc bài toán
† Giải thuật cho bài toán TMRB cấu trúc
cây
Một số giải thuật khác cho bài toán
TMRB
† Hill-climbing, Simulated Annealing có thể dùng cho
bài toán TMRB
„ Các trạng thái đầy đủ, i.e., toàn bộ biến được gán
† Cho phép các trạng thái với ràng buộc không thể thỏa
mãn
† Hành động gán lại giá trị các biến
† Chọn biến để gán
† Ngẫu nhiên
† Giá trị gán sử dụng heuristic min-conflicts:
„ Chọn giá trị ít xâm phạm các ràng buộc nhất
„ i.e., leo đồi với h(n) = số lần xâm phạm các ràng
buộc
Ví dụ: 4-Hậu
† Trạng thái: 4 hậu ở 4 cột (4*4 = 256 trạng
thái)
† Hành động: di chuyển hậu trong cột
† Muc tiêu: 4 hậu không thể tấn công nhau
† Ước lượng: h(n) = number of attacks
Tổng kết TMRB
† TMRB là một loại bài toán tìm kiếm đặc biệt
„ Trạng thái định nghĩa bởi giá trị của các biến
„ Mục tiêu định nghĩa bởi ràng buộc các biến
† Tìm kiếm quay lui
„ Tìm kiếm sâu + Gán đơn biến
† Thứ tự chọn biến và giá trị ảnh hưởng mạnh đến kết
quả
„ Sử dụng heuristics
† Tận dụng cấu trúc bài toán giúp cải tiến độ phức tạp
thời gian
„ Bài toán cấu trúc cây
† Dùng một số giả thuật tìm kiếm cục bộ cho TMRB
„ Hill-climbing, Simulated Annealing với heuristic Min-
conflicts
Bài tập
† Nếu giải bài toán Mã TWO
số học sử dụng giải + TWO
thuật Tìm kiếm quay
lui cơ bản, có bao FOUR
nhiêu trường hợp
phải xét?
† Giải bài toán bằng
cách kết hợp các
heuristics
„ Lan truyền ràng buộc
„ MRV
„ LCV
Bài tập
1. Chọn biến X3: miền giá trị {0,1}
2. Chọn X3=1: sử dụng lan truyền ràng buộc F/=0
3. F=1
4. Chọn biến X2: X1 và X2 có cùng số giá trị còn lại
5. Chọn X2=0
6. Chọn X1: X1 còn ít giá trị nhất trong các biến còn lại
7. Chọn X1=0
8. Chọn O: O phải là số chẵn nhỏ hơn 5 nên có ít giá trị còn
lại nhất (T+T=O dư 1 và O+O=R+10*0)
9. Chọn O=4
10. R=8
11. T=7
12. Chọn U: U phải là số chẵn nhỏ hơn 9
13. U=6: sử dụng lan truyền ràng buộc
14. W=3
Trí tuệ Nhân tạo
Bài tập lớn

Trần Đức Khánh


Bộ môn HTTT, Viện CNTT&TT
ĐH BKHN
Yêu cầu
† Sinh viên có thể làm bài tập lớn độc lập
hoặc theo nhóm
„ mỗi nhóm tối đa 5 người
† Các nhóm phải nộp chương trình và báo
cáo chung của nhóm khi bảo vệ kết quả
† Hạn nộp đăng ký nhóm và tên đề tài
„ 27/1/2010
† Hạn bảo vệ
„ Trước khi kết thúc môn học
Nội dung báo cáo và bảo vệ
† Tên đề tài
† Phân công công việc
† Mô tả bài toán
† Các thuật toán sử dụng
† Ngôn ngữ sử dụng
† Giao diện
† Kết quả chạy chương trình
† Phụ lục tài liệu tham khảo
Một số quy tắc
† Sinh viên có thể lựa chọn các đề tài này
hoặc tự đề xuất đề tài của mình
„ Các đề tài tự chọn cần được sự chấp nhận của
giáo viên trước khi thực hiện
† Các nhóm phân chia công việc hợp lý
„ Bài tập lớn chung nhưng sẽ đánh giá riêng từng
cá nhân
† Nếu gian lận sẽ bị 0 điểm cho cả môn học
† Các nhóm bảo vệ bài tập lớn theo lịch và
đúng thứ tự đã đăng ký
Một số chủ đề BTL
† Giải quyết vấn đề bằng tìm kiếm
† Tri thức và Suy diễn
† Học máy
† Giải thuật di truyền
† Lập kế hoạch
† …
Giải quyết vấn đề bằng tìm kiếm
† Chương trình trò chơi
„ Chơi cờ vua, cờ tướng, cờ toán Việt
Nam,…
„ Chơi bài poker, …
„ Các trò chơi khác
Tri thức và Suy diễn
† Các phương pháp suy diễn cho Logic
mệnh đề
„ Suy diễn tiến,lùi, SAT
† Các phương pháp suy diễn cho Logic
vị từ loại 1
„ Suy diễn tiến,lùi, Hợp giải, Tableaux,…
Học máy
† Phân loại tài liệu
„ Bayes, SVM
† Thu thập trang Web (Crawling)
„ Reinforcement Learning
† Trích rút thông tin từ các trang Web
„ Inductive Logic Learning
† Nhận dạng ảnh, chữ viết
„ Mạng neuron
Giải thuật di truyền
† Thu thập trang Web (Crawling)
† Bài toán người du lịch
† Các bài toán tối ưu khác
„ Minimum Spanning Tree
„ Vehicule Routing
„ …
Lập kế hoạch
† Các trò chơi
„ The blocks world
„ Các trò chơi khác, …

You might also like