2.3.2.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 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
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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.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ối. Tích vô hƣớng đƣợc tính bằng cách nhân mỗi phần tử trong hai vector với nhau. Ta tính tổng của tích các phần tử của vector trọng số và vector đầu vào. 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.2.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ị
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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.
2.3.2.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 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 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.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Đầ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.
a) 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ẫ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 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 cao.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
b) Hiệu chỉnh trọng số
Toàn 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: 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ới. 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 xwt (2.7)
wt1 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.
c) 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
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
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. Đố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ào. Chúng ta sẽ xem xét hai phƣơng pháp để tính toán lỗi. 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 ra. 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 ji i w x 1 2 ) ( (2.9) 2.3.3. Nhận xét
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.
Kết luận chương 2:
Qua nghiên cứu về bài toán nhận dạng chữ viết tay và áp dụng mạng nơron vào bài toán để nhận dạng chữ viết tay cụ thể là dung mạng nơron perceptron và mạng nơron Kohonen để nhận dạng. Từ đó thấy đƣợc ƣu nhƣợc điểm của 2 phƣơng pháp này.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Chƣơng 3
XÂY DỰNG CHƢƠNG TRÌNH NHẬN DẠNG CHỮ VIẾT TAY TRỰC TUYẾN
3.1. Giới thiệu
Trong luận văn này do hạn chế về mặt thời gian và độ phức tạp của nhận dạng chữ viết tay tiếng Việt cho nên tôi chỉ hạn chế mô phỏng nhận dạng ký tự viết tay tiếng Việt rời rạc trực tuyến. Các ký tự tiếng Việt gồm 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à ký tự có dấu {Ă, Â, À, Ả, Ã, Á, Ạ, Ằ, Ẳ, Ẵ, Ắ, Ặ, Ầ, Ẩ, Ẫ, Ấ, Ậ, Ê, È, Ẻ, Ẽ, É, Ẹ, Ề, Ể, Ễ, Ế, Ệ, Ì, Ỉ, Ĩ, Í, Ị, Ô, Ơ, Ò, Ỏ, Õ, Ó, Ọ, Ồ, Ổ, Ỗ, Ố, Ộ, Ờ, Ở, Ỡ, Ớ, Ợ, Ƣ, Ù, Ủ, Ũ, Ú, Ụ, Ừ, Ử, Ữ, Ứ, Ự, Ỳ, Ỷ, Ỹ, Ý, Ỳ}.
Chƣơng trình này đƣợc huấn luyện để có thể nhận dạng ký tự viết tay do ngƣời sử dụng vẽ chúng, chức năng này tƣơng tự nhƣ nhận dạng ký tự viết tay sử dụng các thiết bị cầm tay PDA (Personal Digital Assistant ). Chƣơng trình gồm một giao diện đơn giản cho phép ngƣời sử dụng dùng chuột vẽ ký tự cần nhận dạng và tiến hành nhận dạng.
Khi vẽ ký tự có một hình chữ nhật xung quanh ký tự đó. Mục đích của hình chữ nhật này là để cắt bất kỳ khoảng trắng nào không liên quan đến ký tự làm cho chƣơng trình có khả năng không cần quan tâm đến vị trí của ký tự đƣợc viết. Ta có thể vẽ ký tự ở giữa, trên, dƣới hay bất kỳ một vị trí khác nhƣng chƣơng trình vẫn có khả năng nhận dạng đúng.
Sau khi vẽ ký tự, ký tự đƣợc cắt bỏ khoảng trắng xung quanh mà không liên quan đến ký tự, sau đó đƣợc lấy mẫu xuống bởi vì ký tự đƣợc vẽ có độ phân giải quá cao mà mạng nơron không hiểu đƣợc. Giảm mẫu hình ảnh, hình ảnh đƣợc ánh xạ vào một lƣới nhỏ có kích thƣớc 10*10. Nhìn vào đây ta có thể thấy đƣợc hình ảnh của ký tự. Nhờ lấy mẫu xuống nên số đầu vào ít hơn khi ký tự đầy đủ kích thƣớc. Đồng thời ký tự đƣợc quy về kích thƣớc cố định, do đó không còn phải quan tâm ký tự đƣợc vẽ lớn, hay nhỏ khi huấn luyện hay khi nhận dạng.
Các bƣớc giải quyết bài toán sử dụng mạng nơron nhận dạng ký tự:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Xử lý dữ liệu (phân tích ảnh). - Xây dựng mạng nơron
- Huấn luyện mạng nơron - Nhận dạng mạng nơron.
3.2. Xây dựng giao diện vẽ
- Xây dựng một giao diện đồ họa, cho phép ngƣời sử dụng dùng chuột vẽ ký tự cần nhận dạng.
- Tìm giới hạn trên, giới hạn dƣới, trái, phải của ký tự sau khi đƣợc vẽ. - Cắt bỏ tất cả các khoảng trắng xung quanh ký tự đƣợc vẽ thu đƣợc ảnh chỉ có hoàn toàn ký tự. Nhƣ thế quy về xử lý ảnh chỉ có mỗi ký tự, không quan tâm ký tự đƣợc vẽ ở vị trí nào: bên trên hay dƣới, bên trái hay bên phải
Hình 3.1 Quá trình tìm giới hạn ký tự
- Thực hiện lấy mẫu xuống ảnh của ký tự bằng cách ánh xạ ký tự vào một lƣới có kích thƣớc 10*10. Bằng cách này ta quy ký tự về một kích thƣớc cố định, nhƣ vậy không cần quan tâm đến kích thƣớc ký tự đƣợc vẽ vào là to hay nhỏ.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
3.3. Xử lý dữ liệu (phân tích ảnh)
Quá trình phân tích ảnh là quá trình tìm ra đặc tính của ký tự. Các điểm ảnh này chính là giá trị đầu vào cho cả quá trình huấn luyện và quá trình kiểm tra. Quá trình phân tích này dựa trên việc nhận dạng từ ảnh ngƣời sử dụng vẽ vào bằng phƣơng pháp tìm các điểm đen RGB(0,0,0) hoặc điểm trắng RGB(255,255,255). Kết quả thu đƣợc là ma trận điểm ảnh. Sau đó ma trận này sẽ đƣợc ánh xạ thành vector đầu vào có kích thƣớc 100 phần tử. Trƣớc khi đƣa vào mạng vector này còn đƣợc xử lý làm nổi điểm ảnh thành vector gồm các phần tử 0.5 và -0.5.
Hình 3.3 Quá trình ánh xạ từ ma trận điểm sang ma trận giá trị
3.4. Xây dựng mạng nơron
3.4 .1. Xây dựng mạng nơron Perceptron a) Chuẩn bị dữ liệu a) Chuẩn bị dữ liệu
Kích thƣớc mẫu : Không có nguyên tắc nào hƣớng dẫn kích thƣớc mẫu phải là bao nhiêu đối với một bài toán cho trƣớc.
Ở đây sử dụng mẫu lớn nhất có thể sao cho đủ khả năng lƣu trữ trong bộ nhớ trong. Tập mẫu dƣợc chia thành 2 tập con: một để xây dựng mô hình gọi là tập huấn luyện (training set), và một để kiểm nghiệm mô hình gọi là tập kiểm tra (test set). Trong chƣơng trình dùng 2/3 mẫu cho huấn luyện và 1/3 cho kiểm tra.
b) Xác định các tham số cho mạng
Chọn hàm truyền
Không phải bất kỳ hàm truyền nào cũng cho kết quả nhƣ mong muốn. Cần chọn các hàm truyền sao cho kiến trúc mạng nơron là đối xứng (tức là với
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
đầu vào ngẫu nhiên thì đầu ra có phân bố đối xứng). Nếu một mạng nơron không đối xứng thì giá trị đầu ra sẽ lệch sang một bên, không phân tán lên toàn bộ miền giá trị của output. Điều này có thể làm cho mạng rơi vào trạng thái bão hòa, không thoát ra đƣợc.
Trong quá trình xây dựng mạng nơron Perceptron, hàm truyền dạng – S đƣợc sử dụng là hàm Sigmoid: ) 1 ( 1 ) ( x e x f Xác định số nơron tầng ẩn
Việc chọn số lƣợng nơron trong tầng ẩn của một mạng Perceptron phụ thuộc vào bài toán cụ thể và vào kinh nghiệm của nhà thiết kế mạng. Nếu tập dữ liệu huấn luyện đƣợc chia thành các nhóm với các đặc tính tƣơng tự nhau thì số lƣợng các nhóm này có thể đƣợc sử dụng để chọn số lƣợng nơron ẩn.