Tải bản đầy đủ (.docx) (27 trang)

Tiểu luận môn Hệ hỗ trợ quyết định NEURAL NETWORK VÀ ỨNG DỤNG HỖ TRỢ RA QUYẾT ĐỊNH DỰ BÁO

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (390.25 KB, 27 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO THU HOẠCH HỆ HỖ TRỢ RA QUYẾT ĐỊNH
NEURAL NETWORK VÀ ỨNG DỤNG HỖ TRỢ RA QUYẾT
ĐỊNH DỰ BÁO
GVHD : PGS. TS. ĐỖ PHÚC
HVTH : NGÔ VĂN LINH
MSHV : CH1301021
TP.HCM - 2014
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
MỤC LỤC
HVTH: NGÔ VĂN LINH – CH1301021 Trang 2 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
PHẦN MỞ ĐẦU

Mạng nơ-ron nhân tạo được thiết kế để mô hình một số tính chất của mạng nơ-ron sinh
học, tuy nhiên, khác với các mô hình nhận thức, phần lớn các ứng dụng lại có bản chất kỹ thuật.
Vào cuối những năm 1950, Frank Rosenblatt và một số nhà nghiên cứu khác đã phát triển một
loại mạng neutron gọi là perceptron. Đóng góp quan trọng của Rosenblatt là giới thiệu một luật
học để huấn luyện các mạng perceptron để giải quyết vấn đề nhận dạng mẫu.
Nhờ các ưu điểm như có cấu trúc xử lý song song, khả năng học và ghi nhớ, khả năng tự
tổ chức và tổng quát hóa, mạng nơ-ron nhân tạo ANN (Artificial Newal Networks) đã được
nghiên cứu và ứng dụng thành công trong rất nhiều lĩnh vực như: xấp xỉ hàm nhận dạng mẫu, dự
báo. Bài toán nhận dạng với sự trợ giúp của mạng nơ-ron ngày nay đã không còn dừng ở mức độ
nghiên cứu nữa mà nó trở thành một lĩnh vực để áp dụng thực tế. Các bài toán nhận dạng được
nghiên cứu nhiều nhất hiện nay tập trung vào nhận dạng mẫu hình học (vân tay, mặt người, hình
khối, …), nhận dạng tiếng nói và nhận dạng chữ viết. Chúng được ứng dụng rất nhiều trong các
lĩnh vực như y học, dự báo thời tiết, dự báo cháy rừng, các lĩnh vực tự động hóa như điều khiển
robot, điều khiển thiết bị bằng giọng nói,
Trong bài báo cáo này ứng dụng đơn giản mạng nơ-ron vào việc dự báo thời tiết, giúp
người sử dụng có thể ra quyết định hợp lý cho công việc của mình.


HVTH: NGÔ VĂN LINH – CH1301021 Trang 3 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
PHẦN NỘI DUNG

CHƯƠNG 1 – GIỚI THIỆU CHUNG VỀ NEURAL NETWORK
1.1 – GIỚI THIỆU VỀ PERCEPTRON
Định nghĩa: Mạng nơron nhân tạo, Artificial Neural Network (ANN) gọi tắt là mạng
nơron, neural network, là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của
các hệ nơron sinh học. Nó được tạo lên từ một số lượng lớn các phần tử (gọi là phần tử xử lý hay
nơron) kết nối với nhau thông qua các liên kết (gọi là trọng số liên kết) làm việc như một thể
thống nhất để giải quyết một vấn đề cụ thể nào đó.
Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân
loại dữ liệu, ) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính là
quá trình hiệu chỉnh trọng số liên kết giữa các nơron.
1.1.1 – Lịch sử mạng neural nhân tạo Perceptron
- Năm 1943 MC Cullock, Pitts đưa ra mô hình mạng nơ- ron đầu tiên.
- Năm 1957 Rosenblatt đề xuất Perceptron và một thuật toán huấn luyện rất đơn giản. Đến
năm 1962, Novikoff chứng minh rằng thuật toán huấn luyện này luôn dừng sau một số hữu hạn
bước lặp nếu tập mẫu học phân tách tuyến tính được
1.1.2 – So sánh mạng neural nhân tạo với máy tính truyền thống
Các mạng nơron có cách tiếp cận khác trong giải quyết vấn đề so với máy tính truyền
thống. Các máy tính truyền thống sử dụng cách tiếp cận theo hướng giải thuật, tức là máy tính
thực hiện một tập các chỉ lệnh để giải quyết một vấn đề. Vấn đề được giải quyết phải được biết và
phát biểu dưới dạng một tập chỉ lệnh không nhập nhằng. Những chỉ lệnh này sau đó phải được
chuyển sang một chương trình ngôn ngữ bậc cao và chuyển sang mã máy để máy tính có thể hiểu
được.
Trừ khi các bước cụ thể mà máy tính cần tuân theo được chỉ ra rõ ràng, máy tính sẽ không
làm được gì cả. Điều đó giới hạn khả năng của các máy tính truyền thống ở phạm vi giải quyết
các vấn đề mà chúng ta đã hiểu và biết chính xác cách thực hiện. Các máy tính sẽ trở lên hữu ích
hơn nếu chúng có thể thực hiện được những việc mà bản thân con người không biết chính xác là

