Tính toán đầu ra của mạng Kohonen

Một phần của tài liệu Nhận dạng chữ viết tay tiếng Việt sử dụng mạng nơron (Trang 71 - 75)

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 véctơ đầ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ào. Vì vậy gán giá trị 0.5 và -0.5 cho các điểm ảnh.

Một mảng 100 giá trị đƣợc đƣa vào đầu vào. Đ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ự Ô 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ự Ô. Đ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ào, 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ào. 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 ra. 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 giờ 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 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 số của nơron là phần phức tạp nhất của quá trình này.

3.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ố nơron sẽ nhận ra đúng mẫu đầu vào. 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 đƣợc đ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. Đầ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ào. 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 ra. Đầ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ẫu.

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 số mẫu. Với chƣơng trình này là 89 ký tự đƣợc cung cấp.

Tiếp theo, hình ảnh đầu vào đƣợc lấy mẫu xuống và đƣợ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ào.

Cuối cùng mạng đƣợc cấu trúc và tập huấn luyện đƣợc đƣa vào. Với tập huấn luyện đƣợc giao, phƣơng thức "learn" có thể đƣợc gọi. 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ó tên là "evaluateErrors" đƣợc gọi để đánh giá các trọng số đang làm việc tốt nhƣ thế nào. Đ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ào. 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 dựa trên tập huấn luyện truyền đến nơron đầu ra tốt nhƣ thế nào.

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ại.

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 trở thành nơron 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à 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"

Một phần của tài liệu Nhận dạng chữ viết tay tiếng Việt sử dụng mạng nơron (Trang 71 - 75)