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

Báo cáo đồ án trí tuệ nhân tạo: Xây dưng chương trình nhận dạng số viết tay dùng mạng noron

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 (452.69 KB, 20 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC
TRÍ TUỆ NHÂN TẠO
Giáo viên hướng dẫn: Ngô Hữu Phúc
HÀ NỘI 3/2010
CHƯƠNG 1: CĂN BẢN VỀ MẠNG NEURAL
1. Lý thuyết :
1.1. Cấu trúc mạng Nơron :
+ Mạng Nơron một tầng :
Một mạng Nơron một tầng gồm S nơron được cho bởi hình dưới đây. Chú ý rằng mỗi
môt đầu vào của R đầu vào được nối với mỗi Nơron và do đó trọng số W bây giờ là ma
trận cấp SxR.

Tầng mạng bao gồm ma trận trọng số, các bộ tổng, véctơ bias b, các hộp hàm truyền
và véctơ đầu ra a.
Ở đâ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.
trong đó W
t
=[w
t1
w
t2
w
tR
] là hàng thứ t của W.
+ Mạng nơron nhiều tầng
Đối với mạng Nơron nhiều tầng, mỗi tầng có ma trận trọng số W riêng của nó, có
véctơ bias b riêng. Khi đó các đầu ra của tầng thứ i bất kỳ không phải là tầng cuối cùng là đầu
vào của tầng thứ i+1.
Dưới đây là một mô hình mạng nhiều tầng (ví dụ 3 tầng) :
1.2.Perceptron đa lớp và giải thuật lan truyền ngược (BP)
a. Mạng Perceptron đa lớp :

Ta xét ví dụ mạng Perceptron 3 lớp sau :
Đầu ra của lớp thứ nhất là đầu vào của lớp thứ hai và đầu ra của lớp thứ hai là đầu vào
của lớp thứ ba. Mỗi một tầng có thể có số lượng các nơron khác nhau, thậm chí là cả hàm
truyền khác nhau. Tầng nhận tín hiệu gọi là tầng vào và tầng cuối cùng gọi là tầng ra. Các
tầng giữa hai tầng này gọi là tầng ẩn. Việc chọn số lượng các nơron của các tầng và số tầng
cho mạng là tương đối động, ta sẽ chọn tùy thuộc vào từng bài toán cụ thể. Thông thường, ta
chỉ cần chọn số tầng từ 2 đến 3 là đủ để huấn luyện mọi bài toán phân lớp. Số nơron của tầng
vào khoảng bằng một nửa số thuộc tính của đầu vào và số nơron của đầu ra bằng số chiều của
vectơ đầu ra của mạng. Trong bài toán cụ thể của chúng tôi, chúng tôi đã dùng số nơron là 1
hoặc 5 cho lớp thứ nhất và 1 nơron cho lớp thứ hai để so sánh độ chính xác của mạng.
b.Giải thuật lan truyền ngược :
Bước 1 : Truyền giá trị đầu vào xuôi theo mạng
Khởi tạo : Các nơron ở tầng thứ nhất nhận các giá trị đầu vào bên ngoài.
a
0
= p
Đối với mạng có M lớp thì đầu ra mỗi tầng là đầu vào của tầng tiếp theo, do vậy ta có công
thức biểu diễn các thao tác này là :
a
m+1
= f
m+1
(W
m+1
a
m
+b
m+1
) với m=0,1, ,M-1.
Bước 2 : Truyền độ nhạy ngược lại trong mạng :

Độ nhạy được tính từ tầng cuối cùng là lan truyền ngược lại cho đến tầng đầu :
theo công thức :
trong đó :
Một số Heuristics cho giải thuật lan truyền ngược :
• Cập nhật theo chế độ tuần tự (online) hay batch (epoch) :
Thường việc học theo chế độ tuần tự giúp BP hội tụ nhanh hơn, đặc biệt khi dữ liệu
lơn và dư thừa.
• Chuần hóa giá trị đầu ra :
Đảm bảo giá trị đầu ra nằm trong miền giá trị của hàm chuyển trên các nơron đầu ra
tương ứng.
• Chuẩn hóa giá trị đầu vào :
Đảm bảo giá trị trung bình gần 0 hoặc nhỏ so với độ lệch tiêu chuẩn.
Các giá trị tốt nhất phải độc lập với nhau.
• Khởi tạo giá trị trọng số
• Kết thức sớm :
Khi liên tiếp n epoch traning mà không có sự cải thiện đáng kể lỗi hay không có sự
thay đổi đáng kể của các trọng số.
• Tốc độ học :
Tốc độ học của các Nơron nên đều nhau. Vì vậy nơron tầng sau (thường có gradient
lớn hơn tầng trước) nên có tốc độ học nhỏ hơn tầng trước, Nơron có ít input nên có
tốc độ học lớn hơn Nơron có nhiều input.
• Kiểm tra chéo :
Tách tập dữ liệu làm hai tập độc lập (training and testing). Tỷ lệ thường là 2/3:1/3.
Thực hiện việc học trên tập trainining và kiểm tra khả năng khái quát hóa của mạng
trên tập testing.
4.2. Mạng BackPropagation
4.2.1. Giới thiệu chung
Mạng lan truyền ngược đôi khi còn được coi như là mạng đa tầng hướng tiến
(feedforward).
Hiện nay được sử dụng rộng rãi trong mô hình mạng Neuron.Mạng lan truyền ngược đạt

được tính tổng quát bởi vì kỹ thuật cơ bản trong lan truyền ngược là cập nhật trọng số theo
hướng giảm gradient.
Một mạng lan truyền tổng quát là mạng có n (n > 2) lớp: Lớp thứ nhất gọi là lớp vào, lớp
thứ n là lớp ra, và (n-2) là lớp ẩn. Trong mạng lan truyền mỗi nút ở lớp thứ i (0 < i < n) liên
kết với nút ở lớp thứ (i+1) và các nút trong cùng một lớp không liên kết với nhau.Mỗi cung
trong mạng được gắn một trọng số W

R.
Mạng lan truyền chỉ có thể ở 1 trong 2 trạng thái: trạng thái lan truyền và trạng thái học.
Trạng thái lan truyền, thông tin lan truyền từ lớp nhập đến lớp xuất. Trạng thái học, thông tin
lan truyền theo hai chiều nhiều lần để học các trọng số.Trạng thái lan truyền, mạng xử lý mỗi
lần một mẫu.
Trước tiên giá trị của các biến độc lập chuyển tới các nút vào của mạng. Các nút của lớp
vào không tính toán gì cả. Các nút của lớp ẩn tính tổng trọng hóa của tất cả các dữ liệu bằng
cách cộng dồn tất cả các tích giữa giá trị nút ẩn với trọng số của cung liên kết giữa nút nhập
và nút ẩn.
Kế tiếp, một hàm truyền được áp dụng trên tổng trọng hóa này cùng với ngưỡng của nút ẩn
nào đó để cho ra giá trị thực cho nút ẩn. Sau khi nén tổng trọng hóa của nó, đến lượt mình,
mỗi nút ẩn sẽ gửi đến tất cả các nút của lớp ra.
Mỗi nút của lớp ra thực hiện các công việc tương tự như đã thực hiện trong nút ẩn để cho ra
giá trị của nút xuất. Giá trị của các nút xuất chính là giá trị thực, nghĩa là giá trị của các biến
phụ thuộc cần xác định.
Bản chất ánh xạ do mạng thực hiện tùy thuộc vào giá trị các trọng số trong mạng. Lan
truyền ngược là một phương pháp cho phép xác định tập trọng số tốt nhất trong mạng giải
quyết một bài toán được cho. Việc áp dụng phương pháp lan truyền ngược là một quá trình
lặp đi lặp lại nhiều lần hai tiến trình: Lan truyền tiến và lan truyền ngược sai số. Hai tiến trình
này được áp dụng trên tập mẫu xác định. Ta gọi chung tiến trình này là luyệng mạng hay còn
gọi là học.
Quá trình luyện mạng được bắt đầu với các giá trị trọng số tùy ý, có thể là các số ngẫu
nhiên và tiến trình lặp đi lặp lại. Mỗi lần lặp được gọi là một thế hệ. Trong mỗi thế hệ, mạng

điều chỉnh các trọng số sao cho sai số giảm dần (sai số là độ lệch giữa các kết xuất thực và
kết xuất đích). Tiến trình điều chỉnh nhiều lần giúp cho trọng số dần đạt được tập hợp các giá
trị tối ưu. Thường mạng cần thực hiện nhiều thế hệ trước khi việc luyện mạng hoàn tất.
Để cập nhật trọng số trong mỗi thế hệ, mạng phải xử lý tất cả các mẫu trong tập mẫu. Đối
với từng mẫu, mạng thực hiện phép toán sau đây:
Trước tiên, mạng thực hiện quá trình lan truyền tiến, nghĩa là mạng ánh xạ các biến nhập
của mẫu hiện hành các giá trị xuất như đã trình bày ở trên, sử dụng các giá trị của trọng số
hiện hành. Ở các thế hệ đầu, các kết xuất thường chưa chính xác vì các trọng số ban đầu chưa
có gì là đúng.
Kế tiếp sai số được tính dựa trên giá trị kết xuất và giá trị đích. Trên cơ sở sai số tính toán
được, mạng sẽ cập nhật lại các trọng số theo nguyên tắc lan truyền ngược sai số gọi là giai
đoạn lan truyền ngược.
Như vậy, để học một mẫu, mạng thi hành hai bước: Lan truyền tiến – thực hiện ánh xạ và lan
truyền ngược sai số - cập nhật lại các trọng số.
4.2.2. Nội dung giải thuật lan truyền ngược
Để huấn luyện cho mạng Neuron nhiều lớp bằng giải thuật lan truyền ngược, thường gọi
là mạng Neuron lan truyền ngược, cần phải có một tập mẫu học {X
s
, Y
s
}. Mỗi đầu vào X
s
sẽ
được lan truyền từ lớp vào cho tới lớp ra, quá trình lan truyền này sẽ 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 sai số sẽ được tính và lan truyền ngược từ lớp ra về các lớp phái trước
để cập nhật lại các trọng số liên kết giữa các Neuron của các lớp.
Để tiện minh họa về quá trình lan truyền ngược trong mạng lan truyền hướng tiến nhiều
tầng, chúng ta hãy khảo sát mạng 3 lớp có kiến trúc sau:
Kiến trúc mạng được tóm tắt như sau:
• Mạng có 3 lớp Neuron:
- Lớp vào có m Neuron, ký hiệu x
i
(i=1 m)
- Lớp ẩn có l Neuron, ký hiệu p
j
(j=1 l)
- Lớp ra có n Neuron, ký hiệu o
k
(k=1 n)
• Mỗi Neuron ở lớp sau được liên kết đầy đủ với các Neuron ở 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 đường nét
đứt.
• Sự lan truyền ngược các sai số phát sinh được thể hiện bằng các đường nét
đứt.
• Không sử dụng hệ số bias.
• Hàm kích hoạt trong các Neuron là hàm sigmoid đơn cực.
4.2.2.1. Giải thuật lan truyền ngược
Khi mạng muốn học một mẫu học (X, Y) trong đó X là các vectơ tín hiệu đầu vào và Y là
các vectơ 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 Neuron
tương ứng của lớp vào. Vì các Neuron của lớp vào chỉ có trách nhiệm nhận tín hiệu vào,

không có bất kỳ xử lý nào, cho nên đầu ra của các Neuron lớp vào cũng chính là các giá trị x
i
.
Các tín hiệu đầu ra của lớp vào sẽ được truyền cho các Neuron của lớp ẩn. Vì các Neuron
lớp vào liên kết với các Neuron lớp ẩn bởi các trọng số w
ịj
cho nên mỗi Neuron 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:

=
=
m
i
iijj
xwnet
1
Sau khi nhận được tổng tín hiệu vào có trọng số net
j
, hàm kích hoạt (hay còn gọi là hàm
truyền) sẽ được sử dụng để biến đổi tạo ra tín hiệu ra của các Neuron ẩn. Giả sử hàm truyền
sigmoid đơn cực (ký hiệu là g()) được dùng để xử lý các tín hiệu vào của mỗi Neuron thì tín
hiệu ra z
j
của mỗi Neuron j được tính như sau:
( )







==

=
m
i
iijjj
xwgnetgz
1
Các tín hiệu ra z
j
cùng với các trọng số liên kết w
jk
lại tiếp tục được truyền cho Neuron
thứ k của lớp ra:

=
=
l
j
jjkk
zwnet
1
Tín hiệu ra o
k
của mỗi Neuron thứ k của lớp ra sẽ là:
( )









==

=
l
j
jjkkk
zwgnetgo
1
Như vậy, với đầu vào là vectơ X, sau khi lan truyền tiến qua mạng, ta sẽ nhận được đầu ra
là vectơ O. Tín hiệu đầu ra O này không thể trung khớp hoàn toàn với tín hiệu đầu ra mong
muốn Y. 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:
( )

=
−=
n
k
kk
oyE
1
2
2

1
Để điều chỉnh cho các tín hiệu ra o
k
tiến gần đến các tín hiệu y
k
, các trọng số liên kết giữa
các Neuron cần được cập nhật lại. Theo quy tắc Delta (hay còn gọi là phương pháp giảm theo
hướng dốc nhất), các trọng số liên kết từ Neuron thứ j tại lớp ẩn tại Neuron thứ k tại lớp ra
được cập nhật theo công thức:
jkjkjk
www ∆+=
Biến thiên trọng số
jk
w∆
của các trọng số liên kết w
jk
được tính như sau:
jkjk
zw
δη
=∆
với:
-
η
là hệ số học
- z
j
là đầu ra của Neuron thứ js
-
k

δ
là sai số mà Neuron thứ k phải chịu trách nhiệm, được xác định theo công thức:
( )
kkk
netgE
,
.=
δ
Ở đâ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
Neuron thứ k và
,
g
() là đạo hàm của hàm kích hoạt g() được dùng trong các Neuron. Nếu
hàm g() là hàm sigmoid đơn cực thì
))(1)(()(
,
xgxgxg −=
. Vậy công thức trên sẽ viết lại là:
)1).().((
kkkkk

oooy −−=
δ
Các trọng số liên kết từ Neuron i tại lớp vào tới Neuron j tại lớp ẩn cũng được hiệu chỉnh
theo cách mà các trọng số liên kết từ Neuron thứ j tại lớp ẩn tới Neuron thứ k của lớp ra, tuy
nhiên sai số mà các Neuron ở lớp ẩn phải chịu trách nhiệm sẽ được tính theo cách khác:
jjjjij
www
∆+=
Với:
ijjj
xw
δη
=∆
Do đầu ra của các Neuron lớp vào chính là đầu vào của mạng nên trong công thức trên
viết là x
i
(chứ không phải z
j
)
Ta biết rằng một Neuron j ở lớp ẩn được liên kết đầy đủ với các Neuron k ở lớp ra. Như
vậy nó phải chịu trách nhiệm đối với các sai số của mỗi Neuron k ở lớp ra. Tổng sai số mà
Neuron thứ j phải chịu trách nhiệm là:

=
=
n
k
kjkjj
wnetg
1

,
)(
δδ
hay
( )

=
−=
n
k
kjkjjj
wzz
1
1
δδ
Thao tác cập nhật các trọng số w
ij
, w
jk
được coi là lan truyền ngược sai số.
Các thao tác lan truyền tiến, tính sai số và lan truyền ngược sai số sẽ được lặp lại nhiều
lần cho đến khi thảo mãn một điều kiện nào đấy của sai số, hoặc đủ một số lần quy định nào
đấy thì sẽ dừng lại. Quá trình này chính là nội dụng của giải thuật truyền ngược.
4.2.2.2. Thuật toán
Trên đây, chúng ta đã nghiên cứu về giải thuật lan truyền ngược áp dụng cho mạng
Neuron 3 lớp. Nội dung tổng quát của giải thuật lan truyền ngược cho mạng Neuron nhiều
lớp có thể được viết lại như sau:
Đầu vào: Tập mẫu học được cung cấp dưới dạng {x=(x
1
, x

2
,…,x
s
) và y=(y
1
,y
2
,…,y
s
)} với
số lượng mẫu là M, số lớp mạng là T.
Đầu ra: Các ma trận trọng số w
1
, w
2
, …, w
m
.
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 là T. Và số lần huấn luyện h. Tùy thuộc vào số lượng các Neuron lớp vào, số lượng
lớp ẩn và số lượng Neuron trên lớp ra mà chúng 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 giá trị 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 1).
Bước 2: Đưa mẫu huấn luyện thứ m vào 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 Neuron cho đến khi q > T (từ

lớp ẩn thứ nhất, qua lớp ẩn thứ hai,… đến lớp đầu ra) để tính đầu ra tương ứng tại các lớp
theo công thức:
( )






==

=

s
i
q
i
q
ij
q
j
q
j
owgnetgo
1
1
đối với Neuron thứ j thuộc lớp q, 1 < q < T.
Bước 4: Tính sai số ở lớp ra của mạng theo công thức:
)1.().(
kkkkk

oooy −−=
δ
Bước 5: Lan truyền ngược tín hiệu sai số (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ông thức:
( )

=
−−
=
n
k
q
k
q
jk
q
j
q
j
wnetg
1
1,1
δδ
Trong đó:
q
jk
q
jk
q
jk

www ∆+=
1


=∆
q
i
q
k
q
jk
ow
δη
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 vectơ 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 đến
bước 7, bắt đầu một chu kỳ học mới. Ta thấy:
• Trong quá trình chuyển thẳng các tham số mạng là cố định, ngược lại trong quá trình
lan truyền ngược các tham số này được hiệu chỉnh và cập nhật để mạng có thể nhận
dạng các mẫu đã học một cách chính xác.
• Có nhiều yếu tố ảnh hưởng đến quá trình huấn luyện mạng đó là: hàm truyền, hàm sai
số E, hệ số học
α
và các tham số khởi tạo. Do đó ta cần lưu ý trong việc lựa chọn các
yếu tố này sao cho phù hợp.
4.2.2.3.Sơ đồ thuật toán
Bộ mẫu, T,
h=1
q=1,m=1
Xim, Yim
q
im
X
( )






==


=

s
i
q
im
q
ij
q
jm
q
jm
owgnetgo
1
1
q > T
q=q+1
( )( )( )
kmkmkmkmkm
oooy −−= 1
δ
( )

=

=
n
k
q
km

q
jk
q
j
q
jm
wnetg
1
,1
δδ
q
km
q
jk
q
jk
www ∆+=
q<=2
M<m
( )
nM
oy
M
m
n
k
kmkm
×

∑∑

= =1 1
2
ε
KT
T
h=h+1
F
m=m+1
q=q-1
T
F
T
F
T: Số tầng mạng, số mẫu thử M.
:
q
im
X
Là vectơ đầu vào của mạng.
q
jm
o
: Là đầu ra của Neuron thứ j tại lớp q với mẫu thử m.
km
δ
: Là sai số mà Neuron thứ k chịu trách nhiệm với mấu thử m, lớp ra.
q
jm
δ
: Là sai số mà Neuron thứ j chịu trách nhiệm với mẫu thử m, tại lớp q.

q
jk
w
: Trọng số nối Neuron thứ j của lớp q với Neuron thứ k của lớp q-1.
ε
: Giá trị cực đại sai số cho phép.
η
: Hệ số học của mạng (0 < < 1), hệ số này giúp cho thuật toán học mạng hội tụ nhanh hơn.
RMS (sai số trung bình của mạng), trong đó:
( )
nM
oy
RMS
M
m
n
k
kmkm
×

=
∑∑
= =1 1
2
4.3. Một số mô hình mạng thường dùng với BackPropagation
4.3.1. Mô hình tổng quát
Mạng với R đầu vào, với mỗi đầu vào có một giá trị trọng số w thích hợp, tổng các trọng
số và bias là đầu vào cho hàm chuyển f, mạng có thể thay đổi hàm chuyển để tạo đầu ra.
4.3.2. Một số hàm chuyển thường dùng trong hàm nhiều lớp.
Sau đây là 3 hàm truyền thông dụng nhất :

a) Hàm truyền Hard Limit:
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

b) 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

