TRẦN VĂN CHÍNH
NGHIÊN CỨU PHƯƠNG PHÁP HỌC SÂU
ỨNG DỤNG TRONG BÀI TỐN NHẬN DẠNG KÍ TỰ
VÀ ỨNG DỤNG TRONG BÀI TỐN TÌM ĐƯỜNG ĐI CHO ROBOT
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
TRẦN VĂN CHÍNH
LUẬN VĂN THẠC SỸ
Chuyên ngành: Công nghệ thông tin
Mã ngành: 8.48.02.01
NGHIÊN CỨU PHƯƠNG PHÁP HỌC SÂU ỨNG DỤNG
TRONG BÀI TỐN NHẬN DẠNG KÍ TỰ
Người hướng dẫn: TS. TRẦN XUÂN SANG
KHÓA: 24
Vĩnh Long, 7/2018
-1-
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH
TRẦN VĂN CHÍNH
LUẬN VĂN THẠC SỸ
Chun ngành: Cơng nghệ thơng tin
Mã ngành: 8.48.02.01
NGHIÊN CỨU PHƯƠNG PHÁP HỌC SÂU ỨNG DỤNG TRONG
BÀI TOÁN NHẬN DẠNG KÍ TỰ
Người hướng dẫn: TS. TRẦN XUÂN SANG
Vĩnh Long, tháng 7/2018
-2-
LỜI CẢM ƠN
Trên thực tế, ngoài sự phấn đấu, tự lực của bản thân mình ra, thì khơng có
thành cơng, vinh quang nào mà không gắn liền với những sự giúp đỡ, hỗ trợ dù ít
hay nhiều, dù trực tiếp hay gián tiếp của người khác. Vâng! Đúng như vậy! Để
hoàn thành được luận văn “Nghiên cứu về phương pháp học sâu ứng dụng
trong bài tốn nhận dạng kí tự”, bên cạnh niềm say mê, nghiên cứu, thì tơi
ln nhận được sự giúp đỡ tận tình của q thầy cơ, gia đình cùng bạn bè và
đồng nghiệp. Để bày tỏ lịng biết ơn của mình, tơi khơng biết nói gì hơn ngoài lời
cảm ơn chân thành dành cho những người đã giúp đỡ tôi trong thời gian qua. Và
đặc biệt xin gửi lời cảm ơn sâu sắc nhất đến:
Thầy TS Trần Xuân Sang giảng viên viện Sư phạm Tự nhiên - Đại học
Vinh, người đã ln quan tâm, tận tình chỉ bảo, hướng dẫn và giúp đỡ tơi hồn
thành luận văn này.
Tôi xin chân thành cảm ơn các thầy ở viện Kỹ thuật và Công nghệ đã dạy
bảo, giúp đỡ và truyền đạt kiến thức cho tơi trong suốt khóa học cũng như q
trình làm luận văn.
Tơi xin chân thành cảm ơn các thầy, các cô ở trường Đại học học sư
phạm kỹ thuật Vĩnh Long đã giúp đỡ và tạo điều kiện cho tôi trong suốt thời
gian học tập và nghiên cứu.
Cuối cùng xin chân thành cảm ơn bạn bè, người thân và gia đình ln là
người đồng hành, động viên, chia sẻ những khó khăn trong suốt thời gian hồn
thành luận văn.
Học viên
Trần Văn Chính
-3-
LỜI CAM ĐOAN
Tôi xin cam đoan đề tài "Nghiên cứu về phương pháp học sâu ứng dụng
nhận dạng kí tự” là cơng trình nghiên cứu được tơi thực hiện dưới sự hướng dẫn
của giáo viên hướng dẫn khoa học.
Một số định nghĩa, tính chất, mệnh đề và thuật tốn tơi lấy từ nguồn tài
liệu chính xác có trích dẫn tên tài liệu và tên tác giả rõ ràng. Tôi xin chịu trách
nhiệm về luận văn của mình.
Học viên
Trần Văn Chính
-4-
MỤC LỤC
LỜI CẢM ƠN ........................................................................................................ 3
LỜI CAM ĐOAN .................................................................................................. 4
DANH MỤC CÁC KÝ HIỆU, CỤM TỪ VIẾT TẮT, THUẬT NGỮ ................. 7
DANH MỤC CÁC HÌNH ...................................................................................... 8
MỞ ĐẦU ................................................................................................................ 9
1. Sự cần thiết của vấn đề nghiên cứu ................................................................ 9
2. Mục tiêu nghiên cứu ....................................................................................... 9
3. Đối tượng và phạm vi nghiên cứu ................................................................ 10
4. Nội dung nghiên cứu .................................................................................... 10
CHƯƠNG 1 ......................................................................................................... 11
TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG................................................... 11
1.1 Giới thiệu về bài toán nhận dạng ............................................................... 11
1.1.1 Các giai đoạn hình thành và phát triển ................................................ 12
1.1.2 Tình hình nghiên cứu ở trong nước..................................................... 13
1.1.3 Tình hình nghiên cứu ở nước ngoài .................................................... 13
1.2 Các bước xử lí cơ bản cho bài tốn nhận dạng .......................................... 14
1.3. Mơ tả q trình trong hệ thống nhận dạng ................................................ 16
1.4 Kết luận chương 1 ...................................................................................... 17
CHƯƠNG 2 ......................................................................................................... 18
PHƯƠNG PHÁP HỌC SÂU VỚI MẠNG NEURAL......................................... 18
2.1. Tổng quan về mơ hình mạng Neural ......................................................... 18
2.1.1 Giới thiệu về mạng Neural .................................................................. 18
2.1.2 Cấu trúc và hoạt động mạng Neural................................................... 18
2.1.3. Mạng đa tầng truyền thẳng ................................................................. 23
2.1.4. Thuật toán lan truyền ngược .............................................................. 23
2.1.5 Hàm truyền .......................................................................................... 24
2.1.6 Các phương pháp huấn luyện mạng .................................................... 25
2.2 Phương Pháp học sâu ................................................................................. 27
2.2.1 Định nghĩa về học sâu ......................................................................... 27
-5-
2.2.2. Mạng Neural tích chập ....................................................................... 27
2.2.3 Mạng Hopfield Network ..................................................................... 31
2.2.4 Boltzmann Machines ........................................................................... 33
2.2.5 Restricted Boltzmann Machines ......................................................... 36
2.3. Kết luận chương 2 ..................................................................................... 37
CHƯƠNG 3 ......................................................................................................... 38
CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM NHẬN DẠNG KÍ TỰ VỚI
THUẬT TỐN CNN VÀ RBM .......................................................................... 38
3.1 Mơi trường thực nghiệm ............................................................................ 38
3.2 Dữ liệu cài đặt ............................................................................................ 38
3.3 Xây dựng mơ hình mạng ............................................................................ 38
3.3.1. Mơ hình mạng neural tích chập.......................................................... 38
3.3.2. Mơ hình mạng Restricted Boltzmann Machines ................................ 42
3.4 Chương trình nhận dạng kí tự bằng thuật tốn RBM ................................. 44
3.5 Kết luận chương 3 ...................................................................................... 46
KẾT LUẬN CHUNG ........................................................................................... 47
TÀI LIỆU THAM KHẢO .................................................................................... 48
-6-
DANH MỤC CÁC KÝ HIỆU, CỤM TỪ VIẾT TẮT, THUẬT NGỮ
Ký hiệu, thuật ngữ (cụm từ viết tắt)
Diễn giải
Support Vector Machines (SVM)
Máy véc tơ hỗ trợ
Deep Learning (DL)
Học sâu
CSDL
Cơ sở dữ liệu
Artificial Neural Network (ANN)
Mạng neural nhân tạo
Computer Vision
Thị giác máy tính
Synapse
Khớp kết nối
Convolutional Neural Network (CNNs)
Mạng neural tích chập
Machinelearning (ML)
Học máy ( Máy học)
RBMs
Restricted Boltzmann Machines
Artificial intelligence (AI)
Trí tuệ nhân tạo
Natural language processing (NLP)
Xử lí ngơn ngữ tự nhiên
Clustering
Phân nhóm
Outcome
Đầu ra
Maximum Likelihood Estimation
(MLE)
Ước lượng khả năng cực đại
Partition function
Hàm ngăn phần
MCMC
Markov Chain Monte Carlo
-7-
DANH MỤC CÁC HÌNH
Hình 1.1: Các bước cơ bản cho bài tốn nhận dạng ........................................... 14
Hình 1.2: Q trình chuyển từ ma trân điểm sang ma trận giá trị ...................... 16
Hình 1.3: Chuẩn hóa kích thước ảnh ................................................................... 16
Hình 2.1: Mơ hình neural sinh học .................................................................... 19
Hình 2.2: Mơ hình neural nhân tạo nhiều đầu vào .............................................. 20
Hình 2.3: Mơ hình mạng neural một tầng ........................................................... 21
Hình 2.6: Minh họa tích chập .............................................................................. 28
Hình 2.7: Minh họa lớp tích chập trọn ảnh ......................................................... 29
Hình 2.8: Kiến trúc mạng neural tích chập ......................................................... 30
Hình 2.9: Cấu trúc của mạng Hopfield 4 nút ...................................................... 31
Hình 2.10: Hàm kích hoạt với biến ................................................................. 32
Hình 2.11: Mơ hình mạng Boltzmann Machines 3 nút ẩn ................................... 34
Hình 2.12: Mơ hình RBM với 3 nút ẩn, 2 nút hiện............................................... 36
Hình 3.1: Một vài mẫu trong tập MNIST ............................................................. 39
Hình 3.2: Minh họa phương pháp Maxpooling .................................................. 40
Hình 3.3: Mơ hình mạng neural tích chập trong nhận dạng ký tự viết tay ......... 40
Hình 3.4: Minh họa Lớp liên kết đầy đủ .............................................................. 41
Hình 3.5: Minh họa các bước tích chập ............................................................. 41
Hình 3.6: Cấu trúc mơ hình mạng RBM .............................................................. 42
Hình 3.7: Giao diện chương trình ........................................................................ 44
Hình 3.8: Quá trình training ................................................................................ 45
Hình 3.9: Nhận dạng online ................................................................................. 45
Hình 3.10: Nhận dạng offline............................................................................... 46
-8-
MỞ ĐẦU
1. Sự cần thiết của vấn đề nghiên cứu
Phương pháp học sâu (Deep Learning) là một phương pháp nâng cao của
mạng neural nhân tạo. Ngày nay rất nhiều các bài toán nhận dạng sử dụng Deep
Learning để giải quyết do thuật tốn này có thể giải quyết các bài toán phức tạp
với tập dữ liệu đầu vào khổng lồ mà hiệu năng cũng như độ chính xác vượt trội
so với các phương pháp phân lớp truyền thống. Công nghệ này hiện đang dẫn
đầu trong việc cung cấp những giải pháp tốt nhất cho nhiều bài tốn nhận dạng kí
tự, nhận dạng hình ảnh, nhận dạng giọng nói và xử lý ngơn ngữ tự nhiên, từ đó
mang lại nhiều giá trị trên các ứng dụng cho các doanh nghiệp bao gồm cơng
nghệ quảng cáo, dịch vụ tài chính, phương tiện truyền thông, sản xuất, y tế, dịch
vụ công cộng…
Trong những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt
bậc trong ngành Machine Learning. Các hệ thống xử lý ảnh lớn của các hãng
Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng
thơng minh như nhận diện khuôn mặt, vân tay người dùng, hệ thống dự báo sự
cố, phát triển xe hơi tự lái hay đơn giao hàng tự động. Xuất phát từ những yêu
cầu thực tế, đang rất cần có những nghiên cứu về vấn đề này. Chính vì vậy tơi đã
chọn đề tài “Nghiên cứu phương pháp học sâu ứng dụng trong bài tốn nhận
dạng kí tự”
2. Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Nghiên cứu về phương pháp học sâu ứng dụng xây dựng hệ thống nhận
dạng kí tự.
2.2 Mục tiêu cụ thể
Đề tài tập chung vào 3 mục tiêu cụ thể sau:
(i) Nghiên cứu tổng quan về bài toán nhận dạng kí tự.
(ii) Nghiên cứu về mạng Neural theo phương pháp học sâu.
-9-
(iii) Nghiên cứu và cài đặt thuật toán nhận dạng ký tự bằng mạng neural
theo phương pháp học sâu.
3. Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
3.1.1 Nghiên cứu lý thuyết
- Nghiên cứu các tài liệu về bài tốn nhận dạng ký tự đã cơng bố ở trong
và ngoài nước;
- Nghiên cứu các tài liệu về phương pháp Học sâu (Deep Learning) đã
công bố ở trong và ngoài nước;
- Nghiên cứu mạng neural theo phương pháp học sâu để xây dựng hệ
thống nhận dạng kí tự.
3.1.2 Nghiên cứu thực nghiệm
- Nghiên cứu về ngôn ngữ Python cài đặt các thuật toán với bộ dữ liệu
MNIST.
- Nghiên cứu về ngôn ngữ C# để xây dựng ứng dụng nhận dạng kí tự.
- So sánh, đánh giá hiệu quả của các thuật toán.
3.2 Phạm vi nghiên cứu của bài toán
- Trong luận văn này, Tôi tập trung giải quyết bài toán sử dụng mạng
neural theo phương pháp học sâu để nhận dạng kí tự từ 0 đến 9.
4. Nội dung nghiên cứu
- Nghiên cứu tổng quan về các hệ thống nhận dạng ký tự viết tay đã được
công bố.
- Nghiên cứu về mạng neural (Quá trình huấn luyện và học mạng).
- Nghiên cứu về các thuật toán cơ bản của học sâu (Deep Learning).
- Nghiên cứu các phương pháp để trích chọn đặc trưng của ký tự viết tay
- Nghiên cứu về ngơn ngữ lập trình Python, C# để cài hệ thống nhận dạng
- Lập trình các thuật tốn trên máy tính và đánh giá hiệu quả của các thuật
tốn
-10-
CHƯƠNG 1
TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG
1.1 Giới thiệu về bài tốn nhận dạng
Nhận dạng kí tự là lĩnh vực luôn được nhiều nhà nghiên cứu quan tâm và
cho đến nay lĩnh vực này cũng đã đạt được nhiều thành tựu lớn lao cả về mặt lý
thuyết cũng như trong ứng dụng thực tế. lĩnh vực nhận dạng kí tự được chia làm
hai loại: Nhận dạng kí tự quang học và nhận dạng kí tự viết tay.
Những năm gần đây, nhận dạng kí tự quang học đã được các nhà nghiên
cứu giải quyết gần như hoàn chỉnh. Tuy nhiên, nhận dạng kí tự viết tay vẫn là
bài tốn mang nhiều thách thức lớn đối với các nhà nghiên cứu và hiện nay vẫn
chưa thật sự có giải pháp tối ưu hồn chỉnh. Bài tốn nhận dạng kí tự viết tay lại
được phân ra làm hai loại: nhận dạng kí tự online và nhận dạng kí tự offline.
Bài tốn nhận dạng kí tự viết tay online được giải quyết trên cơ sở lưu lại
các thông tin về nét chữ như hướng, thứ tự nét viết và tốc độ của nét viết trong
q trình nó đang viết. Đây chính là cơ sở để máy tính nhận dạng được các chữ
cái. Một trong những sản phẩm nhận kí tự viết tay online tiêu biểu nhất đó là
chương trình nhận dạng kí tự viết tay rời rạc trực tuyến trên một trạm làm việc
của IBM do H.S.M.Beigi, C.C.Tapert, M.Ukeison và C.G.Wolf ở phòng thực
hành Watson IBM cài đặt. Ngược lại, đối với nhận dạng kí tự viết tay, dữ liệu
đầu vào là ảnh văn bản được qt vào vì vậy khó khăn lớn nhất khi nghiên cứu
bài tốn nhận dạng kí tự viết tay là sự thay đổi liên tục trong cách viết của từng
người. Cụ thể cùng là một người viết, viết một kí tự giống nhau tuy nhiên cũng
có nhiều sự khác biệt trong cách viết và kiểu chữ tuỳ thuộc vào từng ngữ cảnh
mà kiểu viết của một người cũng có thể thay đổi theo thời gian hoặc theo thói
quen... Điều này gây ra nhiều khó khăn trong việc trích chọn đặc trưng cũng như
lựa chọn mơ hình nhận dạng.
-11-
1.1.1 Các giai đoạn hình thành và phát triển
Khái niệm nhận dạng xuất hiện từ những năm 1922 tuy nhiên phải đến
đầu năm 1950 thì các sản phẩm mới được thương mại và được biết đến rộng rãi.
Những phiên bản nhận dạng chữ viết được trình làng đầu tiên có tính năng mới
về nhập liệu và lưu trữ hai chiều bằng cây viết trên một tấm bảng cảm ứng. Nhờ
bước ngoặt này mà các nhà nghiên cứu mới phát triển sang các bài toán nhận
dạng chữ viết tay online. Đầu những năm 1951 M. Sheppard đã chế tạo được một
rô bốt đọc, viết có tên là GISMO. Đến năm 1954, J. Rainbow đã chế tạo thành
công máy nhận dạng chữ viết đầu tiên tuy nhiên nhược điểm của máy này là tộc
độ nhận dạng rất chậm và chỉ nhận dạng được các kí tự in hoa, Mãi điến năm
1967 thì mới có sản phẩm thương mại nhận dạng chữ do IBM phát triển.
Đến thập niên 80-90 các thiết bị phần cứng của máy tính phát triển rất
nhanh chính vì thế đã tạo ra mơi trường lí tưởng để các phương pháp nhận dạng
ban đầu có được điều kiện thuận lợi để phát triển các ứng dụng nhận dạng kí tự.
Tuy nhiên ở giai đoạn này các nhà nghiên cứu chủ yếu sử dụng phương pháp cấu
trúc và đối sánh để tiếp cận bài toán nhận dạng chữ. Đồng thời các hướng nghiên
cứu đa phần tập trung vào các kỹ thuật nhận dạng hình dáng, chứ chưa áp dụng
cho thơng tin ngữ nghĩa, chính vì thế các sản phẩm thường có nhược điểm hạn
chế về hiệu suất nhận dạng và tính hiệu quả trong ứng dụng thực tế chưa thực sự
cao.
Từ năm 1990 cho đến nay ở giai đoạn này Machine Learning đã dịch
chuyển từ cách tiếp cận hướng kiến thức sang cách tiếp cận hướng dữ liệu. Các
nhà khoa học bắt đầu tạo ra các chương trình cho máy tính để phân tích một
lượng lớn dữ liệu và rút ra các kết luận, đồng thời kết hợp các kỹ thuật nhận
dạng với các phương pháp luận trong lĩnh vực học máy (ML), phương pháp này
được áp dụng rất hiệu quả như mạng Neural, mơ hình markov ẩn, SVM và xử lý
ngôn ngữ tự nhiên...
Đến năm 2006 - Geoffrey Hinton đã đưa ra một thuật ngữ "Deep
Learning" để giải thích các thuật tốn mới cho phép máy tính "nhận dạng" và
phân biệt các đối tượng và văn bản với dữ liệu đầu vào là hình ảnh và video.
-12-
1.1.2 Tình hình nghiên cứu ở trong nước
Trong những năm gần đây, lĩnh vực nhận dạng kí tự viết tay được nhiều
nhà nghiên cứu trong nước rất quan tâm. Một số nhà nghiên cứu điển hình như:
GS.TSKH. Hồng Kiếm và các cộng sự (2001) ở đại học Quốc Gia TP HCM đã
cài đặt và thử nghiệm hệ thống nhận dạng chữ số, chữ viết tay rời rạc trên phiếu
xuất nhập cảnh, nhóm tác giả Lê Hồi Bắc và Lê Hồng Thái (2001) đã nghiên
cứu nhận dạng chữ viết tay dựa trên mạng và giải thuật di truyền, nhóm nghiên
cứu phịng nhận dạng và cơng nghệ trí thức của viện cơng nghệ thơng tin với
nhiều cơng trình nghiên cứu về nhận dạng chữ viết tay dựa trên mơ hình markov
ẩn, mạng neural và SVM…, nhóm nghiên cứu của TS. Nguyễn Việt Hà và cộng
sự (2005) ở Đại học Quốc Gia Hà Nội đã nghiên cứu đề xuất giải pháp mơ hình
liên mạng neural trong nhận dạng kí tự viết tay tiếng việt…
Mặc dù trong nước đã có nhiều kết quả nghiên cứu về nhận dạng chữ viết
tay tuy nhiên các phương pháp và thuật toán chỉ tập chung vào học máy rất ít
cơng trình nghiên cứu theo phương pháp học sâu
1.1.3 Tình hình nghiên cứu ở nước ngồi
Từ những thập niên 90 cho đến nay theo thời gian các hệ thống nhận dạng
được xây dựng và phát triển dựa trên cơ sở các phương pháp luận phân lớp trong
lĩnh vực học máy kết hợp với các kỹ thuật xử lí ảnh một cách hiệu quả. Một số
phương pháp học máy tiên tiến như mạng neural, mơ hình markov ẩn, SVM… đã
được các nhà nghiên cứu áp dụng để phát triển các ứng dụng trong lĩnh vực nhận
dạng kí tự.
Ngày nay trên thế giới, hiện đã có nhiều ứng dụng liên quan đến vấn đề
nhận dạng văn bản hay nhập dữ liệu tự động. Có thể kể đến như: sản phẩm
FineReader, Scan To Office của hãng ABBYY, Smart scan Xpress của Pegasus
Image, các ứng dụng chấm thi tự động, cảnh báo rủi do, giữ xe hơi tự động…
-13-
1.2 Các bước xử lí cơ bản cho bài tốn nhận dạng
Quá trình nhận dạng một ảnh đầu vào nhằm thu được ảnh đầu ra như
mong muốn thường phải trải qua nhiều bước khác nhau Hình 1.1 sẽ giới thiệu
cho chúng ta những bước cơ bản của q trình đó.
Tiền xử lí (preprocessing): Bước này góp phần làm tăng độ chính xác
khi phân lớp của hệ thống nhận dạng, mặt khác nó cũng làm cho tốc độ nhận
dạng của hệ thống chậm lại. Vì vậy, tùy thuộc vào chất lượng của ảnh được quét
vào mà chọn một hoặc một vài chức năng trong khối này. Giai đoạn này để
chuẩn hóa ảnh cần tìm giúp cho việc tìm kiếm được hiệu quả hơn. Các công việc
trong giai đoạn tiền xử lý có thể là: Chuẩn hóa kích cỡ giữa ảnh trong CSDL và
ảnh cầm tìm, hiệu chỉnh độ sáng, tối của ảnh; lọc nhiễu, chuẩn hóa về vị trí.
Hình 1.1: Các bước cơ bản cho bài toán nhận dạng
-14-
Tách chữ (segmentation): Chức năng này làm nhiệm vụ xác định vị trí,
kích cỡ của một kí tự trong một từ, cụm tự tách ra được tách ra. Phần kí tự đươc
tách ra nó sẽ là kí tụ cần tìm và chức năng trích chọn đặc trưng sẽ sử dụng các
ảnh được tách ra này.
Trích chọn đặc trưng (Feature extraction): Rút trích các đặc điểm riêng
nhằm phân biệt các ký tự khác nhau, từ các đặc trưng này hình thành các vector
đặc trưng, các vector này sẽ được sử dụng để đối sánh sự giống nhau giữa ảnh kí
tự cần tìm và kí tự trong CSDL. Giai đoạn này đóng vai trò quan trọng nhất trong
nhận dạng chữ viết tay.
Huấn luyện (Training): Các vectơ đặc trưng thuộc cơ sở dữ liệu được
đưa vào bộ phân loại, và bộ phân loại được huấn luyện để cho ra kết quả phân
loại đúng. Bản chất huấn luyện là dùng hàm phân lớp để tính khoảng cách giữa
hai vectơ đặc trưng của ảnh mẫu thuộc lớp đã biết và ảnh cần nhận dạng, hiệu
chỉnh tham số của hàm phân lớp sao cho khoảng cách hai vectơ cùng lớp là nhỏ
nhất và hai vectơ khác lớp là lớn nhất.
Nhận dạng (Recognition): phương pháp điển hình so trùng mẫu, dùng
thống kê, mạng neural, trí tuệ nhân tạo, phương pháp học sâu (Deep Learning)
hay dùng phương pháp kết hợp các phương pháp trên.
Hậu xử lí (postprocessing): Mục tiêu của hậu xử lý để sử dụng thêm
thông tin theo ngữ cảnh để nhận dạng chữ viết, mục đích là tăng tính chính xác
của hệ thống nhận dạng trong trường hợp ký tự cần nhận dạng có sự nhập nhằng
ví dụ chữ o và số 0, chữ U và V….
-15-
1.3. Mơ tả q trình trong hệ thống nhận dạng
Hình 1.2: Quá trình chuyển từ ma trân điểm sang ma trận giá trị
Đầu tiên ảnh các kí tự viết tay được đưa vào hệ thống nhận dạng sau đó
ảnh được chuyển tới q trình tiền xử lí, ở bước này ảnh sẽ được lưu trữ dưới
dạng ma trận điểm, vị trí pixel có nét vẽ sẽ mang giá trị 1, ngược lại có giá trị 0.
Hình 1.3: Chuẩn hóa kích thước ảnh
Sau đó sẽ chuẩn hóa kích thước của ảnh bằng cách cắt xén để ký tự nằm
trọn trong một khung chữ nhật (Hình 1.3), các vùng khơng gian khơng có nét vẽ
được loại bỏ đi. Giải thuật cắt xén hiện thực đơn giản dựa trên ảnh nhị phân và
thu giảm ảnh đã được cắt xén về một ảnh có kích thước chung đã được quy định
trước.
-16-
Sau khi qua các bước xử lý ở trên thì ảnh chính thức được đưa vào huấn
luyện và nhận dạng, trong quá trình huấn luyện và nhận dạng sẽ sử dụng các mơ
hình và thuật tốn cần thiết để thực hiện tính tốn và xử lý. Một cách tổng qt,
có thể nói nhiệm vụ của các hệ nhận dạng trong các bài tốn nhận dạng chính là
phân loại mẫu. Có nghĩa là từ một mẫu vào ban đầu, hệ nhận dạng cần chỉ ra nó
thuộc về lớp phân loại nào. Ví dụ: Trong nhận dạng chữ số viết tay, tất cả các
kiểu viết khác nhau của số “0” đều được quy về một lớp, lớp số “0” và hệ nhận
dạng cần được huấn luyện sao cho khi gặp một mẫu bất kỳ của số “0” nó phải chỉ
ra được đầu vào này thuộc về lớp số “0”. Trong hệ nhận dạng chữ số, số lớp phân
loại là 10 lớp, tương ứng với 10 chữ số từ 0 đến 9. Một cách tương tự, trong nhận
dạng chữ cái viết tay tiếng Anh chữ thường, với đầu vào là ảnh của ký tự, hệ
nhận dạng cần phân loại mẫu đó về một trong số 26 lớp tương ứng với 26 chữ cái
từ “a” tới “z”.
1.4 Kết luận chương 1
Ở chương 1 này tơi đã giới thiệu tổng quan về tình hình nghiên cứu về bài
tốn nhận dạng kí tự viết tay và đề cập đến các cơng trình nghiên cứu và sản
phẩm trong và ngoài nước trong lĩnh vực này, đồng thời qua đó mơ tả q trình
hoạt động của hệ thống nhận dạng từ đó cũng nêu lên được lí do mà vì sao mà
tơi chọn đề tài.
Luận văn “Nghiên cứu về phương pháp học học sâu ứng dụng nhận dạng
kí tự” được thực hiện với mục đích giải quyết một lớp con các bài toán nhận
dạng chữ viết tay mà cụ thể là nhận dạng các kí tự đơn lẻ là các chữ số từ 0 đến
9, đây là bước cần thiết trong bài toán nhận dạng chữ viết tiếng Việt. Từ đó sẽ tạo
cơ sở tiếp theo để có thể xây dựng tiếp mơ hình nhận dạng các kí tự tiếng Việt
đơn lẻ, và sẽ tiến tới xây dựng một hệ thống nhận dạng văn bản viết tay tiếng
Việt hoàn chỉnh.
-17-
CHƯƠNG 2
PHƯƠNG PHÁP HỌC SÂU VỚI MẠNG NEURAL
2.1. Tổng quan về mơ hình mạng Neural
2.1.1 Giới thiệu về mạng Neural
Mạng neural nhân tạo, Artificial Neural Network (ANN) còn được gọi tắt
là mạng neural, neural network, nó là sự tái tạo bằng kỹ thuật những chức năng
của hệ thần kinh con người với vô số các neural được liên kết truyền thông với
nhau qua mạng. Giống như con người, ANN được học bởi kinh nghiệm, lưu
những kinh nghiệm đó và sử dụng trong những tình huống phù hợp. Trong một
vài năm trở lại đây mạng neural đã được nhiều người quan tâm và đã áp dụng
thành công trong rất nhiều lĩnh vực khác nhau, bất cứ ở đâu có vấn đề về dự báo,
phân loại và điều khiển, mạng neural đều có thể ứng dụng được.
Là một mơ hình xử lý thông tin phỏng theo cách thức xử lý thông tin của
các hệ neural sinh học. Nó được tạo nên từ một số lượng lớn các phần tử (gọi là
phần tử xử lý hay neural) các phần tử này kết nối với nhau thông qua các liên kết
(gọi là trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn
đề cụ thể nào đó.
2.1.2 Cấu trúc và hoạt động mạng Neural
2.1.2.1 Sơ lược về neural sinh học
Mạng neural sinh học là một mạng lưới các neural có kết nối hoặc có liên
quan về mặt chức năng trực thuộc hệ thần kinh ngoại biên hay hệ thần kinh trung
ương. Trong ngành thần kinh học, nó thường được dùng để chỉ một nhóm neural
thuộc hệ thần kinh là đối tượng của một nghiên cứu khoa học nhất định. (Hình
2.1)
Các thành phần chính của mạng neural:
- Hạt nhân tế bào (Cell nucleus): Tổng hợp tín hiệu và khi đủ mạnh thì có
tín hiệu ra ở trục cảm ứng
- Khớp kết nối (Synapse): Kết nối các neural nhờ các tính chất hóa lí
-18-
- Xúc tu (Dendrites): là các dây mảnh, dài chúng truyền dữ liệu (dưới
dạng xung điện thế)
- Trục cảm ứng (Axon): Đưa tín hiệu ra và truyền các neural khác qua
khớp kết nối
Hình 2.1: Mơ hình neural sinh học [8]
Có thể tóm tắt hoạt động của một neural như sau: neural lấy tổng tất cả
các điện thế vào mà nó nhận được, và phát ra một xung điện thế, nếu tổng ấy lớn
hơn một ngưỡng nào đó. Các neural nối với nhau ở các synapses. Synapse được
gọi là mạnh khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các neural khác.
Ngược lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn. Các synapses
đóng vai trị rất quan trọng trong quá trình huấn luyện. Khi chúng ta huấn luyện
thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết mạnh
giữa các neural.
Có thể nói rằng người nào càng thơng minh thì càng có nhiều synapses và
các synapses ấy càng mạnh mẽ, hay nói cách khác, thì liên kết giữa các neural
càng nhiều, càng nhạy bén.
2.1.2.2 Mạng Neural Nhân Tạo
Neural nhân tạo là một đơn vị tính tốn có nhiều đầu vào và một đầu ra,
trong đó mỗi đầu vào đến từ một liên kết xác định. Nó có đặc trưng của là một
-19-
hàm kích hoạt phi tuyến chuyển đổi tổ hợp tuyến tính của tất cả các tín hiệu đầu
vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho
tính tốn của mạng neural.
Hình 2.2: Mơ hình neural nhân tạo nhiều đầu vào [5]
Trong đó:
-
P1, P2,...,PR là tập các đầu vào (là các số vô hướng)
-
W1,1, W1,2,..., W1,R là các trọng số liên kết các phần tử của ma trận W
-
là hàm tổng trên một neural, dùng để tính tổng của tích các đầu vào
với trọng số liên kết của nó.
-
f là hàm truyền (cịn gọi là hàm kích hoạt), hàm này được dùng để giới
hạn phạm vi đầu ra của mỗi neural. Nó nhận đầu vào là kết quả của hàm
tổng và ngưỡng
-
b là ngưỡng (còn gọi là độ lệch )
-
n là đầu vào của mạng (net input) n= W1,1+ W1,2P2+...+ W1,RPR+b
-
a là đầu ra của mạng là tín hiệu đầu ra của một neural, với mỗi neural sẽ
có tối đa là một đầu ra, a được tính theo cơng thức a= f(Wp+b)
2.1.2.3 Kiến Trúc Mạng
Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là
neural) tựa như neural thần kinh của não người, hoạt động đồng thời và được nối
-20-
với nhau bởi các liên kết giữa các neural. Mỗi liên kết này kèm theo một trọng số
xác định, đặc trưng cho tính kích hoạt hoặc ức chế giữa các neural. Ta có thể coi
các trọng số này là phương tiện để lưu trữ thông tin lâu dài trong mạng neural và
nhiệm vụ của quá trình huấn luyện của mạng là cập nhật các trọng số khi có thêm
thơng tin về mẫu học. Hay nói một cách khác, các trọng số đều được điều chỉnh
sao cho dáng điệu ra vào của mạng sẽ mơ phỏng hồn tồn phù hợp với mơi
trường đang xử lí.
2.1.2.4 Mạng một tầng
Chúng ta có thể hình dung mạng một tầng với S neural như hình 2.3. Đặc
điểm chỉnh của mạng này là mỗi một đầu vào trong số R đầu vào sẽ được nối với
từng neural và ma trận trọng số bây giờ sẽ có S hàng.
Một tầng bao gồm ma trận trọng số, các bộ cộng, vector ngưỡng b, hàm
truyền và vector đầu ra là a.
Layer of s neurons
Inputs
w1,1
p1
n1
f
a1
b1
1
p2
n2
b2
p3
PR
1
wS , R
f
a2
nS
f
aS
bS
1
a = f(Wp+b)
Hình 2.3: Mơ hình mạng neural một tầng [5]
n
Với n = W1,i pi Hay n = Wp + b và neural đơn W chỉ là vec tơ hàng, a=f(Wp+b).
i =1
-21-
Trong đó mỗi phần tử của vector đầu vào p được nối với từng neural
thông qua ma trận trọng số W và mỗi neural có một ngưỡng b, một bộ cộng, một
hàm chuyển f và một đầu ra a cùng với nhau, các đầu ra này sẽ tạo thành một
vector đầu ra a và thường thì số lượng đầu vào của tầng sẽ khác với số lượng
neural.(R#S). Lưu ý không phải tất cả các neural trong cùng một tầng phải nhất
thiết có hàm truyền giống nhau, từ đó ta thể định nghĩa các neural trong một tầng
có hàm chuyển khác nhau bằng cách kết hợp song song hai mạng neural giống ở
trên. Cả hai sẽ có đầu vào giống nhau, và mỗi mạng sản xuất ra vài đầu ra. Và ma
trận trọng số cho các phần tử trong vector đầu vào W và p, b ,a được tính bởi
w1,1 w1, 2 ...w1, R
b1
p1
a1
a
w2,1 w2, 2 ...w2, R
b2
p2
, a= 2
W=
, p=
, b=
......................
.
.
.
wS ,1 wS , 2 ...wS , R
bs
as
ps
Các chỉ số hàng của các phần tử trong ma trận W chỉ ra neural đích đã kết
hợp với trọng số đó, trong khi chỉ số cột cho biết đầu vào cho trọng số đó. Vì
vậy, các chỉ số trong W3,2 có nghĩa là trọng số của đầu vào thứ 2 nối với neural
thứ 3.
2.1.2.5 Mạng đa tầng
Mơ hình mạng neural này gồm 3 lớp: lớp input (nhập), lớp hidden (ẩn) và
lớp output (đầu ra). Trong lớp input các nút nhận giá trị của một biến độc lập và
được chuyển vào mạng.
Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp và gọi là tổng trọng
số sau đó chuyển kết quả cho các nút trong lớp ẩn, gọi là “ẩn” vì các nút trong
lớp này chỉ liên lạc với các nút trong lớp nhập và lớp đầu ra, đồng thời chỉ có
người thiết kế mạng mới biết được lớp này cịn người dùng thì không
Lúc này các nút trong lớp đầu ra nhận các tín hiệu tổng trọng hóa từ các
nút trong lớp ẩn và nút trong lớp xuất sẽ ứng với một biến phụ thuộc.
Tuy nhiên với mỗi bài toán khác nhau mà ta sẽ lựa chọn số đầu vào, số
neural trên lớp ra của mạng khác nhau sao cho phù hợp. Ví dụ nếu ta có 4 biến
-22-
được sử dụng là đầu vào thì sẽ có mạng với 4 đầu vào, nếu có 2 tham số ra thì
trên lớp ra của mạng sẽ có 2 neural ra tương ứng với 2 tham số ra đó. Dạng của
hàm truyền tại lớp ra cũng phụ thuộc vào đặc tính của biến ra, ví dụ: Nếu biến ra
có giá trị nằm trong khoảng [-1,1] thì hàm truyền hard limit có thể được chọn cho
các neural trên lớp ra.
2.1.3. Mạng đa tầng truyền thẳng
Khi phân tích một bài tốn phức tạp nếu sử dụng mạng neural truyền
thẳng một lớp sẽ gặp rất nhiều khó khăn, từ đó người ta đưa ra mơ hình mạng
neural nhiều tầng truyền thẳng bằng việc liên kết một số lớp neural lại với nhau.
Lớp đầu vào sẽ có nhiệm vụ nhận tín hiệu, lớp đầu sẽ ra làm nhiệm vụ đưa tín
hiệu ra của mạng, cịn các lớp ở giữa lớp vào và lớp ra được gọi là lớp ẩn và các
neural trong các lớp ẩn có hàm truyền dạng phi tuyến. Nhờ có lớp ẩn mà mạng
neural nhiều tầng có thể giải quyết các bài tốn phi tuyến. Nếu lớp ẩn mà càng
nhiều thì khả năng mở rộng thông tin càng cao và xử lý tốt mạng có nhiều lớp
vào và lớp ra.
Lớp vào
x
Lớp ẩn
x.
Lớp ra
y
.
.
.
.
.
.
xm
.
y
ym
Hình 2.4: Mạng đa tầng chuyền thẳng
2.1.4. Thuật tốn lan truyền ngược
Đây là thuật toán được sử dụng nhiều nhất nhất để training cho các mạng
neural truyền thẳng nhiều lớp. Ta cũng có thể sử dụng cho các mạng truyền thẳng
với các hàm chuyển và các hàm lỗi khả vi.
Tiêu chuẩn huấn luyện: Phải làm cho sai số đầu ra càng nhỏ càng thì tốt.
Triết lý của phương pháp: Căn cứ vào đầu ra để điều chỉnh trọng số của
lớp ra, sau đó dựa trên tính tốn của lớp ra để điều chỉnh trọng số của lớp ẩn cho
hợp lí.
-23-
Khi áp dụng thuật toán lan truyền ngược vào training mạng neural nhiều
lớp thì nhất thiết phải đi qua hai q trình: Q trình truyền tuyến tính và q
trình truyền ngược. Ở q trình truyền tuyến tính thì dữ liệu từ lớp nhập qua lớp
ẩn và đến lớp xuất để thay đổi giá trị của trọng số liên kết W của các neural
trong mạng biểu diễn được dữ liệu học. Đồng thời tìm ra sự khác nhau giữa giá
trị thật hàm mẫu mà mạng tính được và kết quả dự đốn của mạng gọi là lỗi. Cịn
q trình truyền ngược thì giá trị lỗi sẽ được truyền ngược lại để cho quá trình
training sẽ tìm ra trọng số Wi với lỗi phải nhỏ nhất.
2.1.5 Hàm truyền
Có rất nhiều hàm truyền có thể dùng trong các mạng neuron. Hàm truyền
được phân loại theo hàm tuyến tính hoặc phi tuyến, hàm liên tục hay gián đoạn
Name
Input/ouput relation
a=0
n0
a=1
n0
Symmetrical hard
limit
a= -1
n0
a=+1
n0
Linear
a=n
Hard Limit
Saturating
Linear
Python Function
Hardlim
Hardlims
Purelin
a=0
n<0
a=n
0 n 1
a=1
n>1
1
1 + e− n
Log-Sigmoid
a=
Hyperbolic tangent
sigmoid
en − e− n
a = n −n
e +e
satlin
logsig
tansig
Bảng 2.1. Danh mục các hàm truyền thường gặp [5]
Việc lựa chọn hàm truyền phù hợp với bài toán thường được tiến hành qua thực
nghiệm.
-24-
Ví dụ:
- Hàm truyền Symmetrical hard limit được sử dụng ở tầng ra của mạng
neuron trong các bài toán phân loại hai lớp
- Hàm truyền Log-Sigmoid được sử dụng trong mạng neuron đa tầng
- Hàm truyền Linear được sử dụng trong mạng ADALINE
2.1.6 Các phương pháp huấn luyện mạng
Mạng neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người,
chính vì vậy mà đặc trưng cơ bản của mạng là có khả năng học, sau khi học xong
thì nó có thể tái tạo các hình ảnh và dữ liệu. Trong trạng thái học thông tin được
lan truyền theo hai chiều nhiều lần nhằm mục đích để học các trọng số. Dựa trên
tính chất của các tập kiểu dữ liệu mà người ta chia ra làm 3 kiểu học chính, mỗi
kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát, học
khơng giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng
có thể dùng được cho các nhiệm vụ.
2.1.6.1 Học có giám sát (Supervised Learning)
Học có giám sát là thuật toán dự đoán đầu ra (outcome) của một dữ liệu
mới (new input) dựa trên các cặp (input, outcome) đã biết từ trước. Cặp dữ liệu
này còn được gọi là (data, label), tức (dữ liệu, nhãn). Học có giám sát là nhóm
phổ biến nhất trong các thuật tốn ML và DL. [8]
Ở phương pháp học này thành phần không thể thiếu được đó là sự có mặt
của một người thầy (khơng nằm trong hệ thống). Người thầy này có đầy đủ kiến
thức về môi trường và được thể hiện thông qua một tập hợp các cặp đầu vào và
đầu ra cho trước. Sau đó hệ thống học (tức là mạng neural) sẽ phải tìm cách để
các tham số bên trong của mình thay đổi (các trọng số và các ngưỡng) từ đó sinh
ra một ánh xạ có khả năng ánh xạ các đầu vào thành các đầu ra mong muốn. Sự
thay đổi này được tiến hành thông qua việc so sánh giữa đầu ra thực sự và đầu ra
mong muốn. [8]
Ví dụ : Trong nhận dạng chữ viết tay, ta có ảnh của rất nhiều các chữ số,
mỗi chữ số lại được viết bởi nhiều người khác nhau. Sau đó ta đưa các bức ảnh
-25-