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
) 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 :
Độ 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
đ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
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:
( )
==
∑
=
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
δ
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
,
)(
δδ
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
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
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
=
−
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
= =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.
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
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
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
đầ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.