Thủ tục suy diễn tiến

Một phần của tài liệu Bài giảng trí tuệ nhân tạo (Trang 62 - 67)

Ngữ nghĩa của công thức  xG được xác định như là ngữ nghĩa của công thức là tuyển của tất cả các công thức nhận được từ G bằng cách thay x bởi một đối tượng trong miền đố

7.3.Thủ tục suy diễn tiến

a) Suy diễn tiến (Forward chaining)

Tư tưởng cơ bản của suy diễn tiến là áp dụng các luật duy diễn Modus Pones tổng quát. Trong mỗi bước của thủ tục suy diễn tiến thì ta xét tất các điều kiện của luật đều được thỏa mãn thì sự kiện trong phần kết luận của luật được xem là sự kiện được suy ra. Nếu sự kiện này là sự kiện mới (không có trong bộ nhớ làm việc), thì nó được đặt vào bộ nhớ làm việc. Quá trình trên được lặp lại cho tới khi nào không có luật nào sinh ra các sự kiện mới.

Như vậy quá trình suy diễn tiến là quá trình xem xét các luật. Với mỗi luật, ta đi từ phần điều kiện tới phần kết luận của luật, khi mà tất cảcác điều kiện của luật đều làm thỏa mãn (bởi các sự kiện trong cơ sở sự kiện), thì ta suy ra sự kiện trong phần kết của luật. Chính vì thế mà có tên là suy diễn tiến.

Quá trình lập luận tiến không hướng tới giải quyết một vấn đề nào cả. Nó chỉ là quá trình suy ra các sự kiện mới từ các sự kiện trong bộ nhớ làm việc. Vì vậy lập luận tiến còn gọi là lập luận điều khiển dữ liệu hoặc lập luận định hướng dữ liệu.

b) Thủ tục suy diễn tiến

Trong hệ dựa trên luật, ta tách CSTT thành hai phần: Cơ sở luật, kí hiệu RB(Rule Base) và Cơ sở sự kiện (bộ nhớ làm việc), kí hiệu FB (Fact Base)

Với mỗi luật R:

Nếu P1 và P2 ... và Pm thì Q

Ký hiệu Conds là danh sách cá điều kiện của luật, Conds = [P1,...,P2,...,Pm], và kí hiệu Conc là kết luận của luật, Conc = Q. Xem xét mỗi luật R như là một cặp gồm danh sách các điều kiện và một kết luận:

R = (Conds(R), Conc(R)) Trong thủ tục suy diễn tiến ta sử dụng luật suy diễn sau:

Trong đó: Pi hợp nhất với S bởi phép thế, tức:

Luật suy diễn trên cho phép ta từ một luật có m điều kiện, một trong các điều kiện đó ”Khớp” với một sự kiện suy ra một luật mới có m –1 điều kiện. Do đó nếu luật có m điều kiện, thì bằng cách áp dụng suy diễn tiến m lần (nếu có thể) ta suy ra được một sự kiện. Sự kiện này là kết quả

điều kiện rỗng tức là ra đã suy ra một sự kiện. Trong thủ tục For_chain, luật R = (Conds, Conc) là biến địa phương của thủ tục, Conds = [P1,...,P2,...,Pm]

Trong thủ tục trên, thủ tục Add(Conc,FB) thực hiện kiểm tra kết luận conc có là sự kiện mới không (tức là không có sự kiện nào trong cơ sở sự kiện FB trùng với Conc hoặc nhận được từ Conc bằng cách đặt tên lại các biến), nếu Conc là sự kiện mới thì nó được đặt vào FB.

Quá trình suy diễn tiến là quá trình áp dụng thủ tục trên cho các luật trong cơ sở luật cho tới khi nào không có sự kiện mới nào xuất hiện. Ta có thủ tục:

Ví dụ: Giả sửcơ sở luật chứa luật sau (luật mẹ): Nếu 1.x là ngựa và 2.x mẹ của y, và 3.y chạy nhanh Thì x có giá Cơ sở sự kiện gồm có các sự kiện sau : Tom là ngựa Ken là ngựa Kit là ngựa Bin là ngựa Tom là me 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ừ Ngua(x) (x là ngựa), Me(x,y) (x là mẹ của y), Nhanh(y) (y chạy nhanh), Giá(x) (x có giá), thì luật trên có thể viết:

Ngua(x)  Me(x,y)  Nhanh(y) => Gia(x)

Cơ sở sự kiện gồm các câu phần tử sau; Ngua(Tom) (1) Ngua(Ken) (2) Ngua(Kit) (3) Ngua(Bin) (4) Me(Tom,Bin) (5) Me(Tom,Ken) (6) Me(Bin,Kit) (7) Nhanh(Kit) (8) Nhanh(Bin) (9)

Áp dụng thủ tuc For_Chain cho các luật mẹ và FB gồm các sự kiện (1) đến (9). Sự kiện (1) khớp với điều kiện thứ nhất của luật bởi phép thế [x/Tom], ta có:

Me(Tom,y)  Nhanh(y) => Gia(Tom)

Sự kiện (5) hợp nhất với điều kiện Me(Tom/y) bởi phép thế [y/Bin], suy ra : Nhanh(Bin) => Gia(Tom)

Từ (9) và kéo theo trên, suy ra Gia(Tom)

Sự kiện (2) cũng hợp nhất với điều kiện thứ nhất của luật, do đó suy ra: Me(Ken,y)  Nhanh(y) => Gia(Ken)

Tới đây ta không suy diễn tiếp tục được vì không có sự kiện nào hợp nhất được với điều kiện Me(Ken,y). Điều tương tựcũng xảy ra khi mà biến x trong luật mẹđược thế bởi Kit

