So với CSDL quan hệ thì CSDL suy diễn thừa nhận một kiểu lý thuyết chứng minh, nghĩa là nó được xem xét như một lý thuyết bao gồm một tập các công thức cấp một, còn việc thực hiện một câ
Trang 1Tôi xin bày tỏ lòng biết ơn đối với thầy Nguyễn Quang Tấn, người đã trực tiếp hướng dẫn chúng tôi thực hiện luận văn này Nếu không có sự truyền đạt kiến thức quý báo và hướng dẫn tận tình của thầy chắc chắn rằng luận văn của tôi sẽ rất khó hoàn thành
Cuối cùng tôi xin gửi lời cám ơn đến gia đình, bạn bè, những người đã luôn bên chúng tôi, động viên và khuyến khích tôi trong quá trình thực hiện đề tài nghiên cứu của mình.
Mặc dù đã rất cố gắng, song chắc chắn luận văn không tránh khỏi những thiếu sót Tôi rất mong nhận được sự thông cảm và những ý kiến đóng góp tận tình của các thầy, cô giáo và các bạn cũng như những ai quan tâm tới lĩnh vực trong luận văn này
Xin chân thành cảm ơn!
Đồng Nai, ngày tháng năm 2013
Học viên
Bùi Văn Lem
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan rằng các kết quả nghiên cứu trong luận văn, ngoài những vấn
đề mang tính phổ biến mà tác giả đã đề cập tới dưới dạng các định nghĩa và khái niệm
là hoàn toàn mới, những vấn đề tham khảo được trích dẫn cụ thể Các hình, minh họa,
ví dụ và kết quả do chính tác giả thực hiện Nội dung của đề tài chưa được công bố trên các công trình nghiên cứu khác
Tôi cũng xin cam đoan rằng mọi sự gi p đ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc Chúng tôi xin hoàn toàn chịu trách nhiệm về nội dung của luận văn này
Đồng Nai, ngày tháng năm 2013
Học viên
Bùi Văn Lem
Trang 3MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC CÁC TỪ VIẾT TẮT vi
DANH MỤC BẢNG vii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN 2
1.1 Nguồn gốc và sự phát triển của lập luận logic 2
1.2 Nguồn gốc và nhu cầu phát triển CSDL suy diễn 5
1.3 Nội dung chính của luận văn 7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 9
2.1 Tri thức và hiểu biết 9
2.1.1 Một số khái niệm 9
2.1.2 Phân loại tri thức theo hiện đại 11
2.2 Biểu diễn tri thức 12
2.3 Biểu diễn tri thức bằng luật dẫn xuất (luật sinh) 14
2.3.1 Khái niệm 14
2.3.2 Cơ chế suy luận trên các luật sinh 15
2.3.3 Ưu điểm và nhược điểm của biểu diễn tri thức bằng luật 18
2.3.3.1 Ưu điểm 18
2.3.3.2 Nhược điểm 18
2.4 Công nghệ tri thức 19
2.4.1 Xử lý tri thức 19
2.4.2 Xử lý tri thức bằng luật 19
2.4.3 Xử lý tri thức bằng các luật có dùng biến 21
2.4.4 Xử lý tri thức bằng lập luận 22
Trang 42.5 Khái quát về lập trình logic 26
2.6 Ngôn ngữ Prolog 28
2.6.1 Prolog là ngôn ngữ lập trình logic 28
2.6.2 Xây dựng sự kiện và luật 30
2.6.2.1 Xây dựng sự kiện 30
2.6.2.2 Xây dựng luật 35
2.6.3 Một số ví dụ về chương trình prolog 37
2.7 Kết luận 40
CHƯƠNG 3: CƠ SỞ DỮ LIỆU SUY DIỄN 41
3.1 Giới thiệu chung 41
3.2 Một số khái niệm cơ sở 42
3.2.1 Ngôn ngữ cấp một 42
3.2.2 Chương trình logic 43
3.3 Cơ sở dữ liệu suy diễn 45
3.3.1 Định nghĩa tổng quát 45
3.3.2 Định nghĩa theo toán học 46
3.3.3 Cấu trúc của một cơ sở dữ liệu suy diễn 46
3.3.3.1 Tập các sự kiện 46
3.3.3.2 Tập các luật suy diễn 47
3.3.3.3 Ràng buộc toàn vẹn (RBTV) 48
3.4 Chương trình Datalog 51
3.4.1 Mô hình dữ liệu 51
3.4.2 Cú pháp 52
3.4.3 Ngữ nghĩa 52
3.4.4 Cấu tr c cơ bản 53
3.5 Truy vấn trong Datalog (Datalog Query) 55
3.5.1 Định nghĩa 55
3.5.2 Cấu trúc 56
3.5.3 So sánh Datalog với đại số quan hệ 58
Trang 53.6 Chương trình Datalog có chứa ký hiệu hàm 62
3.7 Kết luận 63
CHƯƠNG 4 CÀI ĐẶT DEMO ỨNG DỤNG 64
4.1 Mục tiêu 64
4.2 Cấu tr c chương trình 64
4.3 Mô hình luồng xử lý bài toán 65
4.4 Môi trường thực nghiệm 66
4.5 Quy trình thực hiện 66
4.5.1 Đặt vấn đề 66
4.5.2 Quy trình thực hiện 67
4.5.3 Thực hiện chương trình 75
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 78 TÀI LIỆU THAM KHẢO
Trang 6DANH MỤC CÁC TỪ VIẾT TẮT
STT Từ viết tắt Diễn giải Ghi chú
DANH MỤC HÌNH
Hình 2.1: Cấu tr c đồ thị AND/OR 17
Hình 2.2: Các bước xử lý tri thức dựa trên luật 20
Hình 2.3: Cây gia hệ 30
Hình 2.4: Quan hệ ông bà được hợp thành từ hai quan hệ cha mẹ 33
Hình 3.1: Đồ thị không có chu trình 58
Hình 3.2: Đồ thị có chu trình 58
Hình 4.1: Mô hình luồng xử lý bài toán 66
Hình 4.2: Giao diện chính khi chạy chương trình 76
Hình 4.3: Thao tác nạp dữ liệu cho chương trình 76
Hình 4.4: Lựa chọn dữ liệu cho chương trình 77
Hình 4.5: Giao diện chương trình sau khi đã nạp dữ liệu 77
Hình 4.6: Giao diện lựa chọn tìm kiếm theo chủ đề 78
Hình 4.7: Giao diện kết quả chương trình 78
Trang 7DANH MỤC BẢNG
Bảng 2.1: Đối tượng con trâu 24
Bảng 2.2: Bảng CSDL mô tả đặc điểm người 38
Bảng 3.1: Kiểu dữ liệu trong DES 50
Bảng 3.2: Bảng quan hệ Quản lý công nhân 60
Bảng 4.1: Bảng dữ liệu mẫu 75
Trang 8MỞ ĐẦU
Ch ng ta đang sống trong kỷ nguyên hiện đại với sự phát triển bùng nỗ về công nghệ thông tin Và cơ sở dữ liệu (CSDL) là một lĩnh vực rất quan trọng mà chúng ta cần phải quan tâm Hầu hết các ứng dụng hiện nay đều có sử dụng đến CSDL: ứng dụng web, phần mềm quản lý,…
Có nhiều mô hình CSDL khác nhau được đưa vào ứng dụng trong thực tế: CSDL quan hệ, CSDL phân tán, CSDL hướng đối tượng,…Trong số đó, có thể nói CSDL quan hệ là được ứng dụng rộng rãi nhất, mang lại nhiều thành công nhất
CSDL quan hệ cho phép tiếp nhận, lưu trữ và xử lý một lượng lớn dữ liệu Việc nghiên cứu CSDL quan hệ đã đạt được rất nhiều thành công, có nhiều đóng góp lớn trong việc quản lý Tuy nhiên ngoài việc tiếp nhận, lưu trữ và xử lý dữ liệu, người ta cần một loại CSDL có khả năng suy luận ra các thông tin từ các dữ liệu được lưu trữ
Để đáp ứng nhu cầu thực tế đó thì một mô hình CSDL mới ra đời, đó là mô hình
CSDL suy diễn Ngoài việc lưu trữ các thông tin một cách rõ ràng theo kiểu CSDL
quan hệ, CSDL suy diễn còn lưu giữ được các luật có khả năng suy diễn ra những kết quả mới dựa trên dữ liệu đã có
So với CSDL quan hệ thì CSDL suy diễn thừa nhận một kiểu lý thuyết chứng minh, nghĩa là nó được xem xét như một lý thuyết bao gồm một tập các công thức cấp một, còn việc thực hiện một câu truy vấn hoặc làm thỏa mãn một RBTV có thể xem như chứng minh một công thức cấp một là hệ quả logic của lý thuyết đã cho
CSDL suy diễn là một sự mở rộng của CSDL quan hệ bởi vì bên cạnh những tính chất, những nguyên tắc vốn có của CSDL quan hệ nó còn có thêm các nguyên tắc tổng quát, như các quy tắc suy diễn và RBTV
Trang 9CHƯƠNG 1: TỔNG QUAN
Nội dung chương 1: Trình bày tổng quan về nguồn gốc và sự phát triển của lập luận logic; nhu cầu của CSDL suy diễn trong thực tế và tổng quan về nội dung chính của
luận văn
1.1 Nguồn gốc và sự phát triển của lập luận logic
Theo truyền thống, Logic được nghiên cứu như là một nhánh của triết học, nó được nhắc đến như là một ngành nghiên cứu về tiêu chí đánh giá các luận cứ Mặc dù định nghĩa chính xác của logic vẫn là vấn đề còn đang bàn cãi giữa các triết gia Tuy nhiên khi môn học được xác định thì nhiệm vụ của nhà logic học vẫn như cũ Đó là, làm đẩy mạnh tiến bộ của việc phân tích các suy luận có hiệu lực và suy luận ngụy biện
để người ta có thể phân biệt được luận cứ nào là hợp lý và luận cứ nào có chỗ không hợp lý
Từ giữa thế kỷ 19, logic đã được nghiên cứu trong toán học và luật (theo http://www.wikipedia.org) Gần đây nhất logic được áp dụng vào khoa học máy tính và
trí tuệ nhân tạo Là một ngành khoa học hình thức, logic nghiên cứu và phân loại cấu trúc của các khẳng định và các lý lẽ, cả hai đều thông qua việc nghiên cứu các hệ thống hình thức của việc suy luận và qua sự nghiên cứu lý lẽ trong ngôn ngữ tự nhiên Tầm bao quát của logic rất rộng, đi từ các đề tài cốt lõi như là nghiên cứu các lý lẽ ngụy biện và nghịch lý, đến những phân tích chuyên gia về lập luận Chẳng hạn lập luận có xác suất đ ng và các lý lẽ có liên quan đến quan hệ nhân quả Ngày nay logic còn được
sử dụng trong lý thuyết lý luận
Qua suốt quá trình lịch sử, đã có nhiều sự quan tâm trong việc phân biệt lập luận tốt và lập luận không tốt, và do đó logic đã được nghiên cứu trong một số dạng ít nhiều
là quen thuộc với chúng ta Trong toán học và triết học phân tích, logic được nhấn mạnh như một đối tượng nghiên cứu riêng và do vậy logic được nghiên cứu ở mức độ trừu tượng hơn
Trang 10Một trong những tác phẩm logic sớm nhất còn tồn tại đến ngày nay là của Aristotle Logic của Aristotle được chấp nhận rộng rãi trong khoa học và toán học ở Phương Tây đến đầu thế kỷ 19 Hệ thống logic của Aristotle phù hợp cho việc giới thiệu suy diễn giả định và logic quy nạp Ở Châu Âu, trong cuối thời kỳ trung đại, có nhiều nỗ lực nhằm chứng tỏ những tư tưởng của Aristotle tương thích với niềm tin Cơ Đốc Trong suốt thời kỳ Trung Kỳ Trung Cổ, logic trở thành đề tài chính của các nhà triết học, những người muốn tham gia vào những cuộc tranh luận triết học về phân tích logic học
Lập luận hay Suy luận được định nghĩa rất khác nhau tùy theo ngữ cảnh của hiểu
biết về lý tính như là một hình thức của tri thức Định nghĩa lôgic là hành động sử dụng
lý tính để rút ra một kết luận từ các tiền đề nhất định bằng cách sử dụng một phương pháp luận cho trước
Suy luận, cùng với trực giác là các phương pháp thuộc về nhận thức tự phát Suy
luận, là một phương pháp quan trọng để nhận thức và tìm kiếm chân lý
Nhận thức suy luận là kiểu nhận thức gián tiếp Nhận thức một định lý toán học, một định luật khoa học đều là nhờ suy luận Vì rằng, suy luận nhất thiết đòi hỏi phải
có trung gian, là những phán đoán, những khái niệm Ví dụ để nhận biết sự tương đương giữa A và C khi A=B, B=C,thì phải sử dụng các khái niệm phương trình, số hạng, sự tương đương
Suy luận có tính trừu tượng và tổng quát Suy luận dựa vào phán đoán, khái niệm
mà chúng ta phải thừa nhận là khái niệm bao giờ cũng trừu tượng và tổng quát Ví dụ khái niệm " người" chỉ định tất cả mọi người và nói lên đặc tính chung của loài người, chứ không nói đến tính riêng biệt như tính chất thông thái vượt trội của Socrates, dũng mãnh như Hercules hay tính ích kỹ, tham lam, nhỏ nhen của cá nhân nào đó
Suy luận bao giờ cũng gắn liền với ngôn ngữ và đó là điểm khác biệt với trực giác Vì thế điều gì nhận biết được nhờ suy luận, thì có thể làm cho người khác hiểu
Trang 11trọn vẹn nó thông qua ngôn ngữ chuẩn xác Khi bạn được nghe chứng minh một điều
gì, bạn sẽ hiểu điều này như chính người đã chứng minh điều đó cho bạn
Tuy nhiên, trong các ngữ cảnh triết học lý tưởng, lập luận là quy trình trí óc đem lại cho sự tưởng tượng, tri giác, ý nghĩ, và cảm giác của ta bất cứ cái gì có thể hiểu được mà những hành vi trí óc kia có thể hàm chứa, và do đó liên hệ trải nghiệm của ta với ý nghĩa toàn thể
Các phương pháp lập luận logic: suy luận diễn dịch, suy luận quy nạp, suy luận loại suy và phương pháp thứ tư là phép tương tự Lập luận bằng phép tương tự đi từ
trường hợp cụ thể này tới trường hợp cụ thể khác, kết luận của lập luận bằng phép tương tự chỉ là có thể đ ng Lập luận bằng tương tự rất thường gặp trong nhận thức thông thường, khoa học, triết học và khoa học nhân văn, nhưng đôi khi chỉ được chấp nhận như là phương pháp bỗ trợ
Suy diễn logic, lập luận bằng suy diễn hay suy diễn là lập luận mà trong đó kết
luận được rút ra từ các sự kiện được biết trước theo kiểu : nếu các tiền đề đ ng thì kết luận phải đ ng Nghĩa là các sự kiện cho trước đòi hỏi rằng kết luận là đ ng
Suy diễn còn được định nghĩa là kiểu suy luận từ trường hợp tổng quát hơn tới
trường hợp cụ thể hơn, hay là suy luận mà trong đó kết luận có độ chính xác tính ngang bằng với các tiền đề
Ví dụ:
Người ta có thể nói rằng: "Vì trời mưa nên chắc chắn đường ướt" Tuy nhiên, có một luận cứ ẩn trong câu này: "Nếu trời mưa thì đường ướt." Sử dụng tiền đề "Nếu trời mưa thì đường ướt.", ta có thể tranh luận rằng "Vì trời mưa nên chắc chắn đường ướt", mà không thể rằng "Đường ướt cho nên chắc chắn trời đang mưa" Hoặc ta có thể nói: "Đường không ướt, do đó trời không mưa", nhưng không thể "Trời không mưa,
do đó đường không ướt "
Trang 12Đó là vì đường ướt là một kết quả không tránh khỏi của mưa, nhưng đường ướt không nhất thiết phải do mưa
Các luận cứ suy diễn có thể có hiệu lực hoặc không có hiệu lực Các luận cứ có hiệu lực tuân theo các quy tắc đã định trước Đối với tính hiệu lực việc các quy tắc định trước đ ng hay sai không được xét đến Do đó, các kết luận có hiệu lực không nhất thiết là kết luận đúng, và các kết luận không có hiệu lực có thể không sai
Khi một luận cứ vừa có hiệu lực vừa đ ng, nó được coi là có cơ sở Khi có hiệu lực nhưng không đ ng, nó được coi là không có cơ sở
Ví dụ:
Suy diễn có hiệu lực:
Do Socrates là một người, và do tất cả mọi người đều không bất tử, do đó Socrates cũng không bất tử
Suy diễn trên còn được coi là có cơ sở, do hai tiền đề "Socrates là người" và "tất
cả mọi người đều không bất tử" là đ ng
Suy diễn không có hiệu lực:
Tất cả các thí sinh thi trượt đều không được học bổng, tất cả các thí sinh đỗ vớt đều không được học bổng, do đó tất cả các thí sinh đỗ vớt đều thi trượt
1.2 Nguồn gốc và nhu cầu phát triển CSDL suy diễn
Khái niệm về CSDL suy diễn được nhiều nhà nghiên cứu đề cập đến theo hướng phát triển các kết quả mà Green đã đạt được vào năm 1969 về các hệ thống câu hỏi –
trả lời (theo http://www.wikipedia.org)
Xét về quan điểm lý thuyết, CSDL suy diễn có thể coi như là các chương trình logic với sự khái quát hóa khái niệm về CSDL quan hệ Đó là cách tiếp cận của Brodie
và Manola vào năm 1989, của Codd vào năm 1970, của Date vào năm 1986, của Gardarin và Valdurier vào năm 1989 và của Ullman vào năm 1984
Trang 13CSDL suy diễn là sản phẩm tự nhiên của lập trình logic, trong đó logic toán được
sử dụng cho các khái niệm tính toán mô hình trực tiếp Kỹ thuật CSDL suy diễn được ứng dụng nhiều trong các hệ hỗ trợ quyết định và các hệ chuyên gia Cùng với các kỹ thuật phát triển của CSDL quan hệ, CSDL suy diễn cũng có khả năng lưu trữ một lượng lớn thông tin cũng như việc suy diễn trên các thông tin đó
Các hệ hỗ trợ quyết định, các hệ chuyên gia là những lĩnh vực có ứng dụng kỹ thuật CSDL suy diễn Ngoài ra nó còn được ứng dụng rộng rãi trong việc phân tích tài chính, phân tích ngôn ngữ, cú pháp, Nó cho phép phân tích một lượng lớn các dữ liệu
và đưa ra những suy luận, định hướng cho tương lai Trong CSDL suy diễn, mặc dù đã
có nhiều kết quả có giá trị nhưng cũng có nhiều vấn đề cần nghiên cứu tiếp, chẳng hạn như vấn đề về ngữ nghĩa của phủ định và tối ưu hóa câu truy vấn
Khi nói đến CSDL ta không thể không đề cập đến một yếu tố liên quan đó là lập trình logic Tư tưởng cơ bản của lập trình logic là sử dụng logic toán học như một ngôn
ngữ lập trình Điều này được đề cập trong tài liệu của Kowaski năm 1970, và được Colmerauer đưa vào thực hành năm 1975 trong các cài đặt ngôn ngữ lập trình logic đầu tiên, tức là ngôn ngữ lập trình PROLOG (PROgramming LOGic) Nhờ sự hình thức hóa, Kowalski đã xem xét tập con của các logic bậc một, gọi là logic mệnh đề Horn Một câu hay một mệnh đề theo logic có thể có nhiều điều kiện đ ng nhưng chỉ có một hay không có kết luận đ ng
Đối với nhu cầu thực hành CSDL suy diễn xử lý các câu không phức tạp như các câu trong hệ thống lập trình logic Số các luật, tức là số các câu với các điều kiện không trống trong CSDL suy diễn nhỏ hơn số các sự kiện, tức các câu với điều kiện rỗng
Một khía cạnh khác nhau nữa giữa CSDL suy diễn và lập trình logic là hệ thống lập trình logic nhấn mạnh các chức năng, trong khi CSDL suy diễn nhấn mạnh tính hiệu quả Cơ chế suy diễn dùng trong CSDL suy diễn để tính toán trả lời không được tổng quát như trong hệ thống lập trình logic
Trang 14Các CSDL suy diễn có thể quản lý hầu hết các ứng dụng hiện tại, các vấn đề phức tạp về dữ liệu
Với hệ quản trị CSDL quan hệ dùng đại số quan hệ hiện tại thì việc đặt câu hỏi
và trả lời câu hỏi còn hạn chế nhất là CSDL có kích thước lớn Hơn nữa, vấn đề đệ quy thì trong đại số quan hệ không giải quyết được
CSDL suy diễn gồm các sự kiện và các luật sẽ cho chúng ta các câu trả lời từ câu hỏi, và cung cấp cho chúng ta những tri thức mới
Việc nghiên cứu CSDL được thực hiện trên thế giới từ những năm 80 của thế kỹ
XX, nhưng ở nước ta hiện nay vẫn còn rất ít những nghiên cứu về nó Việc tìm hiểu CSDL suy diễn và nghiên cứu những ứng dụng của nó là một vấn đề có ý nghĩa lý thuyết và thực tiễn
1.3 Nội dung chính của luận văn
Tên đề tài: “Nghiên cứu cơ sở dữ liệu suy diễn và ứng dụng”
Luận văn gồm các chương:
Chương 1: Tổng quan
Nội dụng chính: Trình bày tổng quan về nguồn gốc và sự phát triển của lập luận logic; nhu cầu của CSDL suy diễn trong thực tế
Chương 2: Cơ sở lý thuyết
Nội dung chính: Trình bày về hệ thống tri thức, cách thức biểu diễn tri thức và một số công nghệ xử lý tri thức; khái quát về lập trình logic và ngôn ngữ Prolog
Trang 15Chương 3: Cơ sở dữ liệu suy diễn
Nội dung chính: Chương này sẽ trình bày một số vấn đề về CSDL suy diễn (CSDL dựa trên logic); mô hình CSDL suy diễn, chương trình Datalog
Chương 4: Xây dựng demo ứng dụng
Nội dung chính: Xây dựng demo ứng dụng: “Ứng dụng CSDL suy diễn vào việc tìm kiếm thông tin sách trong thư viện”
Chương 5: Kết luận và hướng phát triển
Trang 16CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Nội dung chính: Trình bày về hệ thống tri thức, cách thức biểu diễn tri thức và một số công nghệ xử lý tri thức; khái quát về lập trình logic và ngôn ngữ Prolog
2.1 Tri thức và hiểu biết
2.1.1 Một số khái niệm
Tri thức là các thông tin tài liệu, các cơ sở lý luận, các kỹ năng khác nhau, đạt được bởi một tổ chức hay một cá nhân thông qua các trải nghiệm thực tế hay thông qua sự giáo dục đào tạo (theo http://www.wikipedia.org); các hiểu biết về lý thuyết hay
thực tế về một đối tượng, một vấn đề, có thể lý giải được về nó; là những gì đã biết, đã được hiểu biết trong một lĩnh vực cụ thể hay toàn bộ, trong tổng thể; các cơ sở, các thông tin, tài liệu, các hiểu biết hoặc những thứ tương tự có được bằng kinh nghiệm thực tế hoặc do những tình huống, hoàn cảnh cụ thể Tuy nhiên không có một định nghĩa chính xác nào về tri thức hiện nay được mọi người chấp nhận, có thể bao quát được toàn bộ, vẫn còn nhiều học thuyết, các lý luận khác nhau về tri thức
Tri thức giành được thông qua các quá trình nhận thức phức tạp: Quá trình tri giác, quá trình học tập, tiếp thu, quá trình giao tiếp, quá trình tranh luận, quá trình lý luận, hay kết hợp các quá trình này
Theo cổ điển, tri thức có hai dạng tồn tại chính là tri thức ẩn và tri thức hiện
Tri thức hiện là những tri thức được giải thích và mã hóa dưới dạng văn bản, tài liệu, âm thanh, phim, ảnh, thông qua ngôn ngữ có lời hoặc không lời, nguyên tắc hệ thống, chương trình máy tính, chuẩn mực hay các phương tiện khác (theo http://www.wikipedia.org) Đây là những tri thức đã được thể hiện ra ngoài và dễ dàng
chuyển giao, thường được tiếp nhận qua hệ thống giáo dục và đào tạo chính quy
Tri thức ẩn là những tri thức thu được từ sự trải nghiệm thực tế, dạng tri thức này thường ẩn trong mỗi cá nhân và rất khó “mã hóa” và chuyển giao, thường bao gồm :
Trang 17niềm tin, giá trị, kinh nghiệm, bí quyết, kỹ năng(theo http://www.wikipedia.org) Chẳng
hạn, trong bóng đá các cầu thủ chuyên nghiệp có khả năng cảm nhận bóng rất tốt, đây là một dạng tri thức ẩn, nó tồn tại trong mỗi cầu thủ Nó không thể “mã hóa” thành văn bản, không thể chuyển giao, mà người ta có thể có bằng quá trình luyện tập
Dựa vào phân loại tri thức, có thể chia các hình thức chia sẽ tri thức thành 4 dạng chính:
Ẩn - Ẩn: Khi người chia sẽ và người tiếp nhận giao tiếp trực tiếp với nhau (ví dụ:
học nghề, giao tiếp, giảng bài, ) thì sự tiếp nhận này là từ tri thức ẩn thành tri thức ẩn Tri thức của người này không qua trung gian mà chuyển trực tiếp thành tri thức của người kia
Ẩn – Hiện: Một người “mã hóa” tri thức của mình thành văn bản hay các hình
thức hiện hữu khác thì đó là quá trình tri thức từ ẩn (trong đầu người đó) thành hiện (văn bản, tài liệu, )
Hiện - Hiện: Tập hợp các tri thức hiện đã có để tạo ra tri thức hiện khác Quá trình
này được thể hiện qua việc sao lưu, chuyển giao hay tổng hợp dữ liệu
Hiện - Ẩn: Tri thức từ dạng hiện trở thành dạng ẩn Điển hình quá trình này là
việc đọc sách Học sinh đọc sách (tri thức hiện) và r t ra được các bài học, tri thức cho mình (ẩn)
Từ khía cạnh nhân sự, những nhu cầu cần tăng việc trao đổi, chia sẽ và sáng tạo trong các nhóm hoạt động gồm nhiều lĩnh vực khác nhau là một trong những lý do chính dẫn đến việc xây dựng quản trị tri thức Bên cạnh đó nhu cầu tăng khả năng xử lý của nhân viên trong các tình huống phức tạp và lưu giữ những tri thức khi các nhóm làm việc tan rã hay tái lập cũng khiến việc xây dựng nên hệ thống quản lý tri thức trở nên cần thiết
Trang 182.1.2 Phân loại tri thức theo hiện đại
Từ lâu, các nhà tâm lý học về nhận thức đã xây dựng lý thuyết giải thích về giải quyết vấn đề Các lý thuyết đã cho người ta thấy các dạng tri thức con người hay dùng, cách con người tổ chức các suy nghĩ trên các tri thức này và cách dùng các tri thức một cách có hiệu quả Các nhà nghiên cứu về trí tuệ nhân tạo dùng các kết quả nghiên cứu này để phát triển các kỹ thuật thể hiện tri thức trên máy tính
Không có lý thuyết nào giải thích được cách tổ chức tri thức con người và cũng không có cấu trúc thể hiện tri thức nào là lý tưởng cả Vấn đề là con người phải biết chọn kỹ thuật thể hiện tri thức và các dạng tri thức mà các kỹ thuật này có thể thể hiện được
Tri thức được phân loại theo kiểu hiện đại gồm các dạng sau (theo
http://www.wikipedia.org):
Tri thức thủ tục: Diễn tả cách mà vấn đề được giải quyết Dạng tri thức này cho
biết phương hướng thực hiện Ví dụ: Các luật, các chiến lược, lịch và các thủ tục Đây chính là các dạng đặc trưng của tri thức thủ tục
Tri thức mô tả: Ví dụ như các khái niệm, các đối tượng, các sự kiện Nó cho biết
một vấn đề được thấy như thế nào Tri thức này bao gồm các khẳng định đơn giản, mang tính giá trị đ ng sai
Tri thức may rủi: Diễn tả luật may rủi dẫn dắt quá trình lập luận Tri thức may rủi
thường được gọi là tri thức nông cạn, nó dựa vào kinh nghiệm, tri thức có được do giải quyết vấn đề trước đó Các chuyên gia thường lấy các tri thức căn bản về vấn đề, đó là tri thức sâu như các điều luật cơ bản, các quan hệ chức năng, Rồi chuyển chúng thành các may rủi đơn giản khi giải quyết vấn đề
Trang 19Tri thức cấu trúc: Diễn tả các cấu trúc của tri thức Loại tri thức này mô tả mô
hình trí tuệ tổng quát của chuyên gia về một vấn đề Chẳng hạn như: các tập luật, các quan hệ khái niệm, khái niệm về quan hệ của các đối tượng
2.2 Biểu diễn tri thức
Con người sống trong môi trường có thể nhận thức được thế giới nhờ các giác quan (tai, mắt và các giác quan khác), sử dụng tri thức tích lũy được và nhờ khả năng lập luận, suy luận, con người có thể đưa ra các hành động hợp lý cho công việc mà con người đang làm Một mục tiêu của trí tuệ nhân tạo ứng dụng là thiết kế các tác nhân thông minh cũng có những khả năng đó như con người Người ta có thể hiểu tác nhân thông minh là bất cứ cái gì có khả năng nhận thức được môi trường thông qua các bộ cảm nhận và đưa ra hành động hợp lý đáp ứng lại môi trường thông qua bộ phận hành động Các robots, các phần mềm người máy, các hệ chuyên gia, là các ví dụ về tác nhân thông minh Các tác nhân thông minh cần phải có tri thức về thế giới hiện thực mới có thể đưa ra những quyết định đ ng đắn
Thành phần trung tâm của các tác nhân dựa trên tri thức còn được gọi là hệ dựa trên tri thức hoặc đơn giản là hệ tri thức, là cơ sở tri thức Cơ sở tri thức là một tập hợp
các tri thức được biểu diễn dưới dạng nào đó Mỗi khi nhận được các thông tin đưa vào, tác nhân cần có khả năng suy luận để đưa ra các câu trả lời, các hành động hợp lý, đ ng đắn Nhiệm vụ này được thực hiện bởi bộ suy luận Bộ suy luận là thành phần cơ bản khác của các hệ tri thức Như vậy hệ tri thức bảo trì một cơ sở tri thức và được trang bị một thủ tục suy luận Mỗi khi tiếp nhận được các sự kiện từ môi trường, thủ tục suy luận thực hiện quá trình liên kết các sự kiện với các tri thức trong cơ sở tri thức để rút ra các câu trả lời, hoặc các hành động hợp lý mà tác nhân cần thực hiện Đương nhiên là, khi ta thiết kế một tác nhân giải quyết một vấn đề nào đó thì cơ sở tri thức sẽ chứa các tri thức về miền đối tượng cụ thể đó Để máy tính có thể sử dụng được tri thức, có thể
xử lý tri thức, người ta cần biểu diễn tri thức dưới dạng thuận tiện cho máy tính Đó là mục tiêu của biểu diễn tri thức
Trang 20Tri thức được mô tả dưới dạng các câu trong ngôn ngữ biểu diễn tri thức Mỗi câu
có thể xem như sự mã hóa của một sự hiểu biết của người ta về thế giới hiện thực Ngôn ngữ biểu diễn tri thức (cũng như mọi ngôn ngữ hình thức khác) gồm hai thành phần cơ
bản là cú pháp và ngữ nghĩa
+ Cú pháp của một ngôn ngữ bao gồm các ký hiệu về các quy tắc liên kết các ký
hiệu (các luật c pháp) để tạo thành các câu (công thức) trong ngôn ngữ Các câu ở đây
là biểu diễn ngoài, cần phân biệt với biểu diễn bên trong máy tính Các câu sẽ được chuyển thành các cấu trúc dữ liệu thích hợp được cài đặt trong một vùng nhớ nào đó của máy tính, đó là biểu diễn bên trong Bản thân các câu chưa chứa đựng một nội dung nào
cả, chưa mang một ý nghĩa nào cả
+ Ngữ nghĩa của ngôn ngữ cho phép ta xác định ý nghĩa của các câu trong một
miền nào đó của thế giới hiện thực Chẳng hạn trong ngôn ngữ các biểu thức số học, dãy ký hiệu (x+y)*z là một câu viết đ ng c pháp Ngữ nghĩa của ngôn ngữ này cho phép ta hiểu rằng, nếu x, y, z ứng với các số nguyên, ký hiệu + ứng với phép toán cộng, còn * ứng với phép toán nhân thì biểu thức (x+y)*z biểu diễn quá trình tính toán: lấy số nguyên x cộng với số nguyên y, kết quả được nhân với số nguyên z
Ngoài hai thành phần cú pháp và ngữ nghĩa, ngôn ngữ biểu diễn tri thức cần được cung cấp cơ chế suy luận Một suy luận cho phép ta suy ra một công thức từ một tập nào
đó các công thức Chẳng hạn, trong logic mệnh đề, luật modus ponens từ hai công thức
A và A > B suy ra công thức B Người ta sẽ hiểu lập luận hoặc suy luận là một quá trình áp dụng các luật suy luận để từ các tri thức trong cơ sở tri thức và các sự kiện ta nhận được các tri thức mới Như vậy người ta xác định:
Ngôn ngữ biểu diễn tri thức = Cú pháp + Ngữ nghĩa + Cơ chế suy luận
Một ngôn ngữ biểu diễn tri thức tốt cần phải có khả năng biểu diễn rộng, tức là có thể mô tả được mọi điều mà người ta muốn nói Nó cần phải hiệu quả theo nghĩa là, để
Trang 21đi tới các kết luận, thủ tục suy luận đòi hỏi ít thời gian tính toán và ít không gian nhớ Người ta cũng mong muốn ngôn ngữ biểu diễn tri thức gần với ngôn ngữ tự nhiên Thường người ta tập trung nghiên cứu logic vị từ cấp một, ngôn ngữ biểu diễn tri thức, bởi vì logic vị từ cấp một có khả năng biểu diễn tương đối tốt, và hơn nữa nó là cơ
sở cho nhiều ngôn ngữ biểu diễn tri thức khác Nhưng trước hết ch ng ta đi tìm hiểu logic mệnh đề, nó là ngôn ngữ đơn giản, có khả năng biểu diễn hạn chế, song thuận tiện cho ta trong việc đưa vào nhiều khái niệm quan trọng trong logic
2.3 Biểu diễn tri thức bằng luật dẫn xuất (luật sinh)
2.3.1 Khái niệm
Phương pháp biểu diễn tri thức bằng luật sinh được phát minh bởi Newell và Simon trong l c hai ông đang cố gắng xây dựng một hệ giải bài toán tổng quát Đây là một kiểu biểu diễn tri thức có cấu tr c Ý tưởng cơ bản là tri thức có thể được cấu trúc bằng một cặp điều kiện – hành động : "NẾU điều kiện xảy ra THÌ hành động sẽ được thi hành" Chẳng hạn : NẾU đèn giao thông là đỏ THÌ bạn không được đi thẳng, NẾU máy tính không khởi động được THÌ kiểm tra nguồn điện, …
Ngày nay, các luật sinh đã trở nên phổ biến và được áp dụng rộng rãi trong nhiều
hệ thống trí tuệ nhân tạo khác nhau Luật sinh có thể là một công cụ mô tả để giải quyết các vấn đề thực tế thay cho các kiểu phân tích vấn đề truyền thống Trong trường hợp này, các luật được dùng như là những chỉ dẫn (tuy có thể không hoàn chỉnh) nhưng rất hữu ích để trợ giúp cho các quyết định trong quá trình tìm kiếm, từ đó làm giảm không gian tìm kiếm Một ví dụ khác là luật sinh có thể được dùng để bắt chước hành vi của những chuyên gia Theo cách này, luật sinh không chỉ đơn thuần là một kiểu biểu diễn tri thức trong máy tính mà là một kiểu biễu diễn các hành vi của con người
Một cách tổng quát luật sinh có dạng như sau :
P 1 P 2 P n Q
Trang 22Tùy vào các vấn đề đang quan tâm mà luật sinh có những ngữ nghĩa hay cấu tạo khác nhau :
Trong logic vị từ : P1, P2, , Pn, Q là những biểu thức logic
Trong ngôn ngữ lập trình, mỗi một luật sinh là một câu lệnh
IF (P1 AND P2 AND AND Pn) THEN Q
Trong lý thuyết hiểu ngôn ngữ tự nhiên, mỗi luật sinh là một phép dịch :
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
2.3.2 Cơ chế suy luận trên các luật sinh
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
Trang 23Sự kiện ban đầu : H, K
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ụ : Cho tập các sự kiện và tập các luật như sau:
Trang 24 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 :
Hình 2.1: Cấu trúc đồ thị AND/OR
Như vậy là để xác định được nguyên nhân gây ra hỏng hóc là do ổ cứng hỏng hay cáp màn hình lỏng, hệ thống phải lần lượt đi vào các nhánh để kiểm tra các điều kiện như điện vào máy "có", âm thanh ổ cứng "không"…Tại một bước, nếu giá trị cần xác định không thể được suy ra từ bất kỳ một luật nào, hệ thống sẽ yêu cầu người dùng trực tiếp nhập vào Chẳng hạn như để biết máy tính có điện không, hệ thống sẽ hiện ra màn hình câu hỏi "Bạn kiểm tra xem có điện vào máy tính không (kiểm tra đèn nguồn)? (C/K)" Để thực hiện được cơ chế suy luận lùi, người ta thường sử dụng ngăn xếp (để ghi nhận lại những nhánh chưa kiểm tra)
Trang 252.3.3 Ưu điểm và nhược điểm của biểu diễn tri thức bằng luật
2.3.3.1 Ưu điểm
Biểu diễn tri thức bằng luật đặc biệt hữu hiệu trong những tình huống hệ thống cần đưa
ra những hành động dựa vào những sự kiện có thể quan sát được Nó có những ưu
điểm chính yếu sau đây :
Các luật rất dễ hiểu nên có thể dễ dàng dùng để trao đổi với người dùng (vì nó là một trong những dạng tự nhiên của ngôn ngữ)
Có thể dễ dàng xây dựng được cơ chế suy luận và giải thích từ các luật
Việc hiệu chỉnh và bảo trì hệ thống là tương đối dễ dàng
Có thể cải tiến dễ dàng để tích hợp các luật mờ
Các luật thường ít phụ thuộc vào nhau
Cơ sở tri thức luật sinh lớn sẽ làm giới hạn khả năng tìm kiếm của chương trình điều khiển Nhiều hệ thống gặp khó khăn trong việc đánh giá các hệ dựa trên luật sinh cũng như gặp khó khăn khi suy luận trên luật sinh
Trang 262.4 Công nghệ tri thức
2.4.1 Xử lý tri thức
Trí tuệ, sự thông minh phải dựa trên nền tảng của tri thức Tuy nhiên, nó còn phụ thuộc vào việc vận dụng, xử lý tri thức Biểu diễn tri thức là việc đưa tri thức vào máy
tính và chỉ có ý nghĩa nếu công việc tiếp theo: “xử lý tri thức được thực hiện”
Để xử lý các tri thức, trí tuệ nhân tạo cần có các kỹ thuật mã hóa tri thức Các kỹ thuật mã hóa tri thức này khác nhiều với cách thể hiện của các dữ liệu trong các chương trình, thuật toán xử lý dữ liệu thường gặp Các hệ thống thông minh cần xử lý các tri thức và các tri thức cần được biểu diễn ở dạng ký hiệu mà hệ thống xử lý được
Một trong những biện pháp xử lý tri thức hiện nay đó là sử dụng luật Luật vừa được sử dụng để biểu diễn tri thức vừa được dùng để xử lý tri thức
2.4.2 Xử lý tri thức bằng luật
Các sự kiện do người cung cấp rất có ý nghĩa đối với các hoạt động của hệ thống trí tuệ nhân tạo Chúng cho phép hệ thống hiểu trạng thái hiện tại của thế giới Một cấu trúc tri thức thông dụng dùng trong thiết kế hệ thống trí tuệ nhân tạo mà yêu cầu sử dụng thêm tri thức bổ sung là các luật Luật là phương pháp phổ biến dùng để xử lý tri thức
Phần trên đã đề cập đến khái niệm về luật Luật thuộc dạng tri thức thủ tục Nó gắn thông tin đã cho với một vài hoạt động Các hoạt động này có thể là khẳng định về thông tin mới hay là thủ tục sẽ được thực hiện Như vậy, luật mô tả cách giải quyết vấn đề
Quá trình xử lý tri thức bằng luật là quá trình liên kết những thông tin đã biết với các thông tin khác, các thông tin này có thể được suy diễn để người ta hiểu biết thêm, kết quả được suy diễn chính là kết quả của quá trình xử lý tri thức Về mặt logic, cấu trúc của luật kết nối một hay nhiều giả thiết, hay cái có trong câu IF, với một hay nhiều kết luận, hay được gọi là kết quả trong câu THEN
Trang 27Thêm thông tin vào bộ nhớ làm việc
Xét luật đầu tiên
Đưa kết luận vào bộ nhớ làm việc Dừng công việc
Xét luật tiếp theo
Giả thiết khớp với
bộ nhớ
Còn luật khác
Hình 2.2: Các bước xử lý tri thức dựa trên luật
Nói chung, một luật có nhiều giả thiết gắn với nhau bằng câu bằng toán tử AND hay OR hay cả hai Luật cũng có thể dùng ELSE để suy diễn khi giả thiết sai
Trong hệ thống dựa trên các luật, tri thức về lĩnh vực được đưa vào cơ sở tri thức của hệ thống Hệ thống dùng các luật này cùng với các thông tin bộ nhớ để giải bài toán Khi câu IF của luật khớp với thông tin trong bộ nhớ, hệ thống thực hiện các hoạt động mô tả trong câu THEN của luật Lúc này luật được xem như đã thực hiện, kết quả trong câu THEN được bỗ sung vào bộ nhớ Kết quả thu được cũng có thể làm cho luật mới được thực hiện
Việc xử lý các luật trong hệ thống dựa trên các luật được quản lý bằng một module gọi là bộ suy diễn
Cùng với việc sản sinh các thông tin mới, một luật có thể thực hiện các hành động Nó có thể là tính toán đơn giản, như là : IF cần đến chu vi đường tròn THEN chu
vi =Pi*đường kính
Để thực hiện các thao tác phức tạp hơn, nhiều hệ thống truy nhập các thủ tục bên ngoài Chương trình loại này đa phần là phần mềm về CSDL, chương trình ngôn ngữ C, Chúng có thể được viết bằng các ngôn ngữ lập trình hay các lệnh trên bảng tính Ví dụ:
Trang 28 Luật 1 ( liên quan đến thủ tục trong ngôn ngữ lập trình): IF thiết kế hộp mới AND NUMBER = Số các chi tiết lắp ráp AND SIZE = Kích c của chi tiết THEN CALL Tính thể tích của hộp AND SEND NUMBER, SIZE AND RETURN Thể tích
Luật 2 (liên quan đến bảng tính): IF cần biết tên nhân viên trong bộ phận Kinh doanh THEN OPEN Bảng NHAN_VIEN AND Tên bộ phận = Kinh doanh
Luật 3 (liên quan đến CSDL): IF có nhà bị cháy AND Tên nhà =”A” THEN OPEN Điện thoại AND FIND Tên nhà, mã AND Điện thoại= Mã điện thoại Nói chung người ta có thể truy nhập hay thay đổi thông tin nhờ chương trình bên ngoài Có thể dùng khối lượng lớn các thông tin trong CSDL và bảng tính, hay thay đổi các thông tin nhờ chức năng hỗ trợ quyết định của hệ thống xử lý luật
2.4.3 Xử lý tri thức bằng các luật có dùng biến
Để tăng hiệu quả cho việc sử dụng các luật xử lý, người ta sử dụng các biến trong luật là phù hợp với các ứng dụng cần thực hiện cùng một số thao tác trên tập các đối tượng tương tự nhau Bởi vì nếu viết một luật đơn cho mỗi đối tượng thì không hiệu
quả và hệ thống khó quản lý
Ví dụ 1: Luật sau cho biết A có được tốt nghiệp: IF A có điểm tốt nghiệp là 5
AND không nợ môn nào THEN A có thể tốt nghiệp
Khi hệ thống muốn thực hiện việc kiểm tra cho các cá nhân khác không phải là A thì nó cần phải viết luật khác, do vậy không tinh tế, thậm chí điểm tốt nghiệp của người cần linh động trong khoảng từ 5.0 trở lên Có thể dùng ngôn ngữ lập trình để tạo ra một luật, để luật này có thể khớp với dãy giá trị rộng hơn Các luật này dùng biến để khớp với các mệnh đề tương tự
Ví dụ 2: IF X không nợ môn nào AND X có điểm tốt nghiệp trên 5.0 THEN X có
thể tốt nghiệp
Trang 29Một phương pháp chủ yếu cơ bản thứ hai dùng để xử lý tri thức đó là dùng phương pháp lập luận
2.4.4 Xử lý tri thức bằng lập luận
Logic là hành động sử dụng lý tính để rút ra một kết luận từ các tiền đề nhất định bằng cách sử dụng một phương pháp luận cho trước, và hai phương pháp tường minh được sử dụng rộng rãi nhất để đạt đến kết luận là lập luận suy diễn và lập luận quy nạp Chi tiết cụ thể của các phương pháp lập luận là mối quan tâm của các ngành như triết học, logic, tâm lý học và trí tuệ nhân tạo
Để giải một bài toán, ta phải kết hợp các sự kiện với các tri thức, dùng các sự kiện riêng về bài toán và dùng chúng trong ngữ cảnh cụ thể của bài toán để rút ra các kết luận logic Quá trình giải bài toán để rút ra kết luận logic được gọi là quá trình lập luận
Lập luận là quá trình làm việc với tri thức, sự kiện và các chiến lược giải bài toán để rút ra kết luận Đó cũng là quá trình để hiểu cách con người suy lý và cách họ làm việc với thông tin về bài toán đã cho, cộng với kiến thức tổng quát của họ về lĩnh vực này sẽ đảm bảo hiểu rõ các bước đi trong việc xử lý tri thức trong hệ thống trí tuệ nhân tạo
Xử lý tri thức thường dựa vào các loại lập luận như sau:
Lập luận theo cách suy diễn: Con người dùng lập luận suy diễn để rút ra thông tin
mới từ những thông tin đã biết Các thông tin này có quan hệ logic với nhau Lập luận suy diễn dùng các sự kiện của bài toán gọi là các tiên đề và kiến thức chung có liên quan ở dạng luật gọi là các kéo theo
Ví dụ 1:
Kéo theo: con gà lớn nhanh nếu tôi chăm sóc tốt Tiền đề: tôi chăm sóc con gà tốt
Trang 30Kết luận: con gà lớn nhanh
Lập luận suy diễn là một trong các kỹ thuật phổ biến nhất Suy diễn đã dùng Modus Ponens là loại lập luận suy diễn cơ bản Khi ta có A > B và A đ ng thì r t ra được B đ ng
Lập luận quy nạp: Con người dùng lập luận quy nạp để rút ra các kết luận tổng
kết từ một tập các sự kiện theo cách tổng quát hóa
Ví dụ 2:
Giả thiết: Con trâu ở Tây Ninh ăn cỏ, con trâu ở Đồng Nai ăn cỏ, con trâu ở Bình Dương ăn cỏ
Kết luận: nói chung là con trâu ăn cỏ
Qua lập luận này, người ta cho rằng kết luận sẽ đ ng cho những trường hợp cùng loại, dựa trên một số hạn chế của một số trường hợp Thực chất lập luận suy diễn là đem cái thiểu số áp đặt cho cái đa số
Lập luận giả định: suy diễn là lập luận chính xác từ các sự kiện và thông tin đã
biết Lập luận giả định là loại suy diễn có vẽ hợp lý Điều này có nghĩa là câu kết luận
có thể đ ng nhưng cũng có thể không đ ng
Ví dụ 3:
Kéo theo: con gà ăn nhiều > con gà lớn nhanh
Tiên đề: con gà ăn nhiều
Kết luận: con gà lớn nhanh
Lập luận tương tự, loại suy: Người ta tạo một mô hình của một vài khái niệm
thông qua kinh nghiệm của họ Họ dùng mô hình này để hiểu một vài hoàn cảnh và đối tượng tương tự Họ vạch ra điểm tương đồng giữa hai vật đem so sánh, r t ra sự giống nhau và khác nhau nhằm hướng dẫn việc lập luận của họ
Trang 31Ví dụ 4: Cho bảng sau
Bảng 2.1.Đối tượng con trâu
Bảng trên cho biết thông tin đa dạng về đối tượng con trâu và dùng bảng trên để nhận biết đối tượng đó Nếu cho rằng con bò giống con trâu thì con bò cũng phải có những tính chất đó Loại lập luận này được dùng để hiểu biết đối tượng mới, và để hiểu rõ thêm bằng cách ra cứu đến những sự khác biệt giữa các đối tượng Trong ví dụ này, con bò khác với con trâu do các nét khác nhau giữa chúng
Lập luận theo lẽ thường: Nhờ kinh nghiệm, con người có thể giải quyết vấn đề
một cách hiệu quả Họ sử dụng lẽ thông thường để nhanh chóng rút ra kết luận Lập luận theo lẽ thường có xu hướng thiên về phán xét sự đ ng đắn hơn là lập luận chính xác về logic
Ví dụ 5: Nói về chiếc xe đạp :” xích xe chùng thường gây tuột xích” Kết luận này
có được do kinh nghiệm đi xe đạp nhiều lần Người ta đoán ngay “ xích chùng“ khi thấy chiếc xe hay tuột xích Loại tri thức này được xem là may rủi, cầu may
Khi các tri thức may rủi được dùng để hướng dẫn giải bài toán trong hệ thống trí tuệ nhân tạo, người ta có kiểu tìm kiếm may rủi hay tìm phù hợp Loại tìm kiếm này phát hiện lời giải tại nơi có vẻ là tốt nhất Như vậy cũng chẳng đảm bảo được nơi đó có lời giải Tuy nhiên, cách tìm kiếm may rủi là phù hợp đối với những ứng dụng cần nhanh chóng thu được lời giải
Chủng loại Động vật Thức ăn Cỏ
Số chân 4
Trang 32Lập luận đơn điệu và không đơn điệu: Đối với nhiều trường hợp, người ta lập
luận trên các thông tin tĩnh Các thông tin này không thay đổi trạng thái trong quá trình giải bài toán Quá trình giải bài toán theo cách này được gọi là lập luận đơn điệu
Ví dụ 6: IF có tiếng động THEN con chó tỉnh dậy
Nếu có sự kiện “cái cốc rơi” thì câu IF đ ng, tức là người ta đã sử dụng “Nếu cốc rơi thì có tiếng động” L c này trong câu trên, người ta thu được kết luận trong câu THEN, tức là: “cốc rơi” > ”có tiếng động” > “con chó tỉnh giấc”
Sau khi hết tiếng động, người ta muốn rằng con chó lại ngủ tiếp Tuy nhiên, hệ thống với cách lập luận đơn điệu sẽ “giữ” trạng thái con chó tỉnh giấc Do việc theo dõi thông tin không mấy khó khăn, khi có sự kiện nào thay đổi người ta có thể dựa vào nhiều sự kiện phụ thuộc khác nhau để thu được kết luận mong muốn Loại lập luận như vậy được gọi là lập luận không đơn điệu
Hệ thống có thể lập luận không đơn điệu nếu nó có hệ thống quản lý giá trị chân
lý Hệ thống này quản lý dữ liệu về nguyên nhân để sự kiện được khẳng định Do vậy, khi nguyên nhân thay đổi sự kiện cũng thay đổi theo Một hệ thống dùng lập luận không đơn điệu như ví dụ trên sẽ giữ được con chó tỉnh giấc lại
Lập luận dựa trên luật: Một khi ch ng ta đã lưu trữ một cơ sở tri thức, chúng ta
cần có thủ tục lập luận để rút ra các kết luận từ cơ sở tri thức Trong các hệ lập luận
dựa trên luật, có hai kiểu lập luận cơ bản: lập luận tiến và lập luận lùi
1)Lập luận tiến: Tư tưởng cơ bản của lập luận tiến là áp dụng suy diễn Modus
Ponens tổng quát Trong mỗi bước của lập luận tiến, người ta xét một lập luận trong cơ
sở luật Đối sánh mỗi điều kiện của luật với các sự kiện trong cơ sở sự kiện, nếu tất cả các điều kiện của luật đượ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
Trang 33Như vậy, quá trình lập luậ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 đến phần kết luận của luật, khi mà các điều kiện của luật đều được làm thỏa mãn, thì ta suy ra sự kiện trong phần kết luận của luật Chính vì lẽ đó mà có tên là lập luận tiến
2)Lập luận lùi: Trong các hệ dựa trên luật, chúng ta còn có thể sử dụng phương
pháp lập luận lùi Trong lập luận lùi, người ta đưa ra các giả thuyết cần được đánh giá
Sử dụng lập luận lùi, giả thiết đưa ra hoặc là được chứng minh, hoặc là bị bác bỏ Cần lưu ý rằng, chúng ta nói giả thiết được chứng minh, hoặc được bác bỏ là muốn nói tới
nó được chứng minh hoặc bác bỏ bởi tình trạng hiện thời của bộ nhớ làm việc Khi mà
bộ nhớ làm việc thay đổi (chúng ta thêm vào hoặc bác bỏ một số sự kiện) thì một giả thiết được chứng minh có thể trở thành bị bác bỏ và ngược lại
Quá trình lập luận lùi diễn ra như sau: Ta đối sánh giả thiết đưa ra với các sự kiện trong bộ nhớ làm việc Nếu có một sự kiện khớp với giả thiết (ở đây “khớp” được hiểu
là hai câu mô tả sự kiện và giả thiết trùng nhau theo một phép thế nào đó), thì ta xem như giả thiết là đ ng Nếu không có sự kiện nào khớp với giả thiết, thì ta đối sánh giả thiết với phần kết luận của các luật Các điều kiện này của luật được xem như là giả thiết mới Với giả thiết mới ta lặp lại quá trình trên
Nếu tất cả các giả thiết được sinh ra trong quá trình phát triển các giả thiết bởi các luật được chọn thích hợp đều được thỏa mãn (đều có trong bộ nhớ làm việc) thì giả thiết đã đưa ra được xem là đ ng Ngược lại, dù ta áp dụng luật nào để phát triển các giả thiết cũng dẫn tới giả thiết không có trong bộ nhớ làm việc và cũng không thể quy giả thiết này về các giả thiết mới khác, thì giả thiết đã đưa ra được xem là sai
2.5 Khái quát về lập trình logic
Lập trình logic là mảng công việc trước tiên khi chứng minh định lý cơ học Sự thật thì việc chứng minh định lý đã tạo nên cơ sở cho hầu hết hệ thống lập trình logic hiện nay
Trang 34Tư tưởng cơ bản của lập trình logic là sử dụng logic toán học như ngôn ngữ lập trình Điều này được đề cập trong tài liệu của Kowalski năm 1970, và được Colmerauer đưa vào thực hành năm 1975 trong các cài đặt ngôn ngữ lập trình logic đầu tiên, tức là ngôn
ngữ lập trình PROLOG (PROgramming LOGic) (Theo Apt K R., “Logic Programming” (1990), Elsevier Science Publishers, pp 135-144.) Nhờ sự hình thức
hóa, Kowalski đã xem xét tập con của các logic bậc một, gọi là logic mệnh đề Horn Một câu hay một mệnh đề theo logic có thể có nhiều điều kiện đ ng nhưng chỉ có một
hay không có kết luận đ ng
Trong lập trình logic, ta có thể sử dụng các vị từ để định nghĩa các khái niệm của tất cả các môn khoa học khác
Ví dụ: Định nghĩa một số nguyên tố: Số nguyên tố N là một số nguyên lớn hơn 1, chỉ chia hết cho 1 và chính nó
Để xét xem số N có phải là số nguyên tố hay không, người ta thường sử dụng dấu hiệu
nhận biết: Số nguyên tố là một số nguyên dương, không chia hết cho mọi số nguyên tố nhỏ hơn nó và 2 là số nguyên tố nhỏ nhất
Dấu hiệu này có thể mô tả bằng các vị từ như sau:
Như thế, toàn bộ các ký hiệu của ngôn ngữ lập trình suy về một công thức đặc biệt:
Phát sinh từ một yêu cầu
Trang 35 Nhằm chứng minh một mục tiêu Để trả lời cho câu hỏi đó hệ thống xem nó như là một “đích” và cố chứng minh “đích” đó bằng cách tạo những suy diễn trên cơ sở các tri thức đã khai báo
Một ngôn ngữ logic có thể được dùng trong giai đoạn đặc tả yêu cầu của quy trình xây dựng một sản phẩm phần mềm Hơn thế nữa, logic vị từ cho phép biểu diễn hầu hết các khái niệm và các định lý trong các bộ môn khoa học Một trong những ngôn ngữ lập trình logic có hỗ trợ rất nhiều cho lĩnh vực trí tuệ nhân tạo mà ta xét đến ở đây đó là ngôn ngữ Prolog
2.6 Ngôn ngữ Prolog
2.6.1 Prolog là ngôn ngữ lập trình logic
Prolog là ngôn ngữ được sử dụng phổ biến nhất trong dòng các ngôn ngữ lập trình logic Ngôn ngữ này do giáo sư người Pháp Alain Colmerauer và nhóm nghiên cứu của ông đề xuất lần đầu tiên tại đại học Marseillse đầu những năm 1970 Đến năm
1980 Prolog nhanh chóng được áp dụng rộng rãi ở châu Âu, được người Nhật chọn làm ngôn ngữ phát triển thế hệ máy tính thứ 5 Prolog đã được cài đặt trên máy vi tính
Apple II, IBM-PC, Macintosh
Từ đó đến nay, qua nhiều lần cải tiến, đặc biệt hãng Borland cho ra đời phần mềm TURBO PROLOG với nhiều ưu điểm, thuận tiện cho người sử dụng Để giải quyết một số vấn đề, ta nhận thấy sử dụng ngôn ngữ Prolog cho ta chương trình gọn nhẹ hơn nhiều so với các ngôn ngữ khác
Prolog là một ngôn ngữ cấp cao, có đặc điểm gần với ngôn ngữ tự nhiên, từ những người mới học đến những lập trình viên chuyên nghiệp đều có thể tiếp cận một cách nhanh chóng, viết ra một chương trình ứng dụng hữu ích
Khác với những ngôn ngữ cấu tr c như Pascal, hay C mà ta đã làm quen, Prolog
là một ngôn ngữ mô tả, với một số sự kiện và quy luật suy diễn đã mô tả, Prolog sẽ suy luận cho ta các kết quả
Trang 36Prolog còn được gọi là ngôn ngữ lập trình ký hiệu (symbolic programming) tương
tự như các ngôn ngữ lập trình hàm (funtional programming) hay lập trình phi số numerical programming) Prolog rất thích hợp để giải quyết các bài toán liên quan đến
(non-các đối tượng (object) và mối quan hệ (relation) giữa chúng
Prolog được sử dụng phổ biến trong lĩnh vực trí tuệ nhân tạo Nguyên lý lập trình
logic dựa trên các mệnh đề Horn (Horn logic) Một mệnh đề Horn biểu diễn một sự
kiện hay một sự việc nào đó là đ ng hoặc không đ ng, xảy ra hoặc không xảy ra,…
Ví dụ: Sau đây là một số mệnh đề Horn (Theo TS Phan Huy Khánh, “Lập trình logic trong Prolog”(2004), NXB Đại học quốc gia Hà Nội)
(1) Nếu một người già mà (và) khôn ngoan thì người đó hạnh phúc
(2) Jim là người hạnh phúc
(3) Nếu X là cha mẹ của Y và Y là cha mẹ của Z thì X là ông của Z
(4) Tom là ông của Mery
(5) Tất cả mọi người đều chết(hoặc Nếu ai là người thì ai đó phải chết) (6) Socrat là người
Trong các mệnh đề trên, mệnh đề (1), (3), (5) được gọi là các luật (rules), các mệnh đề còn lại gọi là các sự kiện (facts) Một chương trình logic có thể được xem như
là một CSDL gồm các mệnh đề Horn, hoặc dạng luật, hoặc dạng sự kiện, chẳng hạn như tất cả các sự kiện và luật từ (1) đến (6) ở trên Người sử dụng gọi chạy một chương trình logic bằng cách đặt câu hỏi truy vấn trên CSDL này, chẳng hạn câu hỏi:
Socrat có chết không?
(Tương đương khẳng định Socrat chết đ ng hay sai?)
Một hệ thống logic sẽ thực hiện chương trình theo cách “suy luận”-tìm kiếm dựa trên vốn “hiểu biết” đã có là chương trình – CSDL, để minh chứng câu hỏi là một khẳng định, là đ ng (Yes) hoặc sai (No) Với câu hỏi trên hệ thống tìm kiếm trên
CSDL khẳng định Socrat chết và “tìm thấy” luật (5) thỏa mãn (vế thì),vận dụng luật (5)
Trang 37hệ thống nhận được Socrat là người(vế nếu) chính là sự kiện (5) Từ đó câu trả lời sẽ là
Yes Có nghĩa là Socrat chết là đ ng
2.6.2 Xây dựng sự kiện và luật
2.6.2.1 Xây dựng sự kiện
Sự kiện là một vị từ diễn tả một sự thật Ví dụ: “2 là một số nguyên tố” là một sự
kiện vì nó diễn tả sự thật 2 là một số nguyên tố
Để xây dựng các sự kiện trong một chương trình Prolog, ta lấy ví dụ về cây gia hệ như sau Horn
Trong cây gia hệ (a), các nút chỉ người, còn các mũi tên chỉ quan hệ cha mẹ của Sự kiện Tom là cha mẹ của Bill được viết thành một vị từ Prolog như sau (chú ý mệnh đề
được kết thúc bởi một dấu chấm) :
Cha_me(tom, bill) % Chú ý không có dấu cách trước dấu mở ngoặc
Ở đây, vị từ Cha_me có hai đối là tom và bill Người ta có thể biểu diễn vị từ này bởi một cây như trong Hình 2.3 (b) : nút gốc là tên của vị từ, còn các nút lá là các đối
Hình 2.3: Cây gia hệ
Mary
Liz Tom
Jim Ann
Bil
Sue
Cha_me
Trang 38Từ cây gia hệ trên đây, có thể tiếp tục viết các vị từ khác để nhận được một chương trình Prolog gồm 6 vị từ như sau :
Sau khi hệ thống Prolog nhận được chương trình này, thực chất là một CSDL, người
ta có thể đặt ra các câu hỏi liên quan đến quan hệ Cha_me
Ví dụ:
Câu hỏi Bill có phải là cha mẹ của Sue được gõ vào trong hệ thống đối thoại
Prolog (dấu nhắc ?-_) như sau :
Lần này, Prolog không trả lời Yes hoặc No, mà đưa ra một giá trị của X làm thoả
mãn câu hỏi trên đây :
Trang 39Sau khi hiển thị câu trả lời đầu tiên, Prolog sẽ lần lượt tìm kiếm những cặp cha mẹ
con thỏa mãn và lần lượt hiển thị kết quả nếu chừng nào người sử dụng còn yêu cầu
cho đến khi không còn kết quả lời giải nào nữa (kết thúc bởi Yes) :
Trang 40Tuỳ theo cài đặt Prolog, người sử dụng có thể gõ vào một dấu chấm (.) hoặc Enter
để chấm dứt giữa chừng luồng trả lời
Ta có thể tiếp tục đưa ra những câu hỏi phức tạp hơn khác, chẳng hạn ai là ông (bà) của Jim ? Thực tế, quan hệ ông bà (Ong_ba) chưa được định nghĩa, cần phải
phân tách câu hỏi này thành hai phần sơ cấp hơn :
1 Ai là cha (mẹ) của Jim ? Giả sử có tên là Y
2 Ai là cha (mẹ) của Y ? Giả sử có tên là X
Lúc này, có thể viết trong Prolog như sau :
?- Cha_me(Y, jim), Cha_me(X, Y)
Cha_me
Ong_ba
Hình 2.4: Quan hệ ông bà được hợp thành từ hai quan hệ cha mẹ