Tải bản đầy đủ (.pdf) (33 trang)

Tìm hiểu và so sánh một số giải pháp nhận dạng chữ in

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 (1.09 MB, 33 trang )



TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────


Tiểu luận môn học
NHẬN DẠNG
Đề 10: Tìm hiểu và so sánh một số giải pháp
nhận dạng chữ in


Học viên
Phạm Văn Hiếu
Nguyễn Thành Linh
Nguyễn Thanh Tùng (CB120162)
Lớp Kĩ thuật máy tính và truyền thông 12BMTTT


HÀ NỘI 12-2012


Phân công công việc
Công việc
Người thực hiện
Tìm hiểu mạng feed- forward sử
dụng giải thuật lan truyền ngược sai
số Back Propagation.
Nguyễn Thành Linh
Ứng dụng mạng feed- forward vào


nhận dạng chữ in
Phạm Văn Hiếu
Mạng nơron Kohonen
Nguyễn Thanh Tùng
1

MỤC LỤC

1. Lời mở đầu 2
2. Mạng feed- forward sử dụng giải thuật lan truyền ngược sai số Back Propagation
3
2.1. Các Bước Xây Dựng Nên Bài Toán 3
2.2. Xác Định Cấu Trúc Mạng 3
2.3. Thuật toán huấn luyện mạng. 6
2.4. Phương Pháp và Thuật Toán Nhận Dạng Kí Tự 8
2.4.1. Xử lý dữ liệu (Phân tích ảnh) 8
2.4.2. Huấn Luyện Mạng 16
2.4.3. Nhận Dạng Ký Tự Quang Học 17
3. Mạng nơron Kohonen 19
3.1 Giới thiệu 19
3.2. Mạng nơron Kohonen nhận dạng 21
3.2.1. Chuẩn hóa dữ liệu đầu vào 23
3.2.2. Tính toán dữ liệu đầu ra của nơron 23
3.2.3. Ánh xạ lưỡng cực 24
3.2.4. Chọn nơron thắng 25
3.2.5. Quá trình học của mạng Kohonen 26
3.2.6. Tỉ lệ (tốc độ) học 28
3.2.7. Điều chỉnh các trọng số (cập nhật trọng số) 28
3.2.8. Tính toán sai số 29
4. Kết luận 30

TÀI LIỆU THAM KHẢO 31

2

1. Lời mở đầu
Nhận dạng kí tự quang học (OCR – Optical Character Recognition) là một bài toán
chuyển các hình ảnh của chữ viết tay hoặc chữ đánh máy (thường được quét bằng
máy scanner) thành các văn bản tài liệu. Do bài toán vẫn còn nhiều vấn đề chưa
được giải quyết một cách triệt để, như vấn đề về tốc độ xử lý, độ chính xác của
tách từ, hay độ chính xác của nhận dạng. Và vì vậy bài toán này vẫn nhận được
nhiều sự quan tâm nghiên cứu. Nhận dạng văn bản chữ in được áp dụng trong quá
trình tự động hoá các công việc văn phòng như nhập liệu, lưu trữ văn bản, sách
báo, phân loại thư tín,… những công việc đòi hỏi nhiều thời gian và công sức của
con người. Hiện nay cũng có rất nhiều bài báo đề cập đến bài toán nhận dạng kí tự
quang học, nhằm cải tiến các phương pháp phân đoạn ảnh, nhận dạng. Song vẫn
chưa giải quyết một cách triệt để những vấn đề khó khăn của bài toán thường gặp
phải. Đặc biệt là đối với việc nhận dạng các kí tự tiếng Việt, gặp rất nhiều khó
khăn, do tính riêng biệt của tiếng Việt: Số kí tự nhiều, các kí tự lại có dấu…Nên
bài toán vẫn còn thu hút được sự quan tâm, nghiên cứu nhằm giải quyết những vấn
đề khó khăn của bài toán một cách triệt để. Một số hệ nhận nhận dạng văn bản đã
và đang được áp dụng rất nhiều vào ứng dụng như FineReader của hãng
AABBYY, OmmiPage của hãng Scansoft được dùng để nhận dạng các văn bản
tiếng Anh, VNDOCR của Viện công nghệ thông tin cho các văn bản tiếng Việt.
Trong khuôn khổ bài tiểu luận này, chúng em chỉ xin nêu ra kết quả của quá trình
tìm hiểu và so sánh các phương pháp nhận dạng chữ in.

