Quá trình nhận dạng bắt đầu khi mà người sử dụng vẽ ký tự và nhấn vào nút nhận dạng. Đầu tiên ký tự được lấy mẫu xuống thành hình ảnh kích thước 10*10. Hình ảnh được lấy mẫu xuống phải được sao từ mảng hai chiều đến vector đầu vào mà sẽ dùng để đưa vào mạng. Mạng nơron yêu cầu làm nổi điểm đầu vàọ Vì vậy gán giá trị 0.5 và -0.5 cho các pixel.
Một mảng 100 giá trị được đưa vào đầu vàọ Điều này được thực hiện bằng cách gửi các mảng đầu vào đến phương thức "winner" của mạng Kohonen. Nó sẽ
trả lại nơron chiến thắng của 100 đầu vào được lưu trong số nguyên "best".
Nơron chiến thắng không phải là quá hữu ích, bởi vì nó không cho bạn thấy những ký tựđã thực sựđược nhận dạng. Để sắp xếp các nơron với các ký tự nhận dạng được, mỗi hình ảnh ký tự mà mạng đã được đào tạo phải được đưa vào mạng và nơron chiến thắng được xác định. Ví dụ, muốn đưa hình ảnh huấn luyện cho ký tự J vào trong mạng, và nơron chiến thắng là nơron #4, thì phải biết rằng nơron #4 là nơron được học để nhận dạng ra mẫu của ký tự J. Điều này được thực hiện bằng cách gọi phương thức "mapNeurons". Phương thức "mapNeurons" trả lại một mảng ký tự. Chỉ số của mỗi phần tử mảng tương ứng với nơron nhận dạng ký tựđó.
Phần lớn công việc thực tếđược thực hiện bằng mạng nơron được thực hiện bằng phương thức winner. Đầu tiên phương thức này thực hiện chuẩn hóa đầu vàọ Tính giá trị đầu ra cho mỗi nơron. Nơron nào có giá trị lớn nhất thì được chọn là nơron chiến thắng. Đầu tiên biến "biggest" được thiết lập giá trị nhỏ để chỉ rằng chưa có nơron chiến thắng.
Trọng số của mỗi nơron đầu ra được tính bằng cách lấy tích vô hướng của trọng số mỗi nơron đầu ra đến nơron đầu vàọ Tích vô hướng được tính bằng cách nhân mỗi giá trịđầu vào với trọng số giữa nơron đầu vào và đầu rạ Những trọng số
này được quyết định trong quá trình huấn luyện. Đầu ra được giữ và nếu cho đến nay nó là giá trị lớn nhất thì nó được thiết lập là nơron chiến thắng.
Ta thấy rằng tính kết quả từ mạng nơron là một quá trình rất nhanh. Trên thực tế xác định trọng lượng của nơron là phần phức tạp của quá trình nàỵ
4.2.6.2 Huấn luyện mạng nơron Kohonen
Học là quá trình lựa chọn một ma trận trọng số neuron sẽ nhận ra đúng mẫu
đầu vàọ Một mạng Kohonen học bằng cách liên tục đánh giá và tối ưu hóa một ma trận trọng số. Để làm điều này một ma trận trọng số khởi tạo phải được quyết định. Nó được chọn bằng các giá trị ngẫu nhiên.
Khi ma trận trọng số được khởi tạo ngẫu nhiên thì quá trình huấn luyện có thể bắt đầụ Đầu tiên, đánh giá ma trận trọng sốđể xác định mức lỗi hiện hành. Lỗi này được xác định bởi quá trình ánh xạ đầu vào huấn luyện đến đầu ra tốt như thế
nàọ Lỗi được tính toán bằng phương thức "evaluateErrors" của lớp KohonenNetwork. Nếu mức lỗi nhỏ, nhỏ hơn 10%, thì quá trình được hoàn thành.
Quá trình huấn luyện bắt đầu khi người sử dụng nhấn vào nút: “Học”. Quá trình này tính số nơron đầu vào và đầu rạ Đầu tiên số nơron đầu vào được quyết
định từ kích thước của hình ảnh lấy mẫu xuống là 100. Còn sốđầu ra tương ứng với số ký tự mẫụ
Bây giờ kích thước của mạng nơron được xác định, tập huấn luyện và mạng nơron phải được cấu trúc. Tập huấn luyện được cấu trúc để giữ số lượng chính xác
Tiếp theo, hình ảnh đầu vào được lấy mẫu xuống được sao chép đến tập huấn luyện. Đây là vòng lặp cho tất cả mẫu đầu vàọ
Cuối cùng mạng được cấu trúc và tập huấn luyện được đưa vàọ Với tập huấn luyện được giao phương thức "learn" có thể được gọị Nó sẽ điều chỉnh ma trận trọng số cho đến khi mạng được huấn luyện.
Phương thức học sẽ lặp với số vòng lặp không xác định. Nhưng chắc chắn rằng nó sẽ mất nhiều hơn một lần lặp. Khi số mẫu huấn luyện phù hợp với nơron
đầu ra, huấn luyện xảy ra rất nhanh.
Một thủ tục được gọi là "evaluateErrors" được gọi để đánh giá các trọng số đang làm việc tốt như thế nàọ Điều này được xác định bằng cách nhìn vào dữ liệu huấn luyện đến nơron đầu ra tốt như thế nàọ Nếu có nhiều nơron đầu ra được kích hoạt cho cùng một mẫu huấn luyện, thì tập trọng số là không tốt. Một tỷ lệ lỗi được tính toán nó dựa trên tập huấn luyện truyền đến nơron đầu ra tốt như thế nàọ
Một khi lỗi được xác định chúng ta phải xem nó có dưới mức lỗi tốt nhất từ
trước đến giờ không. Nếu nó thỏa mãn thì lỗi này được đưa vào mức lỗi tốt nhất và các trọng số nơron được duy trì bằng cách sao chép để lưu lạị
Tổng số nơron chiến thắng sau đó được tính toán. Điều này cho phép ta xác
định trường hợp không có nơron đầu ra nào được kích hoạt. Ngoài ra, nếu tỷ lệ lỗi dưới mức chấp nhận được (10%) thì quá trình huấn luyện dừng. Nếu không có nơron nào chiến thắng thì một nơron buộc phải chiến thắng.
Bây giờ ma trận trọng số đầu tiên được đánh giá, nó được điều chỉnh dựa trên lỗi của nó. Các giá trị điều chỉnh được tính toán khi lỗi được xác định. Quá trình hiệu chỉnh ma trận trọng số gồm hai bước là lỗi tính toán lỗi và điều chỉnh ma trận trọng số cho đến khi lỗi dưới 10%.
Trên đây là phương pháp huấn luyện mạng nơron. Phương pháp điều chỉnh và tính toán lỗi được chỉ ra trong tập tin "KohonenNetwork.java"
4.3 Chương trình mô phỏng
4.3.1 Các chức năng của chương trình
Hình 4.1 Giao diện chương trình mô phỏng
¾ Vẽ chữ: Vùng để vẽ ký tự lên.
¾ Tập mẫu: Chứa các ký tự mẫu dùng để huấn luyện.
¾ Mẫu: Tải tập ký tự mẫu đã tạo sẵn trong file: samplẹdat.
¾ Ghi: Ghi lại tập ký tự mẫu vào file: samplẹdat.
¾ Học: Huấn luyện mạng.
¾ Xóa mẫu: Xóa một ký tự mẫu được chọn.
¾ Thêm ký tự: Dùng để thêm ký tự vào tập mẫụ
¾ Nhận dạng: Nhận dạng ký tự vẽ vàọ
¾ Xóa chữ: Xóa ký tựđược vẽ trong vùng vẽ chữ.
Chúng ta có thể tải tập huấn luyện ra từ file tạo sẵn samplẹdat bằng cách nhấn nút “Mẫu” hoặc chúng ta có thể tự nhập mẫu để huấn luyện bằng cách vẽ ký tự
vào vùng vẽ ký tự rồi nhấn “Thêm ký tự”, khi đó có một hộp thoại nhắc bạn đánh vào ký tự tương ứng để khi nhận dạng nó sẽ chỉ ra ký tự tương ứng với ký tự vừa vẽ.
Sau khi nhập xong tập mẫu thì nhấn nút “Học” để huấn luyện cho mạng nơron Kohonen. Quá trình huấn luyện hoàn thành, có thể thực hiện nhận dạng ký tự
bằng cách vẽ ký tự rồi nhấn “Nhận dạng”. Khi đó ký tựđược hiển thị trên lưới kích thước 10*10.
Có thể xóa ký tự bằng cách nhấn nút “Xóa ký tự”, hoặc xóa mẫu trong tập mẫu bằng cách chọn ký tự cần xóa rồi nhấn nút “Xóa”. Có thể ghi lại tập mẫu bằng cách nhấn nút “Ghi” thì tập mẫu được tạo ra sẽ lưu vào file samplẹdat.
4.3.2 Kết quả nhận dạng
- Để nhận dạng ký tự ta vẽ ký tự cần nhận dạng vào vùng vẽ chữ.
- Nhấn nút nhận dạng.
- Ký tựđồng thời được hiển thị trên lưới kích 10*10.
- Đồng thời đưa ra ký tự nhận dạng tương ứng với ký tự cần nhận dạng đã
Một số kết quả minh họa
Hình 4.2 Nhận dạng ký tựĂ
Hình 4.4 Nhận dạng ký tựỜ
Hình 4.6 Nhận dạng ký tựẤ
4.3.3 Kết luận
Chương trình có thể nhận dạng với độ chính xác rất caọ Nếu ký tự nhận dạng chưa được chính xác ta có thể thêm mẫu và huấn luyện lại cho ký tự đó đến khi nhận dạng được ký tự đó chính xác. Nếu các ký tự gần giống nhau khi nhận dạng dễ lẫn sang nhau thì khi huấn luyện ta thêm mẫu tương ứng với các ký tự đến khi nào đạt được tỷ lệ nhận dạng caọ
Chương trình nhận dạng chính xác hơn với các ký tự không dấu đến 96%,
đối với ký tự có dấu thì độ chính xác lớn hơn 85%. Đối với ký tự có dấu độ chính xác giảm hơn so với trường hợp không có dấu vì trường hợp này các ký tự khác nhau rất ít, nên số lượng mẫu huấn luyện cho các các ký tự có dấu cần nhiều hơn.
Để nhận dạng được nhiều kiểu viết khác nhau thì tập mẫu huấn luyện cho mỗi ký tự phải có nhiều dạng phong phú, tương ứng với các cách viết mà người sử
của bài toán nhận dạng chữ viết tay đó là sự đa dạng của chữ viết tay, đặc biệt là chữ viết tay tiếng Việt.
Như vậy chương trình mô phỏng cho nhận dạng ký tự viết tay tiếng Việt trực tuyến đã đạt được mục tiêu của bài toán phức đã đặt rạ Nghiên cứu về mạng nơron
đã là một hướng nghiên cứu hiện nay còn rất mới mẻ và có nhiều hứa hẹn. Với hướng tiếp cận rất mới này áp dụng cho giải quyết bài toán nhận dạng ký tự viết tay tiếng Việt trực tuyến vốn rất phức tạp ở những đặc điểm:
- Ký tự viết tay trực tuyến phải thêm phần tạo giao diện để vẽ ký tự, so với việc nhập đầu vào là file ảnh của ký tự viết taỵ
- Ký tự viết tay thì hình dạng của ký tự rất phong phú đa dạng phụ thuộc nhiều vào người viết, bởi mỗi người có một cách viết khác nhaụ
- Ký tự viết tay tiếng Việt có số lượng lớn, lớn hơn rất nhiều so với các ký tự
theo các chuẩn khác. Ví dụ: chuẩn tiếng Việt có 89 ký tự gồm ký tự không dấu và có dấu, chuẩn tiếng Anh chỉ gồm 26 ký tự không dấụ Mặt khác các ký tự lại rất giống nhau nên dễ nhầm lẫn trong quá trình nhận dạng.
Như vậy khi giải quyết bài toán ởđây phải đáp ứng được các yêu cầu:
- Giải quyết được sự phức tạp của việc xử lý dữ liệu đầu vàọ
- Giải quyết được việc xử lý khối lượng dữ liệu lớn.
- Giải quyết được độ chuẩn xác trong quá trình nhận dạng.
- Giải quyết được mức độ tổng quát, đa dạng, phong phú trong quá trình xây dựng và huấn luyện mạng đểđạt được độ chính xác cao khi nhận dạng.
CHƯƠNG 5 KẾT LUẬN
Mặc dù những nghiên cứu phôi thai đầu tiên của Lý thuyết mạng nơron đã bắt đầu từ những năm 40 của thế kỷ, nhưng chỉ trong một vài thập niên trở lại đây nó mới thực sự có được những ứng dụng quan trọng và mang đến nhiều hứu hẹn về
một thế hệ các máy thông minh mớị Chính vì vậy, đối với riêng tôi nó còn hơn cả
một điều mới mẻ, nó là một bộ môn lý thuyết của tương laị Điều này đã thúc đẩy tôi vừa thực hiện nghiên cứu lý thuyết vừa cố gắng cài đặt một phần mềm thử
nghiệm với hy vọng nắm được những gì được gọi là căn bản nhất trong khoảng thời gian thực hiện bản luận văn nàỵ Theo sự gợi ý của thầy giáo hướng dẫn, tôi đã lựa chọn đề tài: “Nghiên cứu mạng nơron và ứng dụng mạng nơron trong nhận dạng ký tự viết tay tiếng Việt”.
Sau thời gian nghiên cứu những kết quả chính mà tôi đã đạt được và chưa đạt
được (kết quả hướng tới) có thể tổng kết lại như sau:
5.1 Các kết quảđã đạt được 5.1.1 Về mặt lý thuyết
♦ Nắm được khái niệm về những thành phần cơ bản và các kiểu kiến trúc cơ
bản của mạng nơron, phân biệt được một số loại mạng nơron.
♦ Nắm được ý nghĩa của việc học hay tích luỹ, trong đó có vai trò to lớn của các quy tắc học, mô hình học và thuật toán học đối với nhiều khả năng ứng dụng khác nhaụ
♦ Tìm hiểu các ứng dụng của mạng nơron trong thực tế.
♦ Nắm được những kiến thức cơ bản về mô hình mạng nơron Kohonen và cách xây dựng một mô hình mạng nơron trong thực tế.
♦ Nắm được quy trình chung trong xây một dựng hệ thống nhận dạng ký tự
♦ Vận dụng mạng nơron Kohonen để xây dựng mô phỏng nhận dạng ký tự
viết tay tiếng Việt rời rạc trực tuyến.
Ngoài ra việc xây xựng phần mềm thử nghiệm đã cho phép tôi:
♦ Kiểm nghiệm được những kiến thức lý thuyết thu nhận được.
♦ Có cái nhìn rõ nét hơn về các kỹ thuật ứng dụng lý thuyết vào thực tế.
♦ Bên cạnh đó, nâng cao được kỹ năng phân tích, thiết kế và lập trình trong việc giải quyết bài toán cụ thể.
5.1.2 Về mặt thực tiễn
Đưa ra phương pháp xử lý với ký tự viết tay tiếng Việt rời rạc, xây dựng thành công hệ thống nhận dạng ký tự viết tay tiếng Việt rời rạc sử dụng mô hình mạng nơron Kohonen. Góp phần giải quyết bài toán còn dang dở chưa được giải quyết triệt để.
Tuy biết rằng những điều thu nhận được mới chỉ là một phần rất nhỏ trong một nghành nghiên cứu lớn, tôi tự nhận thấy đã gặt hái được những thành công nhất
định trong giai đoạn nghiên cứu đầu tiên.
5.2 Hướng phát triển tiếp theo
Bên cạnh các kết quảđã đạt được, còn có những vấn đề chưa được luận văn này giải quyết hay đề cập tớị Trong thời gian tới tôi sẽ tiếp tục nghiên cứu và hoàn thiện đề tài với các mục tiêu chính được đặt ra như sau:
♦ Nâng cao hiệu quả và độ chính xác trong hệ thống nhận dạng ký tự viết tay rời rạc tiếng Việt trực tuyến.
♦ Xây dựng được hệ thống nhận dạng cả chữ viết tay tiếng Việt sử dụng mạng nơron.
5.3 Một vài suy nghĩ sau khi nghiên cứu
Trong bối cảnh hiện nay khi mà các nghiên cứu đang chuyển sang hướng xây dựng các hệ thống thông minh, mạng nơuron nổi lên như một giải pháp đầy hứu hẹn. Nó thể hiện những ưu điểm nổi bật của mình so với các hệ thống khác ở khả
khác biệt giữa bộ óc con người với các máy thông minh nhân tạọ Nhưng cũng chính vì thế mà nó đòi hỏi một độ phức tạp rất cao trong thiết kế và cài đặt các hệ
thống ứng dụng để có thể đạt được một tính năng tốt. Khả năng này sẽ được cải thiện không ngừng trong tương lai cùng với sự phát triển của các mạch tích hợp phần cứng cỡ lớn và các bộ nhớ ngày càng lớn hơn cho các phần mềm máy vi tính. Chính vì điều này mà mạng neuron được coi là “kỹ thuật của thế kỷ 21”.
Các nhà bác học vẫn luôn tìm cách khám phá ra những quy tắc học và thuật toán học mới hiệu quả hơn. Một điều dễ nhận thấy là mặc dù mạng nơron mô phỏng trực tiếp bộ óc con người về mặt cấu trúc và trong mục tiêu của quá trình học (điều chỉnh các trọng số synnapse) nhưng các quy tắc học được đưa ra vẫn thuần tuý mang tính toán học và chưa thực sự là một sự bắt chước về mặt thần kinh sinh học của quá trình học xảy ra trong bộ óc...
Tóm lại, chúng ta có thể khẳng định một điều rằng mục tiêu tiến gần tới sự
hoàn hảo của bộ máy nhận thức của con người vẫn là một thách thức quá lớn ngay cảđối với một bộ môn lý thuyết mới như Lý thuyết mạng neuron mà bản chất tương tự thần kinh sinh học về cấu trúc cho chúng ta những “tia hy vọng” đáng lạc quan.
TÀI LIỆU THAM KHẢO
Tài liệu tham khảo tiếng Việt: