Đề cương bài giảng Trí tuệ nhân tạo
LỜI NÓI ĐẦU.3
CHƯƠNG 1: TRÍ TUỆNHÂN TẠO.4
1.1 Giới thiệu ngành trí tuệnhân tạo. 4
1.1.1 Cơsởcủa AI. 4
1.1.2 Lịch sửcủa AI. 5
1.2 Tác tửthông minh. 7
1.2.1 Giới thiện.7
1.2.2 Cấu trúc của các tác tửthông minh. 8
1.2.3 Các hoạt động của tác tửthông minh. 11
CHƯƠNG 2: GIẢI QUYẾT CÁC VẤN ĐỀBẰNG TÌM KIẾM.13
1.2 Giải quyết bài toán bằng tìm kiếm mù. 15
2.1.1 Các chiến lược tìm kiếm. 15
2.1.2 Tìm kiếm theo chiều rộng. 16
2.1.3 Tìm kiếm theo độsâu. 18
2.1.4 Tìm kiếm sâu lặp. 21
2.2 Giải quyết bài toán bằng tìm kiếm heuristics. 23
2.2.1.1 Thuật toán tìm kiếm tốt nhất đầu tiên.25
2.2.1.2 Thuật toán A*.27
2.2.2 Hàm Heuristic.32
2.2.3 Tìm kiếm trong khảnăng nhớgiới hạn (IDA*).41
2.2.4 Tìm kiếm leo đồi.41
CHƯƠNG 3: BIỂU DIỄN TRI THỨC BẰNG LOGIC VỊTỪCẤP 1.49
3.1 Giới thiệu Logic vịtừcấp 1. 49
3.1.1 Cú pháp và ngữnghĩa. 50
3.1.1.1 Cú pháp.50
3.1.1.2 Ngữnghĩa.51
3.1.2 Term. 53
3.1.3 Câu nguyên thủy, câu phức hợp. 53
3.1.3.1 Câu nguyên thủy.53
3.1.3.2 Câu phức hợp.53
3.1.4 Các lượng tử. 54
3.2 Sửdụng logic vịtừcấp 1. 55
3.2.1 Biểu diễn miền quan hệtiền đề. 55
3.2.2 Biểu diễn thông qua các vịtừ. 55
3.2.3 Luật phân giải. 57
3.2.4 Các câu hỏi và các trảlời. 62
3.2.4.1 Suy diễn tiến / Lập luận tiến.62
3.2.4.2 Suy diễn lùi/ Lập Luận lùi.66
giải thuật so khớp.
* Giải thuật so khớp
1) Hằng / hằng so khớp : chỉ khi chúng giống hệt nhau
2) Hằng a / biến X so khớp:
a) Biến chưa kết buộc: biến trở thành kết buộc với hằng {X/a}
b) Biến đã kết buộc : xem (1)
3) Biến / biến so khớp:
a) Hai biến chưa kết buộc: luôn luôn so khớp
b) Một biến kết buộc và một biến chưa kết buộc: xem (2)
c) Hai biến kết buộc: xem (1)
4) Biểu thức / biểu so khớp: chỉ khi các tên hàm hoặc vị từ, số ngôi giống
nhau thì áp dụng so khớp từng đối số một.
Lưu ý : Phạm vi của một biến là một câu. Một khi biến đã bị kết buộc, các phép
hợp nhất theo sau và các suy luận kế tiếp phải giữ sự kết buộc này.
* Định lý phân giải
Một tập câu tuyển G là không thỏa nếu và chỉ nếu câu rỗng thuộc R(G)
* Chứng minh một công thức là hệ quả của một tập công thức đã cho bằng
luật phân giải.
Ta sử dụng thủ tục sau đây:
Procedure Proof_by_Resolution
Input: Tập G các công thức G ={G1, G2, … , Gn}
H là công thức cần chứng minh
Begin
1. Biến đổi các công thức Gi (i= 1, 2,…, n) và công thức ¬H về dạng
chuẩn hội
60
2. Từ dạng chuẩn hội nhận được ở bước 1, thành lập tập các câu tuyển C
3. Repeat
Chọn ra hai câu A và B trong C
If A và B phân giải được then
Tính giải thức Res(A, B)
If Res(A, B) là câu mới then thêm Res(A, B) vào C
Until Nhận được câu rỗng hoặc không có câu mới nào được sinh ra;
4. If câu rỗng được sinh ra then thông báo H đúng
Else thông báo H sai
End;
Ví dụ:
Giả sử chúng ta biết các thông tin sau đây:
1. Ông Ba nuôi một con chó
2. Hoặc ông Am hoặc ông Ba đã giết con mèo Bibi. Chúng ta cũng biết
rằng:
3. Mọi người nuôi chó đều yêu quý động vật
4. Ai yêu quý động vật thì không giết động vật
Và đượng nhiên là:
5. Chó và mèo đều là động vật
Ta chuyển các câu ở trên thành các câu được biểu diễn bằng các công thức
của logic vị từ cấp 1 như sau:
6) dog(d) ^rear(ba, d)
7) cat(bibi)^(kill(ba, bibi) v kill(am, bibi))
8) ∀X(∀Y(dog(Y)^ rear(X, Y)) => animalLover(X))
9) ∀X(animalLover(x) => (∀Y(animal(Y) => ¬kill(X, Y))))
10) ∀x(dog(X) => animal(X)) ^∀Y(cat(Y)=> animal(Y))
* Chuẩn hóa các câu trên thành dạng chuẩn hội ta thu được các câu tuyển
sau:
1) dog(d).
2) rear(ba, d)
61
3) cat(bibi)
4)(kill(ba, bibi) v kill(am, bibi))
5) ¬dog(Y) v ¬rear(X, Y) v animalLover(X)
6) ¬animalLover(X) v ¬animal(Y)v ¬kill(X, Y)
7) (¬dog(X) v animal(X))
8) (¬cat(Y) v animal(Y))
* Sau đó sử dụng luật phân giải để chứng minh Câu ông am đã giết chú mèo
Bibi.
Ta thêm vào tập các câu tuyển ở trên câu ¬kill(am, bibi) (9)
áp dụng luật phân giải cho tập 9 câu tuyển ở trên:
4 9
¬kill(am, bibi) (10) 6
¬animalLover(ba) v ¬ animal(bibi) (11) 5
¬dog(y) v ¬rear(ba, Y)v ¬ animal(bibi) (12) 1
¬rear(ba, d)v ¬ animal(bibi) (13) 2
62
Vậy Ông Am đã giết Bibi là đúng
3.2.4 Các câu hỏi và các trả lời
Khi có một câu hỏi đến chương trình, chương trình sẽ coi đó như là một
goal và cố gắng làm thỏa goal đó. Làm thỏa một goal có nghĩa là chương trình
sẽ cố gắng chứng minh goal đó được suy luận trực tiếp từ cơ sở tri thức có trong
chương trình. Nếu chương trình có thể chứng minh goal đó được suy luận từ
chương trình thì câu trả lời sẽ là yes, và nếu trong câu hỏi có chứa các biến, thì
sự thay thế các biến bằng các đối tượng cụ thể mà chương trình sử dụng trong
quá trình suy diễn sẽ được hiển thị. Ngược lại nếu goal đó không được suy luận
từ chương trình thì câu trả lời sẽ là no.
Để tìm kiếm câu trả lời cho câu hỏi, chương trình sử dụng các thuật toán
suy diễn tiến và suy diễn lùi.
3.2.4.1 Suy diễn tiến / Lập luận tiến
Chiến lược suy diễn bắt đầu bằng tập sự kiện đã biết, rút ra các sự kiện mới
nhờ dùng các luật mà phần giả thiết khớp với sự kiện đã biết, và tiếp tục qúa
trình này cho đến khi thấy trạng thái đích, hoặc cho đến khi không còn luật nào
khớp được các sự kiện đã biết hay được sự kiện suy diễn.
Ta tách Cơ sở tri thức thành hai phần:
Luật cơ sở: Ký hiệu là RB
Sự kiện: Ký hiệu là FB
animal(bibi) (13) 8
¬cat(bibi) (13) 3
câu rng
63
Với mỗi luật R: nếu P1 và P2 và Pn thì Q
Ta ký hiệu danh sách các điều kiện của luật là Conds =[P1, P2, .., Pn] và
phần kết luận của luật được ký hiệu là Conc = Q
Ta có thủ tục lập luận tiến:
Procedure Forchain(Conds, Conc)
Begin
For each S in FB do
{
If S hợp nhất với Pi trong Conds bởi phép thế θ then
{
Conds1 Í [P1θ, P2θ, Pi-1θ, Pi+1θ…, Pnθ]
Conc1 Í Concθ
If Cond1 rỗng then
Add(Conc1, FB) // Nếu Conc1 là sự kiện mới thì add vào FB
Else
ForChain(Conds1, Conc1);
}
}
End;
Procedure forward_reasoning(RB, FB)
Begin
Repeat
For each luật(Conds, Conc) in RB do
ForChain(Conds, Conc)
Until Không có luật nào sinh ra sự kiện mới;
End;
Như vậy hệ thống suy diễn tiến làm việc như sau:
64
Ví dụ:
Giả sử cơ sở luật chứa luật sau:
Nếu
1. x là ngựa và
2. x là mẹ của y và
3. y chạy nhanh
thì
x có giá.
Cơ sở sự kiện gồm các sự kiện sau:
Tom là ngựa
Ken là ngựa
Kit là ngựa
Bin là ngựa
Tom là mẹ của Bin
Tom là mẹ của Ken
Bin là mẹ của Kit
Kit chạy nhanh
Bin chạy nhanh
Bằng cách sử dụng các vị từ
65
horse(X): X là ngựa
mother(X, Y): x là mẹ của y
fast(X): x chạy nhanh
valueable(X): x có giá trị
Ta có luật:
(1) horse(X)^ mother(X, Y)^ fast(Y) => valueable(X)
Và các sự kiện
(2) horse(tom)
(3) horse(ken)
(4) horse(kit)
(5) horse(bin)
(6) mother(tom, bin)
(7) mother(tom, ken)
(8) mother(bin, kit)
(9) fast(kit)
(10) fast(Bin)
Ta có:
Conds= [horse(X), mother(X, Y), fast(Y)]
Conc = valueable(X)
FB =[horse(tom), horse(ken), horse(kit), horse(bin), mother(tom, bin),
mother(tom, ken), mother(bin, kit), fast(kit), fast(Bin)]
áp dụng thủ tục lập luận tiến ta có:
horse(X), mother(X, Y), fast(Y)
mother(tom, Y), fast(Y)
fast(bin)
valueable(tom)
fast(ken)
mother(ken, Y), fast(Y) mother(kit, Y), fast(Y) mother(bin, Y), fast(Y)
fast(kit)
X/tom, (2)
X/ken, (3) X/kit, (4)
X/bin, (5)
valueable(bin)
Y/bin, (6) Y/ken, (7) Y/kit, (8)
(10) (9)
66
3.2.4.2 Suy diễn lùi/ Lập Luận lùi
Kỹ thuật suy diễn tiến là tốt khi làm việc với bài toán bắt đầu từ các thông
tin và cần suy lý một cách logic đến các kết luận. Trong bài toán loại khác,
người ta bắt đầu từ các giả thuyết định chứng minh rồi tiến hành thu thập thông
tin. Chẳng hạn bác sĩ nghi người bệnh bị bệnh nào đó, ông ta tìm ra triệu chứng
của bệnh đó. Loại suy lý này được mô hình hóa trong trí tuệ nhân tạo như hệ
chuyên gia với tên là "Suy diễn lùi".
Suy diễn lùi là chiến lược suy diễn để chứng minh một giả thiết bằng cách
thu thập thông tin hổ trợ.
Hệ thống suy diễn lùi bắt đầu từ đích cần chứng minh:
Trước hết nó kiểm tra trong bộ nhớ làm việc để xem đích này đã được bổ
sung trước đó chưa. Bước này cần thiết vì cơ sở tri thức khác có thể đã chứng
minh đích này.
Nếu đích chưa hề được chứng minh, nó tìm các luật có phần THEN chứa
đích. Luật này gọi là luật đích.
Hệ thống xem phần giả thiết của các luật này có trong bộ nhớ làm việc
không. Các giả thiết không được liệt kê trong bộ nhớ gọi là các đích mới, hoặc
đích con, cần được chứng minh. Các đích con này được cung cấp, tức giải, nhờ
các luật khác.
Quá trình này tiếp tục đệ qui cho đến khi hệ thống tìm thấy một giả thiết
không được luật nào cung cấp. Đó là một "sơ khởi". Sơ khởi là giả thiết của một
luật mà không do luật nào kết luận.
67
Khi thấy sơ khởi hệ thống yêu cầu người sử dụng các thông tin về nó. Hệ
thống dùng các thông tin này để giải đích con và đích ban đầu. Suy diễn lùi thực
hiện tương tự như cách con người kiểm tra một giả thiết có đúng không.
Gọi Hyp là danh sách các giả thiết cần chứng minh. Ta coi mỗi một câu hỏi
là một giả thuyết Hyp = H1^H2^.. ^ Hn, thì ta có danh sách hyp = [H1, H2, ..
,Hn]
Với mỗi luật R: nếu P1 và P2 và Pn thì Q ta tách luật này ra thành hai
phần: danh sách các điều kiện và phần kết luận. Ta ký hiệu danh sách các điều
kiện của luật là Conds=[P1, P2, .., Pn] và phần kết luận của luật được ký hiệu là
Conc = Q.
Ta coi các sự kiện là các luật có phần điều kiện là một danh sách rỗng.
Cơ chế suy diễn lùi được mô tả như thủ tục sau đây:
Procedure Backchain(Hyp, θ)
Begin
H Í giả thiết đầu tiên trong danh sách Hyp
For each Luật R(Conds, Q) do
{
If H hợp nhất với Q bởi phép thế θ1 then
{
Hyp1 = Hyp - H
Hyp1 = Hyp1 + Conds
Hyp1 = Hyp1θ1
θ’=θ + θ1
If Hyp1 = rỗng then
Write(θ’)
Else
BackChain(Hyp1, θ’);
}
}
End;
68
Ví dụ:
Giả sử tri thức chứa các sự kiện sau:
(1) horse(tom)
(2) horse(ken)
(3) horse(kit)
(4) horse(bin)
(5) mother(tom, bin)
(6) mother(tom, ken)
(7) mother(bin, kit)
(8) fast(kit)
(9) winner(bin) (bin thắng cuộc)
Luật:
(10) horse(X)^ mother(X, Y)^ fast(Y) => valueable(X)
(11) winner(X) => fast(X) (Con ngựa nào thắng cuộc thì con ngựa đó chạy
nhanh)
Câu hỏi đặt ra là: Con ngựa nào có giá?
Giả thuyết ban đầu : Hyp = valueable(W), θ = []
HYP = VALUEABLE(W), θ = []
HYP = [ MOTHER(TOM, Y), FAST(Y)]
θ = [W/TOM]
HYP = [HORSE(X), MOTHER(X, Y),
FAST(Y)]
HYP = [FAST(BIN)]
θ = [W/TOM,
HYP = [WINNER(BIN)]
θ = [W/TOM, Y/BIN,
HYP = [MOTHER(KEN, Y),
FAST(Y)]
θ = [W/KEN]
HYP = [
MOTHER(KIT, Y),
FAST(Y)]
θ = [W/KIT]
HYP = [MOTHER(BIN, Y), FAST(Y)]
θ = [W/BIN]
HYP = [FAST(KIT)]
θ = [W/BIN, Y/KIT]
H =[]
θ1 = [W/X], (10)
θ1 = [X/TOM], (1) θ1 = [X/KEN], (2) θ1 = [X/KIT], (3) θ1 = [X/BIN], (4)
θ1 = [Y/BIN], (5)
θ1 = [Z/BIN],
(11)
θ1 = [Y/KIT], (7)
θ1 = [],
(8)
69
Chú ý: Do trong thời gian ngắn, cộng thêm việc phải có đề cương tiếng Việt cho sinh viên
tham khảo nên tài liệu này được tổng hợp từ một số nguồn khác nhau, trong đó một phần
không nhỏ được lựa chọn trong cuốn “Trí tuệ nhân tạo” của thầy Đinh Mạnh Tường.
Cuốn tiếng Anh: Russell and S.Norvig, Artificial intelligence: Modenrn approach, Prentice-
Hall, 3rd edition, 2003 là rất đầy đủ và hay!
File đính kèm:
Đề cương bài giảng Trí tuệ nhân tạo.pdf

