Trí Tuệ Nhân Tạo
Nguyễn Nhật Quang
Viện Cơng nghệ Thơng tin và Truyền thông
Trường Đại học Bách Khoa Hà Nội
Năm học 2009-2010
Nội dung mơn học:
Giới thiệu về Trí tuệ nhân tạo
Tác tử
Giải quyết vấn đề: Tìm kiếm, Thỏa mãn ràng buộc
Logic và suy diễn
Lập trình logic Prolog
(Dựa trên bài giảng
csc.villanova.edu/ dmatusze/8310summer2001/index.html/prolog1.ppt)
csc.villanova.edu/~dmatusze/8310summer2001/index.html/prolog1.ppt)
Biểu diễn tri thức
Suy diễn với tri thức không chắc chắn
Học máy
Lập kế
ế hoặch
Trí tuệ nhân tạo
2
Lập
p trình logic
g
Một chương trình logic biểu diễn một cơ sở tri thức (một
tập các mệnh đề logic)
Các mệnh đề logic phải ở dạng chuẩn Horn
p1 ∧ p2 ∧ … ∧ pn → q1 ∨ q2 ∨ … ∨ qm
Nếu n=0, m=1, thì q1 là một sự kiện (fact)
Nếu n≥1, m
m=1,
1, thì (p1 ∧ p2 ∧ … ∧ pn → q1) là một luật
(rule)
Nếu n≥1, m>1, thì tương đương với luật (p1 ∧ p2 ∧ … ∧
pn ∧ ¬q1 ∧ ¬q2 ∧ … ∧ ¬qm-1 → qm)
Trí tuệ nhân tạo
3
Ngơn
g ngữ
g lập
p trình logic
g Prologg
Prolog = Programming Logic
Một
ột ngơn
gơ ngữ
gữ lập
ập ttrình logic
og c được sử dụ
dụng
g rất
ất p
phổ
ổb
biến
ế
Trong ngôn ngữ Prolog
Các luật và các sự kiện là các tiên đề (axioms)
Câ hỏi,
Câu
hỏi được
đ
đ
đưa
ra bởi người
ời dùng,
dù
là định
đị h lý cần
ầ chứng
hứ minh
i h
Prolog áp dụng phương pháp suy diễn quay lui (Back
Chaining) để chứng minh
Để chứng minh P(a)
Tìm sự kiện P(t) hoặc luật (Q1 ∧ Q2 ∧ … ∧ Qn → P(t))
Nếu tìm được sự kiện P(t),
P(t) thay thế tt=a
a, định lý được chứng minh
Nếu tìm được luật (Q1 ∧ Q2 ∧ … ∧ Qn → P(t)), thì cần tiếp tục chứng
minh các giả thiết
Nếu có các biến, tìm cách thay thế các biến này bằng các giá trị, sao cho
đích chứng minh được thỏa mãn
Trí tuệ nhân tạo
4
Phần mềm SWI-Prologg
SWI-Prolog là một cơng cụ lập trình Prolog được sử
dụng rất phổ biến,
biến có các phiên bản chạy trên các hệ
điều hành Windows, MacOS, và Linux
Bản quyền sử dụng phần mềm SWI
SWI-Prolog
Prolog là miễn phí
cho mục đích học tập và nghiên cứu
SWI Prolog có thể tải về từ địa chỉ:
SWI-Prolog
/>
Trí tuệ nhân tạo
5
Ví dụ về chươngg trình Prologg (1)
Suy diễn logic
T ấ là một
Tuấn
ột sinh
i h viên
iê của
ủ HUT
Mọi sinh viên của HUT đều học mơn Tốn rời rạc
Tuấn có học mơn Tốn rời rạc khơng?
Chương trình Prolog
studentHUT(tuan)
studentHUT(tuan).
studDiscretMath(X) :- studentHUT(X).
?- studDiscretMath(tuan).
(
)
Trí tuệ nhân tạo
6
Ví dụ về chươngg trình Prologg (2)
Sự kiện: Tuấn là một sinh viên của HUT
Luật: Mọi sinh viên của HUT đều học mơn Tốn rời rạc
studDiscretMath(X) :: studentHUT(X).
studentHUT(X)
Câu hỏi (của người dùng): Tuấn có học mơn Tốn rời
rạc khơng?
studentHUT(tuan).
t d tHUT(t
)
?- studDiscretMath(tuan).
Các câu hỏi có cùng dạng như các sự kiện
Trí tuệ nhân tạo
7
Chạy chươngg trình Prologg (1)
Sử dụng một chương trình soạn thảo (vd: Notepad) để
tạo ra chương trình (cơ sở tri thức)
Ghi lại chương trình trong một tập tin định dạng văn bản
(text only) sử dụng đuôi của tập tin là .pl
Ví dụ một chương trình Prolog:
studentHUT(tuan).
studDiscretMath(X) :- studentHUT(X).
Trí tuệ nhân tạo
8
Chạy chươngg trình Prologg (2)
Để chạy chương trình Prolog:
(Với hệ điều
điề hành
hà h Windows),
Wi d
) kích
kí h đúp
đú lên
lê tập
tậ tin
ti chương
h
tì h
trình,
hoặc
Chạy phần mềm SWI-Prolog, và tham vấn (consult) tới tập tin
chương
h
tì h
trình
?- consult('C:\\PrologPrograms\\myPrologProg.pl').
Sau đó,
đó đưa ra câu hỏi mong muốn
?- studDiscretMath(tuan).
Prolog
o og đưa ra
a câu ttrả
ả lời
ờ
Yes
Trí tuệ nhân tạo
9
Prologg – Chứngg minh định lý
Prolog trả về giá trị Yes có nghĩa là “chứng minh được”
Prolog
P
l trả
t ả về
ề giá
iá trị
t ị No
N có
ó nghĩa
hĩ là “khơng
“khơ thể chứng
hứ
minh”
? stud_DiscretMath(hai).
?stud DiscretMath(hai)
No
Closed world assumption: Chương trình Prolog biết tất
cả
ả về
ề những
hữ gìì nó
ó cần
ầ biết
Prolog cung cấp các giá trị cho các biến khi cần, để có
thể hồn chỉnh một chứng minh
?- stud_DiscretMath(X).
X = tuan
Trí tuệ nhân tạo
10
Cú p
pháp:
p Các cấu trúc
Một cấu trúc (structure) gồm một tên (name) và không,
một hoặc nhiều tham số (arguments)
một,
Bỏ đi cặp dấu ngoặc (), nếu như khơng có tham số
Các ví dụ của cấu trúc
sunshine
man(socrates)
path(garden, south, sundial)
Trí tuệ nhân tạo
11
Cú p
pháp:
p Các mệnh đề cơ sở
Một cấu trúc chính là một mệnh đề cơ sở (base clause)
Một mệnh
ệ h đề cơ sở
ở biểu
biể diễn
diễ một
ột sự kiện
kiệ (fact)
(f t)
Các ví dụ của mệnh đề cơ sở
j hn
john.
mary
bill
loves(john, mary).
loves(mary, bill).
Trí tuệ nhân tạo
12
Cú p
pháp:
p Biểu diễn luật
Một luật được biểu diễn bao gồm
Một cấu
ấ trúc
t ú (biểu
(biể diễn
diễ mệnh
ệ h đề kết luận
l ậ của
ủ luật
l ật – mệnh
ệ h đề
THEN)
Ký hiệu :Một danh sách các cấu trúc (biểu diễn mệnh đề giả thiết của luật
– mệnh đề IF), ngăn cách nhau bởi dấu ,
Các ví dụ của luật
mortal(X) :- man(X).
happy(X)
ppy( ) :- healthy(X),
y( ) wealthy(X),
y( ) wise(X).
( )
Dấu , giữa các cấu trúc có nghĩa như tốn tử logic AND
Trí tuệ nhân tạo
13
Cú p
pháp:
p Các vị từ logic
g
Một vị từ (predicate) là một tập hợp các mệnh đề với
cùng tên và một số (>
(>=1)
1) các tham số
Ví dụ: Các mệnh đề biểu diễn vị từ loves
loves(john mary).
loves(john,
mary)
loves(mary, bill).
loves(chuck, X) :- female(X), rich(X).
Trí tuệ nhân tạo
14
Cú p
pháp:
p Chươngg trình
Một chương trình (program) là một tập hợp các mệnh
đề
Các mệnh đề trong chương trình có thể được sắp xếp
theo bất kỳ trật tự (thứ tự) nào
Các mệnh đề của một vị từ được sử dụng (được xét đến)
theo đúng trật tự của chúng trong chương trình
Trí tuệ nhân tạo
15
Cú p
pháp:
p Các biến và hằngg
Các biến bắt đầu bằng chữ cái in hoa hoặc ký tự đặc biệt
Vd X,
Vd:
X Socrates,
S
t
_result
lt
Các hằng không bắt đầu bằng chữ cái in hoa hoặc ký tự
đặc
ặ biệt
ệ
Vd: x, socrates
Các hằng chứa các ký tự đặc biệt, hoặc bắt đầu với chữ
cái in hoa, thì phải
ả đặt vào trong cặp ký tự nháy đơn ''
Vd: 'C:\\My Documents\\examples.pl'
Để hiển thị ký tự
t nháy
nhá đơn,
đơn thì phải sử dụng:
d ng '' hoặc \
\'
Trí tuệ nhân tạo
16
Cú pháp: Chú thích
Được đặt trong cặp dấu: /*…*/
H ặ được
Hoặc
đ
đặt sau dấu
dấ %
Ví dụ
parent(x,y).
t(x ) % sự
s kiện
kiệ mơ tả x là cha
h mẹ
m của
ủ y
Trí tuệ nhân tạo
17
Cú p
pháp:
p Các lỗi hay ggặp
p
Phân biệt giữa chữ hoa và chữ thường là rất quan trọng
Khơng được
Khơ
đ
có
ó khoảng
kh ả trắng
t ắ (space
(
characters)
h
t ) giữa
iữ
tên và danh sách tham số của một cấu trúc
Biểu diễn hợp
ợp lệ:
ệ man(socrates).
(
)
Biểu diễn không hợp lệ: man (socrates).
Kết thúc của mỗi mệnh đề phải có dấu chấm (.)
Có thể đặt dấu chấm ở dịng kế tiếp
Trí tuệ nhân tạo
18
Suy diễn lùi trongg Prologg
Giả sử chúng ta có cơ sở tri thức (chương trình Prolog):
loves(chuck X) ::- female(X),
loves(chuck,
female(X) rich(X)
rich(X).
female(jane).
female(mary).
rich(mary).
Giả sử người dùng đặt câu hỏi
loves(chuck, X)
Quá trình suy diễn lùi (Back chaining) của Prolog:
female(X) = female(jane)
female(jane), X = jane.
jane
rich(jane).
: thất bại (không thể chứng minh được!)
female(X) = female(mary), X = mary.
rich(mary)
rich(mary).
: thành cơng (chứng minh được!)
Trí tuệ nhân tạo
19
Các lời gọi
g
Mỗi lời gọi (call) trong chương trình Prolog được thể hiện
bởi:
call
exit
redo
fail
Mỗi cấu trúc (trong chương trình Prolog) có bốn cổng
(ports):
(p
) call,, exit,, redo,, fail
Cổng exit kết nối với cổng call
Cổng
g fail kết nối với cổng
g redo
Trí tuệ nhân tạo
20
Các lời ggọi lồngg nhau (nested calls)
loves(chuck,
(
X)) :- female(X),
( ) rich(X).
( )
loves(chuck X)
loves(chuck,
call
fail
female(X)
Trí tuệ nhân tạo
rich(X)
exit
redo
21
Các câu trả lời bổ sungg
female(jane).
f
l (j
)
female(mary).
female(susan)
female(susan).
female(X)
?- female(X).
X = jane
j
X = mary
X = susan
Yes
Trí tuệ nhân tạo
female(jane)
female(mary)
female(susan)
22
Các cách đọc
loves(chuck, X) :- female(X), rich(X).
Cách
Cá
h đọc
đ theo
th kiểu
kiể khai
kh i báo:
bá Chuck
Ch k yêu
ê X nếu
ế X là phụ
h
nữ và giàu có
Cách đọc theo kiểu thủ tục xấp xỉ: Để tìm được một đối
tượng X mà Chuck yêu, thì trước tiên phải tìm được một
phụ nữ X, sau đó kiểm tra xem X có giàu hay khơng
Cá h đọc
Cách
đ theo
th kiểu
kiể khai
kh i báo
bá thường
th ờ được
đ
ưa thích
thí h hơn
h
Trí tuệ nhân tạo
23
Logic
g đơn điệu
Logic đơn điệu (monotonic logic): Một khi chứng
minh
i hđ
được một
ột điều
điề gìì đó là đúng,
đú
thì điề
điều đó sẽ
ẽ mãi
ãi
mãi đúng
Logic đơn điệu không phù hợp với các bài tốn (ứng
dụng) thực tế
Nếu cái ví ở trong túi xách tay và túi xách tay ở trong xe ơ-tơ,
thì chúng ta có thể kết luận là cái ví ở trong xe ơ
ơ-tơ
tơ
Nhưng, điều gì xảy ra nếu cái ví được lấy ra khỏi xe ơ-tơ?
Trí tuệ nhân tạo
24
Logic
g khôngg đơn điệu
Prolog sử dụng logic không đơn điệu (nonmonotonic logic)
Trong Prolog,
Prolog các sự kiện và các luật có thể được thay đổi
ở một thời điểm nào đó
Một mệnh đề được chứng minh là đúng ở một thời điểm trước có
thể khơng cịn (khơng thể được chứng minh) là đúng ở một thời
điểm sau
Những sự kiện và luật như vậy được gọi là động (không cố định)
assert(...) : để bổ sung một sự kiện hoặc một luật vào cơ sở tri
thức
retract( ) : để loại bỏ một sự kiện hoặc một luật khỏi cơ sở tri
retract(...)
thức
assert và retract được gọi là các vị từ ngồi logic (extralogical
predicates)
Trí tuệ nhân tạo
25