Các giai đoạn phát triển
Nhận dạng chữ được biết đến từ năm 1900, khi nhà khoa học người Nga Alan Turing (1912-1954) phát triển một phương tiện trợ giúp cho những người mù.
Các sản phẩm nhận dạng chữ thương mại đã xuất hiện từ những năm 1950, khi máy tính lần đầu tiên tích hợp tính năng nhập và lưu trữ dữ liệu hai chiều thông qua bút viết trên bảng cảm ứng Công nghệ này đã mở ra cơ hội cho các nhà nghiên cứu trong việc phát triển các giải pháp nhận dạng chữ viết tay trực tuyến.
Mô hình nhận dạng chữ viết đầu tiên được giới thiệu vào năm 1951 bởi M Sheppard với tên gọi GISMO, một robot có khả năng đọc và viết Đến năm 1954, J Rainbow đã phát triển máy nhận dạng chữ đầu tiên, tuy nhiên, nó chỉ có thể đọc chữ in hoa và với tốc độ khá chậm.
Năm 1967, Công ty IBM đã thương mại hóa hệ thống nhận dạng chữ.
Sự tiến bộ của phần cứng máy tính và thiết bị thu nhận dữ liệu đã tạo điều kiện lý tưởng cho việc triển khai các ứng dụng nhận dạng chữ, nhờ vào các phương pháp luận nhận dạng đã được phát triển trước đó.
Các hướng tiếp cận theo cấu trúc và đối sánh được áp dụng trong nhiều hệ thống nhận dạng chữ.
Trong giai đoạn này, nghiên cứu chủ yếu tập trung vào kỹ thuật nhận dạng hình dáng mà chưa áp dụng cho thông tin ngữ nghĩa, dẫn đến hiệu suất nhận dạng bị hạn chế và không hiệu quả trong nhiều ứng dụng thực tế.
Các hệ thống nhận dạng thời gian thực được chú trọng trong giai đoạn này.
Các kỹ thuật nhận dạng kết hợp với phương pháp học máy mang lại hiệu quả cao trong việc xử lý dữ liệu Những công cụ học máy nổi bật như mạng nơ-ron, mô hình Markov ẩn, SVM (Support Vector Machines) và xử lý ngôn ngữ tự nhiên đã chứng tỏ khả năng vượt trội trong nhiều ứng dụng thực tiễn.
Các bước xử lý cho bài toán nhận dạng hoàn chỉnh
Handwriting recognition typically involves five stages: preprocessing, segmentation, representation, training and recognition, and postprocessing.
Hình 1- 1: Các bước trong nhận dạng chữ viết tay
Tiền xử lý (preprocessing): giảm nhiễu cho các lỗi trong quá trình quét ảnh, hoạt động viết của con người, chuẩn hóa dữ liệu và nén dữ liệu.
Tách chữ (segmentation): chia nhỏ văn bản thành những thành phần nhỏ hơn, tách các từ trong câu hay các kí tự trong từ.
Giai đoạn trích trọn đặc trưng đóng vai trò quan trọng trong việc nhận dạng chữ viết tay, giúp tăng cường độ chính xác và giảm thiểu phức tạp Để đạt được điều này, cần biểu diễn thông tin chữ viết một cách cô đọng và rút trích các đặc điểm riêng biệt nhằm phân biệt các ký tự Luận văn này tập trung nghiên cứu mô hình học máy theo chiều sâu, cho phép huấn luyện và sử dụng dữ liệu mà không cần phải trích rút đặc trưng từ ảnh đầu vào.
Huấn luyện và nhận dạng là những phương pháp quan trọng trong việc phân tích dữ liệu, bao gồm các kỹ thuật như so trùng mẫu, thống kê, mạng neuron, mô hình Markov ẩn và trí tuệ nhân tạo Trong luận văn này, tôi sẽ áp dụng mô hình học máy theo chiều sâu (deep learning) để thực hiện huấn luyện và nhận dạng, và nội dung chi tiết sẽ được trình bày trong các chương tiếp theo.
Hậu xử lý (postprocessing) là quá trình sử dụng thông tin ngữ cảnh để nâng cao độ chính xác của hệ thống nhận dạng chữ viết tay Bằng cách áp dụng từ điển dữ liệu, các văn bản chữ viết tay được quét và đưa vào hệ thống Trong giai đoạn tiền xử lý, ảnh sẽ được điều chỉnh theo yêu cầu của hệ thống để phục vụ cho việc huấn luyện và nhận dạng hiệu quả hơn.
Trong mô hình học máy theo chiều sâu, ảnh đa mức xám (các pixel có giá trị từ 0 đến 255) được sử dụng để huấn luyện và nhận dạng Trong quá trình tiền xử lý, ảnh được loại bỏ nhiễu và các giá trị không cần thiết Tiếp theo, bước tách chữ sẽ thực hiện tách dòng, tách chữ và tách ký tự từ ảnh đã được tiền xử lý, tùy theo quy định của hệ thống huấn luyện Sau khi tách rời các ký tự, ảnh sẽ được lưu dưới dạng ma trận điểm, với giá trị điểm ảnh dao động từ 0 đến 255 Cuối cùng, trong mô hình Deep Learning, ma trận điểm ảnh sẽ được chuẩn hóa về kích thước 28x28.
Sau khi hoàn tất các bước xử lý, ảnh sẽ được đưa vào quá trình huấn luyện và nhận dạng Trong giai đoạn này, các mô hình và thuật toán cần thiết sẽ được áp dụng để thực hiện tính toán và xử lý Chi tiết về các thuật toán và quy trình xử lý sẽ được trình bày trong các phần tiếp theo của luận văn.
Cuối cùng, sau khi các ảnh đầu vào được nhận diện và cho ra kết quả, bước quan trọng tiếp theo là quá trình hậu xử lý, nhằm tối ưu hóa các kết quả và cung cấp thông tin chính xác cho người sử dụng.
Mô hình học sâu
Mạng nhiều tầng truyền thẳng (MLP)
Mô hình mạng neuron phổ biến nhất hiện nay là mạng nhiều tầng truyền thẳng (MLP - Multi Layer Perceptron) Một mạng MLP tổng quát bao gồm n tầng (với n ≥ 2), trong đó có một tầng đầu ra (tầng thứ n) và (n-1) tầng ẩn.
Hinh 2- 9: Mạng MLP tổng quát
Kiến trúc của một mạng MLP tổng quát có thể mô tả như sau: Đầu vào là các vector x2 , xp trong không gian p chiều, x1 ,
, đầu ra là các vector y 2 , y q trong không gian q chiều Đối với các bài y 1 , toán.,
Trong bài toán nhận dạng chữ số, chúng ta có 31 phân loại, với kích thước mẫu đầu vào là p và số lớp cần phân loại là q Mỗi mẫu chứa tọa độ (x,y) của 8 điểm trên chữ số, và nhiệm vụ của mạng là phân loại các mẫu này vào một trong 10 lớp tương ứng với các chữ số từ 0 đến 9.
9 Khi đó p là kích thước mẫu và bằng 8 x 2 = 16; q là số lớp và bằng 10.
Mỗi neuron trong tầng sau kết nối với tất cả các neuron của tầng trước, với đầu ra của neuron ở tầng trước trở thành đầu vào cho neuron ở tầng liền sau.
Mạng MLP hoạt động bằng cách các neuron ở tầng đầu vào nhận tín hiệu, xử lý thông qua tính tổng trọng số và hàm truyền, rồi cho ra kết quả Kết quả này được truyền đến các neuron ở tầng ẩn thứ nhất, nơi chúng tiếp nhận tín hiệu, xử lý và gửi kết quả tới tầng ẩn thứ hai Quá trình này tiếp tục cho đến khi các neuron ở tầng ra cung cấp kết quả cuối cùng.
Một số kết quả đã được chứng minh:
Bất kỳ hàm Boolean nào cũng có thể được biểu diễn bằng mạng MLP 2 tầng với các neuron sử dụng hàm truyền sigmoid Hơn nữa, tất cả các hàm liên tục có thể được xấp xỉ bởi mạng MLP 2 tầng, trong đó neuron tầng ẩn sử dụng hàm truyền sigmoid và neuron tầng ra sử dụng hàm truyền tuyến tính, với sai số nhỏ tùy ý.
Mọi hàm bất kỳ có thể được xấp xỉ bởi một mạng MLP 3 tầng với hàm truyền sigmoid cho các neuron ở tầng ẩn và hàm truyền tuyến tính cho các neuron ở tầng ra Để xác định số lượng neuron ở tầng ẩn, cần xem xét độ phức tạp của hàm cần xấp xỉ và các yếu tố khác như số lượng đầu vào và yêu cầu về độ chính xác.
Việc xác định số lượng nơ-ron trong tầng ẩn của mạng MLP là một thách thức, vì nó phụ thuộc vào từng bài toán cụ thể và kinh nghiệm của người thiết kế.
Trong thiết kế mạng nơ-ron, việc chia tập dữ liệu huấn luyện thành các nhóm có đặc tính tương đồng giúp xác định số lượng nơ-ron ẩn Nếu dữ liệu huấn luyện phân tán và thiếu các đặc điểm chung, số lượng kết nối có thể tương đương với số mẫu huấn luyện để đảm bảo mạng có thể hội tụ Nhiều phương pháp đã được đề xuất để xác định số lượng nơ-ron ẩn h trong mạng MLP, với điều kiện h phải thỏa mãn h>(p-1)/(n+2), trong đó p là số mẫu huấn luyện và n là số đầu vào Số lượng nơ-ron ẩn càng nhiều, mạng càng có khả năng nắm bắt nhiều đặc tính của dữ liệu, nhưng thời gian học cũng sẽ tăng lên.
Kinh nghiệm trong việc chọn số lượng nút ẩn cho thấy rằng số lượng này nên bằng với số cụm mờ tối ưu Điều này đã được chứng minh qua các thí nghiệm thực tế Bên cạnh đó, việc xác định số tầng ẩn cũng là một thách thức, vì nhiều bài toán yêu cầu hơn một tầng ẩn để đạt được hiệu quả giải quyết tốt Để tìm ra mô hình mạng neuron tối ưu, Ishikawa và Moriyama đã thực hiện các nghiên cứu đáng chú ý.
Vào năm 1995, phương pháp học cấu trúc có quên (structural learning with forgetting) được áp dụng, cho phép loại bỏ các liên kết có trọng số nhỏ trong quá trình học Sau khi hoàn tất huấn luyện, chỉ những nơ-ron có vai trò quan trọng trong việc giải quyết bài toán mới được giữ lại, từ đó tạo thành bộ khung cho mô hình mạng nơ-ron.
Trọng thường được khởi tạo qua phương pháp thử sai, dựa trên kinh nghiệm và từng bài toán cụ thể Định nghĩa một bộ trọng tốt là điều không đơn giản, và có một số quy tắc cần tuân thủ khi khởi tạo trọng.
Khởi tạo trọng số đúng cách giúp mạng neuron đạt được sự cân bằng, đảm bảo rằng sai số lan truyền ngược cho các ma trận trọng số gần như bằng nhau khi sử dụng đầu vào ngẫu nhiên.
Nếu mạng neuron không được cân bằng, quá trình điều chỉnh trọng số ở một số ma trận diễn ra nhanh chóng, trong khi ở những ma trận khác lại chậm chạp hoặc gần như không có thay đổi Điều này dẫn đến việc các ma trận cần thời gian dài để đạt được giá trị tối ưu.
Để tạo trọng số cho các nút, cần đảm bảo giá trị kết xuất nằm ở mức trung gian, đặc biệt là khi hàm truyền là hàm Sigmoid (giá trị 0.5) Việc này giúp ta có được giá trị hợp lý khi không có thông tin cụ thể về giá trị kết xuất, đồng thời cũng ngăn chặn việc phát sinh các giá trị thái quá.
CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM
Dữ liệu thực nghiệm
Ở đây, chúng em đã tiến hành nhận dạng ký tự với các bộ dữ liệu của thư viện MNIST:
Cơ sở dữ liệu MNIST bao gồm 60.000 hình ảnh đào tạo và 10.000 hình ảnh thử nghiệm, được chia đều từ tập dữ liệu huấn luyện và thử nghiệm của NIST Các nhà nghiên cứu ban đầu đã thử nghiệm nhiều phương pháp trên cơ sở dữ liệu này, trong đó máy vector hỗ trợ đạt tỷ lệ lỗi chỉ 0,8% Năm 2017, một tập dữ liệu mở rộng mang tên EMNIST được phát hành, chứa 240.000 hình ảnh đào tạo và 40.000 hình ảnh thử nghiệm về ký tự và chữ số viết tay.
Huấn luyện mô hình và kết quả thực nghiệm với mô hình MLP
Hình 3- 1: Mô hình huấn luyện mạng (MLP)
Trong mô hình MLP học viên sử dụng hai lớp ẩn để huấn luyện với các thông số như sau:
Lớp đầu vào của mô hình bao gồm 784 nút, mỗi nút tương ứng với một điểm ảnh và giá trị của nó thể hiện mức xám của điểm ảnh đó, dao động từ 0 đến 255.
Các lớp ẩn (Hidden Units): Tại các lớp này học viên sử dụng 2 lớp ẩn với các lớp tương ứng với 800, 800 nút.
Lớp đầu ra (Visible Units): Gồm có 10 nút, mỗi nút tương ứng với giá trị của các chữ cái (A, B, C, D, H, K, L, M, N, P).
Trong quá trình thực hiện bài tập lớn môn Nhập môn Học máy, chúng em đã tìm hiểu về các ứng dụng của học máy và áp dụng kiến thức vào sản phẩm Chúng em sử dụng thuật toán Neural Network để nhận dạng chữ viết tay Tuy nhiên, do thời gian hạn chế, bài tập vẫn còn nhiều thiếu sót Chúng em rất mong nhận được sự góp ý từ thầy cô để hoàn thiện hơn Xin chân thành cảm ơn!
[1] Mai Văn Thủy (2015) Nghiên cứu về mô hình thống kê học sâu và ứng dụng trong nhận dạng chữ viết tay hạn chế Luận văn thạc sỹ, Đại học
Công nghệ thông tin và Truyền thông.
[2] Lê Minh Hoàng, một phương pháp nhận dạng văn bản tiếng Việt. Luận văn thạc sỹ, Đại học Quốc gia Hà Nội.
[3] Đỗ Thanh Nghị, Phạm Nguyên Khang (2013) Nhận dạng kí tự số viết tay bằng giải thuật máy học Tạp chí khoa học Trường Đại học Cần Thơ
Phạm Thị Hoàng Nhung và Hà Quang Thụy (2007) đã thực hiện nghiên cứu về việc ứng dụng mạng neuron nhân tạo để dự báo lưu lượng nước đến hồ Hoà Bình trong vòng 10 ngày Nghiên cứu này được trình bày tại Hội thảo Quốc gia về Công nghệ thông tin và Truyền thông lần thứ X, diễn ra tại Đại Lải, Vĩnh Phúc vào tháng 9 năm 2007.
[5] Baret O and Simon J.C (1992) Cursiver Words Recognition From Pixels to Fuatures III Frontiers in Handwriting Recognition, tr.1-2.
[6] Behnk S., Pfister M and Rojas R., (2000) Recognition of
Handwitten ZIP Codes in a Real-World Non-Standard-Letter Sorting System.
[7] Fujasaki T., Beigi H.S.M, Tappert C.C, Ukelson M and Wolf C.G.
(1992) Online recognition of unconstrained handprinting: a stroke-based system and it evaluation From Pixels to Fuatures III Frontiers in Handwriting Recognition, tr.1-3.
[8] Hoai Vu Pham (2013), Hopfield networks and Boltzmann Machines.
[9] Hoai Vu Pham (2013), Model definition and training of RBMs By http://phvu.net/
[10] Hoai Vu Pham (2013), Contrastive Divergence By http://phvu.net/
[11] LISA lab Deep Learning 0.1 documentation By