Trí tueeuj nhân tạo

44
TRÍ TUỆ NHÂN TẠO Artificial Intelligence GV: Nguyễn Hữu Tuân Khoa Công nghThông tin Đại học CN GTVT Email: [email protected] Nội - 2015

Transcript of Trí tueeuj nhân tạo

Page 1: 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

Page 2: Trí tueeuj nhân tạo

Chương 2: TÌM KIẾM TRÊN KHÔNG GIAN TRẠNG THÁI

(State Space Search)

Page 3: Trí tueeuj nhân tạo

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

Page 4: Trí tueeuj nhân tạo

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

Page 5: Trí tueeuj nhân tạo

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

Page 6: Trí tueeuj nhân tạo

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

Page 7: Trí tueeuj nhân tạo

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

Page 8: Trí tueeuj nhân tạo

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

Page 9: Trí tueeuj nhân tạo

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

Page 10: Trí tueeuj nhân tạo

Ví dụ:

Xét graph sau: A

B

E

H

C

F

I J

D

G

Slide 30

Page 11: Trí tueeuj nhân tạo

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

Page 12: Trí tueeuj nhân tạo

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

Page 13: Trí tueeuj nhân tạo

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

Page 14: Trí tueeuj nhân tạo

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

Page 15: Trí tueeuj nhân tạo

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

Page 16: Trí tueeuj nhân tạo

Chương 3: TÌM KIẾM KINH NGHIỆM

Page 17: Trí tueeuj nhân tạo

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

Page 18: Trí tueeuj nhân tạo

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???

Presenter
Presentation Notes
Thuat gii Heuristic là mot s m rong khái niem thuat toán. Nó the hien cách gii bài toán vi các dac tính sau: – Th*ng tìm dc l*i gii tôt (nhng không chac là l*i gii tôt nhât) – Gii bài toán theo thuat gii Heuristic th*ng de dàng và nhanh chóng da ra kêt qu hn so vi gii thuat tôi u, vì vay chi phí thâp hn. – Thuat gii Heuristic th*ng the hien khá t nhiên, gân gui vi cách suy nghi và hành dong ca con ng*i.
Page 19: Trí tueeuj nhân tạo

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;

Page 20: Trí tueeuj nhân tạo

Best First Search

Page 21: Trí tueeuj nhân tạo

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”.

Page 22: Trí tueeuj nhân tạo

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á.

Page 23: Trí tueeuj nhân tạo

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

Page 24: Trí tueeuj nhân tạo

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.

Page 25: Trí tueeuj nhân tạo

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:

Page 26: Trí tueeuj nhân tạo

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

Page 27: Trí tueeuj nhân tạo

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

Page 28: Trí tueeuj nhân tạo

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]

Page 29: Trí tueeuj nhân tạo

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*.

Presenter
Presentation Notes
Ý tưởng của giải thuật tìm kiếm tốt nhất đầu tiên (best first search) là mở rộng cây tìm kiếm theo hướng ưu tiên các nút lá có triển vọng chứa trạng thái đích (dựa trên hàm đánh giá h). Trong trường hợp này, cây tìm kiếm sẽ mở rộng đều về tất cả các hướng theo vết dầu loang từ trạng thái đầu. Khi hàm chi phí của dãy phép chuyển là số các đỉnh trung gian thì giải thuật uniform search trở thành giải thuật tìm kiếm theo chiều rộng. Giải thuật uniform search sẽ cho lời giải với chi phí nhỏ nhất, tuy nhiên cây tìm kiếm sinh ra trong giải thuật này thường có kích thước rất lớn. Giải thuật tham ăn sẽ chọn nút lá n “gần” đến đích nhất trong số các nút lá của cây tìm kiếm để mở rộng cây, và nó không quan tâm đến chi phí từ trạng thái đầu đến n. Do vậy giải thuật có xu hướng cho ra kết quả trong thời gian nhanh nhất, nhưng không phải lúc nào cũng là lời giải ngắn nhất.
Page 30: Trí tueeuj nhân tạo

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 }

Page 31: Trí tueeuj nhân tạo

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;

Page 32: Trí tueeuj nhân tạo

Ví dụ: cho không gian trạng thái với hàm đánh giá :

Page 33: Trí tueeuj nhân tạo
Page 34: Trí tueeuj nhân tạo

Đá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

Page 35: Trí tueeuj nhân tạo

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.

Page 36: Trí tueeuj nhân tạo

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;

Page 37: Trí tueeuj nhân tạo
Page 38: Trí tueeuj nhân tạo
Page 39: Trí tueeuj nhân tạo

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.

Page 40: Trí tueeuj nhân tạo

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

Page 41: Trí tueeuj nhân tạo

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;

Page 42: Trí tueeuj nhân tạo

Ví dụ: cho không gian trạng thái với hàm đánh giá :

Page 43: Trí tueeuj nhân tạo
Page 44: Trí tueeuj nhân tạo