Trong suốt quá trình thực hiện đồán, Thầy luôn quan tâm và góp ý kịp thời để nhóm thực hiện đúng như kế hoạch đã định ra, cũng như cung cấp những tài liệu quan trọng về những kiến thức l
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
2
Trang 3KHOA CÔNG NGHỆ PHẦN MỀM
3
Trang 4-oOo -4
Trang 9ĐỒ ÁN 2
9
Trang 1010
Trang 11TÌM HIỂU BÀI TOÁN
11
Trang 12PHÂN LOẠI CHỮ SỐ VIẾT TAY
12
Trang 17Giảng viên hướng dẫn:
17
Trang 18TS Huỳnh Ngọc Tín
18
Trang 19Lớp: SE122.L11.PMCL
19
Trang 20Nhóm sinh viên thực hiện:
20
Trang 21Nguyễn Thanh Trung - 17520021
21
Trang 24Tp Hồ Chí Minh, 01/2021
24
Trang 25ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
25
Trang 26TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
26
Trang 27LỜI CẢM ƠN
27
Trang 29Để hoàn thành đồ án này, nhóm thực hiện đồ án xin gửi lời cảm ơn sâu sắc đến TS.Huỳnh Ngọc Tín là người đã tận tình hướng dẫn nhóm Trong suốt quá trình thực hiện đồ
án, Thầy luôn quan tâm và góp ý kịp thời để nhóm thực hiện đúng như kế hoạch đã định
ra, cũng như cung cấp những tài liệu quan trọng về những kiến thức liên quan để nhóm
bổ sung và tìm ra những hướng giải quyết đúng đắn cho đồ án
29
Trang 30Một lần nữa nhóm xin chân thành cảm ơn!
30
Trang 31Nhóm thực hiện đồ án
31
Trang 32MỤC LỤC
32
Trang 36DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT
36
Trang 38(1) UIT: University of Information Technology (Trường Đại học Công nghệ Thông tin)
38
Trang 39(2) DR: Digit Recognizer
39
Trang 40(3) ML: Machine Learning
40
Trang 41(4) AI: artificial intelligence
41
Trang 62LỜI MỞ ĐẦU
62
Trang 65Cuộc cách mạng 4.0 mang đến sự bùng nổ về công nghệ, nhiều công nghệ bậc cao lênngôi và trở nên phổ biến trong hầu hết dữ liệu được đưa vào máy vi tính thông qua bànphím Nhưng trong một số trường hợp, sử dụng chữ viết tay vẫn thích hợp hơn chẳng hạnnhư công việc ghi chép bài vở trên lớp học Trong hoàn cảnh đó, bài toán nhận dạng chữ
được nghiên cứu nhằm làm hoàn thiện thêm cách thức giao tiếp giữa người và máy.Bài toán nhận dạng chữ viết tay đã được nghiên cứu và phát triển trong 40 nămqua, và cũng đã đạt được nhiều kết quả đáng kể Trong đồ án này, em tìm hiểu về bài toánphân loại chữ viết thay thông qua thuật toán K-mean để có cái nhìn tổng quan về bài toán
và máy học
65
Trang 66Các vấn đề và công nghệ liên quan đến quá trình nghiên cứu và hiện thực đồ án sẽ đượcnhóm trình bày cụ thể trong những phần sau của báo cáo này.
66
Trang 67Bố cục báo cáo gồm có 6 chương:
67
Trang 68Chương I: Tổng quan Giới thiệu khái quát về bài toán Digit Recogizer; các công trình
nghiên cứu liên quan trong và ngoài nước; mục tiêu, đối tượng, phạm vi nghiên cứu của
đề tài
68
Trang 69Chương II: Các khái niệm và công nghệ liên quan Giới thiệu về những khái niệm và các
công nghệ liên quan trong quá trình hiện thực đồ án như: Machine Learning,
69
Trang 70Chương III: Hướng tiếp cận và giải pháp Các giai đoạn hiện thực bài toán, công cụ và
cách hiện thực từng giai đoạn
70
Trang 71Chương IV: Thực nghiệm và xây dựng chương trình Hiện thực các giai đoạn được giới
thiệu trong Chương III
71
Trang 72Chương V: Kết luận và hướng phát triển Tóm tắt kết quả thực hiện được và đề xuất
hướng phát triển mới trong tương lai
72
Trang 73CHƯƠNG I: TỔNG QUAN
73
Trang 76Để giải quyết được bài toán chúng ta cần nắm rõ bài toán này là gì, các yêu cầu của nónhư thế nào Những câu hỏi đó sẽ được trả lời trong chương này Ngoài ra, chương nàycòn trình bày tổng quan về một số công trình nghiên cứu liên quan đến bài toán đã đượccông bố trong và ngoài nước Từ đó xác định mục tiêu, đối tượng và phạm vi nghiên cứucho đồ án.
76
Trang 77I.1. Giới thiệu bài toán
77
Trang 78Nhận dạng chữ số viết tay là cần thiết và được ứng dụng rộng rãi trong nhiều lĩnh vựcnhư nhận dạng các chữ số trên chi phiếu ngân hàng, mã số trên bì thư của dịch vụ bưuchính, hay các chữ số trên các biểu mẫu nói chung Vấn đề nhận dạng chữ viết tay nóichung và nhận dạng chữ số viết tay nói riêng là một thách thức lớn đối với các nhànghiên cứu Bài toán lớn luôn đặt ra phía trước vì sự phức tạp của việc nhận dạng chữviết phụ thuộc nhiều vào phong cách viết và cách thể hiện ngôn ngữ của người viết.Chúng ta không thể luôn luôn viết một ký tự chính xác theo cùng một cách Do vậy, xâydựng hệ thống nhận dạng chữ viết có thể nhận dạng bất cứ ký tự nào một cách đáng tincậy trong tất cả các ứng dụng là điều không dễ dàng Hệ thống nhận dạng thường baogồm hai bước: rút trích đặc trưng từ ảnh và học tự động từ các đặc trưng để có thể nhậndạng ký tự Hiệu quả của hệ thống nhận dạng phụ thuộc vào các phương pháp sử dụng ởhai giai đoạn trên
78
Trang 79Các nghiên cứu
79
Trang 80- Hệ thống hiện nay (LeCun et al., 1998), (Simard et al., 2003), (Kégl & BusaFekete, 2009) đều sử dụng các đặc trưng cơ bản từ ảnh ký tự như đường
biên, cạnh, độ dày, giá trị mức xám, haar-like, với các xử lý đặc thù như lấy mẫu,dao động các điểm ảnh, biến đổi ảnh, thêm dữ liệu ảo, hay trung lập
80
Trang 8282
Trang 84I.2. Mục tiêu, đối tượng và phạm vi nghiên cứu của đề tài
84
Trang 85I.2.1. Mục tiêu
85
Trang 86Tìm hiểu và áp dụng các thuật toán cơ bản của ML vào trong bài toán nhận diện chữ viếttay Và cụ thể hơn là bài toán phân loại hình ảnh.
86
Trang 87I.2.2. Đối tượng
87
Trang 88Các hình ảnh chụp chữ số viết tay được chụp lại
88
Trang 89I.2.3. Phạm vi nghiên cứu
89
Trang 90Các hình ảnh trên thư viện MNIST.
90
Trang 91CHƯƠNG II: CÁC KHÁI NIỆM VÀ CÔNG NGHỆ LIÊN QUAN
91
Trang 93Trong chương này sẽ trình bày về các khái niệm và công nghệ liên quan trong quá trìnhhiện thực đồ án Đây là những khái niệm và công nghệ quan trọng và cốt lõi cần nắm rõ
để có thể hiện thực được đồ án một cách tốt nhất
93
Trang 94II.1.Các khái niệm liên quan
94
Trang 95II.1.1. Machine Learning
95
Trang 96Machine Learning là một tập con của AI.
96
Trang 97Trong giới chuyên môn không có một khái niệm cụ thể và được xem là đúng đắn nhất vềMachine Learning [6] Tuy nhiên có một vài định nghĩa được đánh giá cao như sau:
97
Trang 98- Theo A Samuel: Machine Learning là một lĩnh vực nghiên cứu mà máy tính có thể
tự học mà không cần lập trình cụ thể
98
Trang 99- Theo Tom Mitchell: Machine Learning là chương trình máy tính sử dụng kinhnghiệm E để thực hiện công việc T với hiệu năng P.
99
Trang 100Ví dụ: chức năng tự gắn thẻ bạn bè trên Facebook, chức năng gợi ý sản phẩn liên quâncủa Amazon, …
100
Trang 101Sự ra đời của Machine Learning giúp con người giải quyết nhanh chóng những công việcphức tạp nếu xử lí thủ công sẽ tốn rất nhiều thời gian, chi phí và nhân lực
101
Trang 102102
Trang 103II.1.2. Digit Recognizer
103
Trang 104Bài toán là từ dữ liệu văn bản đầu vào là một hình ảnh chụp lại của các chữ số viết bằngtay, từ đó có thể nhận dạng được và số hóa vào máy tính
104
Trang 105Ví dụ: Lĩnh vực như nhận dạng các chữ số trên chi phiếu ngân hàng, mã số trên bì thưcủa dịch vụ bưu chính, hay các chữ số trên các biểu mẫu nói chung.
105
Trang 106Các giai đoạn chính trong việc xử lí bài toán:
106
Trang 107- Giai đoạn 0: Thu thập dữ liệu
107
Trang 108- Giai đoạn 1: Tiền xử lí
108
Trang 109- Giai đoạn 2: Mã hóa dữ liệu
109
Trang 110- Giai đoạn 3: Dạy cho máy học
110
Trang 112II.2.Các công nghệ liên quan
112
Trang 113II.2.1. Python
113
Trang 114- Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp phát bộ nhớ tự động Python có cấu trúc cấp cao mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đốivới lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vô cùng lớn
vì sự rõ ràng, dễ hiểu và cách gõ linh động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầuhết các nền tảng
114
Trang 116II.2.2. Bộ cơ sở dữ liệu MNIST
116
Trang 117Bộ cơ sở dữ liệu MNIST là bộ cơ sở dữ liệu lớn nhất về chữ số viết tay và được
sử dụng trong hầu hết các thuật toán nhận dạng hình ảnh (Image Classification)
117
Trang 119CHƯƠNG III: HƯỚNG TIẾP CẬN VÀ GIẢI PHÁP
119
Trang 120III.1 Giới thiệu thuật toán K-means clustering
120
Trang 121Trong thuật toán K-means clustering, chúng ta không biết nhãn (label) của từng điểm dữliệu Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster) khác nhau sao
cho dữ liệu trong cùng một cụm có tính chất giống nhau.
121
Trang 122Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong một không
gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp thông tin về một
điểm dữ liệu là rất lớn) Hình bên dưới là một ví dụ về 3 cụm dữ liệu
122
Trang 124Bài toán với 3 clusters.
124
Trang 125Giả sử mỗi cluster có một điểm đại diện (center) màu vàng Và những điểm xung quanh
mỗi center thuộc vào cùng nhóm với center đó Một cách đơn giản nhất, xét một điểm bất
kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc về cùng nhóm với center đó
Tới đây, chúng ta có một bài toán thú vị: Trên một vùng biển hình vuông lớn có ba đảo
hình vuông, tam giác, và tròn màu vàng như hình trên Một điểm trên biển được gọi là thuộc lãnh hải của một đảo nếu nó nằm gần đảo này hơn so với hai đảo kia Hãy xác định ranh giới lãnh hải của các đảo.
125
Trang 126Hình dưới đây là một hình minh họa cho việc phân chia lãnh hải nếu có 5 đảo khác nhauđược biểu diễn bằng các hình tròn màu đen:
126
Trang 128Phân vùng lãnh hải của mỗi đảo Các vùng khác nhau có màu sắc khác nhau.
128
Trang 129Chúng ta thấy rằng đường phân định giữa các lãnh hải là các đường thẳng (chính xác hơnthì chúng là các đường trung trực của các cặp điểm gần nhau) Vì vậy, lãnh hải của mộtđảo sẽ là một hình đa giác.
129
Trang 130Cách phân chia này trong toán học được gọi là Voronoi Diagram.
130
Trang 131Trong không gian ba chiều, lấy ví dụ là các hành tinh, thì (tạm gọi là) lãnh không của mỗi
hành tinh sẽ là một đa diện Trong không gian nhiều chiều hơn, chúng ta sẽ có những thứ
(mà tôi gọi là) siêu đa diện (hyperpolygon).
131
Trang 137III.2 Thuật toán
137
Trang 139Đầu vào: Dữ liệu X và số lượng cluster cần tìm K.
139
Trang 140Đầu ra: Các center M và label vector cho từng điểm dữ liệu Y.
140
Trang 1411. Chọn K điểm bất kỳ làm các center ban đầu.
141
Trang 1422. Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.
142
Trang 1433. Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với vòng lặptrước nó thì ta dừng thuật toán.
143
Trang 1444. Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất các cácđiểm dữ liệu đã được gán vào cluster đó sau bước 2.
144
Trang 1455. Quay lại bước 2.
145
Trang 146Chúng ta có thể đảm bảo rằng thuật toán sẽ dừng lại sau một số hữu hạn vòng lặp
146
Trang 147III.3 Hạn chế thuật toán
147
Trang 148Có một vài hạn chế của thuật toán K-means clustering:
148
Trang 149- Chúng ta cần biết số lượng cluster cần clustering Trong thực tế, nhiều trường hợp chúng ta không xác định được giá trị này
149
Trang 150- Nghiệm cuối cùng phụ thuộc vào các centers được khởi tạo ban đầu Tùy vào các center ban đầu mà thuật toán có thể có tốc độ hội tụ rất chậm, hoặc thậm chí cho chúng ta nghiệm không chính xác (chỉ là local minimum - điểm cực tiểu - mà không phải giá trị nhỏ nhất)
150
Trang 151- Các cluster cần có dạng hình tròn Tức các cluster tuân theo phân phối chuẩn và matrận hiệp phương sai là ma trận đường chéo có các điểm trên đường chéo giống nhau.
151
Trang 152- Khi một cluster nằm phía trong 1 cluster khác
152
Trang 153Có một vài cách khắc phục đó là:
153
Trang 154● Chạy K-means clustering nhiều lần với các center ban đầu khác nhau rồi chọncách có hàm mất mát cuối cùng đạt giá trị nhỏ nhất.
154
Trang 155● K-means++ -Improve initialization algorithm - wiki.
155
Trang 156● Có thể xem bài báo khoa học “Cluster center initialization algorithm for K-meansclustering”.
156
Trang 157- Các cluster cần có só lượng điểm gần bằng nhau
157
Trang 159CHƯƠNG IV: THỰC NGHIỆM VÀ XÂY DỰNG CHƯƠNG TRÌNH
159
Trang 161Nội dung chính của chương này sẽ trình bày chi tiết về quá trình hiện thực chương trình
từ các bước chuẩn bị (thiết kế và xây dựng cơ sở dữ liệu, cài đặt môi trường) đế giai đoạnhiện thực mã nguồn cho chương trình
161
Trang 163IV.1 Cài đặt môi trường, dữ liệu
163
Trang 165import numpy as np
165
Trang 166from mnist import MNIST # require `pip install python-mnist`
166
Trang 167import matplotlib.pyplot as plt
167
Trang 168from sklearn.cluster import KMeans
168
Trang 169Thực hiện thuật toán K-means clustering trên toàn bộ 10k chữ số.
169
Trang 170from display_network import *
170
Trang 172mndata = MNIST( ' /MNIST/' ) # path to your MNIST folder
172
Trang 173173
Trang 174X = mndata.test_images
174
Trang 176kmeans = KMeans(n_clusters=K).fit(X)
176
Trang 177pred_label = kmeans.predict(X)
177
Trang 187IV.2 Mã nguồn
187
Trang 191Áp dụng K-means clustering vào tập test set của bộ cơ sở dữ liệu MNIST với K = 10 cluster Cột 1: centers của các cluster Các cột còn lại: Mỗi hàng là 20 điểm dữ liệu ngẫu nhiên được chọn ra từ
mỗi cluster
191
Trang 197CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
197
Trang 199Chương này với mục đích kết luận về kết quả thực hiện được trong đồ án và từ đó đề rahướng phát triển cho đồ án trong tương lai.
199
Trang 200VI.1. Kết luận
200
Trang 201Mặc dù có những hạn chế, K-means clustering vẫn cực kỳ quan trọng trongMachine Learning và là nền tảng cho nhiều thuật toán phức tạp khác sau này
201
Trang 203VI.2. Hướng phát triển
203
Trang 204Chạy K-means clustering nhiều lần với các center ban đầu khác nhau rồi chọncách có hàm mất mát cuối cùng đạt giá trị nhỏ nhất.
204
Trang 205K-means++ -Improve initialization algorithm - wiki.
205
Trang 206Có thể xem bài báo khoa học “Cluster center initialization algorithm for K-meansclustering”.
206
Trang 207Các cluster cần có só lượng điểm gần bằng nhau
207
Trang 208CNN (Convolutional neural network) là một thuật toán có thể giải quyết tốt hơn
208
Trang 210DANH MỤC TÀI LIỆU THAM KHẢO
210
Trang 212[1] Machine Learning cơ bản:https://machinelearningcoban.com/
212
Trang 213[2] Khóa học Machine Learning của Andrew Ng:https://www.coursera.org/
213
Trang 214PHỤ LỤC
214