Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
212,5 KB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM -oOo - ĐỒ ÁN TÌM HIỂU BÀI TOÁN PHÂN LOẠI CHỮ SỐ VIẾT TAY Giảng viên hướng dẫn: TS Huỳnh Ngọc Tín Lớp: SE122.L11.PMCL Nhóm sinh viên thực hiện: Nguyễn Thanh Trung - 17520021 Tp Hồ Chí Minh, 01/2021 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN LỜI CẢM ƠN Để hồn thành đồ án này, nhóm thực đồ án xin gửi lời cảm ơn sâu sắc đến TS Huỳnh Ngọc Tín người tận tình hướng dẫn nhóm Trong suốt q trình thực đồ án, Thầy ln quan tâm góp ý kịp thời để nhóm thực kế hoạch định ra, cung cấp tài liệu quan trọng kiến thức liên quan để nhóm bổ sung tìm hướng giải đắn cho đồ án Một lần nhóm xin chân thành cảm ơn! Nhóm thực đồ án MỤC LỤC LỜI CẢM ƠN MỤC LỤC DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT LỜI MỞ ĐẦU CHƯƠNG I: TỔNG QUAN I.1 Giới thiệu toán I.2 Mục tiêu, đối tượng phạm vi nghiên cứu đề tài I.2.1 Mục tiêu I.2.2 Đối tượng I.2.3 Phạm vi nghiên cứu CHƯƠNG II: CÁC KHÁI NIỆM VÀ CÔNG NGHỆ LIÊN QUAN II.1 Các khái niệm liên quan 8 II.1.1 Machine Learning II.1.2 Digit Recognizer II.2 Các công nghệ liên quan II.2.1 Python II.2.2 Bộ sở liệu MNIST CHƯƠNG III: HƯỚNG TIẾP CẬN VÀ GIẢI PHÁP 10 III.1 Giới thiệu thuật toán K-means clustering 10 III.2 Thuật toán 12 III.3 Hạn chế thuật toán CHƯƠNG IV: THỰC NGHIỆM VÀ XÂY DỰNG CHƯƠNG TRÌNH 12 13 IV.1 Cài đặt môi trường, liệu 13 IV.2 Mã nguồn 14 CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16 VI.1 Kết luận 16 VI.2 Hướng phát triển 16 PHỤ LỤC 18 DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT (1) UIT: University of Information Technology (Trường Đại học Công nghệ Thông tin) (2) DR: Digit Recognizer (3) ML: Machine Learning (4) AI: artificial intelligence LỜI MỞ ĐẦU Cuộc cách mạng 4.0 mang đến bùng nổ công nghệ, nhiều công nghệ bậc cao lên trở nên phổ biến hầu hết liệu đưa vào máy vi tính thơng qua bàn phím Nhưng số trường hợp, sử dụng chữ viết tay thích hợp chẳng hạn công việc ghi chép lớp học Trong hồn cảnh đó, tốn nhận dạng chữ viết tay nghiên cứu nhằm làm hoàn thiện thêm cách thức giao tiếp người máy Bài toán nhận dạng chữ viết tay nghiên cứu phát triển 40 năm qua, đạt nhiều kết đáng kể Trong đồ án này, em tìm hiểu tốn phân loại chữ viết thay thơng qua thuật tốn K-mean để có nhìn tổng quan tốn máy học Các vấn đề cơng nghệ liên quan đến q trình nghiên cứu thực đồ án nhóm trình bày cụ thể phần sau báo cáo Bố cục báo cáo gồm có chương: Chương I: Tổng quan Giới thiệu khái quát tốn Digit Recogizer; cơng trình nghiên cứu liên quan nước; mục tiêu, đối tượng, phạm vi nghiên cứu đề tài Chương II: Các khái niệm công nghệ liên quan Giới thiệu khái niệm công nghệ liên quan trình thực đồ án như: Machine Learning, Chương III: Hướng tiếp cận giải pháp Các giai đoạn thực tốn, cơng cụ cách thực giai đoạn Chương IV: Thực nghiệm xây dựng chương trình Hiện thực giai đoạn giới thiệu Chương III Chương V: Kết luận hướng phát triển Tóm tắt kết thực đề xuất hướng phát triển tương lai CHƯƠNG I: TỔNG QUAN Để giải toán cần nắm rõ tốn gì, u cầu Những câu hỏi trả lời chương Ngoài ra, chương cịn trình bày tổng quan số cơng trình nghiên cứu liên quan đến tốn cơng bố ngồi nước Từ xác định mục tiêu, đối tượng phạm vi nghiên cứu cho đồ án I.1 Giới thiệu toán Nhận dạng chữ số viết tay cần thiết ứng dụng rộng rãi nhiều lĩnh vực nhận dạng chữ số chi phiếu ngân hàng, mã số bì thư dịch vụ bưu chính, hay chữ số biểu mẫu nói chung Vấn đề nhận dạng chữ viết tay nói chung nhận dạng chữ số viết tay nói riêng thách thức lớn nhà nghiên cứu Bài tốn lớn ln đặt phía trước phức tạp việc nhận dạng chữ viết phụ thuộc nhiều vào phong cách viết cách thể ngôn ngữ người viết Chúng ta khơng thể ln ln viết ký tự xác theo cách Do vậy, xây dựng hệ thống nhận dạng chữ viết nhận dạng ký tự cách đáng tin cậy tất ứng dụng điều không dễ dàng Hệ thống nhận dạng thường bao gồm hai bước: rút trích đặc trưng từ ảnh học tự động từ đặc trưng để nhận dạng ký tự Hiệu hệ thống nhận dạng phụ thuộc vào phương pháp sử dụng hai giai đoạn Các nghiên cứu - Hệ thống (LeCun et al., 1998), (Simard et al., 2003), (Kégl & BusaFekete, 2009) sử dụng đặc trưng từ ảnh ký tự đường biên, cạnh, độ dày, giá trị mức xám, haar-like, với xử lý đặc thù lấy mẫu, dao động điểm ảnh, biến đổi ảnh, thêm liệu ảo, hay trung lập I.2 Mục tiêu, đối tượng phạm vi nghiên cứu đề tài I.2.1 Mục tiêu Tìm hiểu áp dụng thuật toán ML vào toán nhận diện chữ viết tay Và cụ thể tốn phân loại hình ảnh I.2.2 Đối tượng Các hình ảnh chụp chữ số viết tay chụp lại I.2.3 Phạm vi nghiên cứu Các hình ảnh thư viện MNIST CHƯƠNG II: CÁC KHÁI NIỆM VÀ CÔNG NGHỆ LIÊN QUAN Trong chương trình bày khái niệm công nghệ liên quan trình thực đồ án Đây khái niệm công nghệ quan trọng cốt lõi cần nắm rõ để thực đồ án cách tốt II.1 Các khái niệm liên quan II.1.1 Machine Learning Machine Learning tập AI Trong giới chun mơn khơng có khái niệm cụ thể xem đắn Machine Learning [6] Tuy nhiên có vài định nghĩa đánh giá cao sau: - Theo A Samuel: Machine Learning lĩnh vực nghiên cứu mà máy tính tự học mà khơng cần lập trình cụ thể - Theo Tom Mitchell: Machine Learning chương trình máy tính sử dụng kinh nghiệm E để thực cơng việc T với hiệu P Ví dụ: chức tự gắn thẻ bạn bè Facebook, chức gợi ý sản phẩn liên quân Amazon, … Sự đời Machine Learning giúp người giải nhanh chóng cơng việc phức tạp xử lí thủ cơng tốn nhiều thời gian, chi phí nhân lực II.1.2 Digit Recognizer Bài tốn từ liệu văn đầu vào hình ảnh chụp lại chữ số viết tay, từ nhận dạng số hóa vào máy tính Ví dụ: Lĩnh vực nhận dạng chữ số chi phiếu ngân hàng, mã số bì thư dịch vụ bưu chính, hay chữ số biểu mẫu nói chung Các giai đoạn việc xử lí tốn: - Giai đoạn 0: Thu thập liệu - Giai đoạn 1: Tiền xử lí - Giai đoạn 2: Mã hóa liệu - Giai đoạn 3: Dạy cho máy học II.2 Các công nghệ liên quan II.2.1 Python - Python ngơn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu lên ngơn ngữ lập trình nhập mơn tốt cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python hồn tồn tạo kiểu động sử dụng chế cấp phát nhớ tự động Python có cấu trúc cấp cao mạnh mẽ cách tiếp cận đơn giản hiệu lập trình hướng đối tượng Cú pháp lệnh Python điểm cộng vơ lớn rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngôn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết tảng II.2.2 Bộ sở liệu MNIST Bộ sở liệu MNIST sở liệu lớn chữ số viết tay sử dụng hầu hết thuật tốn nhận dạng hình ảnh (Image Classification) CHƯƠNG III: HƯỚNG TIẾP CẬN VÀ GIẢI PHÁP III.1 Giới thiệu thuật toán K-means clustering Trong thuật tốn K-means clustering, khơng biết nhãn (label) điểm liệu Mục đích làm thể để phân liệu thành cụm (cluster) khác cho liệu cụm có tính chất giống Ý tưởng đơn giản cluster (cụm) tập hợp điểm gần khơng gian (khơng gian có nhiều chiều trường hợp thông tin điểm liệu lớn) Hình bên ví dụ cụm liệu Bài toán với clusters Giả sử cluster có điểm đại diện (center) màu vàng Và điểm xung quanh center thuộc vào nhóm với center Một cách đơn giản nhất, xét điểm bất kỳ, ta xét xem điểm gần với center thuộc nhóm với center Tới đây, có tốn thú vị: Trên vùng biển hình vng lớn có ba đảo hình vng, tam giác, trịn màu vàng hình Một điểm biển gọi thuộc lãnh hải đảo nằm gần đảo so với hai đảo Hãy xác định ranh giới lãnh hải đảo Hình hình minh họa cho việc phân chia lãnh hải có đảo khác biểu diễn hình trịn màu đen: Phân vùng lãnh hải đảo Các vùng khác có màu sắc khác Chúng ta thấy đường phân định lãnh hải đường thẳng (chính xác chúng đường trung trực cặp điểm gần nhau) Vì vậy, lãnh hải đảo hình đa giác Cách phân chia toán học gọi Voronoi Diagram Trong khơng gian ba chiều, lấy ví dụ hành tinh, (tạm gọi là) lãnh không hành tinh đa diện Trong khơng gian nhiều chiều hơn, có thứ (mà gọi là) siêu đa diện (hyperpolygon) III.2 Thuật toán Đầu vào: Dữ liệu X số lượng cluster cần tìm K Đầu ra: Các center M label vector cho điểm liệu Y Chọn K điểm làm center ban đầu Phân điểm liệu vào cluster có center gần Nếu việc gán liệu vào cluster bước không thay đổi so với vịng lặp trước ta dừng thuật tốn Cập nhật center cho cluster cách lấy trung bình cộng tất các điểm liệu gán vào cluster sau bước Quay lại bước Chúng ta đảm bảo thuật toán dừng lại sau số hữu hạn vịng lặp III.3 Hạn chế thuật tốn Có vài hạn chế thuật toán K-means clustering: - Chúng ta cần biết số lượng cluster cần clustering Trong thực tế, nhiều trường hợp không xác định giá trị - Nghiệm cuối phụ thuộc vào centers khởi tạo ban đầu Tùy vào center ban đầu mà thuật tốn có tốc độ hội tụ chậm, chí cho nghiệm khơng xác (chỉ local minimum - điểm cực tiểu - mà giá trị nhỏ nhất) - Các cluster cần có dạng hình trịn Tức cluster tuân theo phân phối chuẩn ma trận hiệp phương sai ma trận đường chéo có điểm đường chéo giống - Khi cluster nằm phía cluster khác Có vài cách khắc phục là: 10 ● Chạy K-means clustering nhiều lần với center ban đầu khác chọn cách có hàm mát cuối đạt giá trị nhỏ ● K-means++ -Improve initialization algorithm - wiki ● Có thể xem báo khoa học “Cluster center initialization algorithm for K-means clustering” - Các cluster cần có só lượng điểm gần CHƯƠNG IV: THỰC NGHIỆM VÀ XÂY DỰNG CHƯƠNG TRÌNH Nội dung chương trình bày chi tiết trình thực chương trình từ bước chuẩn bị (thiết kế xây dựng sở liệu, cài đặt môi trường) đế giai đoạn thực mã nguồn cho chương trình IV.1 Cài đặt môi trường, liệu import numpy as np from mnist import MNIST # require `pip install python-mnist` import matplotlib.pyplot as plt from sklearn.cluster import KMeans Thực thuật tốn K-means clustering tồn 10k chữ số from display_network import * mndata = MNIST(' /MNIST/') # path to your MNIST folder mndata.load_testing() X = mndata.test_images kmeans = KMeans(n_clusters=K).fit(X) pred_label = kmeans.predict(X) 11 IV.2 Mã nguồn 12 13 Áp dụng K-means clustering vào tập test set sở liệu MNIST với K = 10 cluster Cột 1: centers cluster Các cột lại: Mỗi hàng 20 điểm liệu ngẫu nhiên chọn từ cluster 14 CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương với mục đích kết luận kết thực đồ án từ đề hướng phát triển cho đồ án tương lai VI.1 Kết luận Mặc dù có hạn chế, K-means clustering quan trọng Machine Learning tảng cho nhiều thuật toán phức tạp khác sau VI.2 Hướng phát triển Chạy K-means clustering nhiều lần với center ban đầu khác chọn cách có hàm mát cuối đạt giá trị nhỏ K-means++ -Improve initialization algorithm - wiki Có thể xem báo khoa học “Cluster center initialization algorithm for K-means clustering” Các cluster cần có só lượng điểm gần CNN (Convolutional neural network) thuật tốn giải tốt DANH MỤC TÀI LIỆU THAM KHẢO [1] Machine Learning bản: https://machinelearningcoban.com/ [2] Khóa học Machine Learning Andrew Ng: https://www.coursera.org/ PHỤ LỤC 15 ... Samuel: Machine Learning lĩnh vực nghiên cứu mà máy tính tự học mà khơng cần lập trình cụ thể - Theo Tom Mitchell: Machine Learning chương trình máy tính sử dụng kinh nghiệm E để thực công việc T... đến bùng nổ công nghệ, nhiều công nghệ bậc cao lên trở nên phổ biến hầu hết liệu đưa vào máy vi tính thơng qua bàn phím Nhưng số trường hợp, sử dụng chữ viết tay thích hợp chẳng hạn công việc...LỜI CẢM ƠN Để hồn thành đồ án này, nhóm thực đồ án xin gửi lời cảm ơn sâu sắc đến TS Huỳnh Ngọc Tín người tận tình hướng dẫn nhóm Trong suốt q trình thực đồ án, Thầy ln quan tâm góp ý kịp thời