Mô hình mạng Bayes

Một phần của tài liệu LUẬN VĂN: HỆ THỐNG HỌC THÍCH NGHI DỰA TRÊN KIẾN THỨC docx (Trang 31)

3. Mô hình hệ thống học thích nghi ACGS [10]

3.2.Mô hình mạng Bayes

3.2.1. Giới thiệu chung về mạng Bayes

Phần này sẽ chỉ giới thiệu về mạng Bayes một cách ngắn gọn. Kiến thức về mạng Bayes có thể xem thêm trong môn học trí tuệ nhân tạo.

Một mạng Bayes là một đồ thị có hướng mà các node của nó biểu thị các biến không chắc chắn và các cạnh của nó là các liên kết nguyên nhân hay kết quả giữa các biến. Kết hợp với mỗi node là một bảng xác suất node (NPT – Node Probability Table). Đây là một tập của các giá trị xác suất có điều kiện mà mô hình quan hệ không chắc chắn giữa các node và cha của nó cùng với bất cứ sự không chắc chắn nào mà biểu thị mối quan hệ đó. Nếu node A có các node cha là B và C thì NPT cho node A biểu thị xác suất p(A | B, C) cho tất cả các sự kết hợp có thể của A, B, và C. Nếu A có x trạng thái, B có y trạng thái, và C có z trạng thái thì NPT sẽ có xyz ô.

Giả sử Xi (i = 1..n) là các biến của mạng và pa(Xi) biểu diễn tập các cha của Xi. Khi đó ta có p(X1, X2,…, Xn) = ∏ p(Xi | pa(Xi)).

Để định nghĩa một mạng Bayes, có một số công việc cần được chỉ định:

 Xác định tập các biến.

 Xác định tập các liên kết giữa các biến và mạng như là đồ thị có hướng không có chu trình.

 Đưa ra bảng xác suất cho mỗi node.

3.2.2. Sử dụng mạng Bayes trong hoạt động thích nghi

Sử dụng mạng Bayes để quản lý nhân tố không chắc chắn trong mô hình phủ là một tiếp cận tốt. Chúng ta cũng miêu tả một thực thi của mô hình này với một khoá học chủ đề: “Cách thiết kế cơ sở dữ liệu quan hệ?”.

Chúng ta thấy, các khái niệm học có quan hệ với nhau. Ví dụ trong khoá học SQL, để hiểu về khái niệm Query chúng ta cần hiểu khái niệm Table, và để hiểu khái niệm Table chúng ta lại cần hiểu về khái niệm Entity. Mỗi khái niệm là một phần cơ bản của khoá học, tương ứng với một liên kết. Các khái niệm có quan hệ cha-con. Để biết về khái niệm cha cần phải biết về khái niệm con. Chúng ta dùng mạng Bayes để tính xác suất mà

người học nắm được với từng khái niệm, để từ đó đưa ra khung chương trình học phù hợp.

Để phát triển mô hình người học mạng Bayes, chúng ta cần chỉ định một tập các biến để đo kiến thức của người học với ba trạng thái: chưa đạt (not acquired), đang học (in progress), đạt (acquired). P(not-acquired(C)) mô tả giá trị xác suất của trạng thái not- acquired cho khái niệm C, p(in-progress(C)) mô tả giá trị xác suất của trạng thái in- progresss cho khái niệm C, và p(acquired(C)) mô tả giá trị xác suất của trạng thái acquired cho khái niệm C. Ta có: p(not-acquired(C)) + p(in-progress(C)) + p(acquired(C)) = 1. Ví dụ, với người học, đo kiến thức về khái niệm “Thực thể” có thể có các giá trị như: p(not-acquired(C)) = 0.8, p(in-progress(C)) = 0.1, p(acquired(C)) = 0.1. Mô hình người học bao gồm một tập của các biến cho mỗi khái niệm. Với n khái niệm, mô hình người học cần 3*n biến để mô tả ba trạng thái của kiến thức người học. Mô hình ACGS chỉ mô hình mối quan hệ tiên quyết giữa các khái niệm cái mà quan trọng cho cả mục tiêu lập kế hoạch hướng dẫn và cho việc thu thập thông tin về trạng thái hiện tại của kiến thức người học. Nó có vẻ rõ ràng rằng nếu A là tiên quyết của B, nắm được A phải gây ra ảnh hưởng cho việc nắm được B, do đó:

 Nếu A chưa nắm được, có vẻ như B cũng chưa nắm được.

 Nếu B đã nắm được, có vẻ như A cũng đã nắm được.

Trong trường hợp nếu A đã nắm được, p(acquired(B) | acquired(A)) là giá trị xác suất để đánh giá kiến thức người học về khái niệm B dựa trên khái niệm A. Ví dụ, p(acquired(B) | acquired(A)) = 0.75 có nghĩa là một người học nếu đã nắm được A thì rất có thể cũng nắm được B. Ví dụ, với mô hình khái niệm miền được cho trong hình sau, nếu p(acquired (First normal form)) = 0.2, và p(acquired (Transitive functional dependences)) = 0.1, thì p(acquired (Second normal form) | acquired (First normal form), acquired(Transitive functional dependences)) = 0.15. Trong hình sử dụng công cụ Netica để đánh giá các giá trị xác suất.

Hình 3. Công cụ Netica cho việc tính toán các giá trị xác suất của mạng Bayes.

Nói chung, nếu C1, C2,…, Cn là các khái niệm tiên quyết của khái niệm C, giá trị để đánh giá một người học đã nắm được khái niệm C hay chưa được tính bằng:

p(acquired(C) | acquired(C1), acquired(C2),…, acquired(Cn))

Để thu thập thông tin tương ứng với trạng thái kiến thức người học, chúng ta sử dụng một tập các công việc hoạt động liên quan đến các node khái niệm. Mỗi công việc hoạt động cũng có ba trạng thái: not-finish, in-progress, và finish. Kết quả khi người học làm xong một công việc hoạt động là nhân tố để đánh giá người học đã hoàn thành công việc hay chưa. Ví dụ, trong công việc “xác định các danh từ”, nếu một người học chỉ xác định được 6/10 danh từ trong tài liệu chỉ định, người học đang in-progress của công việc này. Một công việc thường bao gồm một số công việc hoạt động cái mà hoàn thành hay chưa dựa trên giá trị xác suất của chúng. Ví dụ, để đánh giá một người học hoàn thành công việc “xác định các thực thể” dựa trên trạng thái hoàn thành của hai công việc hoạt động: “xác định các danh từ” và “kiểm tra danh từ chung”.

Tương tự các biến cho việc đánh giá kiến thức người học, nếu T1, T2,…, Tn là các công việc hoạt động cho công việc trừu tượng T, giá trị để đánh giá công việc T đã hoàn thành hay chưa được tính bằng:

3.3. Thích nghi hoạt động học

Thích nghi là một tiến trình để chọn các công việc hoạt động cho mỗi người học dựa trên mô hình người học. Người học với trình độ kiến thức khác nhau cần làm công việc khác để kết thúc mục tiêu học. Điều này được kết hợp bằng một số công việc mà bao gồm công việc trừu tượng và công việc hoạt động.

Tuỳ theo kỹ thuật điều hướng thích nghi, một hoặc nhiều kỹ thuật được chọn ví dụ như ẩn, chú thích, hoặc trợ giúp trực tiếp để hiển thị khoá học được chọn cho người học hiện tại. Do đó, giả sử T là một công việc, L là một người học, SL là tập trạng thái miêu tả kiến thức và trình độ hiểu biết của L. Tiến trình thích nghi là như sau:

 Nếu SL không có một trạng thái cho công việc T, trạng thái tương ứng được thêm vào SL với giá trị: SL.T(not-finish) = 1 (công việc T chưa được làm).

 Trong trường hợp SL có một giá trị xác suất cho trạng thái của công việc T, người học cần hoàn thành hay có thể bỏ qua công việc hoạt động T được quyết định bởi giá trị xác suất mà đo kiến thức người học về các công việc T1, T2,…, Tk là các công việc tiên quyết của T. Giá trị này được tính bằng ba công thức, tương ứng cho trạng thái “finish”: p(finish(T) | finish(T1), finish(T2),…, finish(Tk)), và tương ứng cho trạng thái “not-finish”: p(not- finish(T) | not-finish(T1), not-finish(T2),…, finish(Tk)), và “in-progress”: 1 – p(finish(T)) – p(not-finish(T)). Nếu các giá trị xác suất cho trạng thái kết thúc lớn hơn ngưỡng nào đó, người học có thể bỏ qua công việc T.

Cuối cùng, các hoạt động của người học tương ứng sẽ được cập nhật trong mô tả của người đó, cái mà là nền tảng cho tiến trình thích nghi trong hoạt động học tiếp theo.

4. Cài đặt thử nghiệm

Trong phần này, chúng ta sẽ đi thực hiện lần lượt các bước tương tự như khi làm một dự án phần mềm. Đó là: tìm hiểu yêu cầu, phân tích thiết kế, lập trình, và kiểm thử.

4.1. Tìm hiểu yêu cầu

Hệ thống ACGS mà chúng ta sẽ xây dựng là một hệ thống dựa trên nền web. Hệ thống có các chức năng như sau: (adsbygoogle = window.adsbygoogle || []).push({});

Đăng nhập hoặc đăng ký. Người học muốn truy cập được vào hệ thống cần

có một tài khoản. Khi đăng ký, người học sẽ được hệ thống cung cấp cho một tài khoản chứa tên, mật khẩu, và có thể có các thông tin khác. Khi đăng nhập, hệ thống sẽ kiểm tra tính hợp lệ của tài khoản, và sẽ chuyển tới trang chọn khoá học hoặc đưa ra một thông báo lỗi.

Chọn khoá học. Hệ thống có thể liệt kê nhiều khoá học khác nhau, và người học có thể chọn khoá học mà mình quan tâm. Tuy nhiên, trong giai đoạn thử nghiệm, chúng ta có thể chỉ tạo một khoá học.

Làm bài kiểm tra đánh giá ban đầu. Người học sẽ làm một bài kiểm tra dưới dạng trắc nghiệm. Sau khi người học làm xong (nhấn nút Submit), hệ thống sẽ tính kết quả. Kết quả ở đây không chỉ là người học đã làm đúng bao nhiêu câu trong tổng số bao nhiêu câu, mà còn là người học đã làm đúng bao nhiêu phần trăm của một khái niệm nào đó. Đây chính là các bằng chứng likelihood cho các khái niệm. Căn cứ vào đó, hệ thống sẽ tính ra các giá trị xác suất mà người học nắm được khái niệm cũng như công việc. Khi đó, mô tả trình độ kiến thức của người học được khởi tạo.

Làm các bài tập để xem người học đã nắm được kiến thức hay chưa. Người học sẽ làm các bài tập được giao để hoàn thành một công việc nào đó. Sau khi người dùng làm xong, hệ thống sẽ tính kết quả để xác định bằng chứng likelihood cho các node. Tiếp theo, giá trị xác suất cho toàn bộ các node của mạng được tính lại, và mô tả trình độ kiến thức của người học được cập nhật.

Chỉ ra các khái niệm và công việc cần học. Mỗi khái niệm, mỗi công việc đều có một thuộc tính gọi là threshold. Nếu xác suất người học nắm được một mục nào đó mà lớn hơn threshold thì người đó sẽ không cần phải học nữa. Khi đó, hệ thống sẽ có một cách biểu diễn nào đó để thông báo cho người học rằng mục đó đã xong, không cần phải học nữa (ví dụ, chúng ta có thể làm mờ liên kết đến mục cần học).

4.2. Phân tích thiết kế cơ sở dữ liệu

Cơ sở dữ liệu có tên là AC.

Bảng User để lưu thông tin của người dùng. Do đây chỉ là hệ thống sơ khai nên bảng này chứa khá ít thông tin, chỉ có định danh, tên, và mật khẩu.

Bảng User

Trường Kiểu dữ liệu Mô tả

userid int Định danh của người dùng, tự động tăng dần. Là khoá chính của bảng.

username varchar(32) Tên của người dùng.

password varchar(32) Mật khẩu của người dùng khi đăng nhập.

Bảng tiếp theo là bảng các khoá học (Course). Bảng này gồm có định danh và tên khoá học.

Bảng Course

Trường Kiểu dữ liệu Mô tả

courseid int Định danh của khoá học, tự động tăng dần. Là khoá chính của bảng.

Mỗi khoá học có một file mạng Bayes riêng, có tên là <courseid>.dne trong thư mục net. Các node của mạng có tên N<itemid>, trong đó <itemid> được lấy từ bảng Item.

Bảng Item

Trường Kiểu dữ liệu Mô tả

itemid int Định danh của các mục, tự động tăng dần. Là khoá chính của bảng.

itemname varchar(64) Tên của mục.

content varchar(64) Nội dung của mục. Trong hệ thống xây dựng, giá trị của trường này chứa liên kết đến trang nội dung tương ứng.

coursecode int Định danh của khoá học mà mục này thuộc về. Khoá ngoại đến trường courseid của bảng Course.

threshold int Ngưỡng của mục. Nếu xác suất người học nắm được mục mà lớn hơn ngưỡng thì người học sẽ không cần học mục này nữa. Giá trị nằm trong đoạn [0, 100]. type int Kiểu của mục, có thể là 0 (khái niệm) hoặc 1 (công

việc).

Mỗi Item là một mục trong bảng mục lục. Chú ý rằng mỗi khoá học sẽ có một mục lục riêng (TOC - Table Of Contents). Các TOC được chứa ngay trong thư mục gốc của trang web, và có tên tương ứng với số thứ tự của khoá học, đuôi mở rộng là .htm. Trong file TOC, mỗi mục được chứa trong thẻ <li> và một thẻ <span> có định danh là li<itemtid> tương ứng. Thẻ <span> này sẽ có tác dụng khi chúng ta có các cách trình bày khác nhau với các mục có xác suất khác nhau.

Bảng Achieve lưu giữ tỉ lệ kiến thức nắm được của người dùng với từng khái niệm.

Trường Kiểu dữ liệu Mô tả (adsbygoogle = window.adsbygoogle || []).push({});

itemcode int Định danh của mục tương ứng. Khoá ngoại đến trường itemid của bảng Item.

usercode int Định danh của người học tương ứng. Khoá ngoại đến trường userid của bảng User.

ratio int Tỷ lệ mà người học usercode nắm được mục itemcode. Giá trị nằm trong đoạn [0, 100].

Bảng Evidence lưu kết quả các bài kiểm tra, các bài tập tương ứng với các mục.

Bảng Evidence

Trường Kiểu dữ liệu Mô tả

itemcode int Định danh của mục tương ứng. Khoá ngoại đến trường itemid của bảng Item.

usercode int Định danh của người học tương ứng. Khoá ngoại đến trường userid của bảng User.

ratio int Kết quả mà người học usercode đạt được đối với mục itemcode. Giá trị nằm trong đoạn [0, 100]. Bảng Evidence có cấu trúc giống như bảng Archieve. Tuy nhiên chúng ta cần cả hai bảng này. Hai bảng này thường bị hiểu nhầm là một khi tìm hiểu mạng Bayes.

Bảng lưu các câu hỏi kiểm tra tương ứng với từng khái niệm. Hình thức kiểm tra là trắc nghiệm.

Bảng Test

Trường Kiểu dữ liệu Mô tả

khoá của bảng. question varchar(128) Câu hỏi.

o1 varchar(32) Lựa chọn thứ nhất. o2 varchar(32) Lựa chọn thứ hai. o3 varchar(32) Lựa chọn thứ ba. o4 varchar(32) Lựa chọn thứ tư.

answer int Đáp án đúng. Giá trị là 1, 2, 3, hoặc 4.

itemcode int Định danh của mục mà câu hỏi liên quan đến. Khoá ngoại đến trường itemid của bảng Item.

Hình 4. Biểu đồ các bảng và mối quan hệ giữa chúng trong cơ sở dữ liệu.

4.3. Môi trường phát triển 4.3.1. Apache 4.3.1. Apache

Hệ thống được xây dựng trên nền web với ngôn ngữ là PHP, chạy trên web server là Apache.

4.3.2. MySQL

4.3.3. Java

Các thao tác với mạng Bayes sẽ rất khó thực hiện với ngôn ngữ PHP. Tuy nhiên, công việc sẽ trở nên dễ dàng hơn nếu sử dụng ngôn ngữ Java.

4.3.4. Netica [6]

a. Giới thiệu Netica

Netica là một chương trình linh hoạt, nhanh, thân thiện mà bạn có thể sử dụng để tìm các mẫu hình trong dữ liệu, tạo các biểu đồ mã hoá kiến thứ hoặc mô tả các vấn đề quyết định, sử dụng những cái này để trả lời truy vấn và tìm quyết định tối ưu, và tạo ra các hệ chuyên gia xác suất. Nó là phù hợp cho các ứng dụng trong các lĩnh vực chuẩn đoán, dự đoán, phân tích quyết định, mô hình xác suất, quản lý rủi ro, xây dựng hệ chuyên gia. Netica được xây dựng và phát triển bởi tập đoàn phần mềm Norsys (Norsys Software Corp.). Netica là hệ thống phát triển mạng Bayes được sử dụng rộng rãi nhất hiện nay.

Để thực hiện các thao tác với mạng Bayes, chúng ta sử dụng các API có sẵn được cung cấp bởi Netica. Có thể nói, Netica là trái tim của hệ thống. Không có nó, hệ thống chỉ là các trang PHP bình thường. Nhưng chúng ta có thể tạo mạng Bayes, thực hiện các thao tác trên mạng với Netica.

Netica-J là một thư viện đầy đủ của các lớp Java để làm việc với mạng Bayes và đồ thị ảnh hưởng. Nó chứa các hàm để xây dựng, học từ dữ liệu, thay đổi, chuyển đổi, thực hiện kiểm tra, lưu và đọc các mạng. Nó có thể quản lý các “trường hợp” và một tập các trường hợp, và có thể kết nối trực tiếp với hầu hết phần mềm cơ sở dữ liệu.

Ở đây, khoá luận không trình bày đầy đủ về các API của Netica mà chỉ những phần được sử dụng trong hệ thống.

b. Các thao tác với mạng Bayes của chương trình

Nếu chỉ tính riêng các thao tác liên quan đến mạng Bayes thì hệ thống có hai cái sau: (adsbygoogle = window.adsbygoogle || []).push({});

 Thao tác đầu tiên là chúng ta cần tạo một mạng Bayes.

 Thao tác thứ hai là cho vào các xác suất likelihood, chúng ta cần tính các giá trị xác suất cho tất cả các node trong mạng.

Một phần của tài liệu LUẬN VĂN: HỆ THỐNG HỌC THÍCH NGHI DỰA TRÊN KIẾN THỨC docx (Trang 31)