i
LỜI CAM ĐOAN
Tôi xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày
trong luận văn là bản thân tôi tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn
khoa học của TS. Vũ Tất Thắng Viện công nghệ thông tin thuộc Viện Khoa
học và Công nghệ Việt Nam.
Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc.
Thái Nguyên, ngày 20 tháng 3 năm 2016
Học viên
Vũ Mạnh Hùng
ii
LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn tới trường Đại học CNTT&TT – Đại học Thái
Nguyên đã tạo điều kiện và tổ chức khóa học này để tôi có thể có điều kiện
tiếp thu kiến thức mới và có thời gian để hoàn thành Luận văn Cao học này.
Tôi xin được cảm ơn TS.Vũ Tất Thắng, người đã tận tình chỉ dẫn tôi
trong suốt quá trình xây dựng đề cương và hoàn thành luận văn.
Tôi xin chân thành cảm ơn các thày cô đã truyền đạt cho chúng tôi
những kiến thức quý báu trong quá trình học Cao học và làm Luận văn.
Tôi chân thành cảm ơn các bạn bè, anh chị em trong lớp cao học K13
đã giúp đỡ, đóng góp ý kiến chia sẽ những kinh nghiệm học tập, nghiên cứu
1.1.3. Tình hình nghiên cứu ở nước ngoài .............................................. 6
1.2. Các bước xử lý cho bài toán nhận dạng hoàn chỉnh ............................... 7
1.3. Kết luận chương .................................................................................... 9
CHƯƠNG 2: MÔ HÌNH MẠNG NEURON VÀ MÔ HÌNH HỌC SÂU .......... 11
2.1. Tổng quan về mô hình mạng neuron ................................................... 11
2.1.1. Giới thiệu về mạng Neuron ........................................................ 11
2.1.1.1. Định nghĩa: ............................................................................. 11
2.1.1.2. Lịch sử phát triển mạng neuron ............................................... 11
2.1.1.3. So sánh mạng neuron với máy tính truyền thống .................... 14
2.1.2. Cấu trúc và hoạt động của mạng Neuron .................................... 15
2.1.2.1. Neuron sinh học ...................................................................... 15
2.1.2.2. Cấu trúc của một neuron ......................................................... 17
2.1.2.3. Hoạt động của mạng neuron ................................................... 19
2.1.2.4. Hàm truyền ............................................................................. 25
2.1.3. Mô hình và huấn luyện trong bài toán nhận dạng ....................... 26
2.1.3.1. Mạng neuron và bài toán phân loại mẫu .................................. 26
2.1.3.2. Khả năng học và tổng quát hóa ............................................... 27
2.1.3.3. Các phương pháp huấn luyện mạng ........................................ 27
2.2. Mô hình học sâu .................................................................................. 29
2.2.1. Mạng nhiều tầng truyền thẳng (MLP) ........................................ 29
2.2.1.1. Chuẩn bị dữ liệu ...................................................................... 30
a. Kích thước mẫu.......................................................................... 30
b. Mẫu con ..................................................................................... 32
c. Sự phân tầng mẫu ...................................................................... 32
d. Chọn biến................................................................................... 33
2.2.1.2. Xác định các tham số cho mạng .............................................. 34
iv
1. Các kết quả đã đạt và chưa đạt được ................................................... 63
2. Hướng nghiên cứu và phát triển .......................................................... 63
TÀI LIỆU THAM KHẢO .............................................................................. 65
v
DANH MỤC ẢNH
Hình 1- 1: Các bước trong nhận dạng chữ viết tay .......................................... 7
Hinh 2- 1: Cấu trúc của một neuron sinh học điển hình ................................ 16
Hinh 2- 2: Cấu trúc của một neuron .............................................................. 18
Hinh 2- 3: Cấu trúc chung của mạng neuron ................................................ 20
Hinh 2- 4: Mạng tự kết hợp .......................................................................... 22
Hinh 2- 5: Mạng kết hợp khác kiểu .............................................................. 22
Hinh 2- 6: Mạng truyền thẳng ...................................................................... 23
Hinh 2- 7: Mạng phản hồi ............................................................................ 23
Hinh 2- 8: Perceptron ................................................................................... 24
Hinh 2- 9: Mạng MLP tổng quát .................................................................. 29
Hinh 2- 10: Mối liên hệ giữa sai số và kích thước mẫu ................................. 31
Hinh 2- 11: Huấn luyện luân phiên trên hai tập mẫu ..................................... 37
Hinh 2- 12: Cấu trúc của mạng Hopfield ...................................................... 40
Hinh 2- 13: Đồ thị hàm satlins ...................................................................... 41
Hinh 2- 14: Mạng Hopfield liên tục sử dụng mạch điện tử. .......................... 44
Hinh 2- 15: Một Boltzmann Machine với 3 nút ẩn ....................................... 45
Hinh 2- 16:Một RBM đơn giản với 3 hidden units và 2 visible units. ........... 49
Hình 3- 1: Mô hình huấn luyện mạng (MLP) ............................................... 54
Hình 3- 2: Mô hình huấn luyện mạng (RBM) ............................................... 56
Hình 3- 3: Giao diện chính của chương trình nhận dạng chữ viết tay ........... 58
Hình 3- 4: Chương trình khi nhận dạng 1 ảnh bất kỳ .................................... 59
Hình 3- 5: Chương trình khi nhận dạng toàn bộ ảnh trong một thư mục ....... 59
Tuy nhiên, với bài toán nhận dạng chữ viết tay thì vấn đề trở nên phức
tạp hơn nhiều so với bài toán nhận dạng chữ in thông thường ở những vấn đề
sau đây:
Với chữ viết tay thì không thể có các khái niệm font chữ, kích cỡ chữ.
Các kí tự trong một văn bản chữ viết tay thường có kích thước khác nhau.
Thậm chí, cùng một kí tự trong một văn bản do một người viết nhiều khi cũng
có độ rộng, hẹp, cao, thấp khác nhau, ...
Với những người viết khác nhau chữ viết có độ nghiêng khác nhau (chữ
nghiêng nhiều/ít, chữ nghiêng trái/phải...).
Các kí tự của một từ trên văn bản chữ viết tay đối với hầu hết người
viết thường bị dính nhau vì vậy rất khó xác định được phân cách giữa chúng.
Các văn bản chữ viết tay còn có thể có trường hợp dính dòng (dòng
dưới bị dính hoặc chồng lên dòng trên).
Trong những năm gần đây, mô hình mạng Neuron theo hướng học sâu
đã cho thấy những kết quả tốt trong nhiều bài toán khác nhau, trong đó có
nhận dạng chữ.
2
Xuất phát từ 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 học viên đã chọn đề tài “Nghiên cứu mô hình học sâu
(deep-learning) và ứng dụng trong nhận dạng chữ viết tay” làm luận văn tốt
nghiệp với mong muốn phần nào áp dụng vào bài toán thực tế.
Bài toán đã đặt ra phải giải quyết được những yêu cầu sau:
Nhận dạng được các ký tự từ ảnh đầu vào
Tiến hành nhận dạng kí tự đơn lẻ sử dụng mạng Neuron nhân tạo
theo phương pháp học sâu Restricted Boltzmann machine
(RBM).
Đánh giá kết quả và so sánh với mô hình mạng neuron
Nhận dạng chữ in: đã được giải quyết gần như trọn vẹn (sản phẩm
FineReader 11 của hãng ABBYY có thể nhận dạng chữ in theo 192 ngôn ngữ
khác nhau, phần mềm nhận dạng chữ Việt in VnDOCR 4.0 của Viện Công
nghệ Thông tin – Viện Hàn lâm Khoa học và Công nghệ Việt Nam có thể
nhận dạng được các tài liệu chứa hình ảnh, bảng và văn bản với độ chính xác
trên 98%).
Nhận dạng chữ viết tay vẫn còn là vấn đề thách thức lớn đối với các
nhà nghiên cứu. Bài toàn này chưa thể giải quyết trọn vẹn được vì nó hoàn
toàn phụ thuộc vào người viết và sự biến đổi quá đa dạng trong cách viết và
trạng thái sức khỏe, tinh thần của từng người viết.
1.1.1. Các giai đoạn phát triển
Giai đoạn 1 (1900 - 1980)
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 có từ những năm1950, khi
máy tính lần đầu tiên được giới thiệu tính năng mới về nhập và lưu trữ dữ liệu
hai chiều bằng cây bút viết trên một tấm bảng cảm ứng. Công nghệ mới này
cho phép các nhà nghiên cứu làm việc trên các bài toán nhận dạng chữ viết
tay online.
Mô hình nhận dạng chữ viết được đề xuất từ năm 1951 do phát minh
của M. Sheppard được gọi là GISMO, một robot đọc-viết.
Năm 1954, máy nhận dạng chữ đầu tiên đã được phát triển bởi J.
Rainbow dùng để đọc chữ in hoa nhưng rất chậm.
5
Năm 1967, Công ty IBM đã thương mại hóa hệ thống nhận dạng chữ.
Giai đoạn 2 (1980 - 1990)
nhập cảnh của nhóm nghiên cứu ở Đại học quốc gia thành phố Hồ Chí Minh,
…
1.1.3. Tình hình nghiên cứu ở nước ngoài
Nhận dạng chữ viết đã được nghiên cứu hơn 40 năm qua. Ngày nay
nhận dạng chữ viết đã nhận được sự quan tâm đáng kể do sự phát triển của
các máy tính cầm tay và điện thoại cầm tay dựa trên các bàn phím, chuột và
nhiều dạng thiết bị định vị khác. Nhận dạng chữ viết tay được thực hiện qua
hai hình thức là nhận dạng online và nhận dạng offline. Nhận dạng online có
nghĩa là máy tính sẽ nhận dạng các chữ được viết lên màn hình ngay sau khi
nó được viết. Đối với những hệ nhận dạng này, máy tính sẽ lưu lại các thông
tin về nét chữ như thứ tự nét viết, hướng và tốc độ của nét viết trong khi nó
đang được viết ra. Đây chính là cơ sở để máy tính nhận dạng được chữ cái, do
đó việc nhận dạng không gặp quá nhiều khó khăn. Hệ thống nhận dạng chữ
viết tay trực tuyến trên một trạm làm việc của IBM do nhóm nghiên cứu gồm
H.S.M.Beigi, C.C.Tapert, M.Ukeison và C.G.Wolf ở phòng thực hành
Watson IBM cài đặt là một trong những sản phẩm nhận dạng chữ viết tay
online tiêu biểu nhất. Tuy nhiên, do chưa có nhiều ứng dụng thực tế nên nhận
dạng chữ viết tay trực tuyến chưa được biết đến nhiều và khi nhắc đến nhận
dạng chữ viết tay chúng ta thường hiểu nhình thức nhận dạng ở đây là offline.
Các kết quả nhận dạng chữ viết tay offline hiện này còn rất hạn chế.
Các kết quả nghiên cứu chưa tìm được giải pháp đủ tốt để giải quyết hết
những khó khăn tiêu biểu sau của bài toán nhận dạng chữ viết tay:
Kích thước của chữ viết tay không đồng đều.
Kiểu dáng chữ của mỗi người viết đều rất khác nhau.
Giữa các kí tự trong cùng một từ thường có nét nối, thậm chí
dính liền vào nhau.
7
phức tạp của chữ viết tay cũng như tăng cường độ chính xác, ta
cần phải biểu diễn thông tin chữ viết dưới những dạng đặc biệt
hơn và cô đọng hơn, rút trích các đặc điểm riêng nhằm phân biệt
các ký tự khác nhau. Trong luận văn này, tôi nghiên cứu và tìm
hiểu về mô hình học máy theo chiều sâu, trong mô hình này thì
khi huấn luyện và sử dụng dữ liệu chúng ta không cần sử dụng
đặc trưng của ảnh đầu vào nên có thể bỏ qua bước trích rút đặc
trưng.
Huấn luyện và nhận dạng (training and recognition): phương
pháp điển hình so trùng mẫu, dùng thống kê, mạng neuron, mô
hình markov ẩn, trí tuệ nhân tạo hay dùng phương pháp kết hợp
các phương pháp trên.Trong luận văn này, tôi sử dụng mô hình
học máy theo chiều sâu (deep learning) để huấn luyện và nhận
dạng, nội dung này sẽ được trình bày trong các chương sau của
luận văn.
Hậu xử lý (postprocessing): sử dụng các thông tin về ngữ cảnh
để giúp tăng cường độ chính xác, dùng từ điển dữ liệu.
Ban đầu các văn bản chữ viết tay được scan và đưa vào hệ thống nhận
dạng, với quá trình tiền xử lý thì ảnh sẽ được một ảnh mà do hệ thống yêu cầu
để huấn luyện và nhận dạng (có thể là ảnh nhị phân hay ảnh đa mức xám).
9
Trong mô hình học máy theo chiều sâu, ảnh được sử dụng để huấn luyện và
nhận dạng là ảnh đa mức xám (các pixel được biểu diễn bởi các giá trị từ 0
đến 255). Tại quá trình tiền xử lý thì ảnh cũng đã được xử lý lọa bỏ nhiễu, các
giá trị không cần thiết trong ảnh đầu vào.
Tại bước tách chữ thì với ảnh đã được tiền xử lý, khi đi qua bước này
sẽ được thực hiện tách dòng, tách chữ, tách kí tự để thực hiện nhận dạng, tùy
11
CHƯƠNG 2: MÔ HÌNH MẠNG NEURONVÀ MÔ HÌNH HỌC SÂU
2.1.
Tổng quan về mô hình mạng neuron
2.1.1. Giới thiệu về mạng Neuron
2.1.1.1. Định nghĩa:
Mạng neuron nhân tạo, Artificial Neural Network (ANN) gọi tắt là
mạng neuron, neural network, 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ệ neuron sinh học. Nó được tạo lên từ một số
lượng lớn các phần tử (gọi là phần tử xử lý hay neuron) 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 đó.
Một mạng neuron nhân tạo được cấu hình cho một ứng dụng cụ thể
(nhận dạng mẫu, phân loại dữ liệu, ...) thông qua một quá trình học từ tập các
mẫu huấn luyện. Về bản chất học chính là quá trình hiệu chỉnh trọng số liên
kết giữa các neuron.
2.1.1.2. Lịch sử phát triển mạng neuron
Các nghiên cứu về bộ não con người đã được tiến hành từ hàng nghìn
năm nay. Cùng với sự phát triển của khoa học kĩ thuật đặc biệt là những tiến
bộ trong ngành điện tử hiện đại, việc con người bắt đầu nghiên cứu các
neuron nhân tạo là hoàn toàn tự nhiên. Sự kiện đầu tiên đánh dấu sự ra đời
của mạng neuron nhân tạo diễn ra vào năm 1943 khi nhà thần kinh học
Warren McCulloch và nhà toán học Walter Pitts viết bài báo mô tả cách thức
các neuron hoạt động. Họ cũng đã tiến hành xây dựng một mạng neuron đơn
tầng rất hữu ích trong việc phân loại một tập các đầu vào có giá trị liên tục
vào một trong hai lớp. Perceptron tính tổng có trọng số các đầu vào, rồi trừ
tổng này cho một ngưỡng và cho ra một trong hai giá trị mong muốn có thể.
Tuy nhiên Perceptron còn rất nhiều hạn chế, những hạn chế này đã được chỉ
13
ra trong cuốn sách về Perceptron của Marvin Minsky và Seymour Papert viết
năm 1969.
Năm 1959, Bernard Widrow và Marcian Hoff thuộc trường đại học
Stanford đã xây dựng mô hình ADALINE (ADAptive LINear Elements) và
MADALINE. (Multiple ADAptive LINear Elements). Các mô hình này sử
dụng quy tắc học Least-Mean-Squares (LMS: Tối thiểu bình phương trung
bình). MADALINE là mạng neuron đầu tiên được áp dụng để giải quyết một
bài toán thực tế. Nó là một bộ lọc thích ứng có khả năng loại bỏ tín hiệu dội
lại trên đường dây điện thoại. Ngày nay mạng neuron này vẫn được sử dụng
trong các ứng dụng thương mại.
Năm 1974 Paul Werbos đã phát triển và ứng dụng phương pháp học lan
truyền ngược (back-propagation). Tuy nhiên phải mất một vài năm thì
phương pháp này mới trở lên phổ biến. Các mạng lan truyền ngược được biết
đến nhiều nhất và được áp dụng rộng dãi nhất nhất cho đến ngày nay.
Thật không may, những thành công ban đầu này khiến cho con người
nghĩ quá lên về khả năng của các mạng neuron. Chính sự cường điệu quá mức
đã có những tác động không tốt đến sự phát triển của khoa học và kỹ thuật
thời bấy giờ khi người ta lo sợ rằng đã đến lúc máy móc có thể làm mọi việc
của con người. Những lo lắng này khiến người ta bắt đầu phản đối các nghiên
cứu về mạng neuron. Thời kì tạm lắng này kéo dài đến năm 1981.
Năm 1982 trong bài báo gửi tới viện khoa học quốc gia, John Hopfield
bằng sự phân tích toán học rõ ràng, mạch lạc, ông đã chỉ ra cách thức các
một vấn đề. Vấn đề được giải quyết phải được biết và phát biểu dưới dạng
một tập chỉ lệnh không nhập nhằng. Những chỉ lệnh này sau đó phải được
chuyển sang một chương trình ngôn ngữ bậc cao và chuyển sang mã máy để
máy tính có thể hiểu được.
Trừ khi các bước cụ thể mà máy tính cần tuân theo được chỉ ra rõ ràng,
máy tính sẽ không làm được gì cả. Điều đó giới hạn khả năng của các máy
15
tính truyền thống ở phạm vi giải quyết các vấn đề mà chúng ta đã hiểu và biết
chính xác cách thực hiện. Các máy tính sẽ trở lên hữu ích hơn nếu chúng có
thể thực hiện được những việc mà bản thân con người không biết chính xác là
phải làm như thế nào.
Các mạng neuron xử lý thông tin theo cách thức giống như bộ não con
người. Mạng được tạo nên từ một số lượng lớn các phần tử xử lý được kết nối
với nhau làm việc song song để giải quyết một vấn đề cụ thể. Các mạng
neuron học theo mô hình, chúng không thể được lập trình để thực hiện một
nhiệm vụ cụ thể. Các mẫu phải được chọn lựa cẩn thận nếu không sẽ rất mất
thời gian, thậm chí mạng sẽ hoạt động không đúng. Điều hạn chế này là bởi vì
mạng tự tìm ra cách giải quyết vấn đề, thao tác của nó không thể dự đoán
được.
Các mạng neuron và các máy tính truyền thống không cạnh tranh nhau
mà bổ sung cho nhau. Có những nhiệm vụ thích hợp hơn với máy tính truyền
thống, ngược lại có những nhiệm vụ lại thích hợp hơn với các mạng neuron.
Thậm chí rất nhiều nhiệm vụ đòi hỏi các hệ thống sử dụng tổ hợp cả hai cách
tiếp cận để thực hiện được hiệu quả cao nhất. (thông thường một máy tính
truyền thống được sử dụng để giám sát mạng neuron)
2.1.2. Cấu trúc và hoạt động của mạng Neuron
2.1.2.1. Neuron sinh học
này với nhánh
hình cây của neuron khác g
khác gọi là synapse. Liên kết giữa các neuron
neuron và độ nhạy
của mỗi synapse được xác đ
c xác định bởi quá trình hóa học phức tạạp. Một số cấu
trúc của neuron được
c xác định trước lúc sinh ra. Một số cấu trúc đư
xác đ
u trúc được phát
triển thông qua quá trình h
n thông qua quá trình học. Trong cuộc đời cá thể, một số liên k
liên kết mới được
hình thành, một số khác b
khác bị hủy bỏ.
Như vậy neuron sinh học hoạt động theo cách thức sau: nh
c sau: nhận tín hiệu
đầu vào, xử lý các tín hi
lý các tín hiệu này và cho ra một tín hiệu output. Tín hi
u output. Tín hiệu output
này sau đó được truyền đi làm tín hi
n đi làm tín hiệu đầu vào cho các neuron khác.
khác.
Dựa trên những
ng hiểu
hi biết về neuron sinh học,
c, con người
ngư xây dựng
neuron nhân tạo với hy v
i hy vọng tạo nên một mô hình có sức mạnh như b
Trong hình vẽ trên:
( x1 , x2 ,...., x p ) với
p1: là các tín hiệu đầu vào của neuron. Các
tín hiệu này có thể là đầu ra của các neuron trước đó hoặc đầu
vào ban đầu của mạng và thường được đưa vào dưới dạng một
vector p chiều.
wk1 , wk 2 ,...., wkp là tập các trọng số liên kết của neuron k với p đầu
vào tương ứng ( x1 , x2 ,...., x p ) . Thông thường, các trọng số này
đưuọc khởi tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng
và được cập nhật liên tục trong quá trình học của mạng.
là hàm tổng trên một neuron, dung để tính tổng các giá trị
kích hoạt lên neuron đó. Thông thưởng, đây là tổng của các tích
giữa đầu vào với trọng số liên kết tương ứng của neuron.
uk là tổng các giá trị kích hoạt lên neuron thứ k , giá trị này chính
là đầu ra của hàm tổng.
19
bk là ngưỡng (còn gọi là hệ số bias) của neuron thứ k , giá trị này
được dung như một thành phần phân ngưỡng trên hàm truyền và
cũng dược cập nhật liên tục trong quá trình học của mạng.