Tải bản đầy đủ (.doc) (22 trang)

Báo cáo đồ án trí tuệ nhân tạo : xây dựng chương trình sử dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm là các điểm trên không gian 2 chiều

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 (453.48 KB, 22 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
VŨ THỊ THO
Tin học 5A
BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO
Tên đề tài :
“Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi
điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử
dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên
( đường này cố gắng chia không gian thành 2 phần sao cho tập
điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1 ) ”
Giáo viên phụ trách : NGÔ HỮU PHÚC
HÀ NỘI, 3/2010
VŨ THỊ THO – TIN 5A


1
VŨ THỊ THO – TIN 5A
MỤC LỤC:
CHƯƠNG 1: CĂN BẢN VỀ MẠNG NEURAL
A.Các mô hình mạng Neural…………………………………2
1. Neural một đầu vào…………………………………….2

2. Hàm truyền………………………………………………3

3. Neural nhiều đầu vào …………………………………6
B. Các kiến trúc mạng Neural…………………………….8
1.Mạng Neural một lớp ……………………………… 8
2.Mạng Neural đa lớp ……………………………….10
C. Mạng Perceptron đa lớp và giải thuật lan truyền ngược
1. Nội dung giải thuật lan truyền ngược ………… 11


2. Huấn luyện mạng (Training). …………………… 13
3. Khởi tạo giá trị trọng số……………………………15

CHƯƠNG 2: ÁP DỤNG VÀO BÀI TOÁN:
“Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi
điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử
dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên
(đường này cố gắng chia không gian thành 2 phần sao cho tập
điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1) ”
1.Xác định bài toán…………………………………… 16
2. Xác định các tham số cho mạng…………………….16
3.Áp dụng vào bài toán………………………………….20
2
VŨ THỊ THO – TIN 5A
A.Các mô hình mạng Neural
1.Neural một đầu vào
Hình 1.1. Neural 1 đầu vào
Đầu vào vô hướng p được nhân với trọng số w, cho wp, tạo
thành một số hạng gửi đến bộ cộng. Một đầu vào khác là 1 được
nhân với bias b, rồi chuyển đến bộ cộng. Đầu ra của bộ cộng,
thường được xem như là net-input, trở thành đầu vào cho hàm
truyền đạt f sinh ra đầu ra Neural là a:
a = f(wp + b)
Ví dụ: w = 3, p = 2, b = -1.5 thì a = f(wp + b) = f(3x2 - 1.5) =
f(4.5).
Bias giống trọng số ngoại trừ luôn có đầu vào hằng số là 1. Có thể
bỏ qua bias nếu muốn.
2.Hàm truyền
Hàm truyền f cho trong hình 2.1 có thể là hàm tuyến tính hoặc
phi tuyến của n. Mỗi hàm truyền cụ thể được chọn nhằm thoả mãn

một số tính chất đặc biệt của bài toán cần giải quyết.
Sau đây là 3 hàm truyền thông dụng nhất:
Hàm truyền Hard Limit:
3
VŨ THỊ THO – TIN 5A
a = hardlim(n) =
Ta sẽ sử dụng hàm này để tạo các Neural phân lớp các đầu
vào thành hai nhóm.
Hàm truyền này được minh hoạ như hình 1.2.
Hình 1.2. Hàm truyền Hard Limit

Hàm truyền tuyến tính.
a = purelin(n) = n.
Các Neural với hàm truyền này được sử dụng trong mạng
ADALINE.
a = purelin(w
p
+ b) = w
p
+ b.
Hàm truyền này được minh hoạ như hình 1.3.


Hình 1.3. Hàm truyền tuyến tính
4
VŨ THỊ THO – TIN 5A

Hàm truyền log.sigmoid.
a = logsig(n) =
Hàm truyền logsig thông thường được sử dụng trong các

mạng đa lớp dùng để huấn luyện với giải thuật BP, một phần là
nhờ tính khả vi của nó.
Hàm truyền này được minh hoạ như hình 1.4.


Hình 1.4. Hàm truyền Log-Sigmoid

Một số hàm truyền khác thường sử dụng, xem bảng tóm lược
các hàm truyền
5
VŨ THỊ THO – TIN 5A
Bảng 1.5 Các hàm truyền
3. Neural nhiều đầu vào
Thông thường, một nơ ron có nhiều đầu vào. Một Neural với
R đầu vào được cho như hình 1.5. Các đầu vào độc lập p
1
, p
2
,
p
3
, ,p
R
được gán trọng số bởi các thành phần w
11
, w
12
,, , w
1R
của

ma trận trọng số W.

6
VŨ THỊ THO – TIN 5A
Hình 1.6 Neural nhiều đầu vào

Ở đây: W = [w
11
, w
12
, , w
1R
]
1xR
; p = [p
1
, p
2
, p
3
, , p
R
]
T
Rx1
.
Như vậy:
n = w
11
p

1
+ w
12
p
2
+ w
13
p
3
+ +w
1R
p
R
+ b = Wp +b.
trong đó, ma trận W cho trường hợp 1 Neural chỉ có 1 hàng.
Vậy:
a = f(n) = f(Wp + b).
Ta chọn quy ước các chỉ số của các thành phần w
ij
của ma
trận trọng số. Chỉ số đầu (i) biểu thị Neural đích được gán trọng số.
Chỉ số sau (j) biểu thị tín hiệu nguồn cung cấp cho Neural. Như
vậy, w
ij
nói lên rằng, trọng số này kết nối đến Neural thứ i từ tín
hiệu nguồn thứ j (từ p
j
→ Neural i).
Ta lại muốn vẽ mạng với nhiều Neural, mỗi Neural có nhiều
đầu vào, hơn nữa, lại có thể có nhiều lớp các Neural, do đó nếu

dùng cách biểu thị như hình 1.5 thì sẽ rất phức tạp. Ta dùng ký
hiệu tắt như hình 1.6 sau:


Hình 1.7 Neural R đầu vào, kí hiệu tắt

7
VŨ THỊ THO – TIN 5A
Ở đây, đầu vào p là một véc tơ Rx1.
Chú ý thêm rằng, số lượng đầu vào của một mạng được xác
định bởi bài toán. Chẳng hạn, để thiết kế một mạng Neural dự toán
các điều kiện bay và đầu vào là nhiệt độ không khí, vận tốc gió và
độ ẩm thì phải có 3 đầu vào cho mạng Neural.
B.Các kiến trúc mạng Neural
1.Mạng Neural một lớp
Hình 1.8 Một lớp gồm S-Neural
Ở đây: p = [p
1
, p
2
, p
3
, , p
R
]
T
Rx1
;

b = [b

1
b
2
b
S
]
T
Sx1
n = [n
1
n
2
n
S
]
T
Sx1
; a = [a
1
a
2
a
S
]
T
Sx1
;
a = f(n) = [f(n
1
) f(n

2
) f(n
s
)]
T
Sx1
a
t
= f(n
t
) = f(w
t
.p + b
t
). t = 1 S.
8
VŨ THỊ THO – TIN 5A
Trong đó W
t
=[w
t1
w
t2
w
tR
] là hàng thứ t của W.
Một lớp Neural gồm S Neural được thể hiện như trong hình
1.8 Chú ý rằng, mỗi thành phần trong R đầu vào đều được kết nối
đến tất cả các Neural, do đó ma trận trọng số có S hàng (R cột).
Ta nói rằng, một lớp Neural ở đây bao gồm: Ma trận trọng

số, các bộ cộng, véc tơ bias b, các hộp hàm truyền và véc tơ đầu ra
a.
Mỗi thành phần của véc tơ đầu vào p được kết nối đến mỗi
Neural thông qua ma trận trọng số W. Mỗi Neural thứ i gồm một
bias b
i
, một bộ cộng, một hàm truyền f và một đầu ra a
i
. Như vậy,
các đầu ra a
i
tạo thành một véc tơ đầu ra a.
Nói chung số đầu vào của một lớp và số Neural của lớp đó là
khác nhau.
Các hàm truyền cho tất cả các Neural ở đây là giống nhau,
nhưng không nhất thiết phải như vậy. Các ứng dụng thông thường
có tính chất hàm truyền như trên.
Các thành phần của véc tơ đầu vào đi vào mạng thông qua
ma trận trọng số W:

Như đã nói, các chỉ số hàng của phần tử w
ij
(tức i) của w
dùng để chỉ Neural liên kết, trong khi chỉ số (j) chỉ nguồn đầu vào.
Do đó các chỉ số trong w
32
nói lên rằng, trọng số này (w
32
) kết nối
đến Neural thứ 3 từ nguồn thứ 2 (p

2
).
Mạng một lớp S-Neural, R đầu vào cũng có thể vẽ ở dạng
ký hiệu tắt như hình 1.9 sau:

9
VŨ THỊ THO – TIN 5A
Hình 1.9. Lớp S Neural, kí hiệu tắt
Ở đây: p
Rx1
; W
SxR;
a
Sx1
; b
Sx1
.
2.Mạng Neural đa lớp
Bây giờ ta xét một mạng có một số lớp các Neural. Mỗi lớp
Neural gồm ma trận trọng số W của nó, bias b của nó, một véc tơ
net-input n và 1 véc tơ đầu ra a. Ta cần có thêm một số ký hiệu để
phân biệt giữa các lớp này. Ta dùng các ký hiệu kề trên để phân
biệt các lớp. Theo đó, ma trận trọng số của của lớp thứ k ký hiệu là
W
k
(không phải mũ k), Một mạng 3 lớp sẽ được biểu diễn như
hình 1.10 sau:


10

VŨ THỊ THO – TIN 5A
Hình 1.10 Mạng 3 lớp

Như trên, có R đầu vào, S
1
Neural trong lớp thứ nhất, S
2
Neural trong lớp thứ 2, Các lớp khác nhau có thể có số Neural
khác nhau. Các đầu ra của lớp 1, 2 theo thứ tự là đầu vào cho các
lớp 2, 3. Do đó, lớp 2 có thể xem như là mạng một lớp với R=S
1
đầu vào, S=S
2
Neural, ma trận trọng số W
2
cấp S
2
xS
1
, đầu vào cho
lớp 2 là a
1
, đầu ra là a
2
.
Lớp có đầu ra là đầu ra của mạng thì được gọi là lớp ra. Các lớp
còn lại được gọi là các lớp ẩn. Mạng như đã vẽ ở hình 2.9 có một
lớp ra (lớp 3) và 2 lớp ẩn (các lớp 1,2).
Mạng trên có thể vẽ lại dạng ký hiệu tắt như sau: (Hình 1.10)


Hình 1.11 Mạng 3 lớp, kí hiệu tắt

C. Mạng Perceptron đa lớp và giải thuật lan truyền ngược
1. Nội dung giải thuật lan truyền ngược
 Xét một mô hình mạng BP
Để huấn luyện cho mạng Neural nhiều lớp bằng giải thuật lan
truyền ngược cần phải có tập mẫu học {X
S
, Y
S
}. Mỗi đầu vào X
S
sẽ
được lan truyền từ đầu vào cho tới lớp ra, qua trình lan truyền tạo
ra đầu ra O
S
của mạng. Giá trị đầu ra này thường có sai số so với
giá trị đầu ra mong muốn Y
S
tương ứng với mỗi mẫu học X
S
. Các
11
VŨ THỊ THO – TIN 5A
sai số sẽ được tính và lan truyền ngược từ lớp ra trở về phía trước
để cập nhật lại các trọng số liên kết giữa các Neural của các lớp.
Các bước của thuật toán với mô hình mạng tổng quát.
Trên đây ta đã trình bày giải thuật lan truyền ngược áp dụng
cho mạng 2 lớp. Tiếp theo ta sẽ trình bày giải thuật này áp dụng
cho mạng Neural với số lớp bất kỳ:

Đầu vào: Tập mẫu học X=(x
1
,x
2
,x
3
,…x
m
) và Y=(y
1
,y
2
,y
3
,…
y
n
) với m: số đầu vào, n: số đầu ra, số lượng mẫu là M, số tầng
mạng là T.
Đầu ra: Các ma trận trọng số w
1
,w
2
,…w
T
.
• Bước 1:
Khởi tạo: Chọn giá trị hệ số học 0 <
η
<1 và giá trị cực

đại sai số cho phép
ε
. Mạng có số lớp T, số lần huấn luyện h.
Tuỳ thuộc vào số lượng các đầu vào và số Neural trên mỗi
lớp mà ta sẽ khởi tạo các ma trận trọng số với các thành phần
là các số ngẫu nhiên rât nhỏ.
Khởi tạo m=1 (mẫu học thứ m), h =1 (lần huấn luyện
thứ h), q =1 (lớp thứ q).
• Bước 2:
Đưa mẫu huấn luyện thứ m áp lên mạng.
• Bước 3:
Lan truyền xuôi tín hiệu đầu vào lần lượt qua các lớp
Neural, cho đến khi q > T để tính đầu ra tương ứng tại mỗi
lớp theo công thức:
o
j
q
= f(net
q
j
) = f(


=
1
1
Sq
i
w
ij

. o
i
q-1
)
đối với đầu ra thứ j của lớp q, lưu ý s
q-1
chính là số Neural
của lớp q-1.
• Bước 4:
Tính sai số ở lớp ra của mạng theo công thức:
δ
k
=(y
k
– o
k
).o
k
.(1-o
k
) đối với Neural thứ k.
12
VŨ THỊ THO – TIN 5A
• Bước 5:
Lan truyền ngược tín hiệu sai số, cụ thể là từ đầu ra, qua lớp
ẩn cuối cùng,…đến lớp ẩn đầu tiên, để cập nhật trọng số cũng như
tín hiệu sai số trước đó theo các công thức:
δ
j
q-1

= f

(net
j
q-1
).

=
Sq
k 1
w
q
jk
.
δ
q
k

w
q
jk
= w
q
jk
+

w
q
jk


w
q
jk
=
η
.
δ
q
k
.o
j
q-1
• Bước 6:
Nếu m < M (chưa hết số mẫu học) thì m = m+1, quay
lại bước 2, ngược
lại chuyển sang bước 7.
• Bước 7:
Sai số trung bình của mạng được tính theo công thức:
RMS =
nM
oy
M
m
n
k
kmkm
.
)(
1 1
2

∑∑
= =

trong đó n là số thành phần
của vector đầu ra.
Nếu RMS <
ε
thì kết thúc. Ngược lại gán h = h + 1 rồi lặp lại
các bước từ bước 2 cho tới bước 7, bắt đầu một chu kỳ học mới.
2.Huấn luyện mạng (Training).
 Giảm Gradient:
Là một trong những nguyên tắc học nguyên thuỷ nhất của
mạng lan truyền ngược. Khi hoàn thành một bước lặp qua toàn
bộ tập mẫu thì tất cả các trọng số của mạng sẽ được cập nhật
dựa vào các thông tin đạo hàm riêng theo từng trọng số tích luỹ
13
VŨ THỊ THO – TIN 5A
được, các trọng số sẽ được cập nhật theo hướng mà hàm lỗi tụt
dốc nhanh nhất.
 Học từng mẫu một:
Một quy tắc cập nhật trọng số khác là: trọng số sẽ được
cập nhật ngay sau khi mạng học xong một mẫu, dựa trên đạo
hàm lỗi của riêng mẫu đó. Với cách này thì lỗi trên tập mẫu
thường giảm nhanh hơn ở các bước đầu vì mạng không cần
phải đợi hết một bước đi qua toàn bộ tập mẫu mới học được
điều gì đó.
Tuy vậy, với một vài bài toán ta phải cẩn thận khi dùng
cách này. Lý do đầu tiên là không phải lúc nào phương pháp
này cũng giảm số bước cần thiết để mạng của ta ổn định với tập
trọng số tối ưu. Trong nhiều trường hợp khi học mẫu mới mạng

có thể đã quên mẫu cũ. Trường hợp này thường xảy ra khi các
mẫu kế tiếp nhau trong tập mẫu có sự khác biệt quá lớn.
Thứ hai, ngay cả khi học từng mẫu, chỉ cần ít bước luyện
hơn nhưng chưa chắc tổng thời gian máy tính thực hiện việc
tính toán ít hơn so với học toàn tập mẫu một lần. Bởi vì việc học
từng mẫu lại đòi hỏi việc tính toán của máy tính trên mỗi mẫu
nhiều hơn, trọng số thay đổi phải được tính cho mỗi mẫu chứ
không tính một lần cho cả bước.
Thứ ba, việc học tong mẫu đòi hỏi ta phải then trong trong
việc sắp xếp thứ tự của các mẫu trong tập mẫu. Thường thì các
mẫu xuất hiện cuối đợt huấn luyện thường có nhiều ảnh hưởng
hơn so với các mẫu xuất hiện lúc đầu.
Một giải pháp dung hoà là cập nhật tập trọng số dựa trên
các nhóm mẫu thay vì từng mẫu nhưng cũng không phải trên
toàn tập mẫu.
 Quy tắc moment
Phương pháp học được diễn tả như sau: nếu các bước học trước
đang giảm mạnh thì theo đà bước tới cũng sẽ giảm mạnh ta sẽ
tăng hệ số học để biến thiên trọng tăng lên, ngược lại giảm hệ số
học.
14
VŨ THỊ THO – TIN 5A
3.Khởi tạo giá trị trọng số
Một vấn đề cũng rất đáng quan tâm trong quá trình huấn
luyện mạng Neural đó là vấn đề khởi tạo các giá trị trọng số. Huấn
luyện mạng là một tiến trình lặp qua lặp lại nhiều bước. Trong mỗi
bước, mạng thi hành ánh xạ với các mẫu trong tập mẫu, tính toán
sai số và cập nhật lại sao cho mạng thi hành ngày một tốt hơn.Vấn
đề đặt ra là, ban đầu để mạng có thể thi hành ở bước học đầu tiên
thì các trọng số lấy từ đâu? Có một cách khá tốt đó là khởi tạo

trọng sao cho kết xuất của các có giá trị trung dung là 0.5(chính là
trung điểm của hàm logictic). Có hai lý do giải thích cho việc này:
Thứ nhất, nếu ta không biết gì về kết xuất, giá trị ở giữa là
giá trị hợp lý nhất. Trong trường hợp một lớp cứ cho rằng tất cả
các kết quả đầu ra phân bố xung quanh trung điểm hàm truyền, giá
trị ở giữa sẽ cực tiểu hoá hàm sai số, bất kỳ giá trị nào khác cũng
sẽ sinh ra sai số lớn hơn.
Thứ hai, ta muốn tránh được các giá trị kết xuất thái quá, vì
chúng chứa các đạo hàm lỗi nhỏ, các đạo hàm lỗi nhỏ làm cho biến
thiên trọng nhỏ và như thế tiến trình học sẽ chậm.
Có hai cách khác nhau cho phép khởi tạo trọng số để được
kết xuất một nút ở khoảng giữa:
- Cách thứ nhất: ding khởi tạo trọng số các nút ẩn
- Cách thứ hai: khởi tạo trọng số các nút xuất.
Đối với các nút xuất, ta khởi tạo các trọng số ban đầu thật
nhỏ. Nếu các trọng số của nó đủ nhỏ, nút sẽ kết xuất một giá trị
giữa bất chấp các giá trị nhập của nó.
CHƯƠNG 2: Áp dụng vào bài toán:
“Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi
điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử
dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên
(đường này cố gắng chia không gian thành 2 phần sao cho tập
điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1) ”
15
VŨ THỊ THO – TIN 5A
1.Xác định bài toán
Bài toán đưa ra yêu cầu xây dựng mạng noron với các điểm đầu
vào có tọa độ (x,y) được gán nhãn là 0 hoặc là 1, đưa vào mạng
MLP (em xây dựng mạng MLP 2 lớp). Khi đó đầu ra của mạng
gồm có 2 đầu ra.Thứ nhất là đầu ra phân lớp đúng, thứ 2 là đầu ra

phân lớp sai.
2. Xác định các tham số cho mạng
Bài toán sẽ sử dụng một mạng BP 2 lớp như hình vẽ dưới đây:
Hình 1.13 Mạng lan truyền ngược
Kiến trúc mạng tóm tắt như sau:
 Mạng có m đầu vào, kí hiệu x
i
(i = 1…m)
 Mạng có 2 lớp Neural
- Lớp ẩn có r Neural, kí hiệu p
j
(j =1 … r)
- Lớp ra có n Neural, kí hiệu là o
k
(k = 1…n)
16
VŨ THỊ THO – TIN 5A
 Mỗi Neural của lớp sau được liên kết đầy đủ với các Neural ở
lớp trước bởi các trọng số w, liên kết được thể hiện bằng các
đường nét liền.
 Sự lan truyền ngược các sai số phát sinh được thể hiện bằng
các nét đứt.
 Không sử dụng hệ số bias.
 Hàm kích hoạt sử dụng ở các lớp là hàm Sigmoid đơn cực.
Chú ý: Trên hình vẽ ma trận W
ij
thứ nhất là ma trận cỡ
r x m, ma trận W
ij
của lớp thứ 2 là ma trận cỡ n x r.

Giải thuật lan truyền ngược (xét với mạng 2 lớp của bài toán
này)
Khi mạng muốn học một mẫu (X,Y) trong đó X là các vector tín
hiệu đầu vào và Y là các tín hiệu đầu ra mong muốn. Các thành
phần x
i
của X sẽ được đưa vào các Neural của lớp ẩn đầu tiên.
Vì các đầu vào liên kết với các Neural nút ẩn bởi các trọng số
w
ij
cho lên mỗi Neural thứ j của lớp ẩn sẽ nhận được tổng tín
hiệu đầu vào có trọng số net
j
được tính theo công thức:
net
j
=

=
m
i
xwij
1
*
i
Sau khi nhận được tổng tín hiệu vào với trọng số net
j
, giá trị
này sẽ được sử dụng làm tham số đầu vào cho hàm kích hoạt f
(hàm truyền), và hàm kích hoạt f cho ta tín hiệu ra của các

Neural lớp ẩn. Giả sử hàm truyền được sử dụng là hàm Sigmoid
đơn cực (ký hiệu là f) thì tín hiệu ra z
j
của mỗi Neural j được
tính như sau:
z
j
= f(net
j
)= f(

=
m
i
xwij
1
*
i
)
Các tín hiệu ra z
j
lại được xem như đầu vào của lớp tiếp theo
(trong trường hợp mạng nhiều hơn 2 lớp), ta đang xét mạng 2
lớp lên chúng được truyền cho Neural thứ k của lớp ra cùng với
các trọng số liên kết w
jk
. Ta lại có:
17
VŨ THỊ THO – TIN 5A
net

k
=

=
r
j
w
1
jk
* z
j
Tín hiệu đầu ra O
k
của Neural thứ k của lớp ra sẽ là:
O
k
= f(net
k
)= f(

=
r
j
w
1
jk
* z
j
)
Như vậy với đầu vào là vector X, sau khi lan truyền tiến qua

mạng, ta sẽ nhận được đầu ra là vector O. Đầu ra này không thể
hoàn toàn trùng khớp với đầu ra đích (hay đầu r among muốn).
Sai số tổng thể E của mạng được tính dựa trên sai lệch giữa O
và Y theo công thức bình phương:
E=
2
1

=
n
k 1
(y
k
– o
k
)
2
Để điều chỉnh sao cho các tín hiệu ra O
k
tiến lại gần các tín
hiệu mong muốn y
k
, các trọng số của mạng sẽ được cập nhật lại
theo một quy tắc nào đó. Chẳng hạn với quy tắc Delta (hay còn
gọi là phương pháp giảm theo hướng dốc nhất), thì các trọng số
liên kết giữa Neural thứ j tại lớp ẩn tới Neural thứ k tại lớp ra
được cập nhật theo công thức:
w
jk
= w

jk
+

w
jk
Trong đó biến thiên trọng số

w
jk
của các trọng số liên kết
w
jk
được tính như sau:

w
jk
=
η
.
δ
k
. z
j
Với:

η
: là hệ số học.
• z
j
: là các đầu ra của Neural thứ j.


δ
k
: là sai số mà Neural thứ k phải chịu trách nhiệm, được
xác định theo công thức:
δ
k
= E
k
. f

(net
k
)
18
VŨ THỊ THO – TIN 5A
Ở đây E
k
là đạo hàm của hàm lỗi E (E
k
= o
k

- y
k)
, net
k
là tổng
tín hiệu vào có trọng số của Neural thứ k và f


() là đạo hàm
của hàm kích hoạt f mà ta dùng trong mạng. Hàm f là hàm
sigmoid đơn cực thì
f

(x) = f(x)(1- f(x)). Vậy công thức trên sẽ được viết lại là:
δ
k
=(y
k
– o
k
).o
k
.(1-o
k
)
Các trọng số liên kết từ đầu vào thứ i tới Neural thứ j tại lởp
ẩn cũng được cập nhật theo cách tương tự, tuy nhiên sai số mà một
Neural tại lớp ẩn phải chịu trách nhiệm sẽ được tính theo cách
khác:
w
ij
= w
ij
+

w
ij
Với


w
ij
=
η
.
δ
j
. x
i

Ta biết rằng một Neural thứ j ở lớp ẩn liên kết đầy đủ
với tất cả các Neural k ở lớp ra. Như vậy nó phải chụi trách nhiệm
với tất cả các sai số của mỗi Neural k mà nó liên kết ở lớp ra. Tổng
sai số mà Neural thứ j phải chụi trách nhiệm là:
δ
j
= f(net
j
)

=
n
k 1
w
jk
.
δ
k


hay
δ
j
= z
j
(1-z
j
)

=
n
k 1
w
jk
.
δ
k

Các thao tác thực hiện cập nhật trọng số w
ịj
, w
jk
như trên
được gọi là lan truyền ngược sai số. Các quá trình lan truyền tiến,
tính sai số và lan truyền ngược được thực hiện lặp đi lặp lại nhiều
lần cho đến khi thoả mãn một điều kiện nào đó của sai số hoặc đã
qua đủ một số lần lặp xác định trước thì sẽ dừng lại. Đó chính là
nội dung của giải thuật lan truyền ngược.
Sai số trung bình của mạng được tính theo công thức:
19

VŨ THỊ THO – TIN 5A
RMS =
nM
oy
M
m
n
k
kmkm
.
)(
1 1
2
∑∑
= =

trong đó n là số thành phần
của vector đầu ra.
Nếu RMS <
ε
thì kết thúc.Ngược lại đưa mẫu huấn luyện thứ m
áp lên mạng,bắt đầu một chu kỳ học mới.
3.Áp dụng vào bài toán
Bước 1:Khởi tạo 2 ma trận trọng số q
1
và q
2
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)