c) 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
Bảng 1.5 Các hàm truyền

4.3.3. Mạng FeedForward
Mạng hướng tiến (feedforward) là một trong những cấu trúc mạng Neuron phổ biến và
quan trọng nhất. Giải thuật đào tạo phổ biến nhất hiện nay đó là: luật Delta dựa trên sự truyền
ngược.
Mạng hướng tiến gồm các đơn vị xử lý phân cấp, được tổ chức trong hai hay nhiều tập
(không giao nhau) các Neuron hay lớp. Lớp đầu tiên (hay lớp đầu vào) là nới chứa các đầu
vào dùng cho mạng. Lớp cuối cùng (hay lớp đầu ra) là nới có thể dùng ánh xạ tổng thể của
đầu vào mạng. Giữa hai lớp này có thể còn nhiều các lớp khác ta gọi chung là lớp ẩn.
Một lớp của mạng S logsig có R đầu vào được chỉ ra ở hình vẽ bên trái, và mô hình của
một lớp được chỉ ra ở hình vẽ bên phải.
(Hình vẽ)
Mạng FeedForward thường có một hoặc nhiều lớp hơn một lớp sigmoid, cho phép đầu ra
của mạng là tuyến tính. Nhiều lớp của mạng với các hàm chuyển không tuyến tính cho phép
mạng học không tuyến tính và quan hệ tuyến tính giữa vectơ đầu vào và ra, lớp đầu ra tuyến
tính cho phép mạng có những giá trị nằmg ngoài khoảng -1 và +1.
Ngoài ra, nếu muốn ép đầu ra phải bị chặn (ví dụ như 0, 1) thì đầu ra của mạng phải là
một hàm chuyển kiểu sigmoid (ví dụ như logsig).
Trong trường hợp sử dụng mạng có hai lớp tansig/purelin thì mạng có thể được dùng như
một hàm xấp xỉ tổng quát, nó có thể xấp xỉ hàm với một giá trị hạn chế, gián đoạn.
(Hình vẽ)
4.4. Huấn luyện mạng (training)
4.4.1. Giảm Gradient
Là một trong những quy tắc học nguyên thủy nhất của lan truyền ngược. Khi hoàn thành
một bước lặp qua toàn bộ tập mẫu, 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 lũy được, các trọng số sẽ được cập nhật theo
hướng mà hàm lỗi tụt nhanh nhất.
4.4.2. Học từng mẫu một
Một cách tiếp cận khác là cập nhật trọng số ngay sau khi học từng mẫu dựa trên các đạo
hàm lỗi của riêng mẫu đó. Khi làm như vậy, 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 phải đợi hết một bước qua toàn bộ tập mẫu mới học được một điều

