Thông thƣờng, mạng nơron Kohonen gồm một lớp đầu vào và một lớp đầu ra. Đầu tiên chúng ta xét về đầu vào và đầu ra của mạng.
Các nơron đầu vào chỉ đơn giản cung cấp dữ liệu vào cho mạng chứ không có chức năng xử lý gì trên đấy. Đối với mạng nơron Kohonen yêu cầu đầu vào đƣợc chuẩn hóa có giá trị trong phạm vi từ -1 đến +1.
Đầu ra của mạng Kohonen không bao gồm đầu ra của một số nơron. Đối với mạng nơron truyền thẳng, nếu có năm nơron đầu vào thì một đầu ra bao gồm năm giá trị. Còn mạng nơron Kohonen khi có một mẫu đƣợc đƣa vào mạng thì chỉ có một nơron đầu ra đƣợc lựa chọn gọi là nơron chiến thắng. Nơron chiến thắng này chính là đầu ra của mạng nơron Kohonen. Đầu ra của mạng nơron Kohonen thƣờng là chỉ số của nơron chiến thắng, ví dụ Nơron #5. Thông thƣờng thì các nơron chiến thắng này đại diện cho các nhóm dữ liệu đƣa vào mạng Kohonen. Cấu trúc của một mạng nơron Kohonen đƣợc cho nhƣ hình 1.7:
Hình 1.8 dƣới đây là một mạng Kohonen điển hình.
Hình 1.8: Mạng nơron Kohonen điển hình 1.3.3. Thực hiện mạng nơron Kohonen [9]
1.3.3.1 Chuẩn hóa đầu vào
Mạng Kohonen yêu cầu đầu vào đƣợc chuẩn hóa. Dữ liệu đầu vào nên có giá trị nằm trong khoảng -1 đến 1. Nếu một 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 véctơ của dữ liệu đầu vào:
length(x) = N i 1 x2 i (1.14)
Sử dụng chiều dài véctơ, chúng ta có thể quyết định hệ số chuẩn hóa:
N i i x 1 2 1 (1.15)
1.3.3.2 Tính toán đầu ra cho mỗi nơron
Để tính toán đầu ra cho mỗi véctơ đầu vào thì phải cùng xem xét véctơ đầ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ối. Tích vô hƣớng đƣợc tính bằng cách nhân mỗi phần tử trong hai véctơ với nhau. Ta tính tổng của tích các phần tử của véctơ trọng số và véctơ đầu vào. Giả sử đầu vào là: X= {x1, x2, ... ,xN}, trọng số là W={wjl, wj2, ... , wjN} thì tích vô hƣớng của X và W là: t = ji N i iw x 1 (1.16)
Xét đầu ra của nơron 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.
output(j) = ( ji N i iw x 1 ) N i i x 1 2 1 (1.17)
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 va chia cho 2, ta đƣợc:
output(j) = [output(j) + 1] * 0.5 (1.18)
1.3.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 (khoảng cách nhỏ 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 ra. 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ầu.
1.3.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 1ỗ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 theo. Các nơron chiến thắng là khác nhau đối với các mẫu khác nhau. Khả năng nhận dạng các mẫu riêng biệt của chúng 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.
Đầ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:
- 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ào.
- Nếu tỷ lệ lỗi chỉ cải thiện rất nhỏ thì chu kỳ này sẽ đƣợc bỏ qua. 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 đầu. 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.
1.3.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ụ. Bởi vì dao động của véctơ trọng số quá lớn để phân lớp mẫu. 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ày. Phƣơng pháp này cho phép tăng tốc độ huấn luyện ban đầu.
Tốc độ học chỉ là một biến đƣợ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 cao.
1.3.3.4.2 Hiệu chỉnh trọng số
Tòan bộ bộ nhớ của mạng nơron Kohonen đƣợc lƣu trong trọng số kết nối giữa đầu vào và lớp đầu ra. Trọng số đƣợc hiệu chỉnh ở mỗi thời kỳ. Một thời kỳ 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 ra. 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ới. 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ới. 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ào. Phƣơng pháp sử dụng phƣơng trình sau:
(1.19)
Biến x là véctơ 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ới. thể hiện chiều dài véctơ. 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:
(1.20) (1.21)
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.
1.3.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ỗi. 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. Còn phƣơng pháp học không giám sát thì 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ào. Chúng ta sẽ xem xét hai phƣơng pháp để tính toán lỗi. Không có cách chính thức nào để tính toán lỗi cho mạng nơron Kohonen. Có thể tính lỗi theo tỷ 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à các nhóm đầu ra. Bản thân 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 tlức:
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 ra. 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ểu. 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 ở phần trƣớc, 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 có giám sát, học cạnh tranh, mạng nơron Kohonen cấu trúc đơn giản mà hiệu quả cao.
Mạng nơron Kohonen đƣợc sƣ̉ dụng trong rất n hiều ƣ́ng d ụng, thông thƣờng trong việc gom cụm và /hoặc mô hình hóa dƣ̃ liệu đa chiều thành các lƣới có hai hoặc ba chiều . Có thể kể đến là nhận dạng tiếng nói (Kohonen, 1989, robotics (Ritter et al ., 1989), máy ảo (Oja, 1992), tối ƣu tổ hợp (Fort, 1988), phân lớp (Kohonen,1984)....
CHƢƠNG II
Ứ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
2.1. Tổng quan về bài toán 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 nó 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ới. Đặc biệt là trong những thập kỷ 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 các 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 (tự học).
Các bài toán nhận dạng tiêu biểu đƣợ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 chữ viết (optical character recognition – OCR): từ một văn bản in hoặc viết tay 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.
- 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.
- Dịch tự động (machine translation): từ một tệp dữ liệu văn bản trong một ngôn ngữ (ví dụ nhƣ tiếng Anh), 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 (gồm nhiều trang chang han), máy tính tóm tắt thành một văn bản ngắn hơn với những nội dung cơ bản.
- Tìm kiếm thông tin (information retrieval): từ một nguồn gồm 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 đề (một câu hỏi) ta cần biết (hay cần 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 hết chúng ta đều sử 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 chỉ 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, ngƣợc lại, có rất nhiều tài liệu liên quan tồn tại thì Google lại tìm không ra.
- 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, là một số tệp liên quan đến một vấn đề (câu hỏi) ta cần biết (hay cần trả lời). 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 đó 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ới.
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ữ ... [1]. Chúng đƣợc áp dụng vào nhiều lĩnh vực nhƣ y học, dƣợc học, xây dựng, quản lý giao thông, dự báo cháy rừng, tự động hóa điều khiển robot, điều khiển các thiết bị bằng giọng nói, …. Một số sản phẩm đƣợc nghiên cứu và đã đƣợc ứng dụng trên thế giới và ở Việt Nam nhƣ: xe đẩy thuốc thông minh tại các bệnh viện ở Anh sử dụng công nghệ nhận dạng mã vạch trên tay các bệnh nhân để phát thuốc và theo dõi sức khỏe cho bệnh nhân tránh những sự nhầm lẫn không đáng có. Tại Việt Nam, các kỹ sƣ của công ty TOSY [8]đã nghiên cứu và sáng tạo ra 1 con robot đánh bóng bàn (có tên là Topio) tại International Robot Exhibition 2007 - triển lãm robot lớn nhất thế giới khai mạc ngày 29/11, tại Tokyo. Trong đó có sử dụng công nghệ nhận dạng bóng để di chuyển và lập chiến thuật đánh trả…
Bên cạnh sự phát triển và ứng dụng rộng rãi đó là các phƣơng pháp nhận dạng đã đƣợc sử dụng, dƣới đây là các phƣơng pháp nhận dạng cơ bản:
- RFID (Radio Frequency Identification) là kỹ thuật nhận dạng bằng sóng vô tuyến từ xa, là hệ thống không dây cho phép tự động nhậ n dạng thu nhập dƣ̃ liệu kể cả dƣ̃ liệu không tiếp xúc đọc hoặc tài liệu viết tay . RFID ƣu điểm là: RFID xử lý tự động, tiết kiệm năng lƣợng …và nhƣợc điểm là: RFID có giá thành cao nên không thể ứng dụng rộng rãi, chƣa có chuẩn chung, chƣa có các giải pháp hiệu quả ).
- SVM (Support Vector Machines) là một phƣơng pháp máy học tiên tiến đã có nhiều thành công không chỉ trong các lĩnh vực khai phá dữ liệu mà còn trong lĩnh vực nhận dạng. Trong những thập niên gần đây, SVM đã đƣợc đánh
giá là một trong những phƣơng pháp phân lớp có độ chính xác rất cao và cũng đã đƣợc áp dụng nhiều trong các bài toán nhận dạng chữ viết tay.
- Dynamic programming: là phƣơng pháp dùng để giải quyết các bài toán