Từ (4) và luật mẹ, suy ra:

Me(Bin,y)  Nhanh(y) => Gia(Bin)

Sự kiện (7) hợp nhất với điều kiện Me(Bin,y), suy ra Nhanh(Kit) => Gia(Bin)

Từ kéo theo này và sự kiện (8), suy ra Gia(Bin). Như vậy áp dụng thủ tục For_Chain cho luật mẹ, chúng ta suy ra được hai sự kiện mới là "Tom có giá" và "Bin có giá".

Đánh giá thủ tục suy diễn tiến:

Nếu cài đặt thủ tục lập luận tiến một cách trực tiếp thì thủ tục này không có hiệu quả. Bởi vì, chúng ta phải lặp lại rất nhiều lần thao tác đối sánh mỗi sự kiện trong bộ nhớ làm việc với các điều kiện trong luật. Nếu bộ nhớ làm việc chứa f sự kiện, cơ sở luật chứa r luật, mỗi luật gồm c điều kiện, thì chỉ trong một số chu kỳ xem xét các luật ta đã phải thực hiện f.r.c phép đối sánh, như vậy sẽ rất phức tạp và mất thời gian. (adsbygoogle = window.adsbygoogle || []).push({});

 Thủ tục Rete

Với thủ tục này tạo ra một lưới cho mỗi luật trong cơ sở luật. Mỗi luật trong lưới biểu diễn một bảng dữ liệu mà mỗi bản ghi trong bảng là một phép thế sao cho một hoặc một sốđiều kiện được thỏa mãn.

Bước 1: lưới chứa một đỉnh xuất phát, từđỉnh này có các cung đi tới các đỉnh Ai (i = 1,...,m). Mỗi cung được gán nhãn, với nhãn là công thức phân tử, công thức này là một điều kiện trong luật đó.

Bước 2: Mỗi đỉnh chứa Ai tương ứng với một bảng, các cột trong bảng ứng với các biển trong công thức phân tử là nhãn của cung đi tới đỉnh Ai. Mỗi dòng trong bảng này là một phép thế biến mà một sự kiện trong bộ nhớ làm việc hợp nhất với công thức phân tửđó.

Bước 3: Nếu m ≥ 2 thì từđỉnh A1 và A2 có các cung đi tới đỉnh B2. Đỉnh B2 tương ứng với một bảng, mỗi cột trong bảng này là một cột trong bảng A1 hoặc trong A2. Bảng B2 là kết nối của bảng A1 và A2, mỗi dòng trong bảng này là một phép thế biến sao cho hai điều kiện đầu tiên của luật trởthành đúng.

Bước 4: Từđỉnh Bk và Ak+1 (k = 2,...,m-1) có các cung đi tới đỉnh Bk+1. Đỉnh Bk+1 tương ứng với một bảng, bảng này là kết nối của bảng Bk với bảng Ak+1. Mỗi dòng trong bảng này là một phép thế biến mà các điều kiện 1,2,...,k+1 của luật được thỏa mãn.

Bước 5: Từ đỉnh Bm có cung đi tới đỉnh C. Đỉnh C tương ứng với một bảng, mỗi cột của bảng này ứng ứng với một biến trong phần kết luận của luật. Bảng C nhận được từ bảng Bm bằng cách chiếu lên các cột của bảng C. Mỗi bản ghi trong bảng C biểu diễn một kết luận được suy ra từ luật.

Sau khi đã xây dựng được các lưới cho các luật trong cơ sở luật, ta liên kết các lưới đó để tạo ra một lưới chung cho toàn bộ cơ sở luật. Có thể có nhiều luật khác nhau có chung một số điều kiện nào đó, khi đó các đỉnh ứng với các điều kiện chung đó sẽ được đồng nhất làm một. Áp dụng vào ví dụởtrên ta có sơ đồ:

Ngua Me Nhanh A1 A2 A3 B2 B3 Hình 1: Lưới tương ứng với luật mẹ. x X y y x y x x y Bin Kit

Giả sử các bảng trong lưới hình 1 đã chứa các dữ liệu như hình 2 (các bản ghi không tô đậm). Giả sử cho sưk kiện Me(Tom,Bin) đi vầo lưới. Sự kiện này theo cung gán nhãn Me đi tới đỉnh A2 để đối sánh với điều kiện Me(x,y). Phép hợp nhất thành công, một bản ghi mới [x/Tom,y/Bin] (Bản ghi tô đậm) thêm vào bảng A2. Dữ liệu này đi xuổng B2 kết nối với các bản ghi đã có trong A1 tạo thành bản ghi mới trong B2 [x/Tom,y/Bin], bản ghi này lại chuyển tới B3, nó lại kết nối với các bản ghi có sẵn trong A3, tạo ra bản ghi mới trong bảng B3 (bản ghi tô đậm). Tiếp tục chuyển tới đỉnh C, tại đây nó được chiều lên các cột bảng C, tạo ra bản ghi mới [x/Tom]. Một sự kiện mới được suy ra Gia(Tom) xem hình dưới:

Ngua Me Nhanh A1 A2 A3 B2 B3 C C

Hình 2: Kết quả của một sự kiện đi vào lưới x Tom Ken Bin y Kit Bin X y Tom Ken Bin Kit Tom Bin x y Tom Ken Bin Kit Tom Bin x Bin Tom x y Bin Kit Tom Bin

Các đỉnh A

Các đỉnh B

Các đỉnh C

Hình 3: Sơ đồ một lười chung cho co sở luật.

Một phần của tài liệu Bài giảng trí tuệ nhân tạo (Trang 62 - 67)