Vậy, suy diễn tiến là chiến lược suy luậ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 quá trình này cho tới 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 luận.
Ứng dụng đơn giản nhất của hệ thống suy diễn tiến hoạt động như sau:
1. Trước tiên hệ thống lấy các thông tin về bài toán do người sử dụng cung cấp và đặt chúng vào bộ nhớ làm việc. Nhập dữ liệu vào bộ nhớ Kết luật vào bộ nhớ làm việc Giả thiết khớp với bộ nhớ Xét một lượt Thấy khớp Còn luật RA Ra không thấy Sai Đúng Sai Đúng Đúng Sai
2. Suy luận quét các luật theo dãy xác định trước, xem phần giả thiết có trùng khớp với nội dung trong bộ nhớ
3. Nếu phát hiện một luật như mô tả trên, bổ sung kết luận của luật này vào bộ nhớ. Luật này gọi là cháy
4. Tiếp tục quá trình này, có thể bỏ qua các luật đã cháy. Quá trình tiếp cho đến khi không khớp được luật nào.
Quá trình dừng khi người ta không tiếp tục làm được hay thấy điều cần chứng minh. Lúc này bộ nhớ có các thông tin của người dùng và thông tin do hệ thống suy luận.
Ta có thể cài đặt một chương trình suy diễn tiến như sau: Gọi T là tập các sự kiện tại thời điểm đang xét
Khởi tạo T = F: tập sự kiện đúng ban đầu. Xét các luật ri có dạng
p1 p2 ….pn → q ; pj T j =1,…,n nghĩa là left(ri ) T Thì T = T right(ri)
Quá trình được lặp lại cho đến khi G T (G là tập các sự kiện cần phải chứng minh) hoặc không có luật nào sinh ra sự kiện mới.
Procedure forward_reasoning Begin T: = F; S : = loc(R, T); S: là tập các luật có dạng p1 p2 ….pn → q ; pj T j =1,…,n While (GT and S <> ) do Begin r: = get(S) T: = T + right(r) R: = R \ {r}; S: = loc(R,T) End;
If G T then writeln(“OK”) Else writeln(“fail”);
End; Ví dụ:
Cho trước tập các sự kiện F = {a,b}, với các luật như sau: r1: a → c r2: b → d r3: c → e r4: a d → e r5: b c → f r6: e f → g Ta cần phải suy ra g
Quá trình suy luận được diễn ra như sau:
R T S R a,b r1, r2, r3 r1, r2, r3, r4, r5, r6 r1 a,b, c r2, r3, r5 r2, r3, r4, r5, r6 r2 a,b, c, d r3, r4, r5 r3, r4, r5, r6 r3 a,b, c, d, e r4, r5 r4, r5, r6 r4 a,b, c, d, e r5 r5, r6 r5 a,b, c, d, e, f r6 r6 r6 a,b, c, d, e, f
g T nên bài toán đã được chứng minh.
b Giải quyết xung đột
Trong quá trình suy diễn tiến, hệ thống kiểm tra các luật khi giả thiết khớp với nội dung của bộ nhớ làm việc. Tất nhiên có các luật khác có thể cháy được nhưng không được hệ thống kịp xem xét đến. Sở dĩ như vậy là vì môtơ suy diễn xử lý các luật theo thứ tự . Thứ tự xem xét các luật là khía cạnh quan trọng trong hệ chuyên gia và được tôn trọng. Vì vậy tiếp cận này có thể là thuận lợi đối với một vài ứng dụng, hoặc gây khó khăn cho ứng dụng khác do thứ tự cứng nhắc đã qui định.
Để giải quyết xung đột này trong hệ thống, hệ chuyên gia cần tính đến chiến lược giải quyết xung đột.
- Chiến lược đơn giản là trước tiên thiết lập đích, và ngừng hệ thống ngay khi đạt được đích. Trong chiến lược này, thứ tự luật có ý nghĩa.
- Chiến lược khác là dùng độ ưu tiên của luật. Độ ưu tiên đơn giản là con số gán cho luật để thể hiện mức độ quan trọng của nó. Khi đó hệ thống sẽ kiểm tra các luật và chọn ra luật có độ ưu tiên cao nhất để thực hiện.
- Chiến lược chọn luật để thực hiện khi nó đã cháy vài lần.
Các chiến lược này gọi là chiến lược giải quyết xung đột. Trong hệ thống dùng chiến lược giải quyết xung đột này, việc giải bài toán được thực hiện theo các bước của quá trình ghi nhận - giải - hoạt động trên các luật.
1. Ghi nhận: Khớp giả thiết của các luật với sự kiện liệt kê trong bộ nhớ làm việc, và định tên các luật có thể cháy này.
2. Giải: Nếu nhiều luật có thể cháy, chọn một luật theo chiến lược nào đó. 3. Hoạt động: Thực hiện luật này và bổ sung kết luận vào bộ nhớ làm việc. Bước ghi nhận định tên các luật có thể thực hiện được rồi đặt chúng vào tập tranh chấp. Bước giải dùng một chiến lược để chọn ra một luật trong tập tranh chấp. Các chiến lược giải quyết xung đột điển hình được dùng là:
1. Luật đầu tiên có giả thiết khớp với nội dung bộ nhớ làm việc.
2. Luật có độ ưu tiên cao nhất. Trong hệ thống dùng chiến lược này, thứ tự
của thông tin là quan trọng.
3. Luật đặc biệt nhất. Chiến lược này để ý đến luật khác biệt so với các luật
tổng quát. Chẳng hạn một luật là khác biệt hơn nếu nó có nhiều giả thiết hơn. Tư tưởng của ý này là nếu xử lý nhiều thông tin thì có khả năng thành công nhiều hơn.
4. Luật liên quan đến phần tử vừa được thêm vào bộ nhớ. Chiến lược này
iên quan đến thời gian của các sự kiện trong bộ nhớ làm việc.
5. Không thực hiện luật đã cháy. Chiến lược này tránh được suy luận xoay
6. Thực hiện các luật với lập luận tách biệt. Nó yêu cầu làm cháy tất cả các luật nhưng bổ sung các kết luận vào bộ nhớ tách rời nhau. Điều này cho phép hệ thống quản lý các dòng suy luận tách rời và xem xét được nhiều lần giải.
Các chiến lược giải quyết xung đột đều là hoạt động điều khiển và thực hiện luật. Người ta có thể thêm vào hệ thống chức năng tìm may rủi để hướng dẫn tìm luật một cách thông minh. Việc chọn một hoặc nhiều luật phụ thuộc vào mức độ cần thiết của ứng dụng.
2.3.3 Suy luận lùi (backward chaining)
2.3.3.1 Suy luận lùi
Kỹ thuật suy luậ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 lập luận 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 các giả thuyết định chứng minh rồi tiến hành thu thập thông tin. Loại lập luận này được mô hình hoá trong hệ chuyên gia với tên là suy luận lùi [3][5][7,106].
Vậy suy diễn lùi là chiến lược suy luận để chứng minh một giả thuyết bằng cách thu thập thông tin hỗ trợ.
Hệ thống suy luậ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 là 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 kết luận chứa đích. Loại 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, hay
đí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à sơ khởi.
Vậy sơ khởi (primitive) là giả thiết của một luật mà không do luật nào kết luận. 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.
Ví dụ:
Giả sử sau khi tiếp chuyện bệnh nhân, bác sĩ nghi rằng người bệnh viêm họng. Công việc của ông ta là chứng tỏ nghi ngờ này. Thủ tục chẩn đoán được mô hình hoá bằng hệ chuyên gia suy luận lùi.
Luật 1 IF Có dấu hiệu viêm họng AND Có cơ quan bị viêm THEN Bệnh nhân bị viêm họng
Luật 2 IF Họng bệnh nhân bị đỏ
THEN Có dấu hiệu viêm nhiễm
Luật 3 IF Cơ quan bị tổn thương AND có khuẩn cầu AND Có hạt THEN Chắc chắn cơ quan nội tạng bị viêm
Bước 1: Đích: Bệnh nhân bị viêm họng Bước 2: Đã thấy đích: không
Bước 3: Tìm đích trong phần THEN của luật 1
Bước 4: Xem luật 1. Phần giả thiết : “dấu hiệu viêm” không? Bước 5: Tìm thấy các luật có giả thiết như phần THEN của luật 2? Bước 6: Xem luật 2, giả thiết 1 đã biết “họng đỏ” không?
Bước 7: Tìm thấy luật với giả thiết này trong phần THEN của luật nào đó không?
Bước 8: Giả thiết là sơ khởi. Cần có thông tin này bằng hội thoại: Hỏi: Họng có đỏ không?
Trả lời: Đúng!
Luật 2: Được cháy, do vậy “có dấu hiệu nhiễm khuẩn”
Bước 9: Xem luật 1, giả thiết 2 “có cơ quan nội tạng bị viêm” không? Bước 10: Tìm các luật có giả thiết trong phần THEN của luật 3
Bước 11: Tiếp theo là các suy diễn như trình bày. Tất cả 3 giả thiết của 3 luật là sơ khởi có được do trao đổi với người bệnh.
Giả sử thu được các câu trả lời đúng. Hệ thống bổ sung kết luận “chắc chắn có cơ quan nội tạng bị viêm” vào bộ nhớ do luật 3 bị cháy.
Bước 12: Luật 1 cháy, thêm kết luận vào bộ nhớ
Hình 2.2: Các bước suy diễn lùi
Ta có thể cài đặt một chương trình suy diễn lùi như sau: Gọi T là tập các sự kiện tại thời điểm đang xét.
Khởi tạo T = G: G tập kết luận cần chứng minh.
S(p) = {riR/ right(ri)=p} (là các luật trong trong R sao cho vế phải chứa p) Procedure backward_reasoning(g)
Begin
T: = {g};
Viêm họng
Viêm họng Viêm họng
Họng đỏ Vết thương Khuẩn cầu Hạt
1 2 3 4 6 7 6 8 9 11 10 12 Bệnh nhân có họng đỏ, dấu hiệu viêm nhiễm, có vết thương, khuẩn cầu, hạt, bệnh nhân bị viêm họng
If TF then writeln(„OK‟) else Begin p : = get(T); If S(p) = {} then writeln(„fail‟) Else For ri S(p) do Begin T : =T\ right(ri); T : = Tleft(ri); For I T\ F do Backward_reasoning(I); End; End; End; Ví dụ:
Cho trước tập các sự kiện F = {p,r}, với các luật như sau: r1 : p → q
r2 : qr → s
Ta cần chứng minh s
Quá trình suy luận được diễn ra như sau:
P R T S(p)
s
s r2 q, r r2
q r1 r, p r
2.3.3.2 Lên lịch các đích
Suy luận lùi đơn giản chỉ có một đích cần chứng minh. Mỗi hệ thống suy luận lùi có ít nhất một đích để bắt đầu. Tuy nhiên nhiều ứng dụng cần một xâu các đích theo dãy đã sắp thứ tự. Cái này gọi là lịch các đích.
Vậy lịch các đích là một xâu các đích tuân theo thứ tự mô tả trước.
Lịch các đích có thể chỉ là liệt kê thứ tự một hoặc 2. Hệ thống sẽ thực hiện các đích theo thứ tự xuất hiện trong lịch. Người ta dùng lịch các đích loại này khi về bản chất, bài toán được trình bày theo quá trình tuần tự.
Người ta có thể chỉ thị cho hệ thống cái cần làm khi đích được chứng minh. Chẳng hạn như quyết định để hệ thống tiếp tục chứng minh các đích khác hay dừng lại. Cũng có thể đưa ra lịch phức tạp để hệ thống biết phải làm gì khi đích đúng / sai.
Việc dùng lịch các đích được dùng nhiều trong trường hợp người dùng muốn có nhiều thông tin về vấn đề đang xét. Tuỳ theo mức độ thông tin đã đạt được mà họ có thể suy luận tiếp.
2.3.3.3 Các đích do người dùng đặt ra
Khi thiết kế lịch các đích, cần xác định thứ tự hệ thống tìm đích. Danh sách có thứ tự này là cứng nhắc, ngăn cản hệ thống dùng được các điểm mạnh của thông tin về bài toán trong quá trình giải vấn đề.
Ví dụ:
Giả sử cần chẩn đoán sai sót trong hệ thống chuyển mạch truyền thông lớn, gồm 10 modun khác nhau, người ta có thể xếp lịch các modun kế tiếp. Do chẳng có lý do gì đảm bảo modun này dễ hỏng hơn modun kia, khi xảy ra sự cố người ta có thể kiểm tra lần lượt như trong mô hình dưới đây.
Hình 2.3 Các bước xác định lỗi trong mười module
Nhưng nếu có khói bốc lên tại modun thứ 10, kỹ thuật viên cầu cứu hệ thống. Hệ thống kiểm tra lần lượt từ modun thứ 1 đến modun thứ 9 thì modun thứ 10 đã tiêu tan.
Để tránh loại trục trặc này, hệ thống được thiết kế với người dùng thông minh. “Thông minh” có nghĩa người sử dụng có thông tin hướng dẫn hệ thống làm việc. Cách đơn giản là cho phép người dùng truy nhập đến thực đơn kiểm tra các modun để chọn ngay modun có vấn đề. Nếu người dùng chẳng có thông tin nào, hệ thống thực hiện theo lịch đã vạch ra. Người ta có thể dùng ý tưởng này khi hệ thống có nhiều đích con.
2.3.3.4 Các đích do luật tạo ra
Đối với một vài ứng dụng, khi thực hiện các luật sinh ra các đích mới. Tiếp cận này cho phép hệ thống thích nghi với việc tìm kiếm tuỳ theo kết quả tìm. Ta xét ví dụ sau:
Ví dụ:
Cần chọn bóng bán dẫn của bộ khuếch đại công suất. Về kỹ thuật người ta dùng bộ phận giảm nhiệt khi công suất quá ngưỡng nào đó. Bộ hạ nhiệt làm toả nhiệt bán dẫn để bán dẫn làm việc lâu dài. Do bộ hạ nhiệt không nhất thiết phải có, người ta dùng các luật sau để thay đổi đích của hệ thống:
IF Đầu ra của bộ khuếch đại quá 10W
Xác định sai trong module thứ nhất Xác định sai trong module thứ hai
THEN Cần dùng bán dẫn công suất cao
AND Tạo đích mới để thiết kế toả nhiệt bán dẫn
Việc cho phép hệ thống điều khiển thao tác dựa trên các thông tin tìm được là một khía cạnh quan trọng trong hệ chuyên gia. Một cách cho phép làm điều này là dùng luật thay đổi đích hệ thống. Loại luật đặc biệt như vậy gọi là luật meta
2.3.3.5 Cơ chế giải thích trong suy luận lùi
Quá trình suy diễn lùi là quá trình đối thoại giữa người dùng và hệ chuyên gia. Đó là khi hệ chuyên gia cần nhập dữ liệu cho các sự kiện yêu cầu. ở đây người ta có quyền đặt ra những câu hỏi nghi vấn như Tại sao? Why phải cung cấp số liệu này? Hoặc khi đã tìm ra kết luận và xuất kết luận cho người dùng, họ cũng có thể đặt nghi vấn như làm Thế nào? How mà có kết quả như vậy.
Trong cả hai trường hợp trên, để khẳng định niềm tin, hệ chuyên gia phải trả lời được cho người dùng các câu hỏi Why, How. Đó chính là cơ chế giải thích của hệ chuyên gia. Rõ ràng cơ chế giải thích phải được cài đặt song song với cơ chế suy diễn lùi.
2.3.4 Ƣu nhƣợc điểm của các kỹ thuật suy luận
Suy luận tiến và lùi là 2 kỹ thuật cơ bản trong hệ chuyên gia. Việc phân tích ưu nhược điểm của từng loại kỹ thuật nhằm sử dụng chúng phù hợp trong các ứng dụng [5][7,112].
2.3.4.1 Ưu điểm của suy luận tiến
- Ưu điểm chính của suy luận tiến là làm việc tốt khi bài toán về bản chất đi thu thập thông tin rồi thấy điều cần suy luận.
- Suy luận tiến cho ra khối lượng lớn các thông tin từ một số thông tin ban đầu. Nó sinh ra nhiều thông tin mới.
- Suy luận tiến là tiếp cận lý tưởng đối với loại bài toán cần giải quyết các nhiệm vụ, như lập kế hoạch, điều hành, điều khiển, và diễn dịch.
2.3.4.2 Nhược điểm của suy luận tiến
Nhược điểm chính của suy luận tiến là không cảm nhận được rằng chỉ một vài thông tin là quan trọng. Hệ thống các câu hỏi có thể hỏi mà không biết rằng chỉ một