Bài giảng Công nghệ tri thức và ứng dụng - Phần 2: Các hệ cơ sở tri thức - Chương 3: Bên trong một hệ Cơ sở tri thức

Ví dụ: (tt) (chẩn đoán hỏng máy tính)

Một số luật suy diễn :

 R1. Nếu (điện vào máy là “có”) và (âm thanh đọc ổ cứng là “không”) thì (ổ cứng “hỏng”).

 R2. Nếu (điện vào máy là “có”) và (tình trạng đèn ổ cứng là “tắt” ) thì (ổ cứng “hỏng”).

 R3. Nếu (điện vào máy là “có”) và (tình trạng đèn màn hình là “chớp đỏ”) thì (cáp màn hình “lỏng”).

 Để xác định được các nguyên nhân gây ra sự kiện “không sử dụng được máy tính”, ta phải xây dựng một cấu trúc đồ thị gọi là đồ thị AND/OR như sau :

 

ppt39 trang | Chuyên mục: Công Nghệ Tri Thức & Máy Học | Chia sẻ: dkS00TYs | Lượt xem: 1810 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Công nghệ tri thức và ứng dụng - Phần 2: Các hệ cơ sở tri thức - Chương 3: Bên trong một hệ Cơ sở tri thức, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ATCH (hypo.FACT) = F THEN DELETE hypo TOHYPO d. Tiếp nhận FACT mới từ bên ngồi GET (FACT) 	[ ]	: Lặp lại nhiều lần 	{ }	: Tùy chọn 	Lập luận tiến: [(1)] 	Lập luận lùi: (6) + [(7)] + {d} + (9) + [(1)] 	Lập luận phản chứng: [(4)] + {d} + (10) + [(2)] IV. Phương pháp suy diễn(tt) 2. Suy diễn tiến : là quá trình suy luận xuất phát từ một số sự kiện ban đầu, xác định các sự kiện có thể được “sinh” ra từ sự kiện này. Ví dụ : Cho 1 cơ sở tri thức được xác định như sau : 	Các sự kiện : A, B, C, D, E, F, G, H, K 	Tập các quy tắc hay luật sinh (rule)  	{	R1 : A  E; 	R2 : B  D; 	R3 : H  A;	R4 : E  G  C; 	R5 : E  K  B;	R6 : D  E  K  C; 	R7 : G  K  F  A; 	} IV. Phương pháp suy diễn(tt) Ví dụ: (tt) (suy diễn tiến) Sự kiện ban đầu : H, K 	R3 : H  A {A, H. K } 	R1 : A  E { A, E, H, K } 	R5 : E  K  B { A, B, E, H, K } 	R2 : B  D { A, B, D, E, H, K } 	R6 : D  E  K  C { A, B, C, D, E, H, K } Tập hợp { A, B, C, D, E, H, K } được gọi là bao đóng của tập {H,K} trên tập luật R (gồm 7 luật như trên). IV. Phương pháp suy diễn(tt) 3. Suy diễn lùi: là quá trình suy luận ngược xuất phát từ một số sự kiện ban đầu, ta tìm kiếm các sự kiện đã “sinh” ra sự kiện này. Một ví dụ thường gặp trong thực tế là xuất phát từ các tình trạng của máy tính, chẩn đoán xem máy tính đã bị hỏng hóc ở đâu. Ví dụ: Tập các sự kiện : 	Ổ cứng là “hỏng” hay “hoạt động bình thường” 	Hỏng màn hình. 	Lỏng cáp màn hình. 	Tình trạng đèn ổ cứng là “tắt” hoặc “sáng” 	Có âm thanh đọc ổ cứng. 	Tình trạng đèn màn hình “xanh” hoặc “chớp đỏ” 	Điện vào máy tính “có” hay “không” IV. Phương pháp suy diễn(tt) Ví dụ: (tt) (chẩn đoán hỏng máy tính) Một số luật suy diễn :  R1. Nếu (điện vào máy là “có”) và (âm thanh đọc ổ cứng là “không”) thì (ổ cứng “hỏng”).  R2. Nếu (điện vào máy là “có”) và (tình trạng đèn ổ cứng là “tắt” ) thì (ổ cứng “hỏng”).  R3. Nếu (điện vào máy là “có”) và (tình trạng đèn màn hình là “chớp đỏ”) thì (cáp màn hình “lỏng”).  Để xác định được các nguyên nhân gây ra sự kiện “không sử dụng được máy tính”, ta phải xây dựng một cấu trúc đồ thị gọi là đồ thị AND/OR như sau : IV. Phương pháp suy diễn(tt) V. Xây dựng hệ CSTT 1. Tổng quan quá trình xây dựng hệ CSTT V. Xây dựng hệ CSTT (tt) 2. Một số buớc cơ bản để xây dựng hệ cơ sở tri thức Tiếp cận chuyên gia Tổ chức thu thập tri thức Chọn lựa công cụ phát triển hệ cơ sở tri thức 	Chọn ngôn ngữ lập trình trí tuệ nhân tạo (LISP, PROLOG, …) 	Các ngôn ngữ lập trình thông dụng Các hệ cở sở tri thức rỗng (shell): là một công cụ lai giữa hai loại trên Cài dặt hệ CSTT VI. Cài đặt hệ CSTT 1. Vài nét về PROLOG Prolog (PROgramming in Logic) là một ngôn ngữ lập trình dạng khai báo 1.1 Mô tả các vị từ: Cơ sở tri thức của Prolog bao gồm các vị từ, có thể mô tả các khái niệm sau: Sự kiện: 	Cú pháp: () 	 Quả chanh có màu xanh  Xanh(Chanh) Mối liên hệ giữa các đối tuợng 	Cú pháp: (, …, ) 	 An yêu Bình  Yêu(An, Bình) 	 Cấu trúc giữa các đối tuợng Cú pháp: (, …, ) Xe máy hiệu Dream, 110 phân khối, màu nâu, 4 số, giá 30 triệu. 	 Xe máy(Dream, 110, nâu, 4, 30) Các luật Cú pháp: ( , …, ) :- , …, A là chim nếu A có cánh và A biết bay 	 Chim(A) :- CóCánh(A), BiếtBay(A). Dùng dấu phẩy (,) dể biểu diễn toán tử AND, dấu chấm phẩy (;) dể biểu diễn toán tử OR và toán tử không bằng là \= VI. Cài đặt hệ CSTT (tt) Ví dụ: A là tổ tiên của B nếu: 	A là cha mẹ của B (phần kết thúc) 	A là cha mẹ của C và C là tổ tiên của B.   Ta định nghĩa luật như sau :  	ToTien(A,B) :- ChaMe(A,B). 	ToTien(A,B) :- ChaMe(A,C), ToTien(C,B). VI. Cài đặt hệ CSTT (tt) 1.2 Truy vấn cơ sở tri thức 2 loại câu hỏi cơ bản Yes, No Số liệu Cú pháp ? - VI. Cài đặt hệ CSTT (tt) Ví dụ : Quả chanh có màu xanh là đúng hay sai ? 	 ?- Xanh(Chanh) Ví dụ : Nếu ta có khai báo hai vị từ là : Yeu(An, Binh), Yeu(An, Chau) An yêu ai ?  Yeu(An, X) Hệ thống sẽ trả lời là : 	X  Binh 	X  Chau 	2 Solution(s) VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) 2. Cài đặt một hệ CSTT về tình trạng gia đình bằng ngôn ngữ Prolog 2.1 Mô tả các sự kiện trong quan hệ gia đình   VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) 2.2 Định nghĩa các quan hệ gia đình khác dựa trên các sự kiện đã nêu VI. Cài đặt hệ CSTT (tt) 2.3 Suy luận Chẳng hạn khi muốn đặt ra câu hỏi "Ai là chị của andrew" và bật chức năng TRACE cho phép dò theo quá trình suy luận của PROLOG ta sẽ được hiển thị các thông tin sau :  ?- sister_of(S, andrew) Đầu tiên, hệ thống sẽ tìm giá trị S thỏa điều kiện gender(S, female). Quá trình tìm kiếm sẽ dừng lại ở sự kiện gender(elizabeth, female).  CALL gender(S, female) 	... suceeds; S elizabeth Do đó, sự kiện sibling_of(elizabeth, andrew) được đánh giá là sai.  FAIL sibling_of(elizabeth, andrew)   VI. Cài đặt hệ CSTT (tt) Hệ thống tìm một giá trị S khác thỏa điều kiện gender(S, female). Quá trình tìm kiếm sẽ dừng lại ở sự kiện gender(anne, female).  	REDO gender(S, female)	... suceeds; S anne Hệ thống tìm A, B thỏa điều kiện tiếp theo là parents(A, B, elizabeth). Quá trình tìm kiếm sẽ dừng lại ở sự kiện parents(philip, elizabeth, anne) 	CALL sibling_of(anne, andrew) 	CALL parents(A, B, anne) 	... suceeds; 	A  philip, B  elizabeth  Hệ thống kiểm tra điều kiện cuối cùng S\=andrew  	CALL anne \= andrew	... suceeds VI. Cài đặt hệ CSTT (tt) Như vậy là vị từ subling_of(anne, andrew) có giá trị đúng. EXIT subling_of(anne, andrew) Kết luật là anne là chị của andrew. EXIT sister_of(anne, andrew) 3. Cài đặt hệ CSTT bằng ngôn ngữ lập trình thông thuờng Giả sử hệ CSTT của chúng ta hoạt động theo cây quyết định sau: VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) 3.1 Biễu diễn tri thức dưới dạng luật dẫn VI. Cài đặt hệ CSTT (tt) Tập luật dẫn ban đầu có được từ cây quyết định trên sẽ như sau :   IF (KHOIDONG = DUOC) AND (IN = DUOC) THEN HONG = KHONG. IF (KHOIDONG = DUOC) AND (IN = KHONG) THEN HONG = IN IF (KHOIDONG = KHONG) AND (THONGBAO = HDD) THEN HONG = HDD 4. IF (KHOIDONG = KHONG) AND (THONGBAO = GENERAL) THEN HONG = CMOS 5. IF (KHOIDONG = KHONG) AND (THONGBAO = KHONG) AND (AMTHANH = CO) THEN HONG = RAM 6. IF (KHOIDONG = KHONG) AND (THONGBAO = KHONG) AND (AMTHANH = KHONG) THEN HONG = UNKNOWN VI. Cài đặt hệ CSTT (tt) Tập luật có thể viết lại như sau : (không khởi động và không thông báo  KH_KDTB ) IF (KHOIDONG = DUOC) AND (IN = DUOC) THEN HONG = KHONG. IF (KHOIDONG = DUOC) AND (IN = KHONG) THEN HONG = IN IF (KHOIDONG = KHONG) AND (THONGBAO = HDD) THEN HONG = HDD IF (KHOIDONG = KHONG) AND (THONGBAO = GENERAL) THEN HONG = CMOS IF (KHOIDONG = KHONG) AND (THONGBAO=KHONG) THEN KH_KDTB = DUNG IF (KH_KDTB = DUNG) AND (AMTHANH = CO) THEN HONG = RAM IF (KH_KDTB = DUNG) AND (AMTHANH = KHONG) THEN HONG = UNKNOWN VI. Cài đặt hệ CSTT (tt) 3.2 Lưu trữ và phân loại biến Biến nhập : là các biến chỉ xuất hiện ở vế trái của các luật  Biến trung gian : là các biến xuất hiện ở cả vế trái lẫn vế phải ở các luật  Biến xuất: các biến chỉ xuất hiện ở vế phải ở các luật VI. Cài đặt hệ CSTT (tt) 3.3 Lưu trữ luật Để lưu trữ một luật, ta cần lưu trữ các biến tham gia vào vế trái cùng với giá trị của các biến đó (để kích hoạt luật). Vế phải của luật chỉ bao gồm một biến nên khá đơn giản ta chỉ việc thêm một cột tên biến và giá trị của biến sẽ được đặt khi luật cháy gọi là giá trị cháy vào bảng VếPhải sau: VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) Để mô tả vế trái của luật, ta dùng bản VếTrái với 3 cột như sau: Với các cấu trúc trên, tại mọi thời điểm, ta đều có thể truy xuất đến mọi thuộc tính của các luật. Sau đây là các ký hiệu : 	.Chay : cho biết luật có cháy hay chưa.  	.VePhai.Bien : biến ở vế phải của luật. 	.VePhai.GiaTriChay : giá trị cháy ứng với biến ở 	vế phải của luật.  	.VeTrai.SoBien : số lượng biến trong vế trái của luật. 	.VeTrai.Bien[i] : biến thứ i ở vế trái của luật. 	.VeTrai.GiaTriChay[i] : giá trị cháy ứng với biến thứ 	i ở vế trái của luật.  VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) 3.4 Hàm kích hoạt luật FUNCTION KichHoatLuat(L : Luat) : BOOLEAN BEGIN 	IF L.Chay = TRUE THEN 	 	RETURN FALSE; { Luật đã cháy rồi, không kích hoạt được} 	Fire = TRUE; 	FOR i = 1 TO L.VeTrai.SoBien BEGIN 	v = L.VeTrai.Bien[i]; 	{ có một biến không thỏa điều kiện cháy } 	IF (v.KhoiTao =FALSE) OR 	 (v.GiaTri  L.VeTrai.GiaTriChay[i]) THEN BEGIN 	Fire = FALSE;	EXIT FOR; 	END; 	END; 	If Fire = TRUE THEN 	L.VePhai.Bien.ThuocTinh.GiaTri = L.VePhai.Bien.GiaTriChay; 	RETRUN Fire; END; VI. Cài đặt hệ CSTT (tt) 3.5 Cài đặt thuật toán suy diễn lùi FUNCTION TinhGiaTriBien(V : Bien, L : Luat) { Tính giá trị của biến V trong trái của luật L} BEGIN	 	IF (V.KhoiTao = TRUE) THEN RETURN; 	ELSE BEGIN 	IF V.Loai = INPUT THEN BEGIN 	; 	RETURN; 	END; 	ELSE BEGIN 	FOR EACH LT IN TapLuat DO 	IF (LT.VePhai = V) THEN BEGIN 	FOR i = 1 TO LT.VeTrai.SoBien DO BEGIN 	TinhGiaTriBien(LT.VeTrai.Bien[i], LT); 	END; 	IF KichHoatLuat(LT) THEN RETURN; 	END; 	END; 	END; END Trong ví dụ của chúng ta, để biết giá trị biến HONG, ta có thể thực hiện như sau : { Khởi động trạng thái ban đầu cho tập biến và tập luật. } FOR EACH v  TapBien v.KhoiTao = FALSE; FOR EACH LT  TapLuat LT.Chay = FALSE V = HONG; { Luật 0 là một luật rỗng, dùng để "đệm" cho lần đệ quy đầu tiên, luôn cháy } TinhGiaTriBien(V, 0); IF V.KhoiTao = FALSE THEN 	; ELSE 	; VI. Cài đặt hệ CSTT (tt) VI. Cài đặt hệ CSTT (tt) 3.6 Cài đặt thuật toán suy diễn tiến Thuật toán suy diễn tiến rất đơn giản. Chẳng hạn, xuất phát từ ba trạng thái là KHOIDONG = KHONG, THONGBAO = KHONG, AMTHANH = CO ta có thể kết luận được điều gì ? ; CapNhat = TRUE; LSET = TapLuat; WHILE CapNhat DO BEGIN 	CapNhap = FALSE;	 	FOR EACH LT  LSET DO 	IF KichHoatLuat(LT) = TRUE THEN BEGIN 	{Bỏ những luật đã cháy ra khỏi tập luật.} 	LSET = LSET \ LT; 	CapNhap = TRUE; 	END; END Mục đích thường gặp của quá trình suy diễn tiến là xác định giá trị của tất cả biến xuất. Do đó, ta có thể xem đây là một trường hợp đặc biệt của suy diễn lùi. Như vậy, chỉ cần bỏ dòng ; Trong cài đặt ở phần suy diễn lùi là ta có thể dùng lại hàm TínhGiaTriBien để cài đặt thuật toán suy diễn tiến một cách vô cùng đơn giản (!) như sau : ; FOR EACH LT  TapLuat DO 	TinhGiaTriBien(LT.VePhai.Bien,LT); VI. Cài đặt hệ CSTT (tt) 

File đính kèm:

  • pptBài giảng Công nghệ tri thức và ứng dụng - Phần 2 Các hệ cơ sở tri thức - Chương 3 Bên trong một hệ Cơ sở tri thức.ppt
Tài liệu liên quan