Trí tueeuj nhân tạo
-
Upload
thuan-phong -
Category
Technology
-
view
139 -
download
0
Transcript of Trí tueeuj nhân tạo
TRÍ TUỆ NHÂN TẠO Artificial Intelligence
GV: Nguyễn Hữu TuânKhoa Công nghệ Thông tin Đại học CN GTVTEmail: [email protected]
Hà Nội - 2015
Chương 2: TÌM KIẾM TRÊN KHÔNG GIAN TRẠNG THÁI
(State Space Search)
2.1 Bài toán 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àitoá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ánAI - Đặ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 Slide 23
Cấu trúc chung của bài toán tìm kiếm
Một cách chung nhất, nhiều vấn đề - bài toán phức tạp đềucó dạng "tìm đường đi trong đồ thị" hay nói một cách hình thức hơn là "xuất phát từ một đỉnh của một đồ thị,tìm đường đi hiệu quả nhất đến một đỉnh nào đó".
Một phát biểu khác thường gặp của dạng bài toán này là: Cho trước hai trạng thái T0 và TG hãy xây dựng chuỗi tr ạng thái T0, T1, T2, ..., Tn-1, Tn = TG sao cho :
thỏa mãn một điều ki ện cho trước (thường là nhỏ nhất).
Slide 24
2.2 Giải thuật tổng quát
Ký hiệu: s đỉnh xu ất phátg: đỉnh đíchn: đỉnh đang xétΓ(n): tập các đỉnh có thể đi trực tiếp từ đỉnh n Open: tập các đỉnh có thể xét ở bước kế tiếp Close: tập các đỉnh đã xét
Slide 25
2.2 Giải thuật tổng quát (tiếp)
Begin Open := {s}; Close := ø; While (Open <> ø) do
begin n:=Retrieve(Open); if (n=g) then Return True; Open := Open ∪ Γ(n); // ( Γ(n) - Close) Close := Close ∪ {n};
end; Return False;
End; Slide 26
Ví dụ:
Xét graph sau:
B
E
H
A
C D
F G
I J
s = A là đỉnh bắt đầu g= G là đỉnh đích
Slide 27
2.3 Breath First Search - Ví d ụ
Xét graph sau: L ần l ặp n Γ(n) Open Close
B
E
H
0 A 1
2 3
C D 5 6
F G 7
I J
A {B, C, D} B {E, F} C {F, G}
4 D ø E {H, I} F {J} G
True
{A} ø {B, C, D} {A} {C, D, E, F} {A, B} {D, E, F, G} {A, B, C} {E, F, G} {A, B, C, D} {F, G, H, I} {A, B, C, D, E} {G, H, I, J} {A, B, C, D, E, F}
Slide 28
2.3 Breath First Search - Ví dụ
Xét graph sau:A->U Lần lặp n Γ(n) Open Close
B
E
A
C
F G
0 1 2 3
D 5 6 7 8 9
A B C
4 D E F G H I
{B, C, D} {E, F} {F, G} ø {H, I} {J} ø Ø ø Ø
{A} ø {B,C,D} {A} {C,D, E,F} {A, B} {D,E, F,G} {A, B, C} {E, F, G} {A, B, C, D} {F, G, H, I} {A, B, C, D, E} {G, H, I, J} {A, B, C, D, E, F} {H, I, J} {A, B, C, D, E, F,G} {I, J} {A,B,C, D, E, F,G,H} {J} {A,B,C, D, E,
10 J Ø F,G,H,I}H I J {A,B,C, D, E,
FALSE F,G,H,I,J}
Slide 29
Ví dụ:
Xét graph sau: A
B
E
H
C
F
I J
D
G
Slide 30
2.4 Depth First Search - Ví dụ
Xét graph sau: Lần lặp n Γ(n) Open Close
B
E
H
A
C
F
I J
0 1 A {B, C, D} 2 B {E, F} 3 E {H, I} D 4 H Ø 5 I Ø 6 F {J} G 7 J Ø 8 C {F, G} 9 G True
{A} {B, C, D} {E, F, C, D} {H, I, F, C, D} {I, F, C, D} {F, C, D} {J, C, D} {C, D} {G, D}
ø {A} {A, B} {A, B, E} {A, B, E, H} {A, B, E, H, I} {A, B, E, H, I, F} {A, B, E, H, I, F,J} {A,B,E,H,I, F,J,C}
Slide 31
Breath First vs Depth First
Breath First: open được tổ chức dạng FIFO Depth First: open được tổ chức dạng LIFO Hi ệu qu ả - Breath First luôn tìm ra nghiệm có số cung nhỏ nhất- Depth First “thường” cho kết quả nhanh hơn.
K ết qu ả - BFS, DFS chắc chắn tìm ra kết quả nếu có.
Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật này.
Giải pháp cho bùng nổ tổ hợp??
Slide 32
Tìm kiếm rộng
1. 2.
2.
3.
4.
5. 6.
Open = [A]; closed = [] Open = [B,C,D];
closed = [A] Open = [C,D,E,F];
closed = [B,A] Open = [D,E,F,G,H]; closed = [C,B,A] Open = [E,F,G,H,I,J]; closed = [D,C,B,A] Open = [F,G,H,I,J,K,L];closed = [E,D,C,B,A] Open = [G,H,I,J,K,L,M];(vì L đã có trong open);
closed = [F,E,D,C,B,A] …
Slide 33
Tìm kiếm sâu
1. 2.
3.
4.
5.
6.
7.
8.
9.
Open = [A]; closed = [] Open = [B,C,D]; closed = [A] Open = [E,F,C,D];closed = [B,A] Open = [K,L,F,C,D];
closed = [E,B,A] Open = [S,L,F,C,D];
closed = [K,E,B,A] Open = [L,F,C,D];
closed = [S,K,E,B,A] Open = [T,F,C,D];
closed = [L,S,K,E,B,A] Open = [F,C,D];
closed = [T,L,S,K,E,B,A] …
Slide 34
Depth first search có giới hạn
Depth first search có khả năng lặp vô tận do các trạng thái con sinh ra liên tục. Độ sâu tăng vô tận. Khắc phục bằng cách giới hạn độ sâu của giải thuật. Sâu bao nhiêu thì vừa? Chiến lược giới hạn:
- Cố định một độ sâu MAX, như các danh thủ chơi cờ tính trước được số nước nhất định - Theo cấu hình resource của máy tính - Meta knowledge trong việc định giới hạn độ sâu.
Giới hạn độ sâu => co hẹp không gian trạng thái => có thể mất nghiệm.
Slide 35
Chương 3: TÌM KIẾM KINH NGHIỆM
3.1 Heuristic là gì
Heuristic là gì?– 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ếtquả.
2. Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để tìm ranghiệ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
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ũngkhô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???
Best First Search
Procedure Best_First_Search;Beginopen:=[start]; close:=[];
While (open<>[]) dobegin Lấy phần tử đầu tiên X khỏi Open.
if X là goal then return path từ start đếnX
else beginsinh ra các nút con của X;
for mỗi nút con Y của X docase Y ofY không có trong open hay close:
begin gán giá trị heuristic cho Y;đưa Y vào open; end;
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ênOpen.
Y đã có trên close:if đến được Y bằng một path ngắn hơn
then begin xóa Y khỏi danh sách Close;thêm Y vào danh sách Open; end;
end; /*end case*/Đưa X vào close;Xếp thứ tự các trạng thái trên Open theo
giá trị Heuristic (tăng dần)end; / while/return failure;
End;
Best First Search
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??
Do sự định hướng các trạng thái kế tiếp theo hướng có khả năng tìm ranghiệm nhanh hơn nên số trạng thái xét dư thừa sẽ hạn chế sinh íttrạng thái con hơn
Điều này cũng là nguyên nhân làøm cho Best First Search có thể dẫnđến kết quả là “nghiêäm phụ” thay vì “nghiệm tối ưu”.
Hàm lượng giá Heuristic
Hàm lượng giá Heuristic là hàm ước lượng phí tổn để đi từ trạng thái hiệntại đến trạng thái goal.
Cơ sở để xác định hàm lượng giá là dựa vào tri thức/kinh nghiệm thu thậpđược.
Hàm lượng giá cho kết quả đúng (gần thực thế) hay sai (xa giá trị thực) sẽdẫn đến kết quả tìm được tốt hay xấu.
Không có chuẩn mực cho việc đánh giá một hàm lượng giá Heuristic. Lýdo:– Không có cấu trúc chung cho hàm lượng giá– Tính đúng/sai thay đổi liên tục theo từng vấn đề cụ thể– Tính đúng/sai thay đổi theo từng tình huống cụ thể trong một vấn
đề Có thể dùng nhiều hàm lượng giá khác nhau theo tình huống cần
hàm lượng giá về các hàm lượng giá.
Hàm lượng giá Heuristic
Xét bài toán 8 pussle vớigoal là:
1 2 3
8 4
7 6 5
Heuristic 1: Tổng số miếngsai vị trí
Heuristic 2: Tổng khoảngcách sai vị trí của từngmiếng.
Heuristic 3: Số cặp hoán đổivị trí nhân cho 2
5 6 0
3 4 0
5 6 0
2 8 3
1 6 4
7 5
2 8 3
1 4
7 6 5
2 8 3
1 6 4
7 5
Việc chọn lựa hàm Heuristic là khó khăn và có ýnghĩa quyết định đối với tốc độ của giải thuật
Hàm lượng giá Heuristic
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ọntrướ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ơnlà 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ọngtố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 nH(n): phí tổn ước luợng heuristic từ n đến goal.
Ví dụ – Best first search
Xét ví dụ là bài toán 8 puzzle với:
2 8 3
1 6 4
7 5
Bắt đầu
1 2 3
8 4
7 6 5
Mục tiêu
Hàm lượng giá: F(n) = G(n) + H(n)Với G(n): số lần chuyển vị trí tile đã thực hiện
H(n): Số tile nằm sai vị tríNút X có giá trị heuristic tốt hơn nút Y nếu F(x) < F(y).
Ta có hoạt động của giải thuật Best First search trên như hình sau:
Ví dụ – Best first search (tt)
57
461
3821 State A
F(a) =0+4=4
57
461
382x State B
F(b) =1+5=6 567
41
3822 State C
F(c) =1+3=4 57
461
382x State D
F(c) =1+5=6
567
41
3823 State E
F(e) =2+3=5 567
481
324 State F
F(f) =2+3=5 567
41
382x State G
F(g) =2+4=6
567
412
38x State H
F(h) =3+3=6 56
417
382x State I
F(i) =3+4=7
Ví dụ – Best first search (tt)
567
481
324 State F
F(f) =2+3=5
567
481
325 State J
F(j) =3+2=5 567
481
32x State K
F(k) =3+4=7 567
41
382y State Close
567
481
32y Close567
48
3216 State L
F(l) =4+1=5
567
481
32y State Close
567
48
3217 State M
F(m) =5+0=5 56
487
321x State N
F(n) =5+1=7
Lần X Open Close
01234567
A4C4E5F5J5l5
m5
[a4][c4,b6,d6][e5,f5,g6,b6,d6][f5,h6,g6,b6,d6,i7][j5,h6,g6,b6,d6,k7,i7][l5,h6,g6,b6,d6,k7,i7][m5,h6,g6,b6,d6,k7,i7,n7]
[][a4][a4,c4][a4,c4,e5][a4,c4,e5,f5][a4,c4,e5,f5,j5][a4,c4,e5,f5,j5,l5]
Biến thể của Best First Search
Giải thuật best-first-search có các biến thể sau: Khi h(n) là chi phí của dãy phép chuyển từ trạng thái đầu đến
trạng thái n thì giải thuật best-first-search có tên gọi khác làgiải thuật tìm kiếm đều (uniform search).
Khi h(n) là ước lượng chi phí/khoảng cách từ n đến đích (vídụ như khoảng cách Manhatan trong bài toán 8 số ở trên) thìgiải thuật best-first-search được gọi là giải thuật tham ăn(greedy search).
Khi h(n) = f(n) + g(n), trong đó f(n) là hàm chi phí/khoảngcách từ trạng thái đầu đến n và g(n) là hàm ước lượng chiphí/khoảng cách từ n đến trạng thái đích thì giải thuật best-first-search được gọi là giải thuật A*.
Thuật toán A*
Thuật toán A* sử dụng tìm kiếm tốt nhất đầu tiên với hàmđánh giá f(u)
Begin1. Khởi tạo danh sách L chỉ chứa trạng thái đầu;2. Loop do
2.1 If L rỗng then {thông báo thất bại; stop};2.2 Lấy trạng thái u ở đầu danh sách L;2.3 If u là trạng thái kết thúc then
{ thông báo thành công; stop }
2.4 For mỗi trạng thái v kề u do{ g(v) ← g(u) + k(u,v);
f(v) ← g(v) + h(v);Đặt v vào danh sách L }
2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao chotrạng thái tốt nhất ở đầu danh sách L;
End;
Ví dụ: cho không gian trạng thái với hàm đánh giá :
Đánh giá giải thuật Heuristic
Admissibility – Tính chấp nhậnMột giải thuật Best first search với hàm đánh giáF(n) = G(n) + H(n) với
N : Trạng thái bất kỳG(n) : Phí tổn đi từ nút bắt đầu đến nút nH(n) : Phí tổn ước lượng heuristic đi từ nút n đến goal
Được gọi là giải thuật AMột giải thuật tìm kiếm được xem là admissible nếu đối với
một đồ thị bất kỳ nó luôn dừng ở path nghiệm tốt nhất (nếucó).
Giải thuật A*: Là giải thuật A với hàm heuristic H(n)luônluôn ≤ giá trị thực đi từ n đến goal.
Giải thuật A* là admissible
Các giải thuật khác
Tìm kiếm leo đồi (hill-climbing) Ý tưởng: Tìm kiếm theo chiều sâu kết hợp với hàm đánh
giá. Mở rộng trạng thái hiện tại và đánh giá các trạng tháicon của nó bằng hàm đánh giá heuristic. Tại mỗi bước, nútlá “tốt nhất” sẽ được chọn để đi tiếp.
Tìm kiếm leo đồi
Procedure Hill-Climbing_search;Begin
1. Khởi tạo ngăn xếp S chỉ chứa trạng thái đầu;2. Loop do
2.1 If S rỗng then {thông báo thất bại; stop};2.2 Lấy trạng thái u ở đầu ngăn xếp S;2.3 If u là trạng thái kết thúc then{thông báo thành công; stop};2.4 For mỗi trạng thái v kề u do đặt v vào danh sách L;2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao chotrạng thái tốt nhất ở đầu danh sách L;2.6 Chuyển danh sách Lvào ngăn xếp S;
End;
Thuật toán nhánh – cận
Sử dụng thuật toán leo đồi với hàm đánh giá f(u) Trong thuật toán này, tại mỗi bước khi phát triển trạng thái
u, ta sẽ chọn trạng thái tốt nhất v (f(v) nhỏ nhất) trong sốcác trạng thái kề u để phát triển trạng thái tiếp theo.
Đi xuống cho tới khi gặp v là đích, hoặc v không có đỉnhkề, hoặc gặp v mà f(v) lớn hơn đường đi tối ưu tạm thời.Trong trường hợp này không phát triển đỉnh v nữa, mà quaylên cha của v để tiếp tục đi xuống những trạng thái tốt nhấtcòn lại chưa xét.
Thuật toán nhánh – cận (tt)
Procedure Branch_and_Bound_search;Begin
1. Khởi tạo danh sách L chỉ chứa trạng thái đầu;Gán giá trị ban đầu cho cost;
2. Loop do2.1 If L rỗng then {thông báo thất bại; stop};2.2 Lấy trạng thái u ở đầu danh sách L;2.3 If u là trạng thái kết thúc then
if g(u) ≤ y then {y ← g(y); Quay lại 2.1};2.4 If f(u) > y then Quay lại 2.1
2.5 For mỗi trạng thái v kề u do{ g(v) ← g(u) + k(u,v);
f(v) ← g(v) + h(v);Đặt v vào danh sách L1 }
2.5 Sắp xếp L1 theo thứ tự tăng dần của hàm đánh giá;2.6 Chuyển L1 vào đầu danh sách L sao cho trạng thái tốt nhất ởđầu L1 ở đầu danh sách L;
End;
Ví dụ: cho không gian trạng thái với hàm đánh giá :