phải làm như thế nào.
Các mạng nơron xử lý thông tin theo cách thức giống như bộ não con người. Mạng được
tạo nên từ một số lượng lớn các phần tử xử lý được kết nối với nhau làm việc song song để giải
quyết một vấn đề cụ thể. Các mạng nơron học theo mô hình, chúng không thể được lập trình để
thực hiện một nhiệm vụ cụ thể. Các mẫu phải được chọn lựa cẩn thận nếu không sẽ rất mất thời
gian, thậm chí mạng sẽ hoạt động không đúng. Điều hạn chế này là bởi vì mạng tự tìm ra cách
giải quyết vấn đề, thao tác của nó không thể dự đoán được.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 4 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Các mạng nơron và các máy tính truyền thống không cạnh tranh nhau mà bổ sung cho
nhau. Có những nhiệm vụ thích hợp hơn với máy tính truyền thống, ngược lại có những nhiệm vụ
lại thích hợp hơn với các mạng nơron. Thậm chí rất nhiều nhiệm vụ đòi hỏi các hệ thống sử dụng
tổ hợp cả hai cách tiếp cận để thực hiện được hiệu quả cao nhất. (thông thường một máy tính
truyền thống được sử dụng để giám sát mạng nơron).
1.1.3 – Neural sinh học và Neural nhân tạo
a. Neural sinh học
Qua quá trình nghiên cứu về bộ não, người ta thấy rằng: bộ não con người bao gồm
khoảng 1011 nơron tham gia vào khoảng 1015 kết nối trên các đường truyền. Mỗi đường truyền
này dài khoảng hơn một mét. Các nơron có nhiều đặc điểm chung với các tế bào khác trong cơ
thể, ngoài ra chúng còn có những khả năng mà các tế bào khác không có được, đó là khả năng
nhận, xử lý và truyền các tín hiệu điện hóa trên các đường mòn nơron, các con đường này tạo nên
hệ thống giao tiếp của bộ não.
Hình 1 – Neural sinh học
Mỗi nơron sinh học có 3 thành phần cơ bản:
• Các nhánh vào hình cây ( dendrites)
• Thân tế bào (cell body)
• Sợi trục ra (axon)
Các nhánh hình cây truyền tín hiệu vào đến thân tế bào. Thân tế bào tổng hợp và xử lý
cho tín hiệu đi ra. Sợi trục truyền tín hiệu ra từ thân tế bào này sang nơron khác. Điểm liên kết
giữa sợi trục của nơron này với nhánh hình cây của nơron khác gọi là synapse. Liên kết giữa các

