1. Trang chủ
  2. » Công Nghệ Thông Tin

Đề tài cài đặt cơ chế lập luận dựa trên độ chắc chắn trong hệ MYCIN

35 840 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 255,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO BÀI TẬP LỚNMÔN: HỆ CHUYÊN GIA Đề tài : Cài đặt cơ chế lập luận dựa trên độ chắc chắn trong hệ MYCIN Giảng viên hướng dẫn: ThS.. LỜI NÓI ĐẦU ---oOo---Hệ chuyên gia, một nhánh của

Trang 1

BÁO CÁO BÀI TẬP LỚN

MÔN: HỆ CHUYÊN GIA

Đề tài : Cài đặt cơ chế lập luận dựa trên độ chắc chắn

trong hệ MYCIN

Giảng viên hướng dẫn: ThS Trần Hùng Cường

Sinh viên thực hiện: 1 Trương Thanh Sơn

2 Phạm Tiến Tùng

3 Nguyễn Văn Thăng

4 Hà Văn Hoan

5 Phạm Hồng Quân Lớp - Đ7LT-CNTT8

Hà Nội Ngày 15 tháng 10 năm 2014

Trang 2

LỜI NÓI ĐẦU

-oOo -Hệ chuyên gia, một nhánh của trí tuệ nhân tạo, là một trong những hướng khai thác tri thức của một ngành thuần lý thuyết, xuất hiện vào thập niên 60 và phần nào chứng minh khả năng áp dụng trí tuệ nhân tạo, khắc phục được các bế tắc gặp phải thời bấy giờ.

Hệ chuyên gia được tiếp cận thảo chương theo một quan niệm mới (phi thủ tục) so với cách tiếp cận thảo chương cổ điển (thủ tục) Với cách tiếp cận này hệ chuyên gia dần dần được đặt vào đúng vị trí vốn có của

nó Ngày nay trong sự phát triển chung của công nghệ thông tin toàn cầu,

hệ chuyên gia tiếp tục được phát triển nhằm cung cấp các công cụ hữu hiệu cho những áp dụng tin học vào nhiều ngành nghề khác nhau trong xã hội.

Trong phần trình bày này, nhóm chúng tôi tìm hiểu về các kỹ thuật biểu diễn tri thức nói chung, và đi sâu vào nghiên cứu và demo thử nghiệm dựa trên cơ chế lập luận gần đúng đo độ CF (độ tin cậy-certainly factor).

Trong bước đường khai phá tìm tòi học hỏi những tri thức mới lạ

trong lĩnh vực cơ sở tri thức không tránh khỏi những thiếu xót mong được

sự góp ý của thầy và tất cả các bạn.

Và chúng em xin cảm ơn thầy giáo Trần Hùng Cường đã tận tình

hướng dẫn nhóm chúng em làm bài báo cáo này.

Nhóm chúng em xin chân thành cảm ơn!

Trang 3

NỘI DUNG TRÌNH BÀY

Chương I Sơ lược Hệ Chuyên Gia Mycin

Chương II Phân tích và thiết kế

Chương III Code minh họa

Chương I: Sơ lược Hệ chuyên gia

1 Khái niệm Hệ chuyên Gia là gì?

Theo E Feigenbaum : «Hệ chuyên gia (Expert System) là một chương trình máy tínhthông minh sử dụng tri thức (knowledge) và các thủ tục suy luận (inference procedures) để giải những bài toán tương đối khó khăn đòi hỏi những chuyên gia mới giải được»

Hệ chuyên gia là một hệ thống tin học có thể mô phỏng (emulates) năng

lực quyết đoán (decision) và hành động (making abilily) của một chuyên gia (con người) Hệ chuyên gia là một trong những lĩnh vực ứng dụng của

trí tuệ nhân tạo (Artificial Intelligence) như hình dưới đây :

Trang 4

Hệ chuyên gia sử dụng các tri thức của những chuyên gia để giải quyết các vấn đề (bài toán) khác nhau thuộc mọi lĩnh vực.

Tri thức (knowledge) trong hệ chuyên gia phản ánh sự tinh thông được tích

tụ từ sách vở, tạp chí, từ các chuyên gia hay các nhà bác học Các thuật ngữ

