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 ABBYY chấp nhận hầu hết các định dạng ảnh đầu vào như: PDF, TIFF, JPEG, GIF, PNG, BMP, PCX, DCX, DjVụ.. Kết quả nhận dạng được lưu trữ dưới các định dạng MS Word, MS Excel, HTML, TXT, XML, PDF, PDF 2 lớp, trong đó định dạng PDF 2 lớp là một định dạng hoàn hảo cho việc lưu trữ và khai thác tài liệụ Với định dạng này, người đọc có thểđọc trung thực ảnh gốc nhờ lớp ảnh bên trên, các công cụ tìm kiếm có thể tìm kiểm toàn văn trên văn bản nhờ lớp text nhận dạng
được bên dướị Người sử dụng có thể thử nghiệm công nghệ nhận dạng của ABBYY (miễn phí) tại trang web: www.sohoạcom.vn.
Cả free-ocr.com dùng bộ máy (engine) nhận dạng chữ in Tesseract (Tesseract OCR engine) - bộ máy OCR này được phát triển bởi HP Labs trong giai
đoạn 1985-1995 và bây giờ là Google (http://codẹgooglẹcom/p/tesseract-ocr). Free-ocr.com là dịch vụ miễn phí, hỗ trợ các định dạng ảnh thông dụng JPG, GIF, TIFF, BMP với dung lượng mỗi tập tin tải lên tối đa 2MB. Dịch vụ này cho phép trong mỗi giờ bạn chỉ có thể thực hiện 10 lần nhận dạng và trích xuất đoạn văn bản từảnh.
Phần mềm nhận dạng chữ viết tay tiếng Việt của Huỳnh Hữu Lộc và Lưu Quốc Hải, Khoa Khoa học và Kỹ thuật máy tính Trường ĐH Bách khoa (ĐH Quốc gia TPHCM), độ chính xác là 84%, tốc độ nhận dạng 1.000 ký tự/giây, hiện nay công trình đã đạt được kết quảở giai đoạn nhận dạng từng ký tự riêng lẻ.
Việc nhận dạng chữ in bằng tay, chữ thảo bằng tay, và thậm chí những phiên bản đánh máy được in ra của vài chữ (đặc biệt là những chữ có số chữ cái lớn), vẫn còn là một đề tài của các nghiên cứụ
Các hệ thống nhận dạng chữ viết tay đã đạt được những thành công lớn về
Newton đi tiên phong trong công nghệ nàỵ Những giải thuật sử dụng trong những thiết bị này sử dụng những ưu điểm rằng thứ tự, tốc độ, và hướng của những đoạn dòng đơn lẻđã được biết trước. Tương tự, người dùng có thểđược yêu cầu sử dụng chỉ một vài loại kiểu chữ nhất định. Những phương pháp này không thể dùng được trong phần mềm scan tài liệu giấy, do đó sự nhận dạng chính xác văn bản in bằng tay vẫn là một vấn đề lớn đang được bỏ ngỏ. Với mức chính xác từ 80% đến 90%, những chữ in bằng tay sạch sẽ có thểđược nhận ra, nhưng độ chính xác đó vẫn tạo ra hàng tá lỗi mỗi trang, khiến cho công nghệ đó chỉ hiệu quả trong vài trường hợp nào đó. Sựđa dạng của nhận dạng ký tự quang học (Optical Character Recognition, viết tắt là OCR) hiện nay được biết đến trong công nghiệp là ICR, (Intelligent Character Recognition - Nhận dạng Ký tự Thông minh). là sự phát triển ở mức cao hơn của công nghệ nhận dạng chữ in. Đối tượng nhận dạng của công nghệ ICR không chỉ là chữ in mà còn bao gồm cả chữ viết taỵ Công nghệ nhận dạng chữ viết tay thường được dùng trong việc nhận dạng thông tin từ các tài liệu dạng biểu mẫụ Trên các tài liệu dạng này, một số thông tin được điền bằng tay tại các vị trí cốđịnh (tờ khai mở tài khoản ngân hàng, tờ khai hải quan, phiếu đăng ký…).
Việc nhận dạng chữ in bằng tay, chữ thảo bằng tay, và thậm chí những phiên bản đánh máy được in ra của vài chữ (đặc biệt là những chữ có số chữ cái lớn), vẫn còn là một đề tài của các nghiên cứụ
Nhận dạng chữ viết tay là một lĩnh vực nghiên cứu sôi nổi, với tỷ lệ nhận dạng thậm chí còn thấp hơn cả văn bản in bằng taỵ Tỷ lệ nhận dạng cao hơn của những bản viết tay chung chung hầu như là không thể nếu không sử dụng thông tin về ngữ pháp và văn cảnh. Ví dụ như, nhận dạng cả một chữ từ một cuốn từđiển thì dễ hơn là việc cố gắng lấy ra những ký tự rời rạc từđoạn đó. Đọc dòng Tổng cộng của một tờ séc (luôn luôn được viết bằng số) là một ví dụ trong đó sử dụng những từ điển nhỏ hơn có thể tăng tỷ lệ nhận dạng rất nhiềụ Kiến thức về ngữ pháp của một ngôn ngữ được scan cũng có thể giúp xác định một từ có thể là động từ hay danh từ, ví dụ như vậy, sẽ cho phép độ chính xác cao hơn. Hình dạng của chữ viết
tay bản thân nó đã không chứa đủ thông tin về để nhận dạng chính xác (hơn 98%) tất cả những đoạn chữ viết tay [15].
Nhận dạng chữ viết tay đang là vấn đề thách thức lớn đối với các nhà nghiên cứu, bài toàn này chưa thể giải quyết trọn vẹn được vì nó phụ thuộc quá nhiều vào người viết và sự biến đổi quá đa dạng trong cách viết và trạng thái tinh thần của từng người viết. Cho đến nay, bài toán nhận dạng chữ viết tay cũng đã có một số kết quả khả quan, chủ yếu tập trung trên các tập dữ liệu chữ số viết tay như USPS và MNIST, một số kết quả khác mở rộng đối với các chữ hệ La tinh, Hy lạp.... Đặc biệt
đối với việc nhận dạng chữ viết tay tiếng Việt lại càng gặp nhiều khó khăn hơn do bộ ký tự tiếng Việt có nhiều ký tự có hình dáng rất giống nhau, chỉ khác nhau chút ít về phần dấụ Do đó có rất ít kết quả nghiên cứu về nhận dạng chữ viết tay tiếng Việt và các kết quả nghiên cứu chủ yếu cũng chỉ tập trung vào chữ viết tay trực tuyến . Bài toán tôi đặt ra ởđây là xây dựng một mô hình nhận dạng ký tự Việt viết tay rời rạc trực tuyến. Bộ ký tự tiếng Việt bao gồm tập ký tự không dấu {A, B, C, D, Đ, E, G, H, I, K, L, M, N, O, P, Q, R, S, T, U, V,X, Y} và các ký tự có dấu {Ă, Â, À, Ả, Ã, Á, Ạ, Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ề, Ể, Ễ, Ế, Ệ, Ì, Ỉ, Ĩ, Í, Ị, Ô,