nơron và độ nhạy của mỗi synapse được xác định bởi quá trình hóa học phức tạp. Một số cấu trúc
của nơron được xác định trước lúc sinh ra. Một số cấu trúc được phát triển thông qua quá trình
học. Trong cuộc đời cá thể, một số liên kết mới được hình thành, một số khác bị hủy bỏ.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 5 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Như vậy nơron sinh học hoạt động theo cách thức sau: nhận tín hiệu đầu vào, xử lý các tín
hiệu này và cho ra một tín hiệu output. Tín hiệu output này sau đó được truyền đi làm tín hiệu
đầu vào cho các nơron khác.
Dựa trên những hiểu biết về nơron sinh học, con người xây dựng nơron nhân tạo với hy
vọng tạo nên một mô hình có sức mạnh như bộ não.
b. Neural nhân tạo
Một nơron là một đơn vị xử lý thông tin và là thành phần cơ bản của một mạng nơron.
Cấu trúc của một nơron được mô tả trên hình dưới.
Hình 2 - Mạng Neural nhân tạo
Các thành phần cơ bản của một nơron nhân tạo bao gồm:
♦ Tập các đầu vào: Là các tín hiệu vào (input signals) của nơron, các tín hiệu này thường
được đưa vào dưới dạng một vector N chiều.
♦ Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số (gọi là trọng số liên kết –
Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với nơron k thường được kí hiệu là
w
kj
. Thông thường, các trọng số này được khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo
mạng và được cập nhật liên tục trong quá trình học mạng.
♦ Bộ tổng (Summing function): Thường dùng để tính tổng của tích các đầu vào với trọng
số liên kết của nó.
♦ Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa vào như một
thành phần của hàm truyền.
♦ Hàm truyền (Transfer function) : Hàm này được dùng để giới hạn phạm vi đầu ra của
mỗi nơron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho. Thông thường, phạm vi
đầu ra của mỗi nơron được giới hạn trong đoạn [0,1] hoặc [-1, 1]. Các hàm truyền rất đa dạng, có

thể là các hàm tuyến tính hoặc phi tuyến. Việc lựa chọn hàm truyền nào là tuỳ thuộc vào từng bài
toán và kinh nghiệm của người thiết kế mạng. Một số hàm truyền thường sử dụng trong các mô
hình mạng nơron được đưa ra trong bảng 1 .
♦ Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là một đầu ra.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 6 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Xét về mặt toán học, cấu trúc của một nơron k, được mô tả bằng cặp biểu thức sau:
(x1, wk1), (x2, wk2),…, (xp, wkp)
trong đó: x1, x2, , xp: là các tín hiệu vào; (wk1, wk2, , wkp) là các trọng số liên kết
của nơron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu ra của
nơron.
Như vậy tương tự như nơron sinh học, nơron nhân tạo cũng nhận các tín hiệu đầu vào, xử
lý ( nhân các tín hiệu này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm
truyền), và cho một tín hiệu đầu ra ( là kết quả của hàm truyền).
Hàm truyền Đồ thị Định nghĩa
Symmetrical Hard Limit
(hardlims)
Linear (purelin)
Saturating Linear (satlin)
Log-Sigmoid (logsig)
1.1.4 – Giới thiệu về mạng Perceptron
a. Giới thiệu
• Perceptron là mô hình đơn giản nhất của mạng nơ- ron (chỉ có một tầng)
HVTH: NGÔ VĂN LINH – CH1301021 Trang 7 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
• Perceptron bằng một nơ- ron nhân tạo.
• Perceptron nhận tín hiệu từ dữ liệu nhập , xử lý và truyền ký hiệu ra bên ngoài
Thuật toán huấn luyện Perceptron: Thuật toán ở dạng trực tuyến (online), ta lần lượt
cung cấp cho thuật toán các mẫu học trong P, có thể lặp lại nhiều lần. Mỗi lần có mẫu học mới,
thuật toán sẽ chỉnh sửa (w, b)để cố gắng phân lớp được mẫu học này

Mô hình toán của mạng perceptron
f được gọi là hàm kích hoạt (activation action) hay hàm truyền có thể là:
Tuyến tính
Ngưỡng (Heaviside step)
Logistic sigmoid g(x) = 1/(1+ e^(-x) )
Gauss
….
b. Kiến trúc mạng
Hình 3 - Kiến trúc mạng Perceptron đơn lớp
HVTH: NGÔ VĂN LINH – CH1301021 Trang 8 / 27
Output
Input
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Hình 4 - Kiến trúc mạng Perceptron đa lớp
Trong đó: p= (p1, p2, p3, , pr)
b =(b1, b2,b3, …, bs)
n = w *p + b;
a = hardlim(n).
n ≥ 0 then a= 1;
n <0 then a = 0;
c. Qui tắc huấn luyện
 Huấn luyện 1:
Dữ liệu vào: (P1, t1) (P2, t2) , (P3, t3) …(Pq, tq) với t_i là mục tiêu.
Nếu a_i = t_i với mọi i. thì w_new = w_old
Nếu a= 0; t= 1
n = wp +b
a= hardlim (n)
Tăng trọng số: w_n = w_0 +p;
Nếu a= 1, t=0;
W_n = w_0 - p

Ta đặt e = t- a
HVTH: NGÔ VĂN LINH – CH1301021 Trang 9 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Nếu e= 1 thì : w_n = w_0 + e.p
Nếu e = -1 : w_n = w_0 + e.p
Nếu e = 0 : w_n = w_0 + e.p;
Vậy:
W_n = w_0 + ( t – a ) p
b_n = b_0 + ( t – a ) * 1
Thuật giải:
Vào: (P1, t1) (P2, t2) , (P3, t3) …(Pq, tq)
Ra : a_i = t_i với mọi i
Bước 1: Khởi tạo giá trị w (ngẫu nhiên)
Bước 2: Với mọi tín hiệu vào p_i tính : a_i (đầu ra thực tế)
Bước 3: So sánh : a_i và t_i
If ( a_i = t_i) thì w_n = w_0 (giữ nguyên trọng số)
If (a_i ≠ t_i) thì
W_n = w_0 + ( t – a ) p
B_n = b_0 + ( t – a ) * 1
Bước 4: Lặp lại bước 2, bước 3 cho đến khi a_i = t_i với mọi i.
Ví dụ: Để nhận dạng hai loại quả táo và cam qua kích thước, vỏ và cân nặng
HVTH: NGÔ VĂN LINH – CH1301021 Trang 10 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Hình 5 - Ví dụ về huấn luyện perceptron
Khởi tạo giá trị w = (0, 0, 0); b=1;
Lần 1:
P1: n = wp1 + b = (0, 0, 0) * (1, -1, -1) + 1 = 1. => a1 = 1 ≠ t1= 0
=> w= w + (0-1) p1= (0, 0, 0 ) + (-1)(1, -1, -1) = (-1, 1, 1)
b = b + ( t- a) = 1-1 =0
P2: n = wp2 + b = (-1, 1, 1) * (1, 1, -1) + 0 = -1. => a1= 0 ≠ t1= 1

=> w= w + (1-0) p2= (-1, 1, 1 ) + (1)(1, -1, -1) = (0, 2, 0)
b = b + ( t- a) = 0 + (1-0) =1.
Lần 2.
P1: n = wp1 + b = (0, 2, 0) * (1, -1, -1) + 1 = -1. => a1 = 0 = t1= 0
=> w= (0, 2, 0)
b = b + ( t- a) = 0 + (1 – 0) = 1
P2: n = wp2 + b = (0, 2, 0) * (1, 1, -1) + 1 = 3. => a1=1 = t1= 1
=> w= (0, 2, 0)
b = 1.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 11 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
 Huấn luyện 2:
Xét trường hợp mạng Perceptron sử dụng hàm kích hoạt ngưỡng (t)
d. Điều kiện dừng
Quá trình học, thực chất là quá trình đi tìm các trọng số w sao cho lỗi xảy ra là nhỏ
nhất cũng giống như giải bài toán tối ưu.
Điều kiện dừng trong quá trình học có thể là một trong các tiêu chí, hay kết hợp các
tiêu chí:
- Lỗi nhỏ đến mức chấp nhận được
- Sau một số bước lặp đủ lớn.
e. Khả năng của perceptron
Xem như một siêu phẳng trong không gian n chiều, phân lớp tuyến tính dữ liệu.
Có thể thể hiện cho một số hàm boll cơ sở: AND, OR, NAND, NOR…
1.2 – MẠNG NHIỀU TẦNG TRUYỀN THẲNG
Mô hình mạng nơron được sử dụng rộng rãi nhất là mô hình mạng nhiều tầng truyền
thẳng (MLP: Multi Layer Perceptron). Một mạng MLP tổng quát là mạng có n (n≥2) tầng (thông
thường tầng đầu vào không được tính đến): trong đó gồm một tầng đầu ra (tầng thứ n) và (n-1)
tầng ẩn.
Hình 6 - Mạng neural truyền thẳng tổng quát
Kiến trúc của một mạng MLP tổng quát có thể mô tả như sau:

♦ Đầu vào là các vector (x1, x2, , xp) trong không gian p chiều, đầu ra là các vector (y1, y2, ,
yq) trong không gian q chiều. Đối với các bài toán phân loại, p chính là kích thước của mẫu đầu vào, q
chính là số lớp cần phân loại. Xét ví dụ trong bài toán nhận dạng chữ số: với mỗi mẫu ta lưu tọa độ (x,y)
của 8 điểm trên chữ số đó, và nhiệm vụ của mạng là phân loại các mẫu này vào một trong 10 lớp tương
ứng với 10 chữ số 0, 1, …, 9. Khi đó p là kích thước mẫu và bằng 8 x 2 = 16; q là số lớp và bằng 10.
♦ Mỗi nơron thuộc tầng sau liên kết với tất cả các nơron thuộc tầng liền trước nó.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 12 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
♦ Đầu ra của nơron tầng trước là đầu vào của nơron thuộc tầng liền sau nó.
Hoạt động của mạng MLP như sau: tại tầng đầu vào các nơron nhận tín hiệu vào xử lý (tính tổng
trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm truyền); kết quả này sẽ được truyền tới
các nơron thuộc tầng ẩn thứ nhất; các nơron tại đây tiếp nhận như là tín hiệu đầu vào, xử lý và gửi kết quả
đến tầng ẩn thứ 2;…; quá trình tiếp tục cho đến khi các nơron thuộc tầng ra cho kết quả.
Một số kết quả đã được chứng minh:
♦ Bất kì một hàm Boolean nào cũng có thể biểu diễn được bởi một mạng MLP 2 tầng trong đó các
nơron sử dụng hàm truyền sigmoid.
♦ Tất cả các hàm liên tục đều có thể xấp xỉ bởi một mạng MLP 2 tầng sử dụng hàm truyền
sigmoid cho các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra với sai số nhỏ tùy
ý.
♦ Mọi hàm bất kỳ đều có thể xấp xỉ bởi một mạng MLP 3 tầng sử dụng hàm truyền sigmoid cho
các nơron tầng ẩn và hàm truyền tuyến tính cho các nơron tầng ra.
HVTH: NGÔ VĂN LINH – CH1301021 Trang 13 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
CHƯƠNG 2 – HUẤN LUYỆN VÀ XÂY DỰNG MẠNG NƠRON
2.1 – HUẤN LUYỆN MẠNG NEURAL
2.1.1 – Các phương pháp học
Khái niệm: Học là quá trình thay đổi hành vi của các vật theo một cách nào đó làm cho
chúng có thể thực hiện tốt hơn trong tương lai.
Một mạng nơron được huyấn luyện sao cho với một tập các vector đầu vào X, mạng có
khả năng tạo ra tập các vector đầu ra mong muốn Y của nó. Tập X được sử dụng cho huấn luyện

mạng được gọi là tập huấn luyện (training set). Các phần tử x thuộc X được gọi là các mẫu huấn
luyện (training example). Quá trình huấn luyện bản chất là sự thay đổi các trọng số liên kết của
mạng. Trong quá trình này, các trọng số của mạng sẽ hội tụ dần tới các giá trị sao cho với mỗi
vector đầu vào x từ tập huấn luyện, mạng sẽ cho ra vector đầu ra y như mong muốn
Có ba phương pháp học phổ biến là học có giám sát (supervised learning), học không
giám sát (unsupervised learning) và học tăng cường (Reinforcement learning):
♦ Học có giám sát: Là quá trình học có sự tham gia giám sát của một “thầy giáo”. Cũng
giống như việc ta dạy một em nhỏ các chữ cái. Ta đưa ra một chữ “a” và bảo với em đó rằng đây
là chữ “a”. Việc này được thực hiện trên tất cả các mẫu chữ cái. Sau đó khi kiểm tra ta sẽ đưa ra
một chữ cái bất kì (có thể viết hơi khác đi) và hỏi em đó đây là chữ gì?
Với học có giám sát, tập mẫu huấn luyện được cho dưới dạng D = {(x,t) | (x,t) ∈ [IR
N
x
R
K
]}, trong đó: x = (x
1
, x
2
, , x
N
) là vector đặc trưng N chiều của mẫu huấn luyện và t = (t
1
, t
2
,
, t
K
) là vector mục tiêu K chiều tương ứng, nhiệm vụ của thuật toán là phải thiết lập được một
cách tính toán trên mạng như thế nào đó để sao cho với mỗi vector đặc trưng đầu vào thì sai số

giữa giá trị đầu ra thực sự của mạng và giá trị mục tiêu tương ứng là nhỏ nhất. Chẳng hạn mạng
có thể học để xấp xỉ một hàm t = f(x) biểu diễn mối quan hệ trên tập các mẫu huấn luyện (x, t).
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm vụ của thuật
toán là phải xác định được một cách thức phân lớp sao cho với mỗi vector đầu vào sẽ được phân
loại chính xác vào lớp của nó.
♦ Học không giám sát: Là việc học không cần có bất kỳ một sự giám sát nào.
Trong bài toán học không giám sát, tập dữ liệu huấn luyện được cho dưới dạng: D = {(x
1
,
x
2
, , x
N
)}, với (x
1
, x
2
, , x
N
) là vector đặc trưng của mẫu huấn luyện. Nhiệm vụ của thuật
toán là phải phân chia tập dữ liệu D thành các nhóm con, mỗi nhóm chứa các vector đầu vào có
đặc trưng giống nhau.
Như vậy với học không giám sát, số lớp phân loại chưa được biết trước, và tùy theo tiêu
chuẩn đánh giá độ tương tự giữa các mẫu mà ta có thể có các lớp phân loại khác nhau.
♦ Học tăng cường: đôi khi còn được gọi là học thưởng-phạt (reward-penalty learning), là sự tổ
hợp của cả hai mô hình trên. Phương pháp này cụ thể như sau: với vector đầu vào, quan sát vector đầu ra
HVTH: NGÔ VĂN LINH – CH1301021 Trang 14 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
do mạng tính được. Nếu kết quả được xem là “tốt” thì mạng sẽ được thưởng theo nghĩa tăng các trọng số
kết nối lên; ngược lại mạng sẽ bị phạt, các trọng số kết nối không thích hợp sẽ được giảm xuống. Do đó

học tăng cường là học theo nhà phê bình (critic), ngược với học có giám sát là học theo thầy giáo
(teacher).
2.1.2 – Học có giám sát trong các mạng neural
Học có giám sát có thể được xem như việc xấp xỉ một ánh xạ: X→ Y, trong đó X là tập
các vấn đề và Y là tập các lời giải tương ứng cho vấn đề đó. Các mẫu (x, y) với x = (x1, x2, . . .,
xn) ∈ X, y = (yl, y2, . . ., ym) ∈ Y được cho trước. Học có giám sát trong các mạng nơron
thường được thực hiện theo các bước sau:
♦ B1: Xây dựng cấu trúc thích hợp cho mạng nơron, chẳng hạn có (n + 1) nơron vào (n
nơron cho biến vào và 1 nơron cho ngưỡng x0), m nơron đầu ra, và khởi tạo các trọng số liên kết
của mạng.
♦ B2: Đưa một vector x trong tập mẫu huấn luyện X vào mạng
♦ B3: Tính vector đầu ra o của mạng
♦ B4: So sánh vector đầu ra mong muốn y (là kết quả được cho trong tập huấn luyện) với
vector đầu ra o do mạng tạo ra; nếu có thể thì đánh giá lỗi.
♦ B5: Hiệu chỉnh các trọng số liên kết theo một cách nào đó sao cho ở lần tiếp theo khi
đưa vector x vào mạng, vector đầu ra o sẽ giống với y hơn.
♦ B6: Nếu cần, lặp lại các bước từ 2 đến 5 cho tới khi mạng đạt tới trạng thái hội tụ. Việc
đánh giá lỗi có thể thực hiện theo nhiều cách, cách dùng nhiều nhất là sử dụng lỗi tức thời: Err =
(o - y), hoặc Err = |o - y|; lỗi trung bình bình phương (MSE: mean-square error): Err = (o- y)2/2;
Có hai loại lỗi trong đánh giá một mạng nơron. Thứ nhất, gọi là lỗi rõ ràng (apparent
error), đánh giá khả năng xấp xỉ các mẫu huấn luyện của một mạng đã được huấn luyện. Thứ hai,
gọi là lỗi kiểm tra (test error), đánh giá khả năng tổng quá hóa của một mạng đã được huấn luyện,
tức khả năng phản ứng với các vector đầu vào mới. Để đánh giá lỗi kiểm tra chúng ta phải biết
đầu ra mong muốn cho các mẫu kiểm tra.
Thuật toán tổng quát ở trên cho học có giám sát trong các mạng nơron có nhiều cài đặt
khác nhau, sự khác nhau chủ yếu là cách các trọng số liên kết được thay đổi trong suốt thời gian
học. Trong đó tiêu biểu nhất là thuật toán lan truyền ngược.
2.1.3 – Thuật toán lan truyền ngược
Ta sử dụng một số kí hiệu sau:
• j: nơron thứ j (hay nút thứ j)

• X
j
: vector đầu vào của nút thứ j
• W
j
: vector trọng số của nút thứ j
• x
ji
: đầu vào của nút thứ j từ nút thứ i
HVTH: NGÔ VĂN LINH – CH1301021 Trang 15 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
• w
ji
: trọng số trên x
ji
• b
j
: ngưỡng tại nút thứ j
• o
j
: đầu ra của nút thứ j
• t
j
: đầu ra mong muốn của nút thứ j
• Downstream(j): Tập tất cả các nút nhận đầu ra của nút thứ j làm một giá trị đầu vào.
• η: tốc độ học
• f: hàm truyền với f(x) = 1 / (1 + e
-x
)
Thuật toán lan truyền ngược được mô tả như sau:

Input:
- Mạng feed-forward với n
i
đầu vào, n
h
nút ẩn và n
o
đầu ra.
- Hệ số học η
- Tập dữ liệu huấn luyện D = {là vector đầu vào, là vector đầu ra mong muốn}.
Output: Các vector trọng số
Thuật toán:
Bước 1: Khởi tạo trọng số bởi các giá trị ngẫu nhiên nhỏ.
Bước 2: Lặp lại cho tới khi thỏa mãn điều kiện kết thúc.
Với mỗi mẫu, thực hiện các bước sau:
2.1 Tính đầu ra o
j
cho mỗi nút j:
o
j
= f(d – b
j
) với d = Σx
ji
w
ji
2.2 Với mỗi nút k thuộc tầng ra, tính δ
k
theo công thức:
δ

k
= (t
k
– o
k
)(1 – o
k
)o
k
2.3 Với mỗi nút h thuộc tầng ẩn, tính δ
h
theo công thức:
δ
h
= o
h
(1 – o
h
) Σδ
k
w
kh
với k ∈ Downstream(j)
2.4 Cập nhật: w
ji
= w
ji
+ Δw
ji


Trong đó Δw
ji
= ηδ
k
x
ji
2.2 – MỘT SỐ VẤN ĐỀ TRONG XÂY DỰNG MẠNG LAN TRUYỀN THẲNG
2.2.1 – Chuẩn bị dữ liệu
a. Kích thước mẫu
Không có nguyên tắc nào hướng dẫn kích thước mẫu phải là bao nhiêu đối với một bài
toán cho trước. Hai yếu tố quan trọng ảnh hưởng đến kích thước mẫu:
HVTH: NGÔ VĂN LINH – CH1301021 Trang 16 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
♦ Dạng hàm đích: khi hàm đích càng phức tạp thì kích thước mẫu cần tăng.
♦ Nhiễu: khi dữ liệu bị nhiễu (thông tin sai hoặc thiếu thông tin) kích thước mẫu cần tăng.
Đối với mạng truyền thẳng (feedforward), cho hàm đích có độ phức tạp nhất định, kèm
một lượng nhiễu nhất định thì độ chính xác của mô hình luôn có một giới hạn nhất định. Có thể
cần tập mẫu vô hạn để đạt đến giới hạn chính xác. Nói cách khác độ chính xác của mô hình là
hàm theo kích thước tập mẫu. Khi kích thước mẫu tăng, độ chính xác sẽ được cải thiện - lúc đầu
nhanh, nhưng chậm dần khi tiến đến giới hạn.
Dạng tổng quát của mối liên hệ giữa sai số và kích thước mẫu như sau:
Hình 7 - Mối liên hệ giữa sai số và kích thước mẫu
b. Mẫu con
Trong xây dựng mô hình cần chia tập mẫu thành 2 tập con: một để xây dựng mô hình gọi
là tập huấn luyện (training set), và một để kiểm nghiệm mô hình gọi là tập kiểm tra (test set).
Thông thường dùng 2/3 mẫu cho huấn luyện và 1/3 cho kiểm tra. Điều này là để tránh tình trạng
quá khớp (overfitting).
c. Sự phân tầng mẫu
Nếu ta tổ chức mẫu sao cho mỗi mẫu trong quần thể đều có cơ hội như nhau thì tập mẫu
được gọi là tập mẫu đại diện. Tuy nhiên khi ta xây dựng một mạng để xác định xem một mẫu

thuộc một lớp hay thuộc một loại nào thì điều ta mong muốn là các lớp có cùng ảnh hưởng lên
mạng, để đạt được điều này ta có thể sử dụng mẫu phân tầng. Xét ví dụ sau[1]:
Giả sử ta xây dựng mô hình nhận dạng chữ cái viết tay tiếng Anh, và nguồn dữ liệu của ta
có 100.000 ký tự mà mỗi ký tự được kèm theo một mã cho biết nó là chữ cái nào. Chữ cái xuất
hiện thường xuyên nhất là e, nó xuất hiện 11.668 lần chiếm khoảng 12%; chữ cái xuất hiện ít
nhất là chữ z, chỉ có 50 lần chiếm 0,05%.
Trước hết do giới hạn của bộ nhớ máy tính, giả sử bộ nhớ chỉ có thể xử lý được 1300
mẫu. Ta tạo hai dạng tập mẫu: tập mẫu đại diện và tập mẫu phân tầng. Với tập mẫu đại diện, chữ
e sẽ xuất hiện 152 lần (11,67% của 1300) trong khi đó chữ z chỉ xuất hiện một lần (0,05% của
1300). Ngược lại ta có thể tạo tập mẫu phân tầng để mỗi chữ có 50 mẫu. Ta thấy rằng nếu chỉ có
HVTH: NGÔ VĂN LINH – CH1301021 Trang 17 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
thể dùng 1300 mẫu thì tập mẫu phân tầng sẽ tạo ra mô hình tốt hơn. Việc tăng số mẫu của z từ 1
lên 50 sẽ cải thiện rất nhiều độ chính xác của z, trong khi nếu giảm số mẫu của e từ 152 xuống 50
sẽ chỉ giảm chút ít độ chính xác của e.
Bây giờ giả sử ta dùng máy tính khác có bộ nhớ đủ để xử lý một lượng mẫu gấp 10 lần,
như vậy số mẫu sẽ tăng lên 13000. Rõ ràng việc tăng kích thước mẫu sẽ giúp cho mô hình chính
xác hơn. Tuy nhiên ta không thể dùng tập mẫu phân tầng như trên nữa vì lúc này ta sẽ cần tới 500
mẫu cho chữ z trong khi ta chỉ có 50 mẫu trong nguồn dữ liệu. Để giải quyết điều này ta tạo tập
mẫu như sau: tập mẫu gồm tất cả các chữ hiếm với số lần xuất hiện của nó và kèm thêm thông tin
về chữ có nhiều mẫu nhất. Chẳng hạn ta tạo tập mẫu có 50 mẫu của chữ z (đó là tất cả) và 700
mẫu của chữ e (chữ mà ta có nhiều mẫu nhất).
Như vậy trong tập mẫu của ta, chữ e có nhiều hơn chữ z 14 lần. Nếu ta muốn các chữ z
cũng có nhiều ảnh hưởng như các chữ e, khi học chữ z ta cho chúng trọng số lớn hơn 14 lần. Để
làm được điều này ta có thể can thiệp chút ít vào quá trình lan truyền ngược trên mạng. Khi mẫu
học là chữ z, ta thêm vào 14 lần đạo hàm, nhưng khi mẫu là chữ e ta chỉ thêm vào 1 lần đạo hàm.
Ở cuối thế hệ, khi cập nhật các trọng số, mỗi chữ z sẽ có ảnh hưởng hơn mỗi chữ e là 14 lần, và
tất cả các chữ z gộp lại sẽ có bằng có ảnh hưởng bằng tất cả các chữ e.
d. Chọn biến
Khi tạo mẫu cần chọn các biến sử dụng trong mô hình. Có 2 vấn đề cần quan tâm:

♦ Cần tìm hiểu cách biến đổi thông tin sao cho có lợi cho mạng hơn: thông tin trước khi
đưa vào mạng cần được biến đổi ở dạng thích hợp nhất, để mạng đạt được hiệu xuất cao nhất. Xét
ví dụ về bài toán dự đoán một người có mắc bệnh ung thư hay không. Khi đó ta có trường thông
tin về người này là “ngày tháng năm sinh”. Mạng sẽ đạt được hiệu quả cao hơn khi ta biến đổi
trường thông tin này sang thành “tuổi”. Thậm chí ta có thể quy tuổi về một trong các giá trị: 1 =
“trẻ em” (dưới 18), 2 = “thanh niên” (từ 18 đến dưới 30), 3 = “trung niên” (từ 30 đến dưới 60) và
4 = “già” (từ 60 trở lên).
♦ Chọn trong số các biến đã được biến đổi biến nào sẽ được đưa vào mô hình: không phải
bất kì thông tin nào về mẫu cũng có lợi cho mạng. Trong ví dụ dự đoán người có bị ung thư hay
không ở trên, những thuộc tính như “nghề nghiệp”, “nơi sinh sống”, “tiểu sử gia đình”,… là
những thông tin có ích. Tuy nhiên những thông tin như “thu nhập”, “số con cái”,… là những
thông tin không cần thiết.
2.2.2 – Xác định tham số cho mạng
a. Chọn hàm truyền
Không phải bất kỳ hàm truyền nào cũng cho kết quả như mong muốn. Để trả lời cho câu
hỏi «hàm truyền như thế nào được coi là tốt ? » là điều không hề đơn giản. Có một số quy tắc khi
chọn hàm truyền như sau:
♦ Không dùng hàm truyền tuyến tính ở tầng ẩn. Vì nếu dùng hàm truyền tuyến tính ở tầng
ẩn thì sẽ làm mất vai trò của tầng ẩn đó: Xét tầng ẩn thứ i:
Tổng trọng số ni = wiai-1 + bi
ai = f(ni) = wf ni +bf (hàm truyền tuyến tính)
HVTH: NGÔ VĂN LINH – CH1301021 Trang 18 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Khi đó: tổng trọng số tại tầng thứ (i + 1)
ni+1 = wi+1ai + bi+1
= wi+1[wf ni +bf] + bi+1
= wi+1 [wf(wiai-1 + bi) + bf] + bi+1
= Wai-1 + b
Như vậy ni+1 = Wai-1 + b, và tầng i đã không còn giá trị nữa.
♦ Chọn các hàm truyền sao cho kiến trúc mạng nơron là đối xứng (tức là với đầu vào ngẫu

nhiên thì đầu ra có phân bố đối xứng). Nếu một mạng nơron không đối xứng thì giá trị đầu ra sẽ
lệch sang một bên, không phân tán lên toàn bộ miền giá trị của output. Điều này có thể làm cho
mạng rơi vào trạng thái bão hòa, không thoát ra được.
Trong thực tế người ta thường sử dụng các hàm truyền dạng – S. Một hàm s(u) được gọi
là hàm truyền dạng – S nếu nó thỏa mãn 3 tính chất sau:
– s(u) là hàm bị chặn: tức là tồn tại các hằng số C1 ≤ C2 sao cho: C1 ≤ s(u) ≤ C2 với mọi
u.
– s(u) là hàm đơn điệu tăng: giá trị của s(u) luôn tăng khi u tăng. Do tính chất thứ nhất,
s(u) bị chặn, nên s(u) sẽ tiệm cận tới giá trị cận trên khi u dần tới dương vô cùng, và tiệm cận giá
trị cận dưới khi u dần tới âm vô cùng.
– s(u) là hàm khả vi: tức là s(u) liên tục và có đạo hàm trên toàn trục số.
Một hàm truyền dạng - S điển hình và được áp dụng rộng rãi là hàm Sigmoid.
b. Xác định số nơron tầng ẩn
Câu hỏi chọn số lượng noron trong tầng ẩn của một mạng MLP thế nào là khó, nó phụ
thuộc vào bài toán cụ thể và vào kinh nghiệm của nhà thiết kế mạng. Nếu tập dữ liệu huấn luyện
được chia thành các nhóm với các đặc tính tương tự nhau thì số lượng các nhóm này có thể được
sử dụng để chọn số lượng nơron ẩn. Trong trường hợp dữ liệu huấn luyện nằm rải rác và không
chứa các đặc tính chung, số lượng kết nối có thể gần bằng với số lượng các mẫu huấn luyện để
mạng có thể hội tụ. Có nhiều đề nghị cho việc chọn số lượng nơron tầng ẩn h trong một mạng
MLP. Chẳng hạn h phải thỏa mãn h>(p-1)/(n+2), trong đó p là số lượng mẫu huấn luyện và n là
số lượng đầu vào của mạng. Càng nhiều nút ẩn trong mạng, thì càng nhiều đặc tính của dữ liệu
huấn luyện sẽ được mạng nắm bắt, nhưng thời gian học sẽ càng tăng.
Một kinh nghiệm khác cho việc chọn số lượng nút ẩn là số lượng nút ẩn bằng với số tối
ưu các cụm mờ (fuzzy clusters)[8]. Phát biểu này đã được chứng minh bằng thực nghiệm. Việc
chọn số tầng ẩn cũng là một nhiệm vụ khó. Rất nhiều bài toán đòi hỏi nhiều hơn một tầng ẩn để
có thể giải quyết tốt.
Để tìm ra mô hình mạng nơron tốt nhất, Ishikawa and Moriyama (1995) sử dụng học cấu
trúc có quên (structural leanrning with forgetting), tức là trong thời gian học cắt bỏ đi các liên kết
có trọng số nhỏ. Sau khi huấn luyện, chỉ các noron có đóng góp vào giải quyết bài toán mới được
giữ lại, chúng sẽ tạo nên bộ xương cho mô hình mạng nơron.

HVTH: NGÔ VĂN LINH – CH1301021 Trang 19 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
c. Khởi tạo trọng số
Trọng thường được khởi tạo bằng phương pháp thử sai, nó mang tính chất kinh nghiệm và
phụ thuộc vào từng bài toán. Việc định nghĩ thế nào là một bộ trọng tốt cũng không hề đơn giản.
Một số quy tắc khi khởi tạo trọng:
♦ Khởi tạo trọng sao cho mạng nơron thu được là cân bằng (với đầu vào ngẫu nhiên thì
sai số lan truyền ngược cho các ma trận trọng số là xấp xỉ bằng nhau):
|ΔW1/W1| = |ΔW2/W2| = |ΔW3/W3|
Nếu mạng nơron không cân bằng thì quá trình thay đổi trọng số ở một số ma trận là rất
nhanh trong khi ở một số ma trận khác lại rất chậm, thậm chí không đáng kể. Do đó để các ma
trận này đạt tới giá trị tối ưu sẽ mất rất nhiều thời gian.
♦ Tạo trọng sao cho giá trị kết xuất của các nút có giá trị trung gian. (0.5 nếu hàm truyền
là hàm Sigmoid). Rõ ràng nếu ta không biết gì về giá trị kết xuất thì giá trị ở giữa là hợp lý. Điều
này cũng giúp ta tránh được các giá trị thái quá.
Thủ tục khởi tạo trọng thường được áp dụng:
– B1: Khởi tạo các trọng số nút ẩn (và các trọng số của các cung liên kết trực tiếp giữa nút
nhập và nút xuất, nếu có) giá trị ngẫu nhiên, nhỏ, phân bố đều quanh 0.
– B2: Khởi tạo một nửa số trọng số của nút xuất giá trị 1, và nửa kia giá trị -1.
2.3 – MỘT SỐ ỨNG DỤNG CỦA MẠNG NEURAL
Ngày nay, mạng nơ ron ngày càng được ứng dụng nhiều trong thực tế. Đặc biệt là các bài toán
nhận dạng mẫu, xử lý, lọc dữ liệu, và điều khiển. Ứng dụng của mạng nơ ron được chia thành các loại sau:
- Xử lý ngôn ngữ
1. Xử lý ngôn ngữ tự nhiên
- Nhận dạng mẫu
1. Nhận dạng ảnh
2. Nhận giọng nói
3. Nhận dạng chữ viết
- Xử lý tín hiệu
1. Điều khiển tự động

- Lọc và phân loại dữ liệu
1. Chuẩn đoán bệnh
2. Tìm kiếm
HVTH: NGÔ VĂN LINH – CH1301021 Trang 20 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
HVTH: NGÔ VĂN LINH – CH1301021 Trang 21 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
CHƯƠNG 3 – ỨNG DỤNG MẠNG NEURAL TRONG DỰ BÁO
3.1 – GIỚI THIỆU BÀI TOÁN
Sản phẩm được xây dựng trên ngôn ngữ lập trình Visual C# 2012. Bằng việc áp dụng giải
thuật huấn luyện Perceptron của Frank Rosenblatt, phần mềm sẽ đưa ra những câu tư vấn giúp
bạn giải quyết những băn khoăn trong quyết định nên đi ra ngoài làm việc với thời tiết được đưa
ra hay không.
Dữ liệu huấn luyện: database.mdb
Hình 8 - Dữ liệu huấn luyện
Với quyết định (được check) nghĩa là phù hợp với việc đi ra ngoài làm việc, ngược lại là
không nên.
3.2 – CÀI ĐẶT CHƯƠNG TRÌNH
Chương trình trải qua 3 bước:
Bước 1: Đọc tập dữ liệu huấn luyện
Bước 2: Học các tập huấn luyện trên đưa ra trọng số
Bước 3: Kiểm tra kết quả đưa ra quyết định của máy tính với dữ liệu mẫu được
nhập vào.
Chương trình sẽ đọc tập dữ liệu huấn luyện trên để cho máy học, kết quả sẽ được lưu
trong DataTable dt.
System.Data.DataTable dt = new DataTable();
private void cmdNapDuLieu_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(() =>
{

trongso[0] = trongso[1] = trongso[2] = trongso[3] = 0;
b = 1;
dt.Rows.Clear();
OleDbConnection conn = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;Persist
Security Info=False");
HVTH: NGÔ VĂN LINH – CH1301021 Trang 22 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select thoitiet, nhietdo, doam, gio, quyetdinh from
data";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
Invoke(new MethodInvoker(delegate
{
lblw1.Text = "w1 = " + trongso[0].ToString();
lblw2.Text = "w2 = " + trongso[1].ToString();
lblw3.Text = "w3 = " + trongso[2].ToString();
lblw4.Text = "w4 = " + trongso[3].ToString();
lblb.Text = "b = " + b.ToString();
}));
cmd.Dispose();
conn.Close();
conn.Dispose();
});
t.Start();
}
Sau khi có tập dữ liệu tiến hành tính trọng số các trường hợp (với cách tính được nêu

trong mục 1.1.3 phần c)
private void cmdHoc_Click(object sender, EventArgs e)
{
System.Threading.Thread t1 = new System.Threading.Thread(() =>
{
//Tinh dau ra cua tat ca
int kiemtra = 0, n = 0;
int[] p = new int[4];
int t = 0, a = 0, istep1 = 0;
do
{
kiemtra = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
p[0] = int.Parse(dt.Rows[i][0].ToString());
p[1] = int.Parse(dt.Rows[i][1].ToString());
p[2] = int.Parse(dt.Rows[i][2].ToString());
p[3] = int.Parse(dt.Rows[i][3].ToString());
if (dt.Rows[i][4].ToString() == "False")
t = 0;
else
t = 1;
n = nhan2matran(trongso, p) + b;
if (n >= 0)
a = 1;
else
a = 0;
if (a != t)
{
trongso = cong2matran(trongso, nhansovoimatran((t - a), p));

b += t - a;
Invoke(new MethodInvoker(delegate
{
lblw1.Text = "w1 = " + trongso[0].ToString();
lblw2.Text = "w2 = " + trongso[1].ToString();
lblw3.Text = "w3 = " + trongso[2].ToString();
HVTH: NGÔ VĂN LINH – CH1301021 Trang 23 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
lblw4.Text = "w4 = " + trongso[3].ToString();
lblb.Text = "b = " + b.ToString();
}));
}
else
{
kiemtra++;
}
}
if (kiemtra == dt.Rows.Count || istep1 > 1000)
{
return;
}
istep1++;
} while (true);

});
t1.Start();
}
Sau khi máy học được các tập luật, ta tiến hành nhập mẫu dữ liệu để máy đưa ra quyết
định:
private void cmbKiemTra_Click(object sender, EventArgs e)