hệ chuyên gia, hệ thống dựa trên tri thức (knowledgebased system) hay hệ based system) hay hệ chuyên gia dựa trên tri thức (knowledgebased expert system) thường có based system) hay hệ cùng nghĩa

Một hệ chuyên gia gồm ba thành phần chính là cơ sở tri thức (knowledge

base), máy suy diễn hay môtơ suy diễn (inference engine), và hệ thống giao tiếp với người sử dụng (user interface).

Cơ sở tri thức chứa các tri thức để từ đó, máy suy diễn tạo ra câu trả lời cho

người sử dụng qua hệ thống giao tiếp.Người sử dụng (user) cung cấp sự kiện(facts) là những gì đã biết, đã có thật hay những thông tin có ích cho hệ chuyên gia, và nhận được những câu trả lời là những lời khuyên hay những

Trang 5

gợi ý đúng đắn (expertise).Hoạt động của một hệ chuyên gia dựa trên tri thức được minh họa như sau:

2 Những thành phần cơ bản của một hệ chuyên gia

Cơ sở tri thức (knowledge base) Gồm các phần tử (hay đơn vị) tri thức,

thông thườngđược gọi là luật (rule), được tổ chức như một cơ sở dữ liệu

Trang 6

Máy duy diễn (inference engine) Công cụ (chương trình, hay bộ xử lý) tạo

ra sự suy luận bằng cách quyết định xem những luật nào sẽ làm thỏa mãn các sự kiện, các đối tượng , chọn ưu tiên các luật thỏa mãn, thực hiện các luật có tính ưu tiên cao nhất

Lịch công việc (agenda) Danh sách các luật ưu tiên do máy suy diễn tạo ra

thoả mãn các sự kiện, các đối tượng có mặt trong bộ nhớ làm việc

Bộ nhớ làm việc (working memory) Cơ sở dữ liệu toàn cục chứa các sự kiện

phục vụ cho các luật

Khả năng giải thích (explanation facility) Giải nghĩa cách lập luận của hệ

thống cho người sử dụng Khả năng thu nhận tri thức (explanation facility) Cho phép người sử dụng bổ sung các tri thức vào hệ thống một cách tự độngthay vì tiếp nhận tri thức bằng cách mã hoá tri thức một cách tường minh Khả năng thu nhận tri thức là yếu tố mặc nhiên của nhiều hệ chuyên gia

Giao diện người sử dụng (user interface) Là nơi người sử dụng và hệ

chuyên gia trao đổi với nhau

Cơ sở tri thức còn được gọi là bộ nhớ sản xuất (production memeory) trong

hệ chuyên gia Trong một cơ sở tri thức, người ta thường phân biệt hai loại tri thức là tri thức phán đoán (assertion knowledge) và tri thức thực hành (operating knowledge)

Các tri thức phán đoán mô tả các tình huống đã được thiết lập hoặc sẽ được thiết lập Các tri thức thực hành thể hiện những hậu quả rút ra hay những thao tác cần phải hoàn thiện khi một tình huống đã được thiết lập hoặc sẽ được thiết lập trong lĩnh vực đang xét Các tri thức thực hành thường được thể hiện bởi các biểu thức dễ hiểu và dễ triển khai thao tác đối với người sử dụng

Trang 7

Chương II Phân tích và thiết kế

1 Biểu diễn tri thức bằng bộ ba

_Một sự kiện có thể được dùng để xác nhận giá trị của một thuộc tính xác định của một vài đối tượng Ví dụ, mệnh đệ “quả bóng màu đỏ” xác nhận

“đỏ” là giá trị thuộc tính “màu” của đối tượng “quả bóng” Kiểu dữ liệu này được gọi là bộ ba Đối tượng - Thuộc tính - Giá trị (O-A-V – Object-

Attribute-Value)

Biểu tượng Thuộc tính Giá trị

Hình: biểu diễn tri thức theo bộ ba O-A-V

_Trong các sự kiện O-A-V, một đối tượng có thể có nhiều thuộc tính với cáckiểu giá trị khác nhau Hơn nữa một thuộc tính cũng có thể có một hay nhiềugiá trị Chúng được gọi là các sự kiện đơn trị (single-valued) hoặc đa trị (multi-valued) Điều này cho phép các hệ tri thức linh động trong việc biểu diễn các tri thức cần thiết

