Professional Documents
Culture Documents
Bai Giang TTNTChuong 1&2
Bai Giang TTNTChuong 1&2
1
Nội dung môn học
• Chương 1: Tổng quan về trí tuệ nhân tạo
– Ngành Trí tuệ nhân tạo là gì?
– Mục tiêu nghiên cứu của ngành Trí tuệ nhân
tạo
– Lịch sử hình thành và hiện trạng
– Turing Test
2
• Chương 2: Các phương pháp giải quyết vấn đề
– Không gian trạng thái
– AI : Biểu diễn và tìm kiếm
– Các giải thuật tìm kiếm trên không gian trạng thái
– Depth first search (DFS) - Breath first search (BFS)
– Heuristic là gì?
– Tìm kiếm theo heuristic
– Tìm kiếm Best first search (BFS), Giải thuật A*
– Chiến lược Minimax, Alpha Beta
3
Chương 3. Học có giám sát
3.1. Các khái niệm cơ bản
3.2. Cây quyết định
3.3. Mạng Neuron
3.3.1. Mô hình và kiến trúc mạng neuron
3.3.2. Các thuật toán huấn luyện: Giảm gradient
4
Chương 4. Học không giám sát
4.1. Các khái niệm cơ bản
4.2. Giải thuật K-mean
5
Thực hành &Tài liệu tham khảo
• Thực hành Prolog và CLISP
– Prolog : Các giải thuật tìm kiếm
– CLISP : Biểu diển tri thức
• Tài liệu tham khảo
– Artificial Inteligent
George F. Luget & Cilliam A. Stubblefied
– Giáo trình “Trí tuệ nhân tạo”
KS Nguyễn Đức Cường
– Trí tuệ nhận tạo
Nguyễn Quang Tuấn – Hà nội
6
Chương 1: GIỚI THIỆU
7
Trí Tuệ Nhân Tạo là gì?
• Là một nhánh của khoa học máy tính liên quan đến sự tự
động hóa hành vi thông minh.
• Rich, E. and K. Knight . 1991. Artificial Intelligence. New
York: McGraw-Hill.
“Artificial intelligence (AI) is the study of how to make
computers do things which at the moment, people do
better.”
• George Luger:
“An AI approach problem-solving is one which:
• uses domain-specific knowledge
• to find a good-enough solution
• to a hard problem
• in a reasonable amount of time.”
8
C.1 – Giới thiệu
Trí Tuệ Nhân Tạo - Đặc Điểm
• Sử dụng máy tính vào suy luận trên các ký hiệu, nhận
dạng qua mẫu, học, và các suy luận khác…
• Tập trung vào các vấn đề “khó” không thích hợp với
các lời giải mang tính thuật toán.
• Quan tâm đến các kỹ thuật giải quyết vấn đề sử dụng
các thông tin không chính xác, không đầy đủ, mơ
hồ…
• Cho lời giải ‘đủ tốt’ chứ không phải là lời giải chính
xác hay tối ưu.
• Sử dụng heuristics – “bí quyết”
• Sử dụng tri thức chuyên môn
• …
9
Đối tượng nghiên cứu của AI
• Đối tượng nghiên cứu của ngành AI
AI là ngành nghiên cứu về các hành xử thông minh
(intelligent behaviour) bao gồm: thu thập, lưu trữ tri
thức, suy luận, hoạt động và kỹ năng.
Đối tượng nghiên cứu là các “hành xử thông minh” chứ
không phải là “sự thông minh”.
10
Sự Thông Minh
• Thông minh hay Hành xử thông minh là gì?
– Hành xử thông minh: là các hoạt động của một đối
tượng như là kết quả của một quá trình thu thập, xử lý
và điều khiển theo những tri thức đã có hay mới phát
sinh (thường cho kết quả tốt theo mong đợi so với các
hành xử thông thường) là biểu hiện cụ thể, cảm nhận
được của “Sự thông minh”
– Khái niệm về tính thông minh của một đối tượng thường
biểu hiện qua các hoạt động:
• Sự hiểu biết và nhận thức được tri thức
• Sự lý luận tạo ra tri thức mới dựa trên tri thức đã có
• Hành động theo kết quả của các lý luận
• Kỹ năng (Skill) TRI
11
THỨC ???
Tri thức (Knowledge)
• Tri thức là những thông tin chứa đựng 2 thành phần
– Các khái niệm:
• Các khái niệm cơ bản: là các khái niệm mang tính quy ước
• Các khái niệm phát triển: Được hình thành từ các khác niệm
cơ bản thành các khái niệm phức hợp phức tạp hơn.
– Các phương pháp nhận thức:
• Các qui luật, các thủ tục
• Phương pháp suy diễn, lý luận,..
Tri thức là điều kiện tiên quyết của các hành xử thông minh hay “Sự
thông minh”
Tri thức có được qua sự thu thập tri thức và sản sinh tri thức
Quá trình thu thập và sản sinh tri thức là hai quá trình song song và
nối tiếp với nhau – không bao giờ chấm dứt trong một thực thể
“Thông Minh”
12
Tri thức – Thu thập và sản sinh
• Thu thập tri thức:
– Tri thức được thu thập từ thông tin, là kết quả của một quá trình
thu nhận dữ liệu, xử lý và lưu trữ. Thông thường quá trình thu
thập tri thức gồm các bước sau:
• Xác định lĩnh vực/phạm vi tri thức cần quan tâm
• Thu thập dữ liệu liên quan dưới dạng các trường hợp cụ thể.
• Hệ thống hóa, rút ra những thông tin tổng quát, đại diện cho
các trường hợp đã biết – Tổng quát hóa.
• Xem xét và giữ lại những thông tin liên quan đến vấn đề cần
quan tâm , ta có các tri thức về vấn đề đó.
• Sản sinh tri thức:
– Tri thức sau khi được thu thập sẽ được đưa vào mạng tri thức đã
có.
– Trên cơ sở đó thực hiện các liên kết, suy diễn, kiểm chứng để sản
sinh ra các tri thức mới.
13
Tri thức – Tri thức siêu cấp
• “Trí thức siêu cấp” (meta knowledge) hay “Tri thức về Tri
thức”
Là các tri thức dùng để:
– Đánh giá tri thức khác
– Đánh giá kết quả của quá trình suy diễn
– Kiểm chứng các tri thức mới
14
Hành xử thông minh – Kết luận
• Hành xử thông minh không đơn thuần là các hành động như là kết
quả của quá trình thu thập tri thức và suy luận trên tri thức.
• Hành xử thông minh còn bao hàm
– Sự tương tác với môi trường để nhận các phản hồi
– Sự tiếp nhận các phản hồi để điều chỉnh hành động - Skill
– Sự tiếp nhận các phản hồi để hiệu chỉnh và cập nhật tri thức
• Tính chất thông minh của một đối tượng là sự tổng hợp của cả 3
yếu tố: thu thập tri thức, suy luận và hành xử của đối tượng trên tri
thức thu thập được. Chúng hòa quyện vào nhau thành một thể
thống nhất “ Sự Thông Minh”
• Không thể đánh giá riêng lẽ bất kỳ một khía cạnh nào để nói về tính
thông minh.
THÔNG MINH CẦN TRI THỨC
15
Mục tiêu nghiên cứu của ngành AI
16
Mục tiêu của AI (tt)
• Cụ thể:
– Kỹ thuật: xây dựng các máy móc có tính thông minh nhằm
đáp ứng tốt hơn nhu cầu của con người.
– Khoa học: xây dựng và phát triển các khái niệm, thuật ngữ,
phương pháp để hiểu được các hành xử thông minh của
sinh vật.
– Đối tượng thường được chú trọng phát triển là máy tính
17
Turing Test: Thử tính thông minh
Có các kết quả khá tốt và vẫn còn phát triển đến ngày
nay (Bùng nổ tổ hợp mn , m>=10)
21
Lịch sử phát triển của AI- Giai đoạn viễn vông
• Giai đoạn viễn vông (1965 – 1975)
– Đây là giai đoạn phát triển với tham vọng làm cho máy
hiểu được con người qua ngôn ngữ tự nhiên.
– Các công trình nghiên cứu tập trung vào việc biểu diển
tri thức và phương thức giao tiếp giữa người & máy
bằng ngôn ngữ tự nhiên.
– Kết quả không mấy khả quan nhưng cũng tìm ra được
các phương thức biểu diễn tri thức vẫn còn được dùng
đến ngày nay tuy chưa thật tốt như:
– Semantic Network (mạng ngữ nghĩa)
– Conceptial graph (đồ thị khái niệm)
– Frame (khung) Vấp phải trở ngại về năng
– Script (kịch bản) lực của máy tính
22
Lịch sử phát triển của AI- Giai đoạn hiện đại
• Giai đoạn hiện đại (từ 1975)
– Xác định lại mục tiêu mang tính thực tiễn hơn của AI là:
• Tìm ra lời giải tốt nhất trong khoảng thời gian chấp
nhận được.
• Không cầu toàn tìm ra lời giải tối ưu
– Tinh thần HEURISTIC ra đời và được áp dụng mạnh
mẽ để khắc phục bùng nổ tổ hợp.
– Khẳng định vai trò của tri thức đồng thời xác định 2 trở
ngại lớn là biểu diển tri thức và bùng nổ tổ hợp.
– Nêu cao vai trò của Heuristic nhưng cũng khẳng định
tính khó khăn trong đánh giá heuristic.
Phát triển ứng dụng mạnh mẽ: Hệ chuyên
Better than gia, Hệ chuẩn đoán,..
nothing 23
Các lĩnh vực ứng dụng
Game Playing: Tìm kiếm / Heuristic
Automatic reasoning & Theorem proving: Tìm kiếm /
Heuristic
Expert System: là hướng phát triển mạnh mẽ nhất và có
giá trị ứng dụng cao nhất.
Planning & Robotic: các hệ thống dự báo, tự động hóa
Machine learning: Trang bị khả năng học tập để giải quyết
vấn đề kho tri thức:
Supervised : Kiểm soát được tri thức học được. Không
tìm ra cái mới.
UnSupervised:Tự học, không kiểm soát. Có thể tạo ra
tri thức mới nhưng cũng nguy hiểm vì có thể học những
điều không mong muốn.
24
Các lĩnh vực ứng dụng (tt)
Natural Language Understanding & Semantic modelling:
Không được phát triển mạnh do mức độ phức tạp của
bài toán cả về tri thức & khả năng suy luận.
Modeling Human perfromance: Nghiên cứu cơ chế tổ
chức trí tuệ của con người để áp dụng cho máy.
Language and Environment for AI:Phát triển công cụ và
môi trường để xây dựng các ứng dụng AI.
Neurol network / Parallel Distributed processing: giải
quyết vấn đề năng lực tính toán và tốc độ tính toán bằng
kỹ thuật song song và mô phỏng mạng thần kinh của
con người.
25
Mô hình phát triển ứng dụng AI
• Mô hình ứng dụng Ai hiện tại:
AI = Presentation & Search
26
Chương 2: CÁC PHƯƠNG PHÁP
GIẢI QUYẾT VẤN ĐỀ
27
Tại sao phải tìm kiếm?
• Tìm kiếm cái gì?
• Biểu diễn và tìm kiếm là kỹ thuật phổ biến giải các bài
toán trong lĩnh vực AI
• Các vấn đề khó khăn trong tìm kiếm với các bài toán AI
– Đặc tả vấn đề phức tạp
– Không gian tìm kiếm lớn
– Đặc tính đối tượng tìm kiếm thay đổi
– Đáp ứng thời gian thực
– Meta knowledge và kết quả “tối ưu”
• Khó khăn về kỹ thuật
28
Cấu trúc chung của bài toán
• Không gian bài toán là một đồ thị
• Giải bài toán là tìm đường đi trong đồ thị gồm một chuỗi các
đỉnh T0,T1, T2, …,Tn sao cho tổng chi phí là nhỏ nhất
cos t (T
n
1 i 1 , Ti )
1
Ví dụ: Bài toán người giao hàng
5 1
5 3 2
7 2
3 2 4 4
1
4 3 29
• “Bài toán Konigsberg”
• Nhà toán học người Áo Leonhard Euler đã phát minh ra lý thuyết đồ
thị để giải quyết “bài toán các cây cầu của Konigsberg”. Thành phố
Konigsberg nằm trên cả hai bờ và hai hòn đảo của một con sông.
Người ta nối các đảo và hai bờ sông với nhau bằng bảy chiếc cầu
như hình 3.1
• Hình 3.1 - Biểu diễn không gian trạng thái hệ thống cầu thành phố
Konigsberg 30
• “Bài toán Konigsberg”
• Bài toán Konigsberg đặt câu hỏi
là liệu có thể đi khắp thành phố
mà chỉ ngang qua mỗi cây cầu
một lần hay không? Mặc dù
những người dân ở đây không ai
tìm được lối đi nào như vậy,
nhưng họ vẫn nghi ngờ là có thể,
đồng thời cũng không ai chứng
minh được là không có khả năng.
Nhờ phát minh dạng lý thuyết đồ Hình 3.2 - Đồ thị của hệ
thị, Euler đã tạo ra cách biểu diễn thống cầu Konigsberg
phương án lựa chọn cho bản đồ
thành phố như trên hình 3.2
31
Lý thuyết đồ thị - Review
• Đồ thị: là một cấu trúc bao gồm:
– Tập các nút N1, N2,… Nn,.. Không hạn chế
– Tập các cung nối các cặp nút, có thể có nhiều
cung trên một cặp nút
A B A
B
C
E D
D C
E
Nút: {A,B,C,D,E}
Cung: {(a,d), (a,b), (a,c), (b,c), (c,d), (c,e), (d,e) }
32
Đặc tính đồ thị
• Đồ thị có hướng: là đồ thị với các cung có định
hướng, nghĩa là cặp nút có quan hệ thứ tự trước sau
theo từng cung. Cung (Ni,Nj) có hướng từ Ni đến Nj,
Khi đó Ni là nút cha và Nj là nút con.
• Nút lá: là nút không có nút con.
• Path: là chuỗi có thứ tự các nút mà 2 nút kế tiếp nhau
tồn tại một cung.
• Đồ thị có gốc: Trên đồ thị tồn tại nút X sao cho tất cả
các path đều đi qua nút đó. X là gốc - Root
• Vòng : là một path đi qua nút nhiều hơn một lần
• Cây: là graph mà không có path vòng
• Hai nút nối nhau :nếu có một path đi qua 2 nút đó
33
Không gian trạng thái
• Định nghĩa:Không gian trạng thái là một hệ thống
gồm 4 thành phần [N,A,S,GD]. Trong đó:
– N là tập nút của Graph. Mỗi nút là một trạng thái
của quá trình giải quyết vấn đề
– A: Tập các cung nối giữa các nút N. Mỗi cung là
một bước trong giải quyết vấn đề. Cung có thể có
hướng
– S: Tập các trạng thái bắt đầu. S khác rỗng.
– GD: Tập các trạng thái đích. GD Không rỗng.
• Solution path: Là một path đi từ một nút bắt đầu Si
đến một nút kết thúc GDj .
• Mục tiêu của các giải thuật tìm kiếm là tìm ra một
solution path và/hay solution path tốt nhất. 34
• Trò chơi tic-tac-toe
40
Data-Driven vs Goal-Driven
• Cả hai chiến lược cùng làm việc trên không gian trạng
thái nhưng thứ tự và số các sự kiện duyệt qua khác
nhau. Do cơ chế sinh ra các state khác nhau.
• Quyết định chọn lựa chiến lược tùy thuộc vào:
– Độ phức tạp của các luật
– Độ phân chia của không gian trạng thái
– Sự hiện hữu của dữ liệu
• Goal đã có hay chưa, nhiều hay ít
• Goal được đặc tả như thế nào: state cụ thể hay
mô tả mang tính đặc tính
• Cơ sở thông tin để chọn lựa chiến lược hợp lý là một
META KNOWLEDGE
41
Data-Driven vs Goal-Driven – Ví dụ
• Ba và Nam là bà con. Ba hơn nam 250 tuổi. Tìm mối quan
hệ giữa Ba và Nam.
• Trong bài toán này:
– Không gian trạng thái là cây phả hệ
– Mục tiêu tìm kiếm là path nối Ba với Nam
• Giả sử mỗi thế hệ cách nhau 25 năm, như vậy Ba cách nam
10 thế hệ
• Data-Driven-Search: Tìm từ Ba đến Nam.
nếu trung bình mỗi thế hệ có X con thì số trạng thái cần xét
là X10
• Goal-Driven search: Tìm từ Nam đến Ba
mỗi người chỉ có 1 cha và 1 mẹ. Số trạng thai cần xét là 210.
Như vậy Goal-Driven sẽ tốt hơn Data driven nếu số con > 2
42
Graph Search
• Giải thuật graph search phải có khả năng tìm kiếm ra
tất cả các path có thể có để tìm được nghiệm : PATH
từ trạng thái khởi đầu đến goal.
• Graph search thực hiện bằng cách “lần” theo các
nhánh của graph. Từ một trạng thái, sinh ra các trạng
thái con, chọn một trạng thái con, xem đó là trạng thái
xét kế tiếp. Lặp lại cho đến khi tìm thấy một trạng thái
đích.
• “Lần” theo các trạng thái Đi vào ngõ cụt ?
• Khi gặp nhánh không đi tiếp được, giải thuật phải có
khả năng quay lui lại trạng thái trước đó để đi sang
nhánh khác: BACK TRACKING. Do đó giải thuật còn
có tên là BACKTRACK search.
43
PROCEDURE backtrack;
BEGIN
SL:=[start]; NLS:=[start]; DE:=[ ]; CS:=start;
WHILE (NSL<>[ ]) DO
BEGIN
IF CS = Goal THEN return(SL);
IF CS has no children (Except node in DE, SL and NSL) THEN
WHILE (SL<>[ ] AND CS=First element of SL) DO
BEGIN
add CS to DE
remove first element from SL;
remove first element from NSL;
Giải
CS:= first element of NSL; thuật
END; Graph
add CS to SL;
search
ELSE
add children of CS (Except node in DE,SL and NSL) to NSL
CS:= first element of NSL;
add CS to SL;
ENDIF;
END
Return FAIL;
END; 44
Graph Search Giải thuật chi tiết (tt)
• Trong đó:
– SL (State list): chứa danh sách các trạng thái trên
path hiện đang xét. Nếu tìm ra goal thì SL chính là
nghiệm.
– NSL (New State List): chứa danh sách các trạng
thái đang đợi xét.
– DE (Dead End): chứa các trạng thái mà con cháu
của chúng không chứa đích.
– CS (Current State): chứa trạng thái đang xét.
• Hướng phát triển của quá trình search tùy theo cơ cấu
tổ chức của NSL: FIFO, FILO hay Evaluated.
45
Giải thuật chi tiết (tt) – Ví dụ
• Xét graph sau:
A
D
B C
G
E F Laà C SL NSL DE
n S
laëp
0 A [A] [A] []
H I J 1 B [B A] [B C D A] []
2 E [E B A] [E F B C D A] []
3 H [H E B A] [H I E F B C D A] []
4 I [I E B A] [I E F B C D A] [H]
5 F [F B A] [F B C D A] [E I H]
6 J [J F B A] [J F B C D A] [E I H]
7 C [C A] [C D A] [B F J E I H]
8 G [G C A] [G C D A] [B F J E I46
H]
BREATH FIRST SEARCH
Procedure Breath_first_search;
Là graph search với
BEGIN
các nút “anh em” của
open :=[start]; close:=[]; nút hiện thời được xem
WHILE (open <>[]) do xét trước các nút “con
BEGIN cháu”
remove X which is the leftmost of Open;
IF (X=goal) THEN return (Success)
ELSE BEGIN
generate children of X; Put X to close;
eleminate children of X which is in Open or Close;
Put remain children on RIGHT end of open;
END;
END;
Return (FAIL);
END;
47
Breath First Search – Ví dụ
A • Với đồ thị đã có trong ví
D
dụ graph search.Với
B C
Breath first search ta có
G quá trình như sau:
E F Laàn X Open Close
laëp
0 [A] []
H I J 1 A [B C D ] [A]
2 B [C D E F] [A B]
3 C [D E F G] [A B C ]
4 D [E F G] [A B C D]
5 E [F G H I] [A B C D E]
6 F [G H I J] [A B C D E F]
7 G [H I J] [A B C D E F]
48
DEPTH FIRST SEARCH
Procedure depth_first_search;
Begin
Là graph search với
open :=[start]; close:=[];
các nút “con cháu” của
While (open <>[]) do
nút hiện thời được
begin xem xét trước các nút
remove X which is the leftmost of Open; “anh em”.
If (X=goal) the return (Success)
else begin
generate children of X; Put X to close;
eleminate children of X which is in Open or Close;
Put remain children on LEFT end of open;
End;
End;
Return (FAIL);
End;
49
Depth First Search – Ví dụ
A
D
• Với đồ thị đã có trong ví dụ graph
B C search.Với Depth First Search ta có
G quá trình như sau:
E F Laàn X Open Close
laëp
0 [A] []
H I J 1 A [B C D ] [A]
2 B [E F C D] [A B]
3 E [H I F C D] [A B E ]
4 H [I F C D] [A B E H]
5 I [F C D] [A B E H I]
6 F [J C D] [A B E H I F]
7 J [C D] [A B E H I F J]
8 C [G D] [A B E H I F 50
J
9 G C]
Breath First vs Depth First
51
Depth first search có giới hạn
2 3
4 5 6 7 8
9 10 11 12
13 14 15 16 17
B C D
E F G H I J
K L M N O P Q N
S T U
1/ Graph search
2/ Tìm kiếm rộng (BrFS)
3/ Tìm kiếm sâu (DFS)
4/ Tìm kiếm sâu với độ sâu là 3 54
CS SL NSL DE
A A A
B BA BCDA
E EBA EFBCDA
K KEBA KLEFBCDA
S SKEBA SKLEFBCDA
L LEBA LEFBCDA KS
T TLEBA TLEFBCDA T
F FBA FBCDA EL
M MFBA MFBCDA
C CS CDA BFM
G GCS GHCDA
N NGCS NGHCDA
H HCS HCDA GN
O OHCS OHCDA
D DS DA CHO
I IDS IJDA
P PIDS PQIJDA 55
Wallace và gromit vừa kết thúc kỳ nghỉ hè trên mặt trăng và sắp quay về trái đất với con tàu phản lực (tại
vị trí G của hình dưới). Một robot địa phương muốn cùng đi theo họ, nhưng phải gấp rút đến tàu phản lực
đúng giờ từ vị trí S hình bên dưới. Nó phải tìm đường đi qua các tòa nhà. Việc tìm đường cũng phải khôn
khéo để tránh các đèn giao thông, do đèn giao thông làm nó chậm lại nếu nó đi thẳng hay rẽ trái (rẽ phải
không làm nó chậm lại). Có 3 đèn đặt quanh 2 tòa nhà. (Các tòa nhà được chỉ định bằng các hình chữ
nhật). Các đèn giao thông đặt tại các giao lộ A, B, C (được chỉ định bằng ký tự *)
Khoảng các các đoạn đường được chỉ ra trên sơ đồ. Các con đường là đường một chiều theo chiều mũi
tên.
Giả định rằng ứng với mỗi đèn giao thông:
- đi thẳng mất thời gian tương đương với đi một đoạn đường với độ dài 1. (nó không may mắn vì luôn
luôn phải chờ một chu kỳ đèn)
- rẽ trái mất thời gian tương đương với đi một đoạn đường với độ dài 2. (Hiển nhiên nó phải chờ đến đèn
xanh rồi đến đường trống)
- rẽ phải không mất thêm thời gian.
Mục đích tìm con đường ngắn nhất để đến mục tiêu.
a/ Vẽ cây tìm kiếm theo thứ tự alphabê từ trái sang phải.
b/ Liệt kê thứ tự các node được duyệt theo DFS
c/ Liệt kê thứ tự các node được duyệt theo BrFS
B* 1 F 2 D 3 G
2
1
2
A* 2 C* 1 E 56
Bài tập
Cho hai bình đựng nước, một bình có dung tích 4 lít (bình A) và một
bình có dung tích 3 lít (bình B). Cả hai bình không có dấu dung tích.
Các thao tác có thể thực hiện là:
- dùng vòi nước làm đầy nước vào bình A
- dùng vòi nước làm đầy nước vào bình B
- đổ nước từ bình A sang bình B.
- đổ nước từ bình B sang bình A.
- đổ bỏ nước trong bình A
- đổ bỏ nước trong bình B
Hãy xác định thứ tự các thao tác thực hiện, để từ hai bình rỗng tạo
thành một bình chứa đúng 2 lít nước.
57
HEURISTIC
58
Thuật giải Heuristic thể hiện cách giải bài toán với
các đặc tính sau:
– Tìm lời giải tốt
– Thời gian giải chấp nhận được
– Thuật giải tự nhiên gần gũi với cách suy nghĩ và hành
động của con người.
Các nguyên lý để xây dựng thuật giải Heuristic
- Nguyên lý vét cạn thông minh: là dựa vào cách tìm
đặc biệt để tìm lời giải.
- Nguyên lý tham lam (greedy): lấy tiêu chuẩn tối ưu
của bài toán (toàn cục) làm tiêu chuẩn của từng bước
giải (cục bộ) để tìm lời giải
- Nguyên lý thứ tự: thực hiện hành động dựa trên một
thứ tự hợp lý để tìm lời giải.
59
Ví dụ về cách giải theo nguyên lý tham lam (greedy)
Bài tóan:
Hãy tìm một hành trình cho một người giao hàng đi qua n đỉểm khác nhau, mỗi điểm
đi qua một lần và trở về điểm xuất phát sao cho tổng chiều dài đọan đường cần đi là
ngắn nhất (giả sử rằng có con đường nối trực tiếp giữa hai điểm bất kỳ)
1
5 7 2 1
5 4 3 2
5 1
4 3 4
5 3 2
4 5 3
7 2
3 2
3 2 4 4
4 3
1 4
4 3
7
T3=8
M1
T2=5 T1=2
• Sắp xếp các công việc theo thứ tự
giảm dần về thời gian
M2
61
Heuristic
• Heuristic là gì?
– Là một ước lượng về khả năng dẫn đến lời giải
– Heuristic là những tri thức được rút tỉa từ những kinh
nghiệm, “trực giác” của con người.
– Heuristic có thể là những tri thức “đúng” hay “sai”.
– Heuristic là những meta knowledge và “thường đúng”.
• Heuristic dùng để làm gì?
Trong những bài toán tìm kiếm trên không gian trạng thái, có
2 trường hợp cần đến heuristic:
1. Vấn đề có thể không có nghiệm chính xác do các mệnh
đề không phát biểu chặt chẽ hay thiếu dữ liệu để khẳng
định kết quả.
2. Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để
tìm ra nghiệm là quá lớn (hệ quả của bùng nỗ tổ hợp)
Heuristic giúp tìm kiếm đạt kết quả với chi phí thấp hơn
62
Heuristic (tt)
• Heuristic dùng như thế nào trong SSS?
– Tìm kiếm trên không gian trạng thái theo chiều nào? Sâu
hay rộng?
– Tìm theo Heuristic : Heuristic định hướng quá trình tìm
kiếm theo hướng mà “nó” cho rằng khả năng đạt tới
nghiệm là cao nhất. Không “sâu” cũng không “rộng”
• Kết quả của tìm kiếm với Heuristic
– Việc tìm kiếm theo định hướng của heuristic có kết quả tốt
hay xấu tùy theo heuristic “đúng” hay “sai”.
– Heuristic có khả năng bỏ xót nghiệm
– Heuristic càng tốt càng dẫn đến kết quả nhanh và tốt.
Làm sao tìm được Heuristic tốt???
63
• TÌM KIẾM LEO ĐỒI
– Leo đồi đơn giản
Tìm kiếm theo Heuristic
– Leo đồi dốc đứng
Procedure leo đồi đơn giản; Procedure leo dốc đứng;
Begin Begin
If (start = goal) Then return success If (start = goal) Then return success
Else Else
CS := start CS := start
While (CS has other children) While (CS has children)
BETTER := other children THEBEST := The best of children
If (BETTER = Goal) Return success If (THEBEST = Goal) Return success
If (BETTER better than CS) Then If (THEBEST better than CS)
CS := BETTER; CS := THEBEST;
EndIf EndIf
EndWhile EndWhile
Return (fail); Return (fail);
EndIf EndIf
End; End;
- Leo đồi dốc đứng đi mỗi bước lâu hơn leo đồi đơn giản
- Leo đồi dốc đứng đến kết quả nhanh hơn leo đồi đơn giản
- Cả hai phương pháp leo đồi đều bị kẹt khi gặp điểm cực đại địa phương 64
Bài toán xếp khối:
Cho một cột gồm các khối xếp chồng lên nhau như hình và các thao tác chuyển
khối:
- Lấy một khối ở đỉnh một cột bất kỳ và đặt nó lên một chỗ trống tạo thành một
cột mới. Chỉ cho phép tạo ra tối đa 2 cột mới.
- Lấy một khối ở đỉnh một cột và đặt nó lên đỉnh một cột khác.
Hãy xác định số thao tác ít nhất để biến đổi cột cho thành cột kết quả.
Giải:
Cách 1: Ứng với mỗi trạng thái, giá trị Heuristic được tính như sau: Cộng 1 điểm
cho mỗi khối ở vị trí đúng so với trạng thái đích và trừ một điểm cho mỗi khối đặt
ở vị trí sai
Start Goal
A C
B B
C A
65
A
B
C
h=-1+1-1=-1
B
C A C A B
h=-1+1+1=1 h=-1+1-1=-1
66
A Cách 2: Ứng với mỗi trạng
ha=-1+1-1=-1
hb=+1-1=0 B thái, giá trị Heuristic được tính
hc=-1=-1 C như sau: Cộng 1 điểm cho
h=ha+hb+hc=-2 h=-2
mỗi khối ở vị trí đúng so với
trạng thái đích và trừ một
điểm cho mỗi khối đặt ở vị trí
Phương pháp sai. Đối với khối phụ trợ (khối
ha=+1
leo đồi không bị hb=+1-1=0 B nằm bên dưới khối hiện tại)
kẹt do hàm hc=-1 C A
đúng cộng 1 điểm ngược lại
h=ha+hb+hc=0
heuristic tốt hơn h=0
trừ 1 điểm
ha=+1 A
ha=+1
hb=+1+1=+2 B hb=-1 B
hc=-1 C A hc=-1 C A B C
h=ha+hb+hc=2 h=ha+hb+hc=-1
h=2 h=-1 h=-2
C
B B
A C A B C A
h=6 h=-1 h=0
67
Procedure Best_First_Search;
Begin
open:=[start]; close:=[];
While (open<>[]) Do
Begin
Lấy phần tử đầu tiên X khỏi Open
If X là goal then return path từ start đến X
sinh ra các nút con của X;
For mỗi nút con Y của X Do
Case Y không có trong open hay close:
gán giá trị heuristic cho Y;
đưa Y vào open
Case Y đã có trong Open:
if đến được Y bằng một path ngắn hơn then gán path ngắn hơn này cho Y trên Open
Case Y đã có trong close:
if đến được Y bằng một path ngắn hơn then
xóa Y khỏi danh sách Close;
thêm Y vào danh sách Open;
EndIf;
EndFor
Đưa X vào close;
Xếp thứ tự các trạng thái trên Open theo giá trị Heuristic
EndWhile
return failure; 68
EndProc;
Best First Search (tt)
• Best First search vs Depth First & Breath First
– Best First search tương tự như Depth First & Breath First
nhưng phần tử được xét tiếp theo là phần tử có giá trị
heuristic tốt nhất.
– Cần có một hàm đánh giá các trạng thái để xác định giá trị
heuristic cho các trạng thái.
– Không gian trạng thái vẫn không thay đổi về “toàn cục“ tuy
nhiên thường Heuristic search có không gian trạng thái
làm việc nhỏ hơn Depth First và Breath First. Tại sao??
70
Hàm lượng giá Heuristic – Ví dụ
• Xét bài toán 8 2 8 3
pussle với goal là: 1 6 4
7 5
5 6 0
1 2 3
8 4
2 8 3
7 6 5
1 4
3 4 0
7 6 5
Heuristic 1: Tổng số
miếng sai vị trí
2 8 3
Heuristic 2: Tổng khoảng
cách sai vị trí của từng
1 6 4 5 6 0
7 5
miếng.
Việc chọn lựa hàm Heuristic là khó khăn và có
Heuristic 3: Số cặp hoán
ý nghĩa quyết định đối với tốc độ của giải thuật
đổi vị trí nhân cho 2
71
Hàm lượng giá Heuristic – Cấu trúc
• Xét lại hoạt động của giải thuật Best First Search:
– Khi có 2 nút cùng có giá trị kỳ vọng đạt đến mục tiêu bằng
nhau thì nút có path từ nút bắt đầu đến nút đó ngắn hơn
sẽ được chọn trước như vậy nút này có giá trị Heuristic tốt
hơn.
– Hay nói cách khác hàm lượng giá Heuristic cho nút gần
start hơn là tốt hơn nếu kỳ vọng đến goal là bằng nhau.
– Vậy chọn nút nào nếu kỳ vọng của 2 nút khác nhau? Nút
kỳ vọng tốt hơn nhưng xa start hay nút kỳ vọng xấu hơn
nhưng gần root
• Hàm lượng giá bao gồm cả 2 và có cấu trúc:
F(n) := G(n) + H(n)
G(n): phí tổn thực từ root đến n
H(n): phí tổn ước luợng heuristic từ n đến
goal.
72
Ví dụ – Best first search
• Xét ví dụ là bài toán 8 puzzle với:
2 8 3 1 2 3
1 6 4 8 4
7 5 7 6 5
Bắt đầu Mục tiêu
Ta có hoạt động của giải thuật Best First search trên như hình sau:
73
CS OPEN
Ví dụ – 283
104
283
164
283
164
203
184
283
140
283
164
283
014
Best first
765 750 075 765 765 705 765
1+3 1+5 1+5 2+3 2+4 2+4 2+3
search (tt)
203 283 283 283 283 230 283 023
184 164 164 140 014 184 104 184
765 750 075 765 765 765 765 765
2+3 1+5 1+5 2+4 2+3 3+4 3+3 3+2
123 283 283 283 230 083 283 023 123 123
084 164 164 140 184 214 714 184 804 784
765 750 075 765 765 765 065 765 765 065
4+1 1+5 1+5 2+4 3+4 3+3 2+4 5+2 5+0 5+2
Ví dụ –
Best first 283
104
283
164
283
164
search (tt)
765 750 075
203 123
184 084
765 765
77
Chiến lược minimax
• Giải thuật tìm kiếm Heuristic với các hàm heuristic chỉ thích
hợp cho các bài toán không có tính đối kháng. Như các trò
chơi chỉ có một người chơi: Puzzle, tìm lối ra mê cung, bài
toán n quân hậu,…
• Các trò chơi có tính đối kháng cao, thường là các trò chơi 2
người chơi như: tic tac toa, caro, cờ quốc tế,… giải thuật trên
không có tác dụng vì: Đối phương không bao giờ đi theo con
đường cho ta có thể đi đến goal
• Cần phải có một giải thuật khác phù hợp hơn.
Chiến lược MINIMAX
• Chiến lược Minimax (được thể hiện bằng giải thuật minimax)
dựa trên 2 giả thiết sau:
– Cả 2 đối thủ có cùng kiến thức như nhau về không gian
trạng thái của trò chơi
– Cả 2 đối thủ có cùng mức cố gắng thắng như nhau 78
Giải thuật minimax
• Chiến lược Minimax
Hai đối thủ trong trò chơi có tên là MAX và MIN
– Max: biểu diễn cho mục đích của đối thủ này là làm lớn tối
đa lợi thế của mình
– Min: biểu diễn cho mục đích của đối thủ này là làm nhỏ tối
đa lợi thế của đối phương.
Trên cây tìm kiếm sẽ phân lớp thành các lớp Max và Min.
Với một node n bất kỳ,
– Nếu nó thuộc lớp Max thì gán cho nó giá trị Max của các
node con
– Nếu nó thuộc lớp Min thì gán cho nó giá trị nhỏ nhất của
các node con.
79
Giải thuật minimax – ví dụ
• Bài toán que diêm
Một tập que diêm ban đầu đặt giữa 2 người chơi. Lần lượt đi
xen kẽ. Người đến lượt đi phải chia nhóm que diêm theo
nguyên tắc:
– Chia thành 2 nhóm có số que khác nhau
Goal: người nào đến lượt mà không chia được là thua.
MINIMAX
• Không gian trạng thái của trò chơi được phát triển toàn bộ,
các node lá được gán giá trị 1 nếu là MAX thắng và 0 nếu là
MIN thắng.
• Với một node bất kỳ nếu thuộc lớp MAX gán cho nó giá trị lớn
nhất của các node con. Nếu thuộc lớp MIN gán cho nó giá trị
nhỏ nhất của các node con.
80
Minimax – bài toán que diêm
MIN 7 1
6-1
1 5-2
1 4-3
1
MAX
5-1-1
0 4-2-1
1 3-2-2
0 3-3-1
1
MIN
4-1-1-1
0 3-2-1-1
1 2-2-2-1
0
MAX
3-1-1-1-1
0 2-2-1-1-1
1
MIN
2-1-1-1-1-1
0
MAX
81
Minimax – bài toán que diêm
82
Minimax với độ sâu giới hạn
• Minimax như đã xét buộc phải có toàn bộ không gian trạng
thái đã được triển khai để có thể gán trị cho các nút lá và tính
ngược lại Không khả thi với các bài toán lớn vì không gian
trạng thái là quá lớn.
Giới hạn không gian trạng thái lại theo một độ sâu nào đó và
giới hạn các node con theo một qui tắc nào đó.
• Đây là chiến lược thông thường của các người chơi cờ: khả
năng tính trước bao nhiêu nước.
• Khi đó ta chỉ triển khai các nút con đến độ sâu giới hạn.
• Đánh giá cho các nút này như là nút lá bằng một hàm lượng
giá Heuristic.
• áp dụng chiến lược minimax cho việc đánh giá các nút cấp
trên.
• Kỹ thuật này gọi là nhìn trước K bước với K là độ sâu giới
hạn. 83
Ví dụ: Bài toán Tic Tac Toa
• Hàm lượng giá heuristic E(n) = X(n) – O(n) với
– X(n) số khả năng thắng của quân X.
– O(n) số khả năng thắng của quân O
X
X có 6 khả năng thắng
X O
E(n) = 6 - 5 = 1
O X
O có 5 khả năng thắng
O
Với hàm Heuristic trên X sẽ cố làm cho E(n) lớn nhất (MAX) và O làm
cho E(n) nhỏ nhất (MIN). Triển khai bài toán với 2 bước nhìn trước.
84
Minimax với 2 bước nhìn trước
86
Thuật giải cắt tỉa alpha – beta
(alpha – beta prunning)
• Hai luật cắt tỉa dựa trên các giá trị alpha
và beta là:
– 1. Quá trình tìm kiếm có thể kết thúc bên dưới
một nút MIN nào có giá trị beta nhỏ hơn hoặc
bằng giá trị alpha của một nút cha MAX bất kỳ
của nó.
– 2. Quá trình tìm kiếm có thể kết thúc bên dưới
một nút MAX nào có giá trị alpha lớn hơn
hoặc bằng giá trị beta của một nút cha MIN
bất kỳ của nó.
87
Thuật giải cắt tỉa alpha – beta (alpha – beta prunning)
Ví dụ
MAX
3+à3
3-à3
0-
MIN
Cắt tỉa alpha
2+à3 2-
x
5+ 0 2+à2
MAX
Cắt tỉa beta
x
2 3 5 0 2 1
MIN
88
Bai tap
Bai 1
Xét bài toán trò đố 8 ô như sau:
Start Goal
1 2 3 1 2 3
6 7 8 4
8 5 4 7 6 5
• Sẽ có gì khác biệt nếu như ta dùng giải thuật cắt tỉa alpha –
91
beta để định trị nút gốc cho cây?
• Bai 4
• Hãy áp dụng giải thuật cắt tỉa alpha-beta cho các cây sau đây. Cho
biết các nhánh được cắt là alpha-cut hay beta-cut và giá trị nút gốc
sau khi định trị:
• a)
92
b)
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
Hãy áp dụng giải
thuật cắt tỉa alpha-
A MAX
beta cho các cây
sau đây. Định lại nút
Gốc sau khi cắt tỉa. B C
D=7 E F=4
H=5
G
I=0
117