Tải bản đầy đủ (.pdf) (46 trang)

TRÍ TUỆ NHÂN TẠO. Nguyễn Nhật Quang. Viện Cơng nghệ Thông tin Truyền thông Trường Đại học Bách Khoa Hà Nội

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (450.98 KB, 46 trang )

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,

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ơ
đ

ó 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


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ơ

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


×