gì đó.
Tuy vậy, với một bài toán, cần thận trọng khi sử dụng cách này. Trước tiên, 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 ổn định với bộ trọng số tối
ưu. Trong nhiều trường hợp khi học mẫu mới, rất có thể mạng đã quên mẫu cũ. Trường hợp
này thường xảy ra khi các mẫu kế nhau trong tập mẫu quá khác biệt nhau.
Thứ hai, ngay cả khi học từng mẫu một chỉ cần ít bước luyện hơn thì chưa chắc tổng thời
gian máy tính thực sự ít hơn so với học toàn mẫu một lần. Việc học từng mẫu cần tính toán
trên máy tính nhiều hơn. Trọng số thay đổi cần phải được tính cho mỗi mẫu, chứ không phải
tính một lần cho cả bước.
Thứ ba, việc học từng mẫu đòi hỏi phải đặc biệt thận trọng trong việc sắp xếp thứ tự của
các mẫu trong tập mẫu. Các mẫu xuất hiện ở cuối đợt luyện thường có nhiều ảnh hưởng hơn
những mẫu xuất hiện lúc đầu.
Cuối cùng ngay cả khi các mẫu được sắp theo thứ tự ngẫu nhiên, thì các mẫu cuối cùng
vẫn có tác động nhiều hơn. Trên lý thuyết, điều này có nghĩa là mạng không thực sự hội tụ
đến điểm trọng số tối ưu.
Một cách tiếp cận dung hòa là cập nhật 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 toàn tập mẫu. Việc thực hiện cùng một lúc có thể làm giảm lỗi nhanh
hơn mà vẫn không làm tăng thời gian tính toán trong mỗi bước như cách học từng mẫu. Tuy
nhiên tiếp cận đơn giản nhất là đổi các trọng số vào cuối mỗi bước. Đây là phương pháp được
đánh giá cao.
4.4.3. 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 – tăng hệ số học để biến thiên trọng số tăng lên, ngược lại
giảm hệ số học.
4.5. Khởi tạo giá trị trọng số (Initializing weight)
Như ta đã biết, huấn luyện mạng là một tiến trình lặp qua 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 các trọng số
dựa vào sai số vừa tính. Như vậy, trọng số sẽ được cập nhật 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ách hay nhất là khởi tạo trọng số sao cho kết xuất của các nút có giá trị trung

