2.3.1 Chuẩn hóa đầu vào
Mạng Kohonen yêu cầu đầu vào được chuẩn hóạ Dữ liệu đầu vào nên có giá trị nằm trong khoảng -1 đến 1.Nếu 1 hoặc nhiều hơn nơron đầu vào sử dụng các giá trị chỉ nằm trong khoảng từ 0 đến 1 thì mạng nơron hoạt động không đảm bảo chất lượng. Để chuẩn hóa đầu vào việc đầu tiên chúng ta phải tính chiều dài vector của dữ liệu đầu vào: ∑ = = N i i x x length 1 2 ) ( (2.1)
Sử dụng chiều dài vector chúng ta có thể quyết định hệ số chuẩn hóa: ∑ = = N i i x 1 2 1 σ (2.2)
2.3.2 Tính toán đầu ra cho mỗi nơron
Để tính toán đầu ra cho mỗi vector đầu vào thì phải cùng xem xét vector đầu vào và trọng số . Đầu tiên phải tính tích vô hướng của các nơron đầu vào và các trọng số kết nốị Tích vô hướng được tính bằng cách nhân mỗi phần tử trong hai vector với nhaụ Ta tính tổng của tích các phần tử của vector trọng số và vector đầu vàọ Giả sửđầu vào là: X= {x1, x2, …,xN}, trọng số là W={wj1, wj2,…, wjN} thì tích vô hướng của X và W là: ji N i iw x t ∑ = = 1 (2.3)
Xét đầu ra của nơron đầu ra thứ j bây giờđược chuẩn hóa bằng cách nhân giá trị vừa tính được với hệ số chuẩn hóa được xác định ở trên.
( ) ( ) 1 1 2 1 ∑ ∑ = = = N i i N i ji i x w x j output (2.4)
Giá trị vừa được tính toán phải được ánh xạ thành số lưỡng cực. Để ánh xạ
chúng ta thêm 1 và chia cho 2 ta được:
output(j)=[output(j)+1]*0.5 (2.5)
2.3.3 Chọn nơron chiến thắng
Khi tính toán được đầu ra với từng nơron tiến hành so sánh chúng để tìm xem nơron nào có đầu ra lớn nhất thì nơron đó được quyết định là nơron chiến thắng. Như vậy ta đã tìm ra đầu ra của mạng nơron Kohonen. Ta thấy giá trị này
được quyết định bởi giá trị trọng số giữa đầu vào và đầu rạ Như vậy ta điều chỉnh trọng số này đểđiều chỉnh giá trịđầu ra theo như nhiệm vụ yêu cầụ
2.3.4 Quá trình học của mạng nơron Kohonen
Quá trình học là quá trình hiệu chỉnh trọng số. Toàn bộ quá trình huấn luyện cho mạng nơron Kohonen bao gồm các chu kỳ lặp lại cho đến khi mức lỗi của mạng dưới một mức chấp nhận được. Quá trình huấn luyện cho mạng là cạnh tranh. Với mỗi tập đầu vào sẽ tìm được một nơron chiến thắng. Trọng số của nơron chiến thắng sẽđược hiệu chỉnh, nó sẽ tác động trở lại mạnh mẽ hơn đối với đầu vào ở lần tiếp theọ Các nơron chiến thắng là khác nhau đối với các mẫu khác nhaụ Khả năng của chúng để nhận dạng các mẫu riêng biệt sẽ được tăng lên. Đầu tiên chúng ta xét tổng quan quá trình huấn luyện cho mạng nơron Kohonen.
Hình 2.2 Quá trình huấn luyện mạng nơron Kohonen
Đầu tiên ma trận trọng số được khởi tạo với các giá trị ngẫu nhiên, đưa tập mẫu vào và tính toán tỷ lệ lỗi, hiệu chỉnh trọng số của nơron chiến thắng:
Bắt đầu Khởi tạo ngẫu nhiên ma trận trọng số Tính lỗi Lỗi có chấp nhận được không ? Đưa tập huấn luyện và điều chỉnh các trọng số
trên nơron chiến thắng
Tính lại lỗi xem có cải thiện không. Cải thiện lỗi có đáng kể không ? Vượt quá số chu kỳ lớn nhất ? Tốt hơn ma trận trọng số tốt nhất chưa ? Có ma trận trọng số tốt nhất không ? Chỉđịnh ma trận trọng số là ma trận tốt nhất Kết thúc Có Có Có Có Không Không Không Không Có Không
¾ Nếu tỷ lệ lỗi được cải thiện đáng kể thì quay trở lại tiếp tục đưa mẫu huấn luyện vào và điều chỉnh trọng số của nơron chiến thắng rồi tính toán lại tỷ
lệ lỗi xem mức cải thiện của nó như thế nàọ
¾ Nếu tỷ lệ lỗi chỉ cải thiện rất nhỏ thì chu kỳ này sẽđược bỏ quạ Nếu điều này xảy ra thì xét xem ma trận trọng số này có tốt hơn ma trận trọng số tốt nhất từ trước đến giờ không?
− Nếu tốt hơn thì lưu lại ma trận trọng số tốt nhất.
− Nếu không ma trận trọng số tốt nhất được giữ nguyên từ chu kỳ
trước.
¾ Sau đó ma trận trọng sốđược khởi tạo lại với giá trị ngẫu nhiên và chu kỳ
huấn luyện mới được bắt đầụ Chu kỳ huấn luyện mới này lại tiếp tục giống như chu kỳ trước và sẽ phân tích các thời kỳ để quyết định bỏ qua hay tạo ra tập trọng số mà tạo ra mức lỗi chấp nhận được.
Nếu chúng ta tính toán lỗi nhỏ hơn mức chấp nhận được hoặc nếu số chu kỳ
lặp lớn hơn số chu kỳ lặp lớn nhất cho phép thì quá trình huấn luyện hoàn thành.
2.3.4.1 Tốc độ học
Tốc độ học là một hằng số mà sẽđược sử dụng trong thuật toán học. Nó phải là một số dương nhỏ hơn 1. Tốc độ học điển hình là 0.4 ,0.5. Ký hiệu nó là α.
Thông thường thiết lập giá trị học lớn thì quá trình huấn luyện sẽ nhanh hơn, nhưng nếu thiết lập giá trị này quá lớn có thể làm cho mạng không bao giờ hội tụ. Điều này bởi vì dao động của vector trọng số quá lớn để phân lớp mẫụ Một kỹ thuật khác như là huấn luyện tiến bộ, quá trình huấn luyện bắt đầu với tốc độ học cao và giảm dần tốc độ nàỵ Phương pháp này cho phép tăng tốc độ huấn luyện ban đầụ
Tốc độ học chỉ là một biến mà được sử dụng như một phần của thuật toán dùng đểđiều chỉnh trọng số của nơron. Trong quá trình thực nghiệm tiến hành điều chỉnh tốc độ học này sao cho phù hợp đểđạt được hiệu quả huấn luyện caọ
2.3.4.2 Hiệu chỉnh trọng số
xảy ra khi dữ liệu huấn luyện được đưa vào mạng và trọng số được hiệu chỉnh dựa trên kết quả của dữ liệu huấn luyện này tạo rạ Sự điều chỉnh trọng số làm cho mạng có được kết quả phù hợp hơn trong lần tiếp theo cũng thực hiện trên cùng dữ
liệu huấn luyện đó. Nếu sau mỗi lần đưa mẫu huấn luyện vào, tính mức lỗi thấy có cải thiện đáng kể thì còn quay lại điều chỉnh trọng số. Còn nếu không thì bắt đầu một chu kỳ mớị Khi điều này xảy ra thì toàn bộ ma trận trọng số được điều chỉnh
đến các giá trị ngẫu nhiên mớị Cuối cùng ma trận trọng số sẽ được sử dụng là ma trận trọng số tốt nhất xác định từ mỗi chu kỳ. Bây giờ chúng ta xét làm thế nào trọng sốđược hiệu chỉnh.
Phương pháp ban đầu để tính toán sự thay đổi của trọng số, được đề xuất bởi Kohonen, thường được gọi là phương pháp cộng vàọ Phương pháp sử dụng phương trình sau: w x x w w t t t α α + + = +1 (2.6)
Biến x là vector huấn luyện để đưa vào mạng. Biến wt là trọng số của nơron chiến thắng, và wt+1 là trọng số mớị thể hiện chiều dài vector. Phương pháp này hoạt động rất tốt đối với mạng nơron Kohonen. Trong trường hợp phương pháp này cho thấy sự bất ổn quá mức, mạng không hội tụ. Một phương pháp khác được sử dụng, phương pháp này gọi là phương pháp trừ, sử dụng các công thức sau:
e= x−wt (2.7)
wt+1 =wt +αe
(2.8)
Hai phương trình này sẽ chỉ ra sự biến đổi cơ bản trên trọng số của mạng.
2.3.4.3 Tính toán lỗi
Trước khi chúng ta hiểu làm thế nào để tính toán lỗi cho mạng thì đầu tiên chúng ta phải hiểu lỗi có nghĩa là gì. Mạng được huấn luyện theo phương pháp học không giám sát do vậy cách định nghĩa về lỗi hơi khác nhau so với cách nghĩ thông thường về lỗị Như các phần khác đã nghiên cứu huấn luyện có giám sát bao gồm tính
toán lỗi, đó là sự khác biệt giữa đầu ra tính được và đầu ra mong muốn. Đối với phương pháp học không giám sát không có đầu ra mong muốn. Mục đích của mạng nơron Kohonen là để phân các mẫu đầu vào vào các tập. Do đó lỗi ởđây phải có khả
năng đo lường mức độ mạng phân lớp tốt như thế nàọ Chúng ta sẽ xem xét hai phương pháp để tính toán lỗị Không có cách nào chính thức để tính toán lỗi cho mạng nơron Kohonen. Lỗi này chỉ là phần trăm đó là ý tưởng cho biết mạng phân loại tốt như thế nào đối với đầu vào vào các nhóm đầu rạ Bản than lỗi không được sử
dụng để hiệu chỉnh trọng số như đối với thuật toán lan truyền ngược. Ởđây lỗi được xác định bởi công thức: ∑ = − = N i i ji w x 1 2 ) ( ε (2.9) 2.3.5 Kết luận
Mô hình mạng Kohonen này tương đối đơn giản, chỉ gồm hai lớp: lớp nơron
đầu vào và lớp nơron đầu rạ Trong đó lớp đầu vào thực ra chỉ dùng để phân bố dữ
liệu đến lớp nơron đầu ra mà không có chức năng xử lý dữ liệu trên đó. Các bước thực hiện mạng nơron Kohonen tương đối rõ ràng, chi tiết, đơn giản, dễ hiểụ Quá trình huấn luyện mạng với tốc độ hội tụ nhanh, xử lý được khối lượng dữ liệu lớn.
Việc xác lập các tham sốđầu vào cho mạng rất dễ dàng, ta có thể hiệu chỉnh các tham số này bằng thực nghiệm trong quá trình thực hiện bài toán cụ thể để đạt
được kết quả hoạt động tốt.
Qua việc nghiên cứu về mạng nơron Kohonen và nghiên cứu về mạng nơron tổng quan ở chương 1 chúng ta đã thấy được các đặc điểm giống và khác nhau cơ bản của: học có giám sát, mạng dẫn tiến đa lớp, thuật toán lan truyền ngược vốn rất phổ
biến khi nghiên cứu về mạng nơron, so với đặc điểm của học không giám sát, học cạnh tranh, cấu trúc đơn giản mà hiệu quả cao của mạng nơron Kohonen.
CHƯƠNG 3
ỨNG DỤNG MẠNG NƠRON KOHONEN TRONG BÀI TOÁN NHẬN DẠNG CHỮ VIẾT TAY TIẾNG VIỆT
Chương này tôi xin trình bày các nội dung chính như sau: Giới thiệu về các bài toán nhận dạng, nhận dạng chữ viết tay tiếng Việt. Phương pháp nhận dạng chữ
viết tay bằng mạng nơron, phát biểu bài toán, các bước giải quyết bài toán sử dụng mạng nơron Kohonen nhận dạng ký tự viết tay rời rạc trực tuyến: xây dựng giao diện vẽ, xây dựng mạng, xử lý dữ liệu đầu vào, huấn luyện mạng, nhận dạng mạng.
3.1 Giới thiệu sơ lược về nhận dạng
Bài toán nhận dạng tuy ra đời từ thập niên 60 của thế kỷ trước nhưng vẫn luôn nhận được sự quan tâm, nghiên cứu của nhiều nhà khoa học trên thế giớị Đặc biệt là trong những thập niên gần đây, cùng với quá trình đẩy mạnh tin học hóa trong mọi lĩnh vực đời sống xã hội, nhận dạng không chỉ còn là lĩnh vực nghiên cứu lý thuyết nữa mà đã được ứng dụng rộng rãi trong thực tế cuộc sống. Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó và gán cho chúng vào một lớp dựa theo các quy luật và các mẫu chuẩn. Quá trình nhận dạng dựa vào những mẫu học biết trước gọi là học có giám sát hoặc không có mẫu thì gọi là học không có giám sát.
Có thể nêu ra một số bài toán tiêu biểu của nhận dạng với các mức độ khác nhau về xử lý và sử dụng ngôn ngữ tự nhiên của con người:
- Nhận dạng tiếng nói (speech recognition): từ sóng tiếng nói, nhận biết và chuyển chúng thành dữ liệu văn bản tương ứng.
- Nhận dạng chữ viết (optical character recognition, OCR): từ một văn bản in trên giấy, nhận biết từng ký tự và chuyển chúng thành một tệp văn bản trên máy tính.
- Dịch tự động (machine translation): từ một tệp dữ liệu văn bản trong một ngôn ngữ (tiếng Anh chẳng hạn), máy tính dịch và chuyển thành một tệp văn bản trong một ngôn ngữ khác
-Tóm tắt văn bản (text summarization): từ một văn bản dài (mười trang chẳng hạn) máy tóm tắt thành một văn bản ngắn hơn (một trang) với những nội dung cơ bản.
- Tìm kiếm thông tin (information retrieval): từ một nguồn rất nhiều tệp văn bản hay tiếng nói, tìm ra những tệp có nội dung liên quan đến một vấn đề
(câu hỏi) ta cần biết (hay trả lời). Điển hình của công nghệ này là Google, một hệ tìm kiếm thông tin trên Web, mà hầu như chúng ta đều dùng thường xuyên. Cần nói thêm rằng mặc dù hữu hiệu hàng đầu như vậy, Google mới có khả năng cho chúng ta tìm kiếm câu hỏi dưới dạng các từ khóa (keywords) và luôn “tìm” cho chúng ta rất nhiều tài liệu không liên quan, cũng như rất nhiều tài liệu liên quan đó tồn tại thì Google lại tìm không rạ - Trích chọn thông tin (information extraction): từ một nguồn rất nhiều tệp văn
bản hay tiếng nói, tìm ra những đoạn bên trong một số tệp liên quan đến một vấn đề (câu hỏi) ta cần biết hay trả lờị Một hệ trích chọn thông tin có thể
“lần” vào từng trang Web liên quan, phân tích bên trong và trích ra các thông tin cần thiết.
- Phát hiện tri thức và khai phá dữ liệu văn bản (knowledge discovery and text data mining): Từ những nguồn rất nhiều văn bản thậm chí hầu như không có quan hệ với nhau, tìm ra được những tri thức trước đấy chưa ai biết. Đây là một vấn đề rất phức tạp và đang ở giai đoạn đầu của các nghiên cứu trên thế
giớị
Ngoài ra, còn nhiều bài toán và công nghệ xử lý ngôn ngữ khác, như giao diện người máy bằng ngôn ngữ tự nhiên, các hệ hỏi đáp, các hệ sinh ra ngôn ngữ
3.2 Giới thiệu về nhận dạng chữ viết tay tiếng Việt
Các bài toán nhận dạng được nghiên cứu nhiều nhất hiện nay bao gồm nhận dạng các 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 áp dụng vào nhiều lĩnh vự như y học, dự báo thời tiết, dự báo cháy rừng, điều khiển robot, ... Trong các bài toán nhận dạng này, nhận dạng chữ viết là bài toán đang được ứng dụng phổ biến nhất hiện naỵ
Nhận dạng chữ viết bao gồm hai kiểu chính là nhận dạng chữ in và nhận dạng chữ viết taỵ Cho đến nay bài toán nhận dạng chữ in đã được giải quyết khá trọn vẹn với sự ra đời của nhiều hệ thống nhận dạng đạt tới độ chính xác gần như
tuyệt đốị Trên thế giới hiện nay có nhiều chương trình nhận dạng chữ viết (chữ in và viết tay) bằng các thứ tiếng Anh, Nga… như các hệ OMNIPAGE, READ- WRITE, WORD-SCAN,... Tiêu biểu có hệ nhận dạng chữ in dựa trên mô hình mạng nơron bốn lớp của J. Wang và J.S.N. Jean [14] đạt tới tỷ lệ chính xác 99.75%.
Ở Việt Nam hiện đã có sản phẩm VNDOCR của Viện Công nghệ thông tin nhận dạng chữ in tiếng Việt với độ chính xác tới 99%, có khả năng nhận dạng trực tiếp các loại tài liệu được quét qua máy quét, không cần lưu trữ dưới dạng tệp ảnh trung gian. Các trang tài liệu có thể được quét và lưu trữ dưới dạng tệp tin nhiều trang. Kết quả nhận dạng được lưu trữ sang định dạng của Microsoft Word, Excel... phục vụ rất tốt nhu cầu số hóa dữ liệụ Hệ như WORC của công ty 3C, VIET-IN của công ty SEATIC, Image Scon của Trung Tâm Tự động hoá thiết kế. Ngoài ra, còn có một dự án OCR Tiếng Việt có tên VietOCR, được phát triển dựa trên nền tảng mã nguồn mở tesseract-ocr do Google tài trợ. VietOCR có khả năng nhận dạng chữ Việt rất tốt. Đây là một chương trình nguồn mở Java/.NET, hỗ trợ nhận dạng cho các dạng ảnh PDF, TIFF, JPEG, GIF, PNG, và BMP. ABBYY - một hãng công nghệ hàng đầu trên thế giới về lĩnh vực nhận dạng ký tự quang học đã tiến hành nghiên cứu và triển khai công nghệ nhận dạng Tiếng Việt vào tháng 4 năm 2009.
Với công nghệ này độ chính xác trong việc nhận dạng tài liệu chữ in tiếng Việt lên tới hơn 99% (cứ nhận dạng 100 ký tự thì có chưa đến 1 ký tự sai). Công nghệ của