{
string ketquachon = "("+ cmbThoiTiet.SelectedItem.ToString() +", " +
cmbNhietDo.SelectedItem.ToString() + ", "+ cmbDoAm.SelectedItem.ToString() +"," +
cmbGio.SelectedItem.ToString() +")";
int quyetdinh = 0;
quyetdinh = trongso[0] * (cmbThoiTiet.SelectedIndex + 1) + trongso[1] *
(cmbNhietDo.SelectedIndex + 1) + trongso[2] * (cmbDoAm.SelectedIndex + 1) + trongso[3] *
(cmbGio.SelectedIndex + 1) + b;
if (quyetdinh >= 0)
{
lblKetQua.ForeColor = System.Drawing.Color.Blue;
lblKetQua.Text = "Kết quả "+ ketquachon +": Bạn có thể ra ngoài!";
}
else
{
lblKetQua.ForeColor = System.Drawing.Color.Red;
lblKetQua.Text = "Kết quả "+ ketquachon +": Bạn không nên ra ngoài!";
}
}
3.3 – KẾT QUẢ THỬ NGHIỆM
Giao diện chính của chương trình:
HVTH: NGÔ VĂN LINH – CH1301021 Trang 24 / 27
DSS - HỆ HỖ TRỢ RA QUYẾT ĐỊNH HƯỚNG DẪN: PGS. TS. ĐỖ PHÚC
Thao tác:
Nhấn nút Nạp dữ liệu để đọc tập dữ liệu huấn luyện từ csdl database.mdb.
Nhấn nút Huấn luyện để máy đọc các tập luật và đưa ra trọng số tương ứng.
Ở phần Thông tin quyết định cho phép bạn chọn các thông số về tình hình thời tiết hiện
tại rồi nhấn Kiểm tra, chương trình sẽ đưa ra quyết định tương ứng.
Một số kết quả kiểm tra:
HVTH: NGÔ VĂN LINH – CH1301021 Trang 25 / 27

×