dung là 0.5 (đây chính là trung điểm của hàm truyền logictic). Có hai lý do giải thích tại sao
lại như vậy.
Trước tiên, 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 của
hàm truyền, giá trị ở giữa sẽ cực tiểu hóa 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 số 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: dùng 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ó. Vậy trọng số phải
nhỏ thế nào, nó tùy thuộc vào độ lớn của các dữ liệu nhập. Thí dụ, giả sử ta muốn tổng trọng
số của các dữ liệu nhập trong khoảng -1 và 1, để kết xuất của nút sẽ đảm bảo trong khoảng
0.25 và 0.75. Nếu có 100 dữ liệu nhập và giá trị nhập lớn nhất là 1, lúc đó giá trị tuyệt đối của
mỗi trọng số khởi tạo sẽ phải nhỏ hơn 0.1.
Đương nhiên là ta có thể bảo đảm cho tổng trọng số của một nút ẩn chính xác là 0, cho tất
cả các mẫu. Bằng cách khởi tạo tất cả các trọng số bằng 0. Điều này sẽ hữu hiệu cho một nút
ẩn. Nhưng khởi tạo tất cả các nút ẩn cùng một giá trị lại dẫn đến một vấn đề khác.
Nếu tất cả các trọng số tương ứng đều bằng nhau, thì trong mỗi mẫu, tất cả các nút ẩn sẽ
có cùng một dữ liệu nhập và chúng góp phần như nhau vào sai số của mạng. Như vậy các đạo
hàm lỗi thỏa mãn các trong số tương ứng đều giống nhau. Hệ quả là, các trọng số được cập
nhật cùng một đại lượng. Chúng cần cùng thời gian huấn luyện mạng và cùng tốc độ học, như
thể không có vần đề gì. Hậu quả là các nút ẩn sẽ thực hiện cùng một việc y hệt như nhau và
mạng có thể sẽ không giải được các bài toán phức tạp.
Để loại trừ khả năng này, trọng số của các nút ẩn phải khác nhau. Vì thế, ta sẽ khởi tạo
các trọng số nút ẩn từng cặp đôi một đối xứng nhau. Chúng có thể là những con số ngẫu
nhiên và phải đủ nhỏ để bảo đảm là tổng của bất cứ nút nào trên bất cứ mẫu nào xấp xỉ 0.

Chương II: Xây dưng bài toán nhận dạng số viết tay dùng mạng noron
A.Xác định các thành phần của bài toán:
1.Đầu vào bài toán:
Đầu vào bài toán là ảnh của 1 chữ số viết tay. Sau khi được lượng tử hóa với kích thước
50x50, sẽ là đầu vào của mạng noron.
Đối với thuật toán lượng tử hóa: mục đích là để chuẩn hóa các ảnh về cùng 1 kích thước.
Việc chuẩn hóa tương đối đơn giản. Ta sẽ qui các đối tượng ảnh về dạng ma trận nhỏ hơn nó,
vì các đối tượng lưu trong cơ sở dữ liệu đã được chọn có kích thước nhỏ.
Việc qui chỉnh 1 ma trận mô tả 1 đối tượng A có kích thước mxn về dạng kích thước nhỏ hơn
là m1xn1 như sau:
1.Duyệt trên ảnh đối tượng truyền vào với số bước nhảy theo hàng và theo cột là m/m1, n/n1
2.Nếu số lượng phần tử của nhóm ô trong 1 bước của phép duyệt này nhiều điểm đen hơn thì
ta coi nó là điểm đen sau khi đã chuẩn hóa.Còn không thì vẫn coi là điểm trắng.
Như vậy sau bước duyệt, toàn ma trận đã được biến đồi chuyển sang dạng mới có kích thước
bằng với ảnh trong cơ sở dữ liệu, và ta gọi nó là ảnh lượng tử hóa của ảnh đối tượng ban đầu
Số noron đầu vào được xác định : n_noron_in=15x15=225 noron
Chú ý là các đầu vào sau khi được chuẩn hóa, sẽ được đổi sang các giá trị 1 và -1 tương ứng
với điểm ảnh đen và trắng.
2.Đầu ra của bài toán:
Đầu ra , hay các noron đầu ra là 4 bit giá trị. Việc xác định 4 bit vì ta cần nhận dạng 10 chữ
số viết tay từ 0 đến 9. Như vậy , 4 bit là đủ để có thể biểu diễn 10 chữ số này. Với các ánh xạ
thể hiện như sau:
0000 đại diện cho số 0
0001 đại diện cho số 1

1001 đại diện cho số 9
Số noron ra kí hiệu là k_noron_out=4 noron
3.Xác định cấu trúc mạng sử dụng:
Mạng noron 2 lớp với đầu vào và đầu ra xác định như trên. Lớp ẩn có số noron là :
(n_noronin + k_noron_out)/2 = 114 noron

Hàm chuyển sử dụng ở lớp vào tới lớp ẩn và lớp ẩn tới lớp ra đều là hàm logsig : f(n)=
. Như vậy mạng sử dụng có ma trận trọng số của lớp vào tới lớp ẩn WL1 có kích cỡ
225x114 và ma trận từ lớp ẩn tới lớp ra WL2 có kích cỡ 114x4. Số noron lớp ẩn có thể thay
đổi sao cho kết quả nhận được là tốt nhất.
4.Chuẩn bị dữ liệu:
Dữ liệu đầu vào được viết trực tiếp bằng chuột trên chương trình. Truyền vào dưới dạng ảnh
và sẽ được đi qua hàm lượng tử hóa vào chương trình. Để thực hiện nhanh quá trình này. Ta
chuẩn bị sẵn 1 loạt các ảnh về số, mỗi số 20 ảnh. Ảnh đã được làm xám và được lọc phân
ngưỡng để tách biệt điểm ảnh của số và nền.
5.Quá trình huấn luyện:
Ban đầu với mỗi số, ta khởi tạo ngẫu nhiên các bộ trọng số, giá trị khởi tạo được xây dựng
nằm trong đoạn [-0.5,0.5]/{0}.
Ta tập huấn mạng cho từng số một. Với mỗi số, ta đưa toàn bộ ảnh dữ liệu của số đó để huấn
luyện cho ra các bộ trọng số, với mỗi bộ trọng số đó lại dùng để làm bộ trọng số huấn luyện
cho mẫu tiếp theo.
Hệ số học sử dụng trong chương trình : n=0.14
Giá trị số sai số cho phép ngừng để vòng lặp của 1 lần huấn luyện : e=0.001
Số lần vòng lặp xác định: epoch=10000
Sai số để có thể kết thúc sớm vòng lặp nếu bộ trọng số ít thay đổi: ew=0.0001
B.Chương trình:
1.Sử dụng chương trình:
+Sử dụng chuột : nhấn chuột trái lên màn hình đen, rồi di chuột đề viết số
+Nút InitMLP: sử dụng để khởi tạo lại ma trận trọng số trong chương trình:
Nếu chọn Yes: chương trình sẽ khởi tạo lại trọng số đã có ứng với số ghi trong textbox. Nếu
chọn No: chương trình sẽ khởi tạo ngẫu nhiên ma trận trọng số
+Nút Trainning: Sẽ học lấy bộ trọng số và ghi cập nhật cho số tương ứng ghi ở ô textbox, với
ý là bộ trọng số đó là bộ trọng số cần lưu lại của số trong textbox.
+Bảng các giá trị: Ghi ra giá trị sai lệch của hình vẽ sau khi nhận dạng ứng với từng số.
+Nút nhận dạng: Sauk hi vẽ hình trên bảng đen, nhấn nút nhận dạng để tiến hành nhận dạng.
Thuật toán nhận dạng sử dụng trong bài toán rất đơn giản : Ứng với từng bộ trọng số đã có và

đầu vào đã vẽ ở bảng đen, ta xem xem bộ trọng số thứ I nào cho ra sai số bé nhất thì số nhận
ra chính là số thứ I đó.
+Nút xóa: Xóa hình vẽ, để chuẩn bị vẽ mới.
2.Quá trình kiểm tra:
Số mẫu dùng để kiểm tra: 80 mẫu.(Mỗi số 8 mẫu). Ta có bảng kết quả của quá trình kiểm tra
như sau:
Số noron ẩn
m_noron_out
Hệ số học n Sai số tổng e Epoch Sai số Ew Kết quả
114 0.14 0.001 10000 0.0001 56%
104 0.13 0.0005 10000 0.0001 69%
124 0.12 0.0001 10000 0.0001 87%
Kết quả ở cấu trúc mạng thứ 3 tiệm cận với giá trị chấp nhận được. Và cũng một phần do
chưa có đủ thời gian nên chương trình đã sử dụng cấu trúc mạng này.
3.Lời kết:
Mặc dù bài toán này chỉ là một trong ba bài toán nhận dạng cơ bản với số lượng dữ liệu
không được lớn lắm. Nhưng khi tiến hành ứng dụng mạng Neural để giải bài toán này ta đã
thu được kết quả rất khả quan. Qua ví dụ này chúng ta khẳng định lại một điều này là: ứng
dụng của mạng Neural rất to lớn và trong tương lai nó là một phần không thể thiếu trong các
hệ thống thông minh.
Em xin chân thành cảm ơn thầy Phúc đã hướng dẫn tận tình để em có thể hoàn thiện bài toán.

×