Huấn luyện mạng perceptron nhiều nơron

Một phần của tài liệu Hệ chuyên gia và ứng dụng trong nhận dạng động vật (Trang 42)

Các quy tắc perceptron được cho bởi biểu thức (2.18) và (2.19), cập nhật vector trọng số cho perceptron một nơron. Khái quát hóa quy tắc này cho các perceptron nhiều nơron của hình 2.1. Để cập nhật hàng thứ i của ma trận trọng số:

Để cập nhật phần tử thứ i của vector hệ số hiệu chỉnh cần áp dụng biểu thức:

Để thuận tiện các quy tắc perceptron có thể được viết dưới dạng ký hiệu ma trận như sau:

Và: Ví dụ:

Để kiểm tra luật học perceptron, xem xét lại ví dụ về táo/cam. Các cặp đầu vào/đầu ra sẽ được các vector mẫu thử nghiệm:

    1 1 2 2 1 1 p 1 , t 0 p 1 , t 1 1 1                                             

Giả sử giá trị ban đầu của ma trận trọng số và hệ số hiệu chỉnh là:

 

W 0.5 1 0.5 , b = 0.5 Bước đầu tiên sẽ áp dụng vector p1 vào mạng:

      i 1 a hardlim Wp b hardlim 0.5 1 0.5 1 0.5 1 hardlim 2.5 1                              n ew o ld iw  iw  e pi (2.20) new old i i i b  b  e (2.21)   new old T w w ep (2.22)   new old b b e (2.23)

34 Tiếp theo là tính giá trị sai số e:

1 e t a 0 1  1 Bản cập nhật trọng lượng:        new old T W W ep 0.5 1 0.5 1 1 1 1 0.5 0 0.5            Bản cập nhật hệ số hiệu chỉnh là: new old b b  e 0.5 ( 1)   0.5

Bước 2: Quy tắc perceptron là:

        2 1 a hardlim Wp b hardlim 0.5 0 0.5 1 0.5 1 hardlim 0.5 0                                    2 new old T e t a 1 0 1 W W ep 0.5 0 0.5 1 1 1 1 0.5 1 0.5              new old b b   e 0.5 1 0.5 

Bước 3: Lặp lại một lần nữa với các vector đầu vào đầu tiên p1:

      1 1 1 a hardlim Wp b hardlim 0.5 1 0.5 1 0.5 1 hardlim 0.5 1 e t a 0 1 1                                          new old T new old W W ep 0.5 1 0.5 1 1 1 1 0.5 2 0.5 b b e 0.5 1 0.5                 

Nếu tiếp tục lặp đi lặp lại sẽ thấy rằng cả hai vectơ đầu vào bây giờ sẽ được phân loại một cách chính xác. Thuật toán đã hội tụ về một phương pháp.

35

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG 3.1. Phát biểu bài toán

Ngày nay, việc lựa chọn nên hay không nên mua máy tính được rất nhiều người đặt ra câu hỏi. Để trả lời câu hỏi, bài toán đặt ra: “Cần phải xây dựng chương trình tư vấn mua máy tính”.

Bài toán tư vấn mua máy tính là bài toán giúp người mua lựa chọn được có nên hay không nên mua máy tính dựa vào các thông tin người mua. Để giải quyết bài toán này, khoá luận sẽ áp dụng thuật toán Rosenblatt. Trong đó:

Đầu vào: Các thông tin khách hàng (bao gồm: độ tuổi, mức thu nhập, đối tượng, chất lượng sản phẩm) và mạng perceptron có trọng số w1, w2, w3, w4, hệ số hiệu chỉnh b nhờ vào luật học có giám sát, hàm truyền hardlim.

Đầu ra: Cho ra kết quả tư vấn mua máy tính và lý do.

3.2. Thuật toán Rosenblatt huấn luyện mạng Perceptron trong bài toán tư vấn mua máy tính

Áp dụng thuật toán Rosenblatt giúp giải quyết bài toán tư vấn mua máy tính cho phù hợp với từng đối tượng.

Thuật toán ban đầu sẽ được khởi tạo vector trọng số w, hệ số hiệu chỉnh b nhờ vào luật học có giám sát và hàm truyền hardlim. Với dữ liệu x cung cấp, tính được w.xb  n. Nếu n  0 thì hàm truyền hardlim sẽ cho kết quả 1 và ngược lại 0.

3.2.1. Module giúp khởi tạo trọng số và hệ số hiệu chỉnh

Module giúp khởi tạo vector trọng số w và hệ số hiệu chỉnh b nhờ luật học có giám sát. Luật học có giám sát sẽ có đầu vào ma trận và nhờ quá trình perceptron tính được trọng số và hệ số hiệu chỉnh.

public void matran(int[,] a) {

a[0, 0] = 1; a[1, 0] = 1; a[2, 0] = 2; a[3, 0] = 3; a[4, 0] = 3; a[5, 0] = 3; a[6, 0] = 2;

36

a[7, 0] = 1; a[8, 0] = 1; a[9, 0] = 3; a[10, 0] = 1; a[11, 0] = 2; a[12, 0] = 2; a[13, 0] = 3;

a[0, 1] = 1; a[1, 1] = 1; a[2, 1] = 1; a[3, 1] = 2; a[4, 1] = 3; a[5, 1] = 3; a[6, 1] = 3;

a[7, 1] = 2; a[8, 1] = 3; a[9, 1] = 2; a[10, 1] = 2; a[11, 1] = 2; a[12, 1] = 1; a[13, 1] = 2;

a[0, 2] = -1; a[1, 2] = -1; a[2, 2] = -1; a[3, 2] = -1; a[4, 2] = 1; a[5, 2] = 1; a[6, 2] = 1;

a[7, 2] = -1; a[8, 2] = 1; a[9, 2] = 1; a[10, 2] = 1; a[11, 2] = -1; a[12, 2] = 1; a[13, 2] = -1;

a[0, 3] = 1; a[1, 3] = -1; a[2, 3] = 1; a[3, 3] = 1; a[4, 3] = 1; a[5, 3] = - 1; a[6, 3] = -1;

a[7, 3] = 1; a[8, 3] = 1; a[9, 3] = 1; a[10, 3] = -1; a[11, 3] = -1; a[12, 3] = 1; a[13, 3] = -1;

a[0, 4] = 0; a[1, 4] = 0; a[2, 4] = 1; a[3, 4] = 1; a[4, 4] = 1; a[5, 4] = 0; a[6, 4] = 1;

a[7, 4] = 0; a[8, 4] = 1; a[9, 4] = 1; a[10, 4] = 1; a[11, 4] = 1; a[12, 4] = 1; a[13, 4] = 0;

}

3.2.2. Module áp dụng thuật toán Rosenblatt huấn luyện mạng Perceptron Perceptron

Khi đã có ma trận, hệ thống sẽ sử dụng thuật toán Rosenblatt huấn luyện mạng Perceptron tìm được trọng số và hệ số hiệu chỉnh.

public void perceptron(int[,] a, ref int ia) {

matran(a);

double w1 = 0; // w1 là trọng số 1 double w2 = 0; // w2 là trọng số 2 double w3 = 0; // w3 là trọng số 3

37 double w4 = 0; // w4 là trọng số 4 double b = 1; // b là hệ số hiệu chỉnh int m=0; int interation = 0; int t=0;

for (int i = 0; i < 14; i++) { do

{

double n = w1 * a[i, 0] + w2 * a[i, 1] + w3 * a[i, 2] + w4 * a[i, 3] + b; if (n > 0) m = 1; else m = 0; if (m != a[i, 4]) { w1 = w1 + (a[i, 4] - m) * a[i, 0]; w1 = w2 + (a[i, 4] - m) * a[i, 1]; w3 = w3 + (a[i, 4] - m) * a[i, 2]; w4 = w4 + (a[i, 4] - m) * a[i, 3]; b = b + (a[i, 4] - m) * 1; } t = a[i, 4]; interation++; } while (m != t); }

txtw1.Text = txtw1.Text + w1.ToString(); txtw2.Text = txtw2.Text + w2.ToString(); txtw3.Text = txtw3.Text + w3.ToString(); txtw4.Text = txtw4.Text + w4.ToString(); txtb.Text = txtb.Text + b.ToString();

38

txtsolanlap.Text = interation.ToString(); }

3.2.3. Module thông tin cá nhân

Sau khi áp dụng luật học có giám sát ta tìm được các trọng số w1, w2, w3, w4 và hệ số hiệu chỉnh b. Hệ thống sẽ yêu cầu bạn trả lời các thông tin cá nhân (bao gồm: độ tuổi, mức thu nhập, đối tượng, chất lượng sản phẩm) hay chính là các dữ liệu x. Module yêu cầu trả lời thông tin cá nhân như sau:

private void btnbatdau_Click(object sender, EventArgs e) {

if (txtcauhoi.Text == "Bạn mong muốn một sản phẩm như thế nào ?") {

txtcauhoi.Text = "Bạn có là sinh viên không ?"; rd1.Text = "Có"; rd2.Text = "Không"; rd3.Enabled = false; btnketqua.Enabled = false; if (rd1.Checked) p[2] = 1; if (rd2.Checked) p[2] = 2; } else {

if (txtcauhoi.Text == "Bạn có là sinh viên không ?") {

txtcauhoi.Text = "Thu nhập của bạn ở mức nào ?"; rd1.Text = "Cao";

rd2.Text = "Bình thường"; rd3.Text = "Thấp";

rd3.Enabled = true;

39 if (rd1.Checked) p[1] = 1; if (rd2.Checked) p[1] = 2; if (rd3.Checked) p[1] = 3; } else

if (txtcauhoi.Text == "Thu nhập của bạn ở mức nào ?") {

txtcauhoi.Text = "Bạn đang ở độ tuổi nào ?"; rd1.Text = "Trẻ";

rd2.Text = "Trung niên"; rd3.Text = "Lớn tuổi"; btnketqua.Enabled = false; if (rd1.Checked) p[0] = 1; if (rd2.Checked) p[0] = 2; if (rd3.Checked) p[0] = 3; } } }

private void btntieptheo_Click(object sender, EventArgs e) {

if (txtcauhoi.Text == "Bạn đang ở độ tuổi nào ?") {

txtcauhoi.Text = "Thu nhập của bạn ở mức nào ?"; rd1.Text = "Cao"; rd2.Text = "Bình thường"; rd3.Text = "Thấp"; btnketqua.Enabled = false; if (rd1.Checked) p[0] = 1; if (rd2.Checked) p[0] = 2;

40 if (rd3.Checked) p[0] = 3; }

else

{ if (txtcauhoi.Text == "Thu nhập của bạn ở mức nào ?") { txtcauhoi.Text = "Bạn có là sinh viên không ?";

rd1.Text = "Có"; rd2.Text = "Không"; rd3.Enabled = false; btnketqua.Enabled = false; if (rd1.Checked) p[1] = 1; if (rd2.Checked) p[1] = 2; if (rd3.Checked) p[1] = 3; } else

if (txtcauhoi.Text == "Bạn có là sinh viên không ?") {

txtcauhoi.Text = "Bạn mong muốn một sản phẩm như thế nào ?"; rd1.Text = "Khá tốt";

rd2.Text = "Tuyệt vời"; rd3.Enabled = false; btnketqua.Enabled = false; if (rd1.Checked) p[2] = 1; if (rd2.Checked) p[2] = 2; } else

if (txtcauhoi.Text == "Bạn mong muốn một sản phẩm như thế nào ?") if (rd1.Checked) p[3] = 1;

if (rd2.Checked) p[3] = 2; btnketqua.Enabled = true;

41 }

}

3.2.4. Module kết quả

Khi bạn cung cấp thông tin xong. Hệ thống sẽ tính w.x b n. Nếu

n  0 thì hàm truyền hardlim sẽ cho kết quả 1 và đưa ra lời khuyên nên mua máy tính và ngược lại là 0 và kết quả không nên mua máy tính. Module đưa ra kết quả như sau:

public void ketqua() {

int n = 0;

n = p[0] * int.Parse(txtw1.Text) + p[1] * int.Parse(txtw2.Text) + p[2] * int.Parse(txtw3.Text) + p[3] * int.Parse(txtw4.Text) + int.Parse(txtb.Text); if (n < 0)

MessageBox.Show("Theo tôi: Bạn không nên mua máy tính !", "Kết quả", MessageBoxButtons.OK, MessageBoxIcon.Information);

else

MessageBox.Show("Theo tôi: Bạn nên mua máy tính !", "Kết quả", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

3.2.5. Module lý do

Module lý do để giải thích kết quả mà bạn nhận được. Module lý do như sau:

public string lydo() {

String tuoi = ""; if (p[0] == 1)

tuoi = tuoi + "Theo câu trả lời của bạn đã cung cấp cho chúng tôi thì: Bạn ở độ tuổi trẻ, ";

42

tuoi = tuoi + "Theo câu trả lời của bạn đã cung cấp cho tôi thì: Bạn ở độ tuổi trung bình, ";

if (p[0] == 3)

tuoi = tuoi + "Theo câu trả lời của bạn đã cung cấp cho tôi thì: Bạn ở lớn tuổi, ";

String thunhap = ""; if (p[1] == 1)

thunhap = thunhap + "thu nhập của bạn ở mức cao, "; if (p[1] == 2)

thunhap = thunhap + "thu nhập của bạn ở mức bình thường, "; if (p[1] == 3)

thunhap = thunhap + "thu nhập của bạn ở mức thấp, "; String sv = "";

if (p[2] == 1)

sv = sv + "bạn là sinh viên"; if (p[2] == 2)

sv = sv + "bạn không là sinh viên"; String mm = "";

if (p[3] == 1)

mm = mm + "bạn mong muốn 1 sản phẩm khá tốt. "; if (p[3] == 2)

mm = mm + "và bạn mong muốn 1 sản phẩm tuyệt vời. "; String ld = tuoi + thunhap + sv + mm;

return ld; }

private void btngt_Click(object sender, EventArgs e) {

String st = ""; int n = 0;

43 n = p[0] * int.Parse(txtw1.Text) + p[1] * int.Parse(txtw2.Text) + p[2] * int.Parse(txtw3.Text) + p[3] * int.Parse(txtw4.Text) + int.Parse(txtb.Text); if (n < 0)

st = lydo() + "\n" + "Theo Perceptron thì ta có hardlim (n) = " + txtw1.Text + "*" + p[0] + " + "

+ txtw2.Text + "*" + p[1] + " + " + txtw3.Text + "*" + p[2] + " + " + txtw4.Text + "*" + p[3] + " + " + txtb.Text + " = 0 "

+ "\n" + " => Vì vậy lời khuyên của tôi dành cho bạn là: Bạn không nên mua máy tính !";

else

st = lydo() + "\n" + "Theo Perceptron thì ta có hardlim (n) = " + txtw1.Text + " * " + p[0] + " + "

+ txtw2.Text + " * " + p[1] + " + " + txtw3.Text + " * " + p[2] + " + " + txtw4.Text + " * " + p[3] + " + " + txtb.Text + " = 1 "

+ "\n" + " => Vì vậy lời khuyên của tôi dành cho bạn là: Bạn nên mua máy tính !";

MessageBox.Show(st, "Lý do", MessageBoxButtons.OK, MessageBoxIcon.Information);

44 3.3. Xây dựng chương trình mô phỏng

Để xây dựng chương trình giải quyết bài toán tư vấn mua máy tính sử dụng các module sau: module giúp khởi tạo trọng số và hệ số hiệu chỉnh, module áp dụng thuật toán Rosenblatt huấn luyện mạng Perceptron, module cung cấp thông tin cá nhân (bao gồm: độ tuổi, thu nhập, đối tượng, chất lượng sản phẩm), module kết quả, module lý do.

3.3.1. Giao diện chính

45

3.3.2. Module giúp khởi tạo trọng số và hệ số hiệu chỉnh

Khi giao diện chính hiện lên. Ma trận sẽ hiện lên khi bạn nhấn từ Bắt đầu:

Hình 3.2. Form giúp khởi tạo trọng số và hệ số hiệu chỉnh

3.3.3. Module áp dụng thuật toán Rosenblatt huấn luyện mạng Perceptron Perceptron

Khi giao diện chính hiện lên. Perceptron sẽ hiện lên trọng số và hệ số hiệu chỉnh khi bạn nhấn từ Bắt đầu:

Hình 3.3. Form áp dụng thuật toán Rosenblatt huấn luyện mạng Perceptron 3.3.4. Module thông tin cá nhân

Sau khi trọng số và hệ số hiệu chỉnh hiện lên. Hệ thống yêu cầu bạn sẽ trả lời thông tin cá nhân như sau:

46

 Độ tuổi

Hình 3.4. Form yêu cầu trả lời độ tuổi

 Thu nhập

Hình 3.5. Form yêu cầu trả lời thu nhập

 Đối tượng

Hình 3.6. Form yêu cầu trả lời đối tượng

 Chất lượng sản phẩm

47 3.3.5. Module kết quả

Nhập dữ liệu và thông tin cá nhân. Nhấn vào nút Kết quả. Thông báo về Kết quả sẽ hiện lên đưa ra lời khuyên dành cho bạn hợp lí nhất.

Hình 3.8. Form kết quả 3.3.6. Module lý do

Bạn có thể xem lời lý do từ thông tin bạn nhập vào khi nhấn vào nút Lý do mà kết quả bạn nhận được.

48

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1. Kết luận

Qua quá trình thực hiện khóa luận, em đã học hỏi rất nhiều kinh nghiệm và đạt được kết quả như sau:

-Tìm hiểu được mô hình và ứng dụng mạng nơron nhân tạo. Mạng perceptron nằm trong mạng nơron nhân tạo. Mạng perceptron là mạng truyền thẳng một lớp hoặc nhiều lớp.

-Giới thiệu thuật toán Rosenblatt là giới thiệu luật học huấn luyện mạng perceptron giải quyết các bài toán tư vấn, phân lớp, dự đoán ...

-Tìm hiểu các luật học, kiến trúc perceptron, luật học perceptron.

-Xây dựng chương trình mô phỏng tư vấn mua máy tính nhờ việc áp dụng thuật toán Rosenblatt.

Đó là những kết quả đã đạt được trong quá trình nghiên cứu thuật toán Rosenblatt và xây dựng chương trình tư vấn mua máy tính. Tuy nhiên do thời gian và kiến thức còn hạn chế nên khóa luận còn thiếu sót và vẫn chưa giải quyết được như phạm vi bài toán nhỏ và kết quả của chương trình chỉ thực hiện với phương pháp đơn giản. Em rất mong được sự đóng góp quý báu của thầy cô giáo và các bạn để khóa luận của em được hoàn thiện hơn. Một lần nữa em xin gửi lời cảm ơn TS. Lưu Thị Bích Hương đã tận tình hướng dẫn em trong thời gian qua để em có thể hoàn thành tốt khóa luận tốt nghiệp. 2. Hướng phát triển

Trong thời gian tới em sẽ tiếp tục nghiên cứu để hoàn thiện tiếp những phần còn tồn tại trên. Để xây dựng hoàn chỉnh hơn và kết quả của đề tài có thể ứng dụng vào thực tế, làm tài liệu giúp cho việc nghiên cứu, tìm hiểu về lý thuyết nhận dạng được trực quan, sinh động hơn.

Tiếp tục nghiên cứu đầy đủ hơn đặc điểm của từng lớp bài toán để việc ứng dụng mạng perceptron trở nên đơn giản và nâng cao hiệu quả. Cải tiến thuật toán Rosenblatt bằng cách kết hợp các phương pháp khác như giải thuật di truyền, logic mờ. Mở rộng nghiên cứu các mạng khác nhau và ứng dụng cho các

49

bài toán phân lớp, phân cụm dữ liệu, dự đoán, tư vấn, …

Xây dựng các phương pháp biểu diễn dữ liệu cho nhiều kiểu dữ liệu khác nhau như dạng hình ảnh, âm thanh, …. Phần mềm cần bổ sung nhiều chức năng cho phép người sử dụng mô phỏng dễ dàng các mạng khác nhau.

50

TÀI LIỆU THAM KHẢO

1. Lý thuyết nhận dạng ứng dụng trong quản lý của GS.TS Đỗ Hoàng Toàn. 2. https://www.google.com.vn.

3. http://doc.edu.vn/tai -lieu/tieu -luan -ly-thuyet-nhan-dang-nhan-dang -doi- tuong-tren-hinh-anh-33943/.

5. http://baigiang.violet.vn/present/show/entry_id/218839.

6. Bài tập lớn: http://www.docx.vn/bai-tap -lon -tri-tue-nhan-tao/tim -hieu - thuat toan rosenblatt de huan luyen mang perceptron va cai dat ung dụng.html

Một phần của tài liệu Hệ chuyên gia và ứng dụng trong nhận dạng động vật (Trang 42)

Tải bản đầy đủ (PDF)

(59 trang)