Trí tuệ nhân tạo tìm kiếm

TTNT mạnh hay TTNT yếu, đó vẫn là một chủ đề tranh luận nóng hổi của các nhà triết học TTNT. Nó liên quan tới philosophy of mind và mind-body problem. Đáng chú ý nhất là Roger Penrose trong tác phẩm The Emperor's New Mind và John Searle với thí nghiệm tư duy trong cuốn Chinese room (Căn phòng tiếng Trung) khẳng định rằng các hệ thống logic hình thức không thể đạt được nhận thức thực sự, trong khi Douglas Hofstadter trong Gödel, Escher, Bach và Daniel Dennett trong Consciousness Explained ủng hộ thuyết chức năng. Theo quan điểm của nhiều người ủng hộ TTNT mạnh, nhận thức nhân tạo được coi là "chén thánh " của TTNT.

pdf36 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2898 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Trí tuệ nhân tạo tìm kiếm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3. Tìm kiếm Heuristic Bùi Đức Dương – Khoa Công nghệ Thông tin Bài giảng Trí tuệ nhân tạo LOGO 1. Giới thiệu  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 (mẹo). 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:  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ả.  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 LOGO 1. Giới thiệu (tt) Giải thuật heuristic thường gồm 2 phần:  Phép đo heuristic: Thể hiện qua hàm đánh giá heuristic (evaluation function), dùng để đánh giá các đặc điểm của một trạng thái trong KGTT. Giải thuật tìm kiếm heuristic: Tìm kiếm tốt nhất (best-first search) Giải thuật leo đồi (hill-climbing) LOGO 1. Giới thiệu (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? BFS hay DFS?  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ỏ só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? LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái.  Thuật giải heuristic là sự mở rộng của khái niệm thuật toán. Nó thể hiện cách giải bài toán với các đặc tính sau:  Thường tìm được lời giải tốt ( hưng không chắc là tốt nhất)  Giải bài toán theo thuật giải heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu (chi phí sẽ thấp hơn).  Thuật giải heuristic thường thể hiện khá tự nhiên, gần với cách suy nghĩ và hành động của con người. 1. Giới thiệu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Một số nguyên lý cơ bản  Nguyên lý vét cạn thông minh: Giới hạn không gian tìm kiếm dựa vào đặc thù bài toán  Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu của bài toán làm tiêu chuẩn cho việc lựa chọn ở từng bước giải  Nguyên lý thứ tự: Hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát  Hàm heuristic: Hàm đánh giá dựa “kinh nghiệm”, phụ thuộc vào trạng thái hiện tại của mỗi bước giải. Từ đây chọn ra phương án hành động. 1. Giới thiệu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Một số ví dụ  Bài toán 1(Đổi tiền). Đổi số tiền T thành các loại tiền có mệnh giá L1, L2,...Ln (L1> L2 >... > Ln) sao cho số tờ là ít nhất. 1. Giới thiệu (tt) Procedure DoiTien; Begin i=1; Repeat Soto[i]=T/L[i]; T=T%L[i]; i++; Until (T=0); End;  Bài toán 2 (Tìm nghiệm). Tìm tất cả các nghiệm không âm của phương trình: x1+ x2+...+ xn=N LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái.  Bài toán 3 (Hành trình ngắn nhất -TSP). Cho n thành phố (1, 2,...n) và khoảng cách giữa chúng (ci,j). Hãy tìm hành trình của một người đưa thư, đi qua tất cả các thành phố rồi quay về thành phố xuất phát, sao cho tổng chiều dài đường đi là ngắn nhất.  Vét cạn: (n-1)!. Với n lớn?  Greedy 1: Mỗi bước chọn i→j sao cho j gần i nhất trong những thành phố chưa đến nối với i.  Greedy 2: Mỗi bước chọn i→j sao cho i gần j nhất trong những thành phố chưa đến nối với j. 1. Giới thiệu (tt) LOGO  Ví dụ: TSP với n=7 cho bởi ma trận sau 1. Giới thiệu (tt) A B C D E F G A 0 150 178 350 215 655 472 B 150 0 550 730 196 285 328 C 178 550 0 125 485 348 226 D 350 730 125 0 925 147 630 E 215 196 485 925 0 352 475 F 655 285 348 147 352 0 548 G 472 328 226 630 475 548 0  Greedy 1: A→ B→ E→ F→ D→ C→ G→ A  Greedy 2: A → B → E → F → D → C → G → A LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái.  Bài toán 4 (Tô màu bản đồ). Cho n quốc gia (1, 2,...n). Hai quốc gia được gọi là láng giềng nếu có đường biên giới chung. Hãy tìm số màu ít nhất để tô cho ác quốc gia sao cho 2 quốc gia láng giềng bất kỳ phải khác màu. 1. Giới thiệu (tt) A B C D E F  Bậc của quốc gia: số QG láng giềng QG A B C D E F Bậc 2 3 5 2 3 3 Procedure ToMauBanDo; Begin m=1; Repeat Tìm quốc gia i thỏa Bậc[i]=max; Mau[i]=m++; For j=1 to n do If (Mau[j]=null and LangGieng[i,j]=True) Bậc[j]--; Until (m=n); End; LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái.  Bài toán 5 (Bài toán phân việc). Phân xưởng có n máy cưa công suất bằng nhau M1, M2,...Mn. Có m thanh gỗ cần được xẻ G1, G2,...Gm, biết thời gian xẻ của thanh gỗ Gi là ti. Hãy tìm phương án để xẻ m thanh gỗ trong thời gian sớm nhất.  Sắp xếp các thanh gỗ theo chiều giảm dần của thời gian xẻ.  Lần lượt bố trí các thanh gỗ vào máy còn dư nhiều thời gian nhất.  Ví dụ: Xét trường hợp 3 máy M1, M2,M3 và 7 thanh gỗ có thời gian xẻ t1=1; t2=8; t3=1; t4=5; t5=4; t6=3;t7=4; 1. Giới thiệu (tt) t2=8 t1=1 M1 t4=5 t6=3 t3=1 M2 t5=4 t7=4 M3 LOGO 2. Thuật toán HCS (tt)  Tìm kiếm leo đồi – Hill Climbing Search (Pearl, 1984)  Mở rộng trạng thái hiện tại và đánh giá các trạng thái con của nó bằng hàm đánh giá heuristic.  Con “tốt” sẽ được chọn để đi tiếp. Chọn một trạng thái tốt hơn: leo đồi đơn giản, trạng thái tốt nhất: leo đồi dốc đứng.  Khác với tìm kiếm sâu, leo đồi không lưu tất cả các con mà chỉ lưu đúng một t.thái được chọn nếu có. Giới hạn  Giải thuật có khuynh hướng bị sa lầy ở những cực đại cục bộ:  Lời giải tìm được không tối ưu  Không tìm được lời giải mặc dù có tồn tại lời giải  Giải thuật có thể gặp vòng lặp vô hạn do không lưu giữ thông tin về các trạng thái đã duyệt. LOGO Procedure Hill_Climbing_Search; Begin Open:={Start}; Close:=∅; While (Open ∅) do Begin X= Get(Open,leftmost);// Chọn trạng thái ngoài cùng của Open If (X=Goal) then Return True Else Begin Close = Close ∪ {X}; Sinh ra các nút con của X; C=Children(X)\{Open ∪ Close} Y = Retrieve(C);// Chọn trạng thái tốt hơn X(nhất) Open = Open ∪ {Y}; End; End; Return False; End; 2. Thuật toán HCS (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Procedure Best_First_Search; Begin Open:={Start}; Clos :=∅; While (Open ∅) do Begin X= Retrieve(Open);// Chọn trạng thái tốt nhất If (X=Goal) then Return True Else Begin Sinh ra các nút con của X; For mỗi nút con Y của X do Begin Gán giá trị heuristic cho Y; Open = Open ∪ {Y}; End; End; End; Return False; End; 3. Tìm kiếm tối ưu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái.  Best First Search vs Breath First & Depth First Search  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 ra nghiệm nhanh hơn nên số trạng thái xét dư thừa sẽ hạn chế -> sinh ít trạ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”. 3. Tìm kiếm tối ưu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Procedure AT; Begin Open:={Start}; While (Open ∅) do Begin X= Retrieve(Open);// Chọn X sao cho g(X) đạt min(Open) If (X=Goal) then Return True Else Begin Sinh ra các nút con của X; For mỗi nút con Y của X do If(Y∉Open) Begin g(Y):=g(X)+cost(X,Y); Open = Open ∪ {Y}; End; Else So sánh g(Y) với gNew(Y) và cập nhật End; End; Return False; End; 3. Tìm kiếm tối ưu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Procedure AKT; Begin Open:={Start}; While (Open ∅) do Begin X= Retrieve(Open);// Chọn X sao cho f(X) đạt min(Open) If (X=Goal) then Return True Else Begin Sinh ra các nút con của X; For mỗi nút con Y của X do Begin g(Y)=g(X)+cost(X,Y); f(Y)=g(Y)+h’(Y); Open = Open ∪ {Y}; End; End; End; Return False; End; 3. Tìm kiếm tối ưu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. Procedure A*; Begin Open:={Start}; Close:= ∅; While (Open∅) do Begin X= Retrieve(Open);// Chọn X sao cho h(X)-heuristic đạt min(Open) If (X=Goal) then Return True Else Begin Sinh ra các nút con của X; For mỗi nút con Y của X do If (Y∉Open) và (Y∉Close) Begin Gán heuristic - h(Y); Open = Open ∪ {Y}; End; 3. Tìm kiếm tối ưu (tt) LOGO KGTT của tic-tac-toe được thu nhỏ nhờ tính đối xứng của các trạng thái. If (Y∈Open) If (hnew(Y)<hold(Y)) cập nhật lại Y trong Open; If (Y∈Close) If (hnew(Y)<hold(Y)) Begin Close=Close \ {Y}; Open = Open ∪ {Y}; End; End; Close=Close ∪ {X}; End; Return False; End; 3. Tìm kiếm tối ưu (tt) LOGO 4. Hàm lượng giá heuristic Trong đó: f(n): Hàm lượng giá heuristic tại trạng thái n g(n): Khoảng cách từ n đến trạng thái bắt đầu h(n): Hàm heuristic đánh giá khoảng cách từ t.thái n đến mục tiêu f(n) = g(n) + h(n)f( ) ( ) ( ) Ví dụ: Xét trò chơi 8-puzzle 1 2 3 8 4 7 6 5 2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5 start g(n) = 0 g(n) = 1 goal LOGO 4. Hàm lượng giá heuristic 5 6 3 4 5 6 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5 Heuristic 1: Tổng số miếng sai vị trí Heuristic 2: Tổng khoảng cách sai vị trí của từng miếng. 1 2 3 8 4 7 6 5 goal LOGO 4. Hàm lượng giá heuristic Trong đó: f(n): Hàm lượng giá heuristic tại trạng thái n g(n): Khoảng cách từ n đến trạng thái bắt đầu h(n): Hàm heuristic đánh giá khoảng cách từ t.thái n đến mục tiêu f(n) = g(n) + h(n)f( ) ( ) ( ) Ví dụ: Xét trò chơi 8-puzzle. h(n): số lượng các vị trí sai 1 2 3 8 4 7 6 5 2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5 start g(n) = 0 g(n) = 1 6 4 6f(n) = goal LOGO 4. Hàm lượng giá heuristic (tt) 57 461 382 1 State A F(a) =0+4=4 57 461 382 x State B F(b) =1+5=6 567 41 382 2 State C F(c) =1+3=4 57 461 382 x State D F(c) =1+5=6 567 41 382 3 State E F(e) =2+3=5 567 481 32 4 State F F(f) =2+3=5 567 41 382 x State G F(g) =2+4=6 567 412 38 x State H F(h) =3+3=6 56 417 382 x State I F(i) =3+4=7 LOGO 4. Hàm lượng giá heuristic (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 State 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 LOGO 4. Hàm lượng giá heuristic (tt) Laàn X Open Close 0 1 2 3 4 5 6 7 A4 C4 E5 F5 J5 l5 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] LOGO 5. Heuristic trong trò chơi đối kháng Giải thuật minimax:  Hai đấu thủ trong trò chơi được gọi là MIN và MAX.  Mỗi nút lá có giá trị: • 1 nếu là MAX thắng, • 0 nếu là MIN thắng.  Minimax sẽ truyền các giá trị này lên cao dần trên đồ thị, qua các nút cha mẹ kế tiếp theo các luật sau: • Nếu trạng thái cha mẹ là MAX, gán cho nó giá trị lớn nhất có trong các trạng thái con. • Nếu trạng thái bố, mẹ là MIN, gán cho nó giá trị nhỏ nhất có trong các trạng thái con. LOGO 5. Heuristic trong trò chơi đối kháng (tt) Áp dụng GT Minimax vào trò chơi NIM LOGO 5. Heuristic trong trò chơi đối kháng (tt) Minimax với độ sâu lớp cố định Minimax đối với một KGTT giả định.  Các nút lá được gán các giá trị heuristic  Còn giá trị tại các nút trong là các giá trị nhận được dựa trên giải thuật Minimax LOGO 5. Heuristic trong trò chơi đối kháng (tt) Hàm Heuristic: E(n) = M(n) – O(n) Trong đó: M(n) là tổng số đường thắng có thể của tôi O(n) là tổng số đường thắng có thể của đối thủ E(n) là trị số đánh giá tổng cộng cho trạng thái n •Heuristic trong trò chơi tic-tac-toe LOGO 5. Heuristic trong trò chơi đối kháng (tt) Nilsson (1971) Minimax 2 lớp được áp dụng vào nước đi mở đầu trong tic-tac-toe LOGO 5. Heuristic trong trò chơi đối kháng (tt) • Giải thuật cắt tỉa α-β  Tìm kiếm theo kiểu depth-first.  Nút MAX có 1 giá trị α (luôn tăng)  Nút MIN có 1 giá trị β (luôn giảm)  TK có thể kết thúc dưới bất kỳ:  Nút MIN nào có β ≤ α của bất kỳ nút cha MAX nào.  Nút MAX nào có α ≥ β của bất kỳ nút cha MIN nào. Giải thuật cắt tỉa α-β thể hiện mối quan hệ giữa các nút ở lớp n và n+2, mà tại đó toàn bộ cây có gốc tại lớp n+1 có thể cắt bỏ. LOGO 5. Heuristic trong trò chơi đối kháng (tt) Cắt tỉa α S A Z MAX MIN = z ≥ α = α z ≤ α α - cut = α LOGO 5. Heuristic trong trò chơi đối kháng (tt) Cắt tỉa β S A Z MIN MAX = z ≤ β = β z ≥ β β - cut = β LOGO 5. Heuristic trong trò chơi đối kháng (tt) • Áp dụng cho KGTT giả định Các nút không có giá trị là các nút không được duyệt qua LOGO Bài tập Chương 3 Tìm hiểu các bài toán Đổi tiền Bài toán phân việc BFS, DFS Tic tac toe Trò chơi NIM Đong dầu Tô màu bản đồ Bài toán TSP Puzzle Cờ vua Cờ tướng Người nông dân qua sông Con thỏ và con cáo Con khỉ và nải chuối Tu sỹ và kẻ ăn thịt người Tham luận Chi bộ Khoa Cơ khí Bùi Đức Dương – Khoa Công nghệ Thông tin

Các file đính kèm theo tài liệu này:

  • pdfTrí tuệ nhân tạo tìm kiếm.pdf
Tài liệu liên quan