_Các sự kiện không phải lúc nào cũng bảo đảm là đúng hay sai với độ chắc chắn hoàn toàn Vì thế, khi xem xét các sự kiện, người ta còn sử dụng thêm

Nâu

Trang 8

một khái niệm là độ tin cậy Phương pháp truyền thống để quản lý thông tin không chắc chắn là sử dụng nhân tố chắc chắn CF (certainty factor) Khái niệm này bắt đầu từ hệ thống MYCIN (khoảng năm 1975), dùng để trả lời cho các thông tin suy luận Khi đó, trong sự kiện O-A-V sẽ có thêm một giá trị xác định độ tin cậy của nó là CF.

Suy luận trong MyCin:

Ngữ cảnh: các đối tượng được thảo luận bởi Mycin

– Các kiểu đối tượng khác nhau: bệnh nhân,

thuốc, …

– Được tổ chức trong một cây

• Động cơ suy diễn: tiếp cận hướng từ mục tiêu hay

suy diễn lùi

– Tìm kiếm sâu gần như là vét cạn

– Có thể suy luận với thông tin không chắc chắn

– Có thể suy luận với dữ liệu không đầy đủ

• Các tiện ích giải thích: Mô-đun ‘hỏi-trả lời’ với các

câu hỏi tại sao, như thế nào

Lý thuyết về độ chắc chắn

• MB (Measure of Belief in): Độ đo sự tin cậy

• MD (Measure of Disbelief in): Độ đo sự không tin cậy

• CF (Certainly Factor): Hệ số chắc chắn

• MB(H/E) Là độ đo sự tin cậy của giả thuyết H khi có chứng cứ E

• MD(H/E) Là độ đo sự không tin cậy của giả thuyết H khi có chứng

cứ E

• Khi dó:

• 0 < MB(H/E) < 1 trong khi MD(H/E) = 0

Trang 9

• 0 < MD(H/E) < 1 trong khi MB(H/E) = 0

• Độ đo chắc chắn CF(H/E) được tính bằng công thức:

CF(H/E) = MB(H/E) – MD(H/E)

Luật đơn giản:

If(e) then (c)

công thức tính:

CF(c) = CF(e) * CF(r)

Trong đó:

CF(e) là độ đo chắc chắn của chứng cớ

CF(r) là độ đo chắc chắn của luật suy diễn

CF(c) là độ đo chắc chắn của kết luận

Luật phức tạp:

• If(e1 AND e2) then (c)

CF (e1 AND e2) = MIN(CF(e1), CF(e2))

• If (e1 OR e2) then (c)

CF (e1 OR e2) = MAX(CF(e1), CF(e2))

• If ((e1 AND e2) OR e3) then (c)

CF ((e1 AND e2) OR e3) = MAX(MIN(CF(e1),

CF(e2)), CF(e3))

• Độ chắc chắn có dạng NOT

CF(NOT e) = - CF(e)

Kết hợp nhiều luật có cùng kết luận:

Luật 1: If(e1) then (c) với CF(r1) : độ đo chắc chắn của luật 1

Luật 2: If(e2) then (c) với CF(r2) : độ đo chắc chắn của luật 2

Với CF(t1), CF(t2) là CF của kết luận cả luật 1 và 2

Khi CF(t1) và Cf(t2) đều dương thì:

Ctổng = CF(t1) + CF(t2) – CF(t1) * CF(t2)

Trang 10

Khi CF(t1) và Cf(t2) đều âm thì:

ParameterTham biến

ValueGiá trị

CF)

Hệ sốTheo thuật

(3) Qúa tải thì nên nghỉ ngơi

(4) Bị chấn thương và di chuyển được nên nghỉ ngơi

(5) Chân cảm thấy Sưng và đau suy ra Qúa tải

(6) Người cảm thấy Sốt và đau chân suy ra Nhiễm trùng

(7) Nhiễm trùng nên đi khám Bác sỹ

3.Xây dựng các luật

0.9: c9&c10=>c11

Trang 11

#define FileNut "CFNut.txt"

#define FileLuat "CFLuat.txt"

#define MAX_NUT 1000

#define MAX_LUAT 1500

#define LEN_YNGHIA 26

Trang 12

#define LEN_NUT 4

#define LEN_VT 4

#define NODE_AND 1

#define NODE_OR 2

#define max(a,b) (((a) > (b)) ? (a) : (b))

#define min(a,b) (((a) < (b)) ? (a) : (b))

typedef enum Loai {TanCung,TrungGian,KetLuan};

typedef enum Bool {Khong,Co};

typedef struct tagLuat

Trang 13

int SoLuat = 0, SoNut = 0;

Trang 15

iFnd = 0;

while (iFnd<jFnd-1){

while (iFnd<jFnd-1 && stInput[iFnd] == ' ')

iFnd++; // Bo qua cac khoang trang

if (stInput[iFnd] == '&'){

Trang 16

TapLuat[i].VT[2*nCount] = NODE_AND;}

else

if (stInput[iFnd] == '|'){

TapLuat[i].VT[2*nCount] = NODE_OR;}

else

if (stInput[iFnd] == '~')

bNot = -1;

else{

j = iFnd;

while (j<jFnd && stInput[j] != ' ' &&

stInput[j] != '|' && stInput[j] != '&' && stInput[j] != '~' && stInput[j] != '=')

stTen[j-iFnd] = stInput[j++];

stTen[j-iFnd] = '\0';

TapLuat[i].VT[2*nCount+1] = bNot*TimVitriNut(stTen);

bNot = 1;

nCount ++;

iFnd = j-1;

}iFnd ++;

}// Xu ly ve phaiiFnd = jFnd+1;

Trang 19

// Tinh gia tri cho cac nut chua co gia tri

for (int i=0; i<LEN_VT; i++)

Trang 20

CFNut[VitriNut] = HoiUserNut(VitriNut);

else

if (NutLoai[VitriNut] == TrungGian)

CFNut[VitriNut] = TinhCFCho1Nut(VitriNut);}

giatri = min(giatri, bNot*CFNut[bNot*r.VT[2*i+1]]);}

else

if (r.VT[2*i] == NODE_OR){

giatri = max(giatri, bNot*CFNut[bNot*r.VT[2*i+1]]);

Trang 21

// Tim cac luat co ket luan la TenNut

TimCacLuatCoKetLuan(SoHieuNut, DSLuat, nCount);

// Neu tim thay chi co 1 luat

if (nCount==1)

return TinhCFChoNutKLCua1Luat(TapLuat[DSLuat[0]]);else // Neu tim thay hon 2 luat (>=2)

{

w1 = TinhCFChoNutKLCua1Luat(TapLuat[DSLuat[0]]);

w2 = TinhCFChoNutKLCua1Luat(TapLuat[DSLuat[1]]);

if (w1>0 && w2>0)

Trang 22

return (w1+w2-w1*w2);

if (w1<0 && w2<0)

return (w1+w2+w1*w2);

if (w1*w2<0){

return (w1+w2)/(1-min(abs(w1), abs(w2)));

}}

Trang 23

// Khoi tao CFNut

for (int i=0; i<=SoNut; i++)

CFNut[i] = -2;

// Tinh CF cho cac nut KetLuan

for (i=1; i<=SoNut; i++)

for (; i<=SoNut; i++)

if (NutLoai[i] == KetLuan && CFNut[i]>CFNut[VitriMax])

VitriMax = i;

Trang 24

printf("TEN NUT Y NGHIA");

for (int i=1; i<=SoNut; i++)

Trang 25

strcat(stLuat, "~");

bNot = -1;

}strcat(stLuat, NutTen[(bNot*TapLuat[i].VT[2*j+1])]);

}

strcat(stLuat, " => ");

strcat(stLuat, NutTen[TapLuat[i].VP]);

stLuat[strlen(stLuat)] = '\0';

Trang 26

cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC

CHAN TRONG HE MYCIN ");

Trang 27

printf(" Ten nut Gia tri CF");

for (int i=1; i<=SoNut; i++)

Trang 28

cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC

CHAN TRONG HE MYCIN ");

Trang 31

cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC

CHAN TRONG HE MYCIN ");

Trang 32

cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC

CHAN TRONG HE MYCIN ");

Trang 35

_Các hệ cơ sở tri thức - Nguyễn Đình Thuận Đại học Nha Trang.

_Giáo trình hệ chuyên gia - PGS.TS Phan Huy Khánh Đại học Bách Khoa

Đà Nẵng

Ngày đăng: 22/10/2014, 10:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w