{
q1[i, j] = (float)0.5;
}

b1[i] = (float)(ran.NextDouble() % 2);
}
for (int j = 1; j <= m; j++)
{
for (int k = 1; k <= p; k++)
{
q2[j, k] = (float)(ran.NextDouble() % 2);
Bước 2: Tính đầu ra của lớp 1, đầu ra của lớp 2
for (int j = 1; j <= m; j++)
{
for (int i = 1; i <= n; i++)
{
out1[j] += x[i] * q1[i, j] + b1[j];
}
}
for (int k = 1; k <= p; k++)
{
for (int j = 1; j <= m; j++)
{
out2[k] += out1[j] * q2[j, k] + b2[k];
}
20
VŨ THỊ THO – TIN 5A
}
return 1;
Bước 3: Tính sai số

for (int k = 1; k <= p; k++)
{
e[k] = gt[k] - out2[k];
}
for (int j = 1; j <= m; j++)
{
for (int k = 1; k <= p; k++)
{
deltaq2[j, k] = a * out1[j] * e[k] * out2[k] * (1 -
out2[k]);
}
}
// sai so @[k] = e[k] * out2[k] * (1 - out2[k])
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
for (int k = 1; k <= p; k++)
{
deltaq1[i, j] += a * x[i] * out1[j] * (1 -
out1[j]) * deltaq2[j, k] * e[k] * out2[k] * (1 - out2[k]);
}
}
}
return 1;
Bước 4:Cập nhật lại ma trận trọng số
for (int j = 1; j <= m; j++)
{
for (int k = 1; k <= p; k++)
{

q2[j, k] += deltaq2[j, k];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
q1[i, j] += deltaq1[i, j];
}
}
//cap nhat Bias
21
VŨ THỊ THO – TIN 5A
for (int j = 1; j <= m; j++)
{
for (int i = 1; i <= n; i++)
{
b1[j] += deltaq1[i, j] / n;
}
}
for (int k = 1; k <= p; k++)
{
for (int j = 1; j <= m; j++)
{
b2[k] += deltaq2[j, k] / m;
}
}


22

×