Đề tài Xây dựng một hệ chuyên gia cho phép đoán tính cách của người qua đặc tả khuôn mặt

Chương I: TỔNG QUAN 2

I.1 Lời nói đầu. 2

I.2 Nhân tướng học. 3

I.2.1 Giới thiệu 3

I.2.3 Biết được gì qua vầng trán 4

I.2.4 Cá tính thể hiện qua cặp mắt 5

I.2.5 Mũi cho ta biết điều gì ? 6

I.2.6 Hình dáng của miệng biểu đạt gì ? 7

I.2.7 Đôi tai mách bảo điều gì ? 8

I.2.8 Một số khuôn mặt thường thấy 8

I.3 Phương hướng giải quyết. 10

Chương II : HỆ CHUYÊN GIA 11

II.1 Tổng quan 11

II.1.1 Hệ chuyên gia là gì ? 11

II.1.2 Đặc trưng và ưu điểm của hệ chuyên gia 12

II.1.3 Các lĩnh vực ứng dụng của hệ chuyên gia 13

II.1.4 Cấu trúc của hệ chuyên gia 15

II.1.5 Một số mô hình kiến trúc hệ chuyên gia 17

II.2 Cơ sở tri thức 19

II.2.1 Phân biệt tri thức và dữ liệu 19

II.2.2 Phân loại tri thức 20

II.2.3 Các cấp độ tri thức 22

II.2.4 Các phương pháp biểu diễn tri thức 23

II.3 Mô tơ suy diễn 31

II.3.1 Cơ chế suy diễn 31

II.3.2 Cơ chế điều khiển 33

Chương III : ÁP DỤNG MÔ HÌNH HỆ CHUYÊN GIA XÂY DỰNG CHƯƠNG TRÌNH ĐOÁN NHẬN TÍNH CÁCH NGƯỜI QUA ĐẶC TẢ KHUÔN MẶT 38

III.1 Vecto suy diễn tiến 38

III.2 Cơ sở tri thức 40

Chương IV : CHƯƠNG TRÌNH CHÍNH 47

IV.1 Môi trường 47

IV.2 Giao diện chương trình 47

IV.3 Mã nguồn một số form chính 50

IV.4 Đánh giá chương trình 72

 

 

doc74 trang | Chia sẻ: leddyking34 | Lượt xem: 5734 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng một hệ chuyên gia cho phép đoán tính cách của người qua đặc tả khuôn mặt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
à giá trị chân lý của chúng không thể chỉ ra một cách chính xác, tương ứng với thang đo quy ước. Ví dụ : “Anh ta cao khoảng 1m70”. Cũng có thể xuất hiện các tri thức không đầy đủ trong các phát biểu, các mô tả. Ví dụ : “Thông thường nếu anh ta đi thì nói chung chị ấy cũng đi” , đây là phát biểu bất định, song chỉ có tác dụng nếu biết được một chút về sự kiện “anh ta có đến hay không”. Nói chung, các tri thức bất định, không chính xác và không đầy đủ xuất hiện là do trong các phát biểu, người ta sử dụng các yếu tố ngôn ngữ không rõ ràng, như : có thể, có lẽ, khoảng, nói chung…Một trong những cách tiếp cận để xử lý các loại tri thức trên là sử dụng cách tiếp cận lý thuyết mờ. Các lý thuyết lập luận xấp xỉ đã và đang được quan tâm, nghiên cứu rất nhiều. II.2.4 Các phương pháp biểu diễn tri thức a)Biểu diễn tri thức nhờ logic Dựa vào các khái niệm cơ bản về logic mệnh đề và logic vị từ, với một số bài toán, các trạng thái được mô tả qua các biểu thức logic. Khi đó bài toán được phát biểu lại dưới dạng : A.Chứng minh : Từ GTGT…GT suy ra một trong các kết luận : KL,…,KL. Ở đây :GT,KL là các biểu thức logic (mệnh đề hoặc vị từ) B.Tìm phép gán cho các biến tự do sao cho từ GT,…,GT suy ra một trong các kết luận KL,…,KL. Cơ sở tri thức bằng logic mệnh đề : Cơ sở tri thức gồm 2 phần : Các sự kiện. Các luật. Các sự kiện được cho bởi các luật đặc biệt dạng : q; q; … q; Tập F = (p,…,p) tạo nên giả thiết cho quá trình suy diễn. Các luật ở dạng chuẩn Horn : ppq Cơ sở tri thức biểu diễn bằng logic vị từ : Cơ sở tri thức được cấu tạo bởi 2 phần : Tập các sự kiện F. Tập các luật R. Các sự kiện được cho bởi q (x,y,z,…), I = ,ở đây q (x,y,z,…) là các vị từ phụ thuộc vào các hạng thức x, y, z,… Các luật có dạng ppq(.). Logic vị từ cho phép biểu diễn hầu hết các khái niệm và các phát biểu định lý, định luật trong các bộ môn khoa học. Cách biểu diễn này khá trực quan và ưu điểm căn bản của nó là có một cơ sở lý thuyết vững chắc cho những thủ tục suy diễn nhằm tìm kiếm và sản sinh ra những tri thức mới, dựa trên các sự kiện và các luật đã cho. (*) Logic vị từ và logic mệnh đề có các ưu điểm sau : Là ngôn ngữ biểu diễn kiểu mô tả. Có khả năng suy diễn đối với các cơ chế quen thuộc : Pronens & Tollens. Khá trực quan với người sử dụng. Khá gần gũi về cú pháp với các lệnh lập trình logic, chẳng hạn như PROLOG. Có thể dùng để mô tả cấu trúc mô hình và xử lý động mô hình. Có thể kiểm tra tính mâu thuẫn trong cơ sở tri thức. Tính mô đun cao, do vậy các tri thức có thể thêm bớt sửa đổi khá độc lập với nhau và các cơ chế suy diễn. (*)Một số điểm yếu của logic : Mức độ hình thức hóa cao, dẫn tới khó hiểu ngữ nghĩa của các vị từ khi xét chương trình. Năng xuất xử lý thấp. Một trong những khó khăn cơ bản của quá trình suy diễn là cơ chế hợp và suy diễn vét cạn. Do các tri thức được biểu diễn nhờ các vị từ, nên ưu thể sử dụng cấu trúc dữ liệu không được khai thác triệt để. b)Biểu diễn tri thức nhờ mạng ngữ nghĩa : Trong phương pháp này, người ta sử dụng một đồ thị gồm các nút và các cung nối các nút để biểu diễn tri thức. Nút dùng để thể hiện các đối tượng, thuộc tính của đối tượng và giá trị của thuộc tính. Còn cung dùng để thể hiện các quan hệ giữa các đối tượng. Các nút và các cung đều được gắn nhãn. Ví dụ để thể hiện tri thức “sẻ là một loài chim có cánh và biết bay” ,người ta vẽ một đồ thị như sau : Bằng cách thêm vào đồ thị nút mới và các cung mới người ta có thể mở rộng một mạng ngữ nghĩa. Các cung mới được thêm thể hiện các đối tượng tương tự (với các nút đã có trong đồ thị), hoặc tổng quát hơn. Chẳng hạn để thể hiện “chim là một loài động vật đẻ trứng” và “cánh cụt là loài chim biết lặn”, người ta vẽ thêm như sau : (*)Ưu điểm : Cho phép biểu diễn một cách trực quan các sự kiện và mối quan hệ giữa chúng. Tính mô đun cao, theo nghĩa các tri thức thêm vào hoàn toàn độc lập với các tri thức cũ. Là ngôn ngữ biểu diễn dạng mô tả. Có thể áp dụng một số cơ chế trên mạng : Cơ chế truyền và thừa hưởng thông tin giữa các đối tượng. (*)Nhược điểm : Không có một phương pháp suy diễn chung cho mọi loại mạng ngữ nghĩa. Khó kiểm soát được quá trình cập nhật tri thức, dễ dẫn đến mâu thuẫn trong cơ sở tri thức. c)Biểu diễn tri thức nhờ các luật sản xuất Để có thể tận dụng những điểm mạnh trong suy diễn logic nhờ nguyên lý Modun Ponens, các hệ chuyên gia trí tuệ nhân tạo đưa ra các luật sản xuất có dạng : Nếu Điều kiện 1 Điều kiện 2 ……. Điều kiện m Thì Kết luận 1 ……. Kết luận n Trong đó các điều kiện và các kết luận có thể có dạng khá thoải mái. Trường hợp mỗi điều kiện i , mỗi kết luận j là vị từ hay mệnh đề thì ta có thể suy diễn logic thông thường. (*)Ưu điểm : Cách biểu diễn khá đơn giản và trực quan. Có thể suy diễn theo chiến lược khác nhau : suy diễn tiến, suy diễn lùi, và suy diễn hỗn hợp. Khá gần gũi về cú pháp. Có thể kiểm tra tính mâu thuẫn giữa các luật. Tính mô đun cao, có nghĩa là việc thêm, sửa đổi hoặc loại bỏ các luật hoàn toàn không có ảnh hưởng tới các luật khác và cơ chế suy diễn. (*)Nhược điểm : Năng xuất xử lý thấp. Không sử dụng được các cấu trúc dữ liệu. d)Biểu diễn tri thức bằng FRAME Phương pháp biểu diễn tri thức bằng FRAME có tất cả các tính chất vốn có của một ngôn ngữ biểu diễn tri thức. Nghĩa là nó có thể biểu diễn tri thức ở góc độ giao diện người-máy, góc độ mô tả mô hình, điều khiển hệ thống. Đồng thời nó cũng là một cơ sở cho một phương pháp xử lý thông tin mới – hướng đối tượng. Nếu phương pháp nhờ logic và mạng ngữ nghĩa dùng để biểu diễn tri thức mô tả và phương pháp luật sản xuất dùng để biểu diễn tri thức thủ tục thì các FRAME là kết hợp của cả 2 dạng biểu diễn : mô tả và thủ tục. FRAME tận dụng được các ưu điểm của luật sản xuất, vị từ, cũng như mạng ngữ nghĩa. Cấu trúc của FRAME : (như trên, duy nhất, miền…) (text, integer, real, pointer…) (tên, giá trị, thủ tục,…) Ví dụ về 1 FRAME mô tả tập HOCSINH : Frame HOCSINH IS-A: FART-OF : NGUOI-DI-HOC A KIND OF : (HOC_SINH_CO_SO, HOC_SINH_TRUNG_HOC) Cân nặng : 10-60 kg Chiều cao : 80-170 cm Có râu : không Nói tiếng : Việt/Anh/Pháp Cấu trúc này cho ta một khung dữ liệu để khoanh vùng các đối tượng là học sinh. Trường hợp gặp 1 người cao 180 cm, nặng 45 kg ta có thể khẳng định rằng đó không phải học sinh, vì không thỏa mãn các ràng buộc đã có. (*)Ưu điểm : Đáp ứng tất cả các yêu cầu về biểu diễn tri thức. Cho phép người sử dụng khá tự do khi biểu diễn tri thức. FRAME không chỉ sử dụng để mô tả tri thức mà còn được dùng thể hiện các thuật toán suy dẫn. Tận dụng được những điểm mạnh của biểu diễn thủ tục và mô tả. Quá trình xử lý trên các FRAME độc lập theo nghĩa kế thừa thông tin, không nhất thiết phải tuần tự. (*)Nhược điểm : Phương pháp biểu diễn quá phức tạp và cồng kềnh. Phương pháp biểu diễn FRAME tiện lợi đối với kỹ sư xử lý tri thức cũng như người sử dụng có trình độ cao, nhưng lại là sự quá tải đối với những người sử dụng thông thường. Các giá trị của slot có thể gán qua thực hiện các thủ tục, điều này làm cho việc thu nạp và cập nhật tri thức trở nên phức tạp và làm khả năng mềm dẻo, phù hợp với những thay đổi của môi trường bên ngoài bị giảm xuống. Do cấu trúc của FRAME nên khi biểu diễn cần phải sử dụng các biện pháp khá cầu kỳ. Vì vậy làm mất đi tính trực quan trong phương pháp biểu diễn. Đối với các bài toán phức tạp thì việc mô tả và điều khiển hệ thống sử dụng FRAME sẽ phức tạp lên rất nhiều so với các phương pháp biểu diễn khác. e)Biểu diễn nhờ bộ ba liên hợp O.A.V Biểu diễn tri thức nhờ bộ ba liên hợp OAV là sử dụng bộ ba “Đối tượng”-“Thuộc tính”-“Giá trị” (Object-Attribute-Value) để chỉ ra rằng đối tượng với thuộc tính đã cho nào đó có một giá trị nào đó. Ví dụ : (Nguyễn A, cao, 167) (Nguyễn A, nặng, 64) (Nguyễn A, râu, không) (Nguyễn A, nói, tiếng Việt) =>Có thể mô tả dưới dạng mạng ngữ nghĩa và các bộ liên hợp như sau : Đối tượng trong bộ ba liên hợp được chia thành 2 loại : đối tượng tĩnh và đối tượng động. Các đối tượng tĩnh được lưu trong bộ nhớ ngoài (băng từ, đĩa…) và khi cần được nạp vào bộ nhớ trong để xử lý. Các đối tượng động được khởi tạo trong quá trình làm việc và được lưu giữ ở bộ nhớ trong phục vụ cho việc xử lý. Một điều quan trọng là các đối tượng có thể sắp xếp và liên kết lại với nhau cũng giống như trong liên kết các FRAME. Tuy vậy, không thể biết một cách chính xác và tường minh bản chất của từng liên kết. Vì vậy người ta thường sử dụng bộ ba liên hợp để biểu diễn các sự kiện không chắc chắn. (*)Ưu điểm : Cho phép biểu diễn các đối tượng một cách trực quan. Tính mô đun tương đối cao. Là ngôn ngữ biểu diễn dạng mô tả. Cho phép diễn đạt tường minh các luật suy diễn. (*)Tuy vậy, cách biểu diễn này thực chất là một dạng đặc biêt của phương pháp mạng ngữ nghĩa nên nó cũng có các nhược điểm của mạng ngữ nghĩa. Ngoài ra khi sử dụng phương pháp này, các quan hệ, liên kết giữa các đối tượng không thể biểu diễn một cách tường minh. II.3 Mô tơ suy diễn II.3.1 Cơ chế suy diễn a)Suy diễn tiến : Suy diễn tiến là lập luận từ các sự kiện, sự việc để rút ra các kết luận. Ví dụ: Nếu thấy trời mưa trước khi ra khỏi nhà (sự kiện) thì phải lấy áo mưa (kết luận). Trong phương pháp này, người sử dụng cung cấp các sự kiện cho hệ chuyên gia để hệ thống (máy suy diễn) tìm cách rút ra các kết luận có thể. Kết luận được xem là những thuộc tính có thể được gán giá trị. Trong số những kết luận này, có thể có những kết luận làm người sử dụng quan tâm, một số khác không nói lên điều gì, một số khác có thể vắng mặt. Các sự kiện thường có dạng : Attribute = Value Lần lượt các sự kiện trong cơ sở trí thức được chọn và hệ thống xem xét tất cả các luật mà các sự kiện này xuất hiện như là tiền đề. Theo nguyên tắc lập luận trên, hệ thống sẽ lấy ra những luật thỏa mãn. Sau khi gán giá trị cho các thuộc tính thuộc kết luận tương ứng, người ta nói rằng các sự kiện đã được thỏa mãn. Các thuộc tính được gán giá trị sẽ là một phần của kết quả chuyên gia. Sau khi mọi sự kiện đã được xem xét, kết quả được xuất ra cho người sử dụng dùng. b)Suy diễn lùi : Phương pháp suy diễn lùi tiến hành các lập luận theo chiều ngược lại (đối với phương pháp suy diễn tiến). Từ một giả thuyết (như là một kết luận), hệ thống đưa ra một tình huống trả lời gồm các sự kiện là cơ sở của giả thuyết đã cho này. Ví dụ: nếu ai đó vào nhà mà cầm áo mưa và quần áo bị ướt thì giả thuyết này là trời mưa. Để củng cố giả thuyết này, ta hỏi người đó xem có phải trời mưa không ? Nếu người đó trả lời là có thì giả thuyết trời mưa là đúng và trở thành một sự kiện. Nghĩa là trời mưa nên phải cầm áo mưa và quần áo bị ướt. Suy diễn lùi là cho phép nhận được giá trị của một thuộc tính. Đó là câu trả lời cho câu hỏi “giá trị của thuộc tính A là bao nhiêu ?” với A là một đích. Để xác định giá trị của A, cần có các nguồn thông tin. Những nguồn này có thể là những câu hỏi hoắc có thể là những luật. Căn cứ vào các câu hỏi, hệ thống nhận được một cách trực tiếp từ người sử dụng những giá trị của thuộc tính liên quan. Căn cứ vào các luật, hệ thống suy diễn có thể tìm ra giá trị sẽ là kết luận của một trong số các kết luận có thể của thuộc tính liên quan,… Ý tưởng của thuật toán suy diễn lùi như sau : Với mỗi thuộc tính đã cho, người ta định nghĩa nguồn của nó : Nếu thuộc tính xuất hiện như là tiền đề của một luật (phần đầu của luật), thì nguồn sẽ thu gọn thành một câu hỏi. Nếu thuộc tính xuất hiện như là hậu quả của một luật (phần cuối của luật), thì nguồn sẽ là các luật mà trong đó, thuộc tính là kết luận. Nếu thuộc tính là trung gian, xuất hiện đồng thời như là tiền đề và như là kết luận, khi đó nguồn có thể là các luật, hoặc có thể là các câu hỏi mà chưa được nêu ra. Nếu mỗi lần với câu hỏi đã cho, người sử dụng trả lời hợp lệ, giá trị trả lời này sẽ được gán cho thuộc tính và xem như thành công. Nếu nguồn là các luật, hệ thống sẽ lấy lần lượt các luật mà thuộc tính đích xuất hiện như kết luận, để có thể tìm giá trị các thuộc tính thuộc tiền đề. Nếu các luật thỏa mãn, thuộc tính kết luận sẽ được ghi nhận. c)Cơ chế hỗn hợp : Sử dụng kết hợp cả 2 phương pháp suy diễn trên. II.3.2 Cơ chế điều khiển a)Chọn hướng suy diễn: Cho f = # GT GT: tập các sự kiện ban đầu f = # KL KL: Tập các sự kiện kết quả f = max #{ r R/ r có thể áp dụng cho 1 tập con F nào đó } = max # lọc (F,R) f = max # { r R/ r có cùng một sự kiện ở vế phải } (*)Các luật heuristic : Luật 1 : nếu f < f thì chọn suy diễn tiến Luật 2 : nếu f > f thì chọn suy diễn lùi Luật 3 : nếu f = f và f < f thì chọn suy diễn tiến Luật 4 : nếu f = f và f > f thì chọn suy diễn lùi Luật 5 : nếu f = f và f = f người thiết kế có thể chọn 1 trong 2 phương pháp suy diễn để sử dụng. b)Giải quyết các vấn đề cạnh tranh : b.1)Cạnh tranh trong suy diễn tiến Tính huống cạnh tranh xảy ra khi và chỉ khi tồn tại F và r1, r2 R mà : r1 : left1q1, r2 : left2q2, left1F, left2Fó # lọc (F,R) 2 ta có lọc ({a},R) = {r1,r2} Đặt vấn đề : làm thế nào để chọn 1 luật r trong số các luật có thể áp dụng được bằng lọc (F,R) ? Giải pháp 1 : Tổ chức các luật có thể sử dụng được như một hàng đợi. Giải pháp 2 : Tổ chức các luật có thể sử dụng theo xếp chồng. Giải pháp 3 : Sử dụng heuristic Đối với mỗi r R bằng kỹ thuật heuristic ta đánh giá liên hệ hàm ước lượng h trong KL với một phần vế phải của luật r, r : leftq H(r,KL) = h(q,KL) Nguyên tắc : Luật r : leftq sẽ được chọn khi và chỉ khi h(q,KL) min/max Giải pháp 4 : Thực hiện sắp xếp thứ tự các sự kiện (Đồ thị FPG-Fact Precedence Graph) Cho tập luật R và mỗi sự kiện của R là một nút, các luật là các dây cung trong đồ thị FPG. Giải pháp 4’ : Sử dụng đồ thị VA/HOĂC Mỗi luật r : pp…pq tương đương với một cụm cung kiểu “VÀ”. Giải pháp 5 : Đồ thị thứ tự luật (RPG – Rule Precedence Graph) Một luật r là sắp thứ tự với luật r (ký hiệu là r r) nếu và chỉ nếu tồn tại một sự kiện f sao cho : r : leftf ; r :…f…q Một luật r được gọi “khởi đầu – initial” nếu và chỉ nếu : r : leftq và left GTINITIAL Mỗi luật r được gọi là “kết thúc – final” nếu và chỉ nếu : r : left q và q GTFINAL Biểu diễn trong đồ thị RPG : Mỗi luật khởi đầu được coi là “áp dụng” ; APP = {INITIAL}. Cho App(r) điểm – vào(r) = {r’} tồn tại một đỉnh r’r trong RPG ; r : leftq ; mỗi r’ App(r) có thể áp dụng Nếu left {q’/ r’ App(r)}GT Thì luật r cũng có thể được áp dụng. Suy diễn trong đồ thị RPG như sau : Chọn một luật trong APPLICABLE. Thực hiện luật đó. Chú ý : đối với Suy diễn theo chiều rộng APP = hàng đợi Suy diễn theo chiều sâu APP = xếp chồng (*)Một số các kinh nghiệm (heuristics) : b.1.1/, h(r,FINALS) = h(r) # điểm – ra(r) = #{r’ / tồn tại một cung rr’ trong RPG} Luật được chọn ó h(r) = # điểm – ra(r) max b.1.2/, h(r,FINALS) = # p Luật được chọn ó h(r,FINALS) min b.1.3/, h(r,FINALS) = # {p / p : r FINALS} (số lượng các đường đi từ luật r đến FINALS trong đồ thị RPG) Luật được chọn ó h(r,FINALS) là lớn nhất b.2)Cạnh tranh trong suy diễn lùi : Cạnh tranh trong suy diễn lùi xảy ra khi và chỉ khi với một sự kiện f nào đó tồn tại ít nhất 2 luật r1, r2 : r1 : left1f và r2 : left2f Định nghĩa hàm tìm thấy: Tìm_thấy(f) = {r/ r : leftf } Câu hỏi đặt ra : Làm thế nào để chọn một luật sao cho r Tìm_thấy (f) Giải pháp 1 : Nếu r, r Tìm_thấy (f) Và r, r không được sử dụng nữa Và i < j Thì r được chọn Giải pháp 2 : Sử dụng đồ thì VA/HOAC và đồ thị FPG (*)Một vài phương pháp kinh nghiệm (heuristics) b.2.1/, Xét luật r : leftq. Với mỗi sự kiện f độ_dài(f,GT) = độ dài đường đi ngắn nhất từ GT đến f. h(r,GT) = max(độ_dài(f,GT)/ fleft) luật r1 được chọn ó h(r1,GT) nhỏ nhất b.2.2/, h(r,GT) = # left /* r : leftq */ luật được chọn ó # leftnhỏ nhất b.2.3/, Hàm độ_sâu(f,GT) = 0 nếu fGT Max { max( độ_sâu(q) + 1)} r : leftf q left luật được chọn ó max{độ_sâu(q)} nhỏ nhất b.2.4/, Hàm h(r,GT) = ( độ_sâu(f) ) f left luật được chọn ó h(r,GT) nhỏ nhất c)Việc giới hạn Thao tác lọc thường tốn thời gian để tính toán, nên phải lướt qua tập luật R để tìm ra tập có thể áp dụng được APPLICABLE. Để giảm nhẹ con số thử nghiệm, người ta quyết định chỉ lọc một phần các luật, hoặc sự kiện được đưa vào. Đó là việc giới hạn phải làm trước khi lọc. Chương III : ÁP DỤNG MÔ HÌNH HỆ CHUYÊN GIA XÂY DỰNG CHƯƠNG TRÌNH ĐOÁN NHẬN TÍNH CÁCH NGƯỜI QUA ĐẶC TẢ KHUÔN MẶT (*)Mô hình hệ. Em dự định xây dựng một chương trình hệ chuyên gia, mà qua đó cho phép đoán tính cách của một người nào đó dựa trên những đặc tả về khuôn mặt của họ. Hệ thống sử dụng vecto suy diễn tiến và cơ sở tri thức như sau : III.1 Vecto suy diễn tiến Giải quyết vấn đề dựa trên biểu diễn bài toán bằng logic vị từ, logic mệnh đề, các phương pháp suy diễn sẽ dần dần chuyển từ các giả thiết về kết luận, bằng cách thêm vào giả thiết các sự kiện đã được khẳng định là đúng, dựa trên 2 phương thức : Modus ponens : Nghĩa là nếu A đúng, AB đúng thì B cũng đúng. Modus tollens: Nghĩa là nếu B sai , AB đúng thì A cũng sai. Nói một cách khác, giả sử A, B, -A, -B là các sự kiện, trước khi áp dụng luật AB , ta có tập {A} (hoặc tập {B} tương ứng) thì sau sự khi thực hiện luật ta sẽ có thêm {B} (hoặc{-A} tương ứng). Kết quả là có tập sự kiện {A,B} (hoặc {-A,-B}) Ta có thể viết : {A} AB {A,B} {-B} AB {-A,-B} Như vậy, quá trình suy diễn bắt đầu từ tập các giả thiết, làm nở dần dần bằng cách thêm vào các sự kiện mới cho đến khi một trong các kết luận cần chứng minh được thực hiện. Chữ “tiến” ở đây sẽ được dùng với nghĩa với mỗi qui tắc luật AB, ta sẽ chuyển từ vế trái sang vế phải dấu . (*)Suy diễn tiến với logic mệnh đề : Đầu vào : Tập các mệnh đề đã cho GT = {g1,g2,…,g} Tập các luật RULE có dạng Horn : p1p2…pq Tập các mệnh đề kết luận : KL = {q1,q2,…,q} Đầu ra : Thông báo thành công nếu mọi q KL có thể suy ra từ giả thiết GT nhờ sử dụng tập luật RULE. Thuật toán : Tgian là tập các sự kiện (mệnh đề) đúng trong thời điểm đang xét, ban đầu Tgian = GT. Sat là tập luật có dạng p1p2…pq sao cho i = (i,n) p Tgian { Tgian = GT; Sat = lọc (RULE,Tgian); While KL Tgian and Sat do { r get (Sat) ; /*lấy một luật khả hợp từ tập Sat,giả sử r có dạng p1p2…pq */ TgianTgian {q}; RULERULE \ {r}; Sat = lọc (RULE,Tgian); }; If KL Tgian then exit (“thành công”) else exit (“không thành công”); } III.2 Cơ sở tri thức Thông qua việc tham khảo và tổng hợp các tài liệu về nhân tướng học, em dự định sẽ xây dựng một cơ sở tri thức với các luật theo cấu trúc If…then được minh họa như sau : Nếu một người có vầng trán cao rộng thì đây là một người có trí năng, nghị lực. Nếu một người có vầng trán thấp rộng thì đây là một người có khả năng quan sát tinh tế, kiên trì nhưng lại quá e dè. Nếu một người có vầng trán vồ thì đây là người có tính độc lập, có khả năng thích nghi, tháo vát. Nếu một người có đôi mắt to không bằng nhau (mắt to, mắt bé) thì đây là một người có tham vọng, tháo vát, chan hòa và năng nổ Nếu một người có đôi mắt to thì đây là người giàu cảm xúc, thích nghệ thuật và thông minh. Nếu một người có đôi tai to thì đây là người có tính chủ động, lịch lãm, chuyên cần. Nếu một người có đôi tai nhỏ thì đây là người hay thay đổi, trí nhớ kém, nhưng lại có khiếu nghệ thuật và sáng tạo. Nếu một người có mũi ngắn dẹt thì đây là người suy nghĩ chậm chạp nhưng trung thành với ai đối xử tốt với họ. Nếu một người có chiếc mũi dài to cao thì đây là người vô cùng cố chấp. Nếu một người có bướu ở giữa mũi thì đây là người khỏe mạnh, kiên quyết và ưa mạo hiểm. Nếu một người có miệng rộng thì đây là người cởi mở, chan hòa, có nghị lực, thân mật và thoải mái. Nếu một người có miệng nhỏ thì đây là người yếu đuối, sống lệ thuộc, đa cảm. Nếu một người có 2 răng cửa nhỏ thì đây là người năng nổ, nói nhiều nhưng không có khả năng giữ bí mật. Ngoài ra còn có các luật với cấu trúc Ifandand…then bằng cách liên kết các điều kiện ở các luật bên trên theo những hướng khác nhau tùy ý người dùng và kết quả là kết quả tổng hợp. Ví dụ như : “Nếu một người có vầng trán vuông, mắt lồi, tai to, mũi dài to cao, miệng trề thì đây là một người có tinh thần thực tiễn; cẩn thận, tham vọng, nhiều nghị lực; lịch lãm, chuyên cần; cố chấp; nói nhiều, vui vẻ ”. Với các luật như trên em đã xây dựng được cơ sở dữ liệu như sau : a)Ràng buộc trong cơ sở dữ liệu : b)Chi tiết các bảng : tbl_FeatureType : Bảng trên cho phép cập nhật thông tin về các bộ phận trên khuôn mặt con người. tbl_Feature : Bảng trên cho phép cập nhập các đặc điểm của từng loại bộ phận trên khuôn mặt người. Ví dụ như : với id_type = 0 , ta có thể thấy “ trán ” có các đặc điểm như vuông , vồ , lẹm , cao rộng … tbl_Characters : Chúng ta có thể cập nhập các tính cách có thể có của con người trong bảng trên. tbl_RelationType : Trong “ tbl_RelationType ” ta cập nhật thông tin về các mối quan hệ có thể có giữa các tính cách. Ví dụ : 2 tính cách “ thông minh ” và “ suy nghĩ chậm chạp ” có mối quan hệ đối lập nhau. 2 tính cách “ vui vẻ ” và “ ham vui ” có mối quan hệ tương đồng , tương hỗ. tbl_FeatureRelation : “ tbl_FeatureRelation ” cho phép ta thiết lập mối quan hệ giữa các đặc điểm của từng bộ phận trên khuôn mặt với tính cách của con người. tbl_CharacterRelation : “ tbl_FeatureRelation ” cho phép ta thiết lập mối quan hệ giữa các tính cách. (*) Cơ sở dữ liệu trên cho phép chúng ta thực hiện các thao tác cập nhập dễ dàng thông qua chương trình được mô tả dưới đây. Chương IV : CHƯƠNG TRÌNH CHÍNH IV.1 Môi trường Hệ điều hành : Windows Nền tảng : NetFramework 3.5 Sử dụng hệ quản trị cơ sở dữ liệu Access Môtơ suy diễn tiến Ngôn ngữ cài đặt : C# IV.2 Giao diện chương trình Giao diện chính : Người dùng có thể lựa chọn các đặc điểm trên khuôn mặt mà họ cần trong các comboBox “Nhận dạng” và “Đặc điểm”. Sau khi nhấn vào button “Thêm”, các đặc điểm đó sẽ hiện lên trong listview như sau : Khi click button “Phỏng đoán”, chương trình sẽ xử lý và đưa ra những tính cách có thể có dựa trên các đặc điểm mà người dùng đã chọn : Bên cạnh chức năng phỏng đoán tính cách con người qua đặc tả khuôn mặt, chương trình còn cho phép người dùng cập nhật cơ sở dữ liệu thông qua button : Trên form “Co so du lieu” này chúng ta có thể thực hiện các thao tác như : Thêm bớt các đặc điểm của khuôn mặt cũng như những tính cách thường thấy ở con người. Thiết lập các mối quan hệ giữa đặc điểm nhận dạng và tính cách thông qua form : Thiết lập các mối quan hệ giữa 2 tính cách chuẩn (xét sự đối lập của 2 tính cách) thông qua form : IV.3 Mã nguồn một số form chính Main form : public partial class Main : Form { private List> idFeature; private List> textFeature; private List listChar; public Main() { InitializeComponent(); cb_Type.LostFocus += new EventHandler(cb_Type_LostFocus); cb_DacDiem.LostFocus += new EventHandler(cb_DacDiem_LostFocus); } private void cb_Type_LostFocus(object sender, EventArgs e) { if (cb_Type.SelectedIndex == -1) { errPrv.SetError(cb_Type, "Không tồn tại đặc điểm này"); cb_Type.Focus(); } else errPrv.Clear(); } private void cb_DacDiem_LostFocus(object sender, EventArgs e) { if (cb_DacDiem.SelectedIndex == -1) { errPrv.SetError(cb_DacDiem, "Không tồn tại đặc điểm này"); cb_DacDiem.Focus(); } else errPrv.Clear(); } private void init() { idFeature = new List>(); textFeature = new List>(); for (int i = 0; i < cb_Type.Items.Count; i++) { idFeature.Add(new List()); textFeature.Add(new List()); } for (int i = 0; i < cb_Type.Items.Count; i++) { ListViewItem item = new ListViewItem(i.ToString()); item.SubItems.Add(((System.Data.DataRowView)cb_Type.Items[i])["Mota"].ToString()); item.SubItems.Add(""); lv_DDNhanDang.Items.Add(item); } } private void Main_Load(object sender, EventArgs e) { this.tbl_FeatureTypeTableAdapter.Fill(this.boiToanDataSet.tbl_FeatureType); init(); cb_Type_SelectedIndexChanged(cb_Type, new EventArgs()); } private void button1_Click(object sender, EventArgs e) { CSDL frm_CSDL = new CSDL(); frm_CSDL.Disposed += new EventHandler(frm_CSDL_Disposed); frm_CSDL.Show(); } private void frm_CSDL_Disposed(object sender, EventArgs e) { cb_Type_SelectedIndexChanged(cb_Type, new EventArgs()); this.Visible = true; } private void cb_Type_SelectedIndexChanged(object sender, EventArgs e) { if (cb_Type.SelectedIndex == -1) { errPrv.SetError(cb_Type, "Không tồn tại đặc điểm này"); cb_Type.Focus(); return; } else errPrv.Clear(); BoiToanDataSet.tbl_FeaturesDataTable dataTable = new BoiToanDataSet.tbl_FeaturesDataTable(); BoiToanDataSetTableAdapters.tbl_FeaturesTableAdapter adapter = new BoiToan.BoiToanDataSetTableAdapters.tbl_FeaturesTableAdapter(); adapter.FillByType(dataTable, int.Parse(cb_Type.SelectedValue.ToString())); cb_DacDiem.DisplayMember = dataTable.MotaColumn.ColumnName; cb_DacDiem.ValueMember = dataTable.idColumn.ColumnName; cb_DacDiem.DataSource = dataTable; } private void bt_AddFeature_Click(object sender, EventArgs e) {

Các file đính kèm theo tài liệu này:

  • docÁp dụng mô hình hệ chuyên gia xây dựng chương trình đoán nhận tính cách người qua đặc tả khuôn mặt.doc
Tài liệu liên quan