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 1BÁ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 2LỜ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 3NỘ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 4Hệ 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 5gợ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 6Má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 7Chươ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 8mộ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 10Khi 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 13int SoLuat = 0, SoNut = 0;
Trang 15iFnd = 0;
while (iFnd<jFnd-1){
while (iFnd<jFnd-1 && stInput[iFnd] == ' ')
iFnd++; // Bo qua cac khoang trang
if (stInput[iFnd] == '&'){
Trang 16TapLuat[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 20CFNut[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 22return (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 24printf("TEN NUT Y NGHIA");
for (int i=1; i<=SoNut; i++)
Trang 25strcat(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 26cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC
CHAN TRONG HE MYCIN ");
Trang 27printf(" Ten nut Gia tri CF");
for (int i=1; i<=SoNut; i++)
Trang 28cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC
CHAN TRONG HE MYCIN ");
Trang 31cprintf(" DEMO CAI DAT CO CHE LAP LUAN DO CHAC
CHAN TRONG HE MYCIN ");
Trang 32cprintf(" 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