3

2. Mạng feed- forward sử dụng giải thuật lan truyền ngược sai số Back
Propagation

2.1. Các Bước Xây Dựng Nên Bài Toán
Dưới đây là các bước chính khi tiến hành thiết kế và thực thi mạng noron nhân tạo
cho bài toán nhận dạng ký tự. Xác định dữ liệu đầu vào, và đầu ra mong muốn để
tiến hành huấn luyện cho mạng noron.
 Đầu vào : Vì tiểu luận chỉ tập trung vào nghiên cứu và cài đặt quá trình
nhận dạng ký tự neural, nên các dữ liệu đầu vào phải qua xử lý và đạt chuẩn
yêu cầu trước khi đưa vào nhận dạng.Các yêu cầu dữ liệu đầu vào là các file
ảnh dạng văn bản có định dạng *.bmp, đây là dạng file ảnh chuẩn, có kiểu
màu pixel đen và trắng, để việc tiến hành nhận dạng được chính xác.Các file
ảnh này đã qua giai đoạn tiền xử lý : xử lý ảnh nhiễu, ảnh đa sắc , lọc ảnh
 Đầu ra mong muốn : là một file text chứa các ký tự Unicode tương ứng mà
chương trình mong muốn huấn luyện mạng học thuộc.Số ký tự đầu ra mong
muốn phải tương ứng với số kí tự ảnh đầu vào cần huấn luyện.

Hình 2.1 Một ví dụ về mẫu các ký tự trong nhận dạng ký tự quang học.
2.2. Xác Định Cấu Trúc Mạng
Mạng noron được xây dựng theo phương pháp học có giám sát.
Bài toán lựa chọn mạng Feed-forward 3 lớp với cấu trúc như sau :
ABCDEFGHIJKMNOPQRSTU
VWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
+-\?*^@&:<>

4

- Số noron lớp đầu vào : 150 noron.
Giải thích : Việc huấn luyện cho mạng học là một vòng lặp duyệt qua lần lượt các
ký tự ảnh giúp mạng noron nhớ và nhận dạng các ký tự ảnh này.Với mỗi vòng lặp,
một ký tự sẽ được đưa vào giảng dạy cho mạng noron học.Trong quá trình này,

mỗi ký tự sẽ được phân tích và chuyển tỉ lệ vào một ma trận nhị phân 15 x 10 .Ứng
với mỗi điểm lưới của ma trận sẽ được tuyến tính hóa tạo ra tương ứng với một
noron đầu vào.Vì vậy ma trận sẽ tạo ra 15x10=150 noron đầu vào.
Lưu ý : Việc chọn số lượng noron đầu vào hay nói cách khác việc chọn tỉ lệ ma
trận đầu vào cho kí tự là rất quan trọng.
Nếu số lượng noron lớn quá sẽ dẫn đến việc :
- Nhận dạng những kí tự có font chữ nhỏ hoặc trung bình bị sai hoặc không chính
xác.
- Chương trình viết ra phải duyệt qua rất nhiều vòng lặp dẫn đến chương trình bị
chậm, hoặc gây ra tình trạng bị đứng máy khi chạy.
Nếu số lượng noron quá nhỏ :
- Việc phân tích các kí tự ảnh thông thường và lớn sẽ dẫn đến sai số lớn , vì vậy,
việc nhận dạng kí tự cũng sẽ thiếu tính chính xác.
- Qua kiểm nghiệm, và dựa trên nhiều tài liệu, nhận thấy giá trị 150 noron đầu vào
là khá phù hợp để nhận dạng với kiểu kí tự ảnh có font chữ trung bình, và phổ
biến.Các kí tự ảnh này có chiều cao trung bình là 70 pixel và chiều rộng khoảng 54
pixel.
5

- Số noron lớp ẩn : 500 noron.Việc lựa chọn giá trị này dựa trên thực nghiệm của
các tài liệu chuyên về nhận dạng kí tự quang học.Số noron này được quyết định từ
những kết quả tối ưu và giá trị lỗi cơ sở trong quá trình huấn luyện.
- Số noron đầu ra : 16 noron tương ứng với 16 bit nhị phân của mã Unicode.Từ 16
noron này ta tổng hợp và chuyển thành 16 bit nhị phân, sau cùng chuyển thành 1 kí
tự Unicode.


















500 neural Lớp
ẩn

150 neural Lớp
đầu vào

Điểm
ảnh
Điểm
ảnh
Điểm
ảnh
Điểm
ảnh
0 hoặc 1
0 hoặc 1
0 hoặc 1
0 hoặc 1

16 neural
Lớp đầu ra

6


2.3. Thuật toán huấn luyện mạng.
Mạng feed- forward sử dụng giải thuật lan truyền ngược sai số Back Propagation.
Giải thuật gồm 2 bước :
 Bước 1:
-Lan truyền xuôi đầu vào qua mạng.
Sử dụng các công thức :
Công thức chung tính đầu ra của một noron thứ i tại lớp thứ k:
y
i=
f

(



n
j
jij
xw
0
-b
i
)
Với f là hàm chuyển sigmoid lưỡng cực được tính theo công thức :

f=
1
1
2
t




e

α: hệ số góc của hàm chuyển
t: biến net-input
b
i
: hệ số ngưỡng hay độ lệch
Áp dụng đối với mô hình mạng của chương trình :
-Công thức cho đầu ra của một noron thứ i (1250) tại lớp ẩn
a
i=
f

(



n
j
jij
xw

1
-b
i
)
Với
ij
w
: trọng số tại noron thứ i của lớp ẩn kết nối với đầu vào thứ j của lớp
vào
j
x
: giá trị đầu vào của noron thứ j tại lớp vào

b
i
: giá trị ngưỡng hay độ lệch của noron thứ i của đầu vào
7

-Công thức cho đầu ra của một noron thứ k (k =116)tại lớp output
y
k=
f(
k
n
j
jkj
baw 

1
)=f [



n
j
kj
w
1
(
f

(



n
j
jij
xw
1
)]
 Bước 2 : Lan truyền ngược
Tính toán sai lệch giữa đầu ra thực và đầu ra mong muốn của noron thứ k tại đầu
ra.

e
i=
t
i
- y
i

Tổng bình phương sai số của mạng ứng với mẫu học (Xs, Ts):
E=


p
k 1
2
1
( t
i
- y
i
)
2
P: số phần tử đầu ra
Nếu E< ε và l+1<epochs thì :
Thông tin sai số sẽ được lan truyền ngược qua mạng để điều chỉnh lại trọng số tại
vòng lặp l.
-Công thức điều chỉnh trọng số với liên kết giữa noron thứ j trong lớp ẩn và noron
thứ i trong lớp ra tại lần lặp l+1: (l+1<số lần dạy( epochs) )

ij
w
(l+1) =
ij
w
(l)+ η.e
i
(l).y
j

.f’(y
i
(l))

Với η: hệ số học
e
i
(l) : giá trị sai lệch của noron thứ i trong lớp ra , trong lần dạy (lặp ) thứ l .
f’: đạo hàm của hàm chuyển lưỡng cực ,công thức f’=
2
1
2
x

η : hệ số học
y
i
(l) : giá trị đầu ra của noron thứ i trong lớp ra tại vòng lặp thứ l.
y
j
(l)
:
giá trị đầu ra của noron thứ j trong lớp ẩn tại vòng lặp thứ l.

8

-Công thức điều chỉnh trọng số với liên kết giữa noron vào thứ j và noron ẩn thứ i ,
tại lần lặp thứ l+1 (l+1 <epochs)
ij
w

(l+1) =
ij
w
(l)+ η.x
j.
f’(y
i
).



m
k
kkki
lyflelw
1
))((').().1(

Với :
η: hệ số học
x
j :
giá trị đầu ra của noron thứ j trong lớp vào.
y
i :
giá trị đầu ra của noron thứ i trong lớp ẩn
w
ki
(l+1) : trọng số liên kết giữa noron thứ k trong lớp ra và noron thứ i
trong lớp ẩn trong lần lặp thứ l+1 .

y
k
(l) : giá trị đầu ra của noron thứ k trong lớp ra.
 Các tham số sử dụng trong chương trình
Tốc độ học η = 150.
Hệ số góc α Sigmoid= 0.014.
Giá trị ngưỡng hay độ lệch : 30

Số lần dạy 300-600 tùy độ phức tạp của từng loại font.
Ngưỡng của lỗi = 0.0002.

2.4. Phương Pháp và Thuật Toán Nhận Dạng Kí Tự
2.4.1. Xử lý dữ liệu (Phân tích ảnh)
Quá trình phân tích ảnh thực chất là phân tích chuỗi văn bản ảnh thành từng ký tự
một. Việc phân tích này dựa trên việc nhận dạng các pixel màu của ký tự ảnh với
dữ liệu đầu vào đã được xử lý và chuyển thành định dạng *.bmp chỉ có 2 pixel
điểm đen RGB(0,0,0) và điểm trắng RGB(255, 255, 255).
9

Quá trình phân tích ảnh được thực hiện tuần tự như sau :
- Phân tích văn bản thành từng dòng văn bản .
- Phân tích từng dòng văn bản thành từng ký tự ảnh một.
2.4.1.1. Tách dòng kí tự
Việc tách dòng kí tự chính là cơ sở để tiến hành tách từng kí tự một cách dễ dàng
và nhanh chóng.
 Thuật toán :
-Bắt đầu từ điểm ảnh (x, y) đầu tiên của file ảnh (0,0) , gán số dòng đang xét
lines =0;
a Xác định giới hạn trên của dòng : Quét hết chiều rộng của ảnh, trên cùng một
giá trị y ( chạy x<=chiều rộng ảnh, giữ nguyên y )

+ Nếu gặp một pixel đen thì ghi nhận y chính là tọa độ giới hạn trên của
dòng(top_line).Dừng duyệt x.
+Nếu không , tiếp tục duyệt
+Nếu khi quét hết chiều rộng của ảnh, vẫn không tìm thấy giá trị điểm màu đen thì
reset lại x=0, và tiếp tục duyệt đến dòng tiếp theo (tăng y=y+1)
b Xác định giới hạn dưới của dòng :
+ Bắt đầu duyệt từ giới hạn trên (đỉnh ) vừa tìm thấy của dòng (0,top_line)
+ Tương tự như xác định giới hạn trên , ta duyệt hết chiều rộng của ảnh trên cùng
một giá trị y.
+Nếu duyệt hết dòng mà không tìm thấy ký tự pixel đen nào thì ghi nhận y-1 là
giới hạn dưới của dòng (bottom_line).Dừng duyệt.Tăng số dòng lên (lines++).
+Nếu chưa tìm thấy bottom_line, tiếp tục duyệt đến dòng tiếp theo (tăng y, reset
x=0).
10

c.Bắt đầu từ giới hạn dưới y (bottom_line) vừa tìm thấy sau cùng,lặp lại các bước
a,b để xác định các giới hạn của các dòng tiếp theo , cho đến khi duyệt hết chiều
cao của ảnh thì dừng, quá trình xác định dòng ký tự hoàn tất.











2.4.1.2. Tách từng kí tự

 Thuật toán :
Xét lần lượt từng dòng
1.Bắt đầu xét từ giá trị giới hạn trên y của dòng (top_line) và giá trị x đầu tiên
(x=0)
2.Xác định giới hạn trên của ký tự : Quét hết chiều rộng của ảnh, trên cùng giá trị
y.
+ Nếu phát hiện pixel đen thì đánh dấu y là giá trị đỉnh của ký tự
(top_character).Dừng quét.
+Nếu quét hết chiều rộng, mà vẫn không tìm thấy pixel đen nào thì tăng y và reset
lại x, tiếp tục thực hiện lại bước 2.
Ảnh đầu vào



Quá trình
tách dòng
Giới hạn
trên

Giới hạn
dưới
11

3. Xác định giới hạn dưới của ký tự :Bắt đầu duyệt từ giới hạn trên (đỉnh ) vừa tìm
thấy của ký tự (0,top_character)
+ Tương tự như xác định giới hạn trên , ta duyệt hết chiều rộng của ảnh trên cùng
một giá trị y.
+Nếu duyệt hết dòng mà không tìm thấy ký tự pixel đen nào thì ghi nhận y-1 là
giới hạn dưới của ký tự (bottom_character).Dừng duyệt.
+Nếu chưa tìm thấy bottom_character, tiếp tục duyệt đến dòng tiếp theo (tăng y,

reset x=0).
4.Xác định giới hạn trái của ký tự (xác định giá trị của x )
-Bắt đầu từ giới hạn trên (đỉnh của ký tự - top_character), giá trị x đầu tiên (x=0) .
-Quét đến giới hạn dưới của dòng (bottom_character), giữ nguyên x (quét theo
chiều thẳng đứng )
+Nếu gặp pixel đen đầu tiên, ghi nhận x là giới hạn trái của kí tự (left-
character).Dừng quét.
+Nếu quét đến cuối giới hạn dưới, vẫn không tìm thấy pixel đen nào, thì reset lại y
= giới hạn trên vừa tìm thấy, tăng x lên.(x++),và tiếp tục thực hiện lại bước 4.
5.Xác định giới hạn phải của ký tự (xác định giá trị x )
-Bắt đầu từ giới hạn trên -đỉnh của ký tự (top_character), giới hạn trái của ký tự
(left_character,top_character) .Quét theo chiều thẳng đứng đến giới hạn dưới của
dòng.
+Nếu khi quét hết chiều đứng ,mà vẫn không gặp được pixel đen nào thì ghi nhận
x-1 là giới hạn phải của ký tự (right_character).Dừng quét.
+Nếu gặp pixel đen thì tăng x (x++) và reset lại y =top_character của ký tự đang
xét ,để xét đường thẳng đứng tiếp theo.
6. Lặp lại bước 1 đến 5 để xác định giới hạn của ký tự tiếp theo trên cùng dòng.Với
y=top_line của dòng đang xét và giá trị x đầu tiên = right_character của ký tự vừa
tìm thấy.
12



2.4.1.3. Xác Định Giới Hạn Chính Xác Cho Từng Ký Tự
Trong một số trường hợp, việc tách ký tự chưa thực sự chính xác (giống như ví
dụ trên ).Ta cần xác định lại một lần nữa giới hạn chính xác cho từng ký tự.
 Thuật toán :
Xét từng ký tự :
1.Xác định đỉnh ký tự


Sau khi
tách ký
tự

13

-Bắt đầu từ đỉnh của ký tự tạm thời,và giới hạn trái của ký tự vừa xác định ở trên(
left_character,top_character).Quét đến giới hạn phải của ký tự, giữ nguyên y.
+Nếu tìm thấy pixel đen thì chọn lại y là giới hạn đỉnh của ký tự
(top_character=y).Dừng quét.
+Nếu không , xét điểm tiếp theo.
+Nếu không tìm thấy pixel đen nào thì tăng y (y++) , reset lại x .(x=
left_character).Thực hiện lại bước 1.
2.Xác định giới hạn dưới của ký tự.
- Bắt đầu từ giới hạn dưới hiện thời của ký tự (được xác định ở trên –phần 1.2 ), và
giới hạn trái của ký tự (left_character, bottom_character).Quét x đến giới hạn phải
của ký tự, trên cùng giá trị y .
+ Nếu tìm thấy pixel đen ,đánh dấu y là giới hạn dưới của ký tự (
bottom_character= y).Ngừng quét.
+Nếu không tìm thấy pixel đen nào, thì reset lại x (= left character ), giảm y (y
).Thực hiện lại bước 2.

















Xác
định
giới
hạn
Giới hạn
trên
Giới hạn
dưới
14

2.4.1.4. Ánh Xạ Ký Tự Ảnh Vào Ma Trận Giá Trị
Sau khi tách, ký tự ảnh sẽ được ánh xạ vào ma trận 2 chiều, có kích thước 15 x 10.
Vì các ký tự ảnh dù đã chuẩn hóa, chọn lọc nhưng sau khi tách đều có kích thước
khá lớn so với ma trận ( khoảng 58x 74), nên các ký tự ảnh này đều phải qua 1
bước chuyển đổi tỉ lệ trước khi chuyển giá trị vào ma trận nhị phân 15 x10.
Lưu ý : Việc chuyển đổi tỉ lệ này là một trong những nguyên nhân gây ra sai số
dẫn đến nhận dạng ký tự bị sai.
Thuật toán : ánh xạ ký tự ảnh vào ma trận pixel ảnh.
a.Xét chiều rộng
-Ánh xạ điểm đầu và điểm cuối của ký tự ảnh tương ứng với giá trị đầu và cuối
của ma trận .
-Khởi tạo với 10 phần tử tương ứng.

-Ánh xạ tọa độ điểm đầu (0,y) và điểm cuối (width,y) của ảnh kí tự tương ứng với
giá trị đầu (0,y) và giá trị cuối (10,y) của ma trận.
-Chia nhỏ chiều rộng thành 10 mốc giá trị, ánh xạ vào chiều rộng của ma trận
pixel.
Ví dụ :
xMT[ 0]=0;
xMT[5]=width/2.
xMT[10]=width.
xMT[2]=xMT[5]/2.

b.Đối với chiều cao:
Khởi tạo với 15 phần tử tương ứng.
15

Ánh xạ điểm đầu (x,0) và điểm cuối (x,height) của ảnh kí tự tương ứng với giá trị
đầu (x,0) và giá trị cuối (x,15) của ma trận.
Chia nhỏ chiều cao thành 15 mốc giá trị, ánh xạ tương ứng vào chiều cao của ma
trận pixel.
Vd: yMT[ 0]=0;
yMT[5]=height /3.
xMT[10]=height x 2/3.
xMT[15]=height.

-Lấy các giá trị pixel trong file ảnh tuyến tính hóa vào trong ma trận pixel bằng
cách kết hợp tọa độ chiều cao và chiều rộng.
Vd:MT[i,j]=img[xMT[i],yMT[j] ]

Hình 2.6 : Ánh xạ lưới ký tự.
c.Chuyển ma trận lưới pixel thành ma trận giá trị
-Bắt đầu từ tọa độ (0,0) của ma trận pixel.Giữ y , duyệt qua x:

Nếu pixel đen thì ghi nhận giá trị 1 vào ma trận giá trị có tọa độ tương ứng.
Nếu pixel trắng thì ghi nhận giá trị 0 vào ma trận giá trị có tọa độ tương ứng.
Nếu x= chiều rộng thì reset lại x=0 , tăng y (y++).



























































































































































0
15
0
10




(0,0)
(10,15)








16

Từ ma trận ảnh này ta ánh xạ thành mảng 1 chiều 150 cột 1 dòng, và
chuyển thành 150 noron đầu vào


2.4.2. Huấn Luyện Mạng
 Thuật toán :
1.Xây dựng cấu trúc mạng với mô hình 3 lớp .

2.Khởi tạo các giá trị ngẫu nhiên cho trọng số trong khoảng [-độ lệch,độ lệch ]
3.Nạp file ảnh đầu vào và file huấn luyện (file text đầu ra mong muốn ).
4.Phân tích ảnh và ánh xạ thành 150 noron đầu vào.
5.Đọc các kí tự đầu ra mong muốn, chuyển thành giá trị nhị phân Unicode và lưu
trữ lại.
6.Với mỗi kí tự ảnh :
+Tính giá trị đầu ra trong mạng FeedForward.
+So sánh với ký tự tương ứng ở đầu ra mong muốn và tính toán lỗi.
+Lan truyền ngược lỗi và điều chỉnh lại giá trị của trọng số .
7.Chuyển đến xét ký tự ảnh tiếp theo thực hiện lại bước 6 , cho đến khi duyệt hết
các ký tự ảnh.
8.Tính giá trị lỗi trung bình cho tất cả các ký tự ảnh.
17

9. Lặp lại bước 6 đến bước 8 cho đến khi chạy đủ số vòng dạy
+Nếu lỗi trung bình đạt thấp hơn giá trị ngưỡng của lỗi thì dừng .
+Nếu không thì tiếp tục.
2.4.3. Nhận Dạng Ký Tự Quang Học
 Thuật toán :
-Nạp file ảnh đầu vào
-Phân tích ảnh thành từng ký tự ảnh.
-Đưa ma trận giá trị cho đầu vào mạng feed-forward , tính toán giá trị đầu ra dựa
trên các trọng số đã được lưu sẵn khi tiến hành huấn luyện mạng.
-Chuyển mã nhị phân Unicode thành ký tự tương ứng.














18


















Đ
S
Đ
S

BẮT ĐẦU
Tính toán đầu ra
Dòng đầu tiên
Ánh xạ kí tự tới vector
Phân tích dòng ảnh
Chuyển từ Unicode sang kí tự
Hết kí tự trên
dòng ?
Hết Các dòng ?

Dòng tiếp theo
Kí tự tiếp theo
KẾT THÚC
19

3. Mạng nơron Kohonen
3.1 Giới thiệu
Trong các kiểu khác nhau của mạng nơron, mạng nơron Kohonen giống với mạng
nơron sinh học hơn cả về cấu tạo lẫn cơ chế học. Mạng nơron nhân tạo này lần đầu
tiên được giới thiệu bởi Kohonen vào năm 1982, nó được biết đến như là ánh xạ
đặc trưng tự tổ chức (SOM). Ánh xạ tự tổ chức của Kohonen còn được biết đến là
một trong những mô hình khá đơn giản của mạng nơron, và người ta thường gọi đó
là mạng nơron Kohonen.
Mạng nơron Kohonen (hay nơron tự tổ chức) mô hình hóa cách hoạt động bộ não
của con người, mặc dù nó khá đơn giản. Chúng ta có thể nhận được một số ý tưởng
cách bộ não lưu trữ hình ảnh và cách nó nhận dạng các hình ảnh.
Mô hình
Mạng có n nơron PE
i
, i=1,2, , n.

Đầu ra của chúng là
i
y
, i=1, ,n.
Có m tín hiệu vào {x
1
, x
2
, , x
m
},w
ij
là trọng số liên kết từ x
j
với PE
i
.
Gọi s(x), s(y) là hàm chuyển tín hiệu, giả thiết đó là hàm đơn điệu không giảm
liên tục như dạng hàm Sigmoid.
Phương thức biến đổi trọng số được gọi là luật luyện Hebb, quy tắc luyện đơn giản
theo dạng Hebb cho bởi phương trình :
)().(
)(
'
jjiiij
ij
ij
xsysw
dt
tdw

w 

Bây giờ ta xét một số trường hợp riêng:
20

- Quy tắc luyện cạnh tranh (Competitive Learning Rule – Grossberg 1969,
Rumelhart 1986)

))()((
'
ijjjiiij
wxsysw 

ở đây
1
( ) , 0
1
i
ii
cy
s y c
e




- Nếu dùng
()
j j j
s x x

ta thu được :
Quy tắc luyện cạnh tranh tuyến tính (the Linear competitive learning rule)
))((
'
ijjiiij
wxysw 

Trường hợp riêng quan trọng là quy tắc “ thắng lấy tất cả - the winner-take-all
learning rule “ của Kohonen , giải thích để hiểu qua bài toán phân cụm tập mẫu
 
12
, , ,
p
X x x x
thành n cụm , với n đã cho.
Kí hiệu
12
, w (w ,w , ,w )
mm
i i i im
x R R  
, α là hệ số học.
Tại mỗi vòng lặp k, quy tắc luyện gồm 2 bước :
1/ Bước tìm cái khớp nhất (matching) – tìm nơron tạm gọi là nơron thắng (theo
nghĩa gần mẫu nhất), sử dụng công thức sau:
x
wx
yyy
m
.

) max(
1

, (Phương pháp tính tích vô hướng).
2/ Tính toán sai số và điều chỉnh trọng số
Ký hiệu e
j
là sai số ở cột thứ j, w
ij
là biểu diễn cho cột thứ j của ma trận trọng số w,
sai số này được tính theo công thức sau:
21

e
j
= ||x-w
ij
||
Nếu tổng sai số chưa nằm dưới mức cho phép, ta điều chỉnh trọng số theo công
thức:
)(
1 k
iji
k
ij
k
ij
wxww 



với k =1,…,m
Khi một mẫu được đưa tới một mạng Kohonen, những nơron được chọn là nơron
thắng (winner) (nơron thích hợp nhất theo nghĩa mà ta đặt ra). Nơron thắng này là
dữ liệu đầu ra từ mạng Kohonen. Thông thường, các nơron thắng này tương ứng
với các nhóm trong dữ liệu đưa vào mạng Kohonen.
Mạng Kohonen được huấn luyện trong một chế độ không có giám sát. Sử dụng
mạng Kohonen này, dữ liệu có thể được phân loại thành từng cụm. Chúng ta sẽ
xem xét mạng Kohonen qua quá trình huấn luyện.
3.2. Mạng nơron Kohonen nhận dạng
Ta sẽ xem việc huấn luyện mạng nơron Kohonen như thế nào để nhận dạng đúng
các mẫu mà ta mong muốn. Chúng ta bắt đầu bằng cách xem xét cấu trúc của mạng
nơron Kohonen.
Mạng nơron Kohonen chỉ bao gồm một lớp dữ liệu đầu vào và một lớp dữ liệu đầu
ra của các nơron và nó không chứa lớp ẩn.
Lớp dữ liệu đầu vào đối với mạng nơron Kohonen là các nơron đầu vào. Các nơron
đầu vào này tạo thành mẫu dữ liệu đầu vào của mạng. Đối với mạng nơron
Kohonen, ta nên chọn dữ liệu đầu vào chuẩn hóa trong khoảng giữa -1 và 1. Khi
thực thi mẫu dữ liệu đầu vào, mạng sẽ tạo ra các nơron đầu ra.
Lớp đầu ra của mạng nơron Kohonen rất khác với lớp đầu ra của mạng nơron
truyền thẳng. Đối với mạng truyền thẳng, nếu chúng ta có một mạng nơron với 5
22

nơron đầu ra, chúng sẽ có thể cho kết quả bao gồm 5 giá trị. Còn trong mạng nơron
Kohonen chỉ có một nơron đầu ra cho ra một giá trị. Giá trị duy nhất này có thể là
đúng hoặc sai. Dữ liệu đầu ra từ mạng nơron Kohonen thường là các chỉ số của
nơron (Ví dụ nơron số 5,…). Cấu trúc đặc trưng của mạng nơron Kohonen được
chỉ ra trong hình 2.1.

Hình 2.1: Một dạng mạng nơron Kohonen
Bây giờ, chúng ta xem xét mạng nơron Kohonen xử lý thông tin như thế nào. Để

kiểm tra quá trình này, chúng ta xem xét một ví dụ sau:
Chúng ta sẽ xém xét một mạng nơron Kohonen đơn giản. Mạng này sẽ chỉ có 2
nơron đầu vào, và 2 nơron đầu ra. Dữ liệu đầu vào được cho là 2 nơron được chỉ ra
trong bảng 2.1 và các trọng số kết nối giữa các nơron trong bảng 2.2.

Bảng 3.1 Bảng 3.2
23

Sử dụng các giá trị này, chúng ta xem xét nơron có thể thắng và cung cấp dữ liệu
đầu ra. Chúng ta bắt đầu bằng cách chuẩn hóa dữ liệu đầu vào.
3.2.1. Chuẩn hóa dữ liệu đầu vào
Mạng nơron Kohonen đòi hỏi dữ liệu đầu vào phải được chuẩn hóa. Yêu cầu của
mạng nơron Kohonen là dữ liệu đầu vào của nó phải được phân hoạch trên miền
xác định giữa -1 và 1. Mỗi dữ liệu đầu vào nên sử dụng hoàn toàn miền xác định,
vì nếu các nơron đầu vào chỉ sử dụng các số giữa 0 và 1, thì thành quả của mạng
nơron sẽ không cao (bị tổn thất).
Để chuẩn hóa dữ liệu đầu vào, chúng ta sẽ tính toán độ dài vector (vector length)
của các dữ liệu đầu vào, hoặc vector đầu vào. Trong trường hợp này độ dài vector
sẽ là: (0.5 * 0.5) + (0.75 * 0.75) = 0.8125.
Vậy trường hợp trên sẽ có độ dài vector là 0.8125. Sử dụng độ dài này, chúng ta có
thể xác định được hệ số chuẩn hóa. Hệ số chuẩn hóa là số nghịch đảo của căn bậc
hai độ dài vector đầu vào. Trong trường hợp trên thì hệ số chuẩn hóa là:

Tính toán giá trị trên cho kết quả hệ số chuẩn hóa là 1.1094. Hệ số chuẩn hóa này
sẽ sử dụng cho bước tiếp theo, đó là tính toán đầu ra cho nơron.
3.2.2. Tính toán dữ liệu đầu ra của nơron
Để tính toán dữ liệu đầu ra, vector dữ liệu đầu vào và các trọng số kế nối nơron
đều phải được xem xét. Thứ nhất, tính tích vô hướng của hai vector vector đầu vào
và vector các trọng số liên kết. Để tính toán tích vô hướng giữa hai vector này, ta
thực hiện như sau.

×