Tải bản đầy đủ (.pdf) (64 trang)

Ứng dụng thuật toán giảm chiều vector vào mô hình nhận dạng các thành phần chính trên khuôn mặt sử dụng học sâu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.42 MB, 64 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
————————————-

NGUYỄN KIM LANH
ỨNG DỤNG THUẬT TOÁN GIẢM CHIỀU VECTOR
VÀO MƠ HÌNH NHẬN DẠNG CÁC THÀNH PHẦN CHÍNH
TRÊN KHN MẶT SỬ DỤNG HỌC SÂU
NGÀNH : KHOA HỌC MÁY TÍNH
MÃ NGÀNH: 60.48.01.01

LUẬN VĂN THẠC SỸ

TP. HỒ CHÍ MINH, tháng 12 năm 2017


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
————————————-

NGUYỄN KIM LANH
ỨNG DỤNG THUẬT TOÁN GIẢM CHIỀU VECTOR
VÀO MƠ HÌNH NHẬN DẠNG CÁC THÀNH PHẦN CHÍNH
TRÊN KHN MẶT SỬ DỤNG HỌC SÂU
NGÀNH : KHOA HỌC MÁY TÍNH
MÃ NGÀNH: 60.48.01.01
LUẬN VĂN THẠC SỸ
PGS. TS. QUẢN THÀNH THƠ
TS. NGUYỄN ĐỨC DŨNG

TP. HỒ CHÍ MINH, tháng 12 năm 2017




CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA - ĐHQG - HCM
Cán bộ hướng dẫn khoa học 1: PGS.TS Quản Thành Thơ............................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ hướng dẫn khoa học 2: TS. Nguyễn Đức Dũng.................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 1: PGS.TS. Dương Tuấn Anh....................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 2: TS. Lê Anh Cường...............................................
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM
ngày 28 tháng 12 năm 2017.
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)
1. GS.TS. Phan Thị Tươi
2. TS. Võ Thị Ngọc Châu
3. PGS.TS. Dương Tuấn Anh
4. TS. Lê Anh Cường
5. TS. Huỳnh Tường Nguyên
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý
chuyên ngành sau khi luận văn đã được sửa chữa (nếu có).
CHỦ TỊCH HỘI ĐỒNG

TRƯỞNG KHOA KH&KTMT


ĐẠI HỌC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA

—————————

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
—————————

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ và tên học viên: Nguyễn Kim Lanh

MSHV: 1570216

Ngày, tháng, năm sinh: 01/02/1992

Nơi sinh: Khánh Hồ

Chun ngành: Khoa Học Máy Tính

Mã số: 60480101

I. TÊN ĐỀ TÀI: Ứng Dụng Thuật Toán Giảm Chiều Vector Vào Mơ Hình Nhận
Dạng Các Thành Phần Chính Trên Khn Mặt Sử Dụng Học Sâu.
II. NHIỆM VỤ VÀ NỘI DUNG: Luận văn giải quyết bài tốn nhận dạng các
điểm chính trên khuôn mặt. Xuất phát từ bài báo gốc sử dụng 5 tầng CNN để
nhận dạng các vùng ảnh ứng với các đặc trưng giữa mắt trái (LE), giữa mắt phải
(RE), đỉnh mũi (N), mép miệng bên trái (LM)và mép miệng bên phải (RM) trên
khn mặt, học viên đã có cải tiến quan trọng bằng cách nhận dạng góc nghiêng
của khn mặt trước khi huấn luyện, nhờ đó tăng được đáng kể độ chính xác của
phương phái này.
III. NGÀY GIAO NHIỆM VỤ: 04/09/2017
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 03/12/2017

V. CÁN BỘ HƯỚNG DẪN: PGS.TS.Quản Thành Thơ
TS.Nguyễn Đức Dũng

CÁN BỘ HƯỚNG DẪN
(Họ tên và chữ ký)

PGS.TS Quản Thành Thơ

TP.HCM, ngày 28 tháng 12 năm 2017
TRƯỞNG KHOA KH&KTMT
(Họ tên và chữ ký)


LỜI CẢM ƠN
Tôi xin chân thành cảm ơn PGS. TS. Quản Thành Thơ và TS. Nguyễn Đức
Dũng, giảng viên hướng dẫn luận văn của tơi, những người đã tận tình chỉ bảo,
hướng dẫn trong suốt thời gian thực hiện đề tài. Sự hướng dẫn của các thầy chính
là động lực giúp tơi vượt qua những giai đoạn khó khăn nhất để có kết quả như
ngày hơm nay.
Xin chân thành biết ơn các giảng viên của trường Đại Học Bách Khoa Thành
Phố Hồ Chí Minh và đặc biệt là khoa Khoa học và Kỹ thuật máy tính đã tận tình
dạy dỗ và truyền đạt những kiến thức quý báu cho chúng tôi trong suốt hơn 2
năm qua.
Cuối cùng, xin gửi lời cảm ơn sâu sắc đến gia đình, bạn bè, những người
luôn sát cánh, động viên và giúp đỡ tôi trong suốt quá trình thực hiện đề tài này.


TĨM TẮT LN VĂN
Nhận diện các thành phần chính trên khuôn mặt (Facial Keypoint Detection)
là một trong những hướng nghiên cứu quan trọng trong lĩnh phân tích và nhận

diện.
Cho đến nay, đã có rất nhiều nghiên cứu nhằm áp dụng học sâu (deep learning) vào việc nhận dạng. Tuy nhiên, thách thức khi sử dụng học sâu để nhận
diện khuôn mặt là khi ảnh quan sát được bị ảnh hưởng bởi độ sáng cũng như góc
nghiêng khn mặt dẫn tới kết quả nhận dạng khơng chính xác.
Đã có nhiều hướng tiếp cận để giải quyết khó khăn trên như xây dựng mơ
hình deep learning sâu hơn hay thực hiện các bước tiền xử lý phức tạp để nâng
cao chất lượng nhận biết. Tuy vậy, việc mở rộng mạng học sâu dẫn tới thời gian
training diễn ra dài và không hiệu quả.
Đề tài này đưa ra một hướng tiếp cận mới là sử dụng thuật tốn giảm chiều
của khơng gian vector chứa ảnh đầu vào nhằm phân loại ảnh trước khi đưa vào
mơ hình học sâu. Việc phân loại sẽ giúp xây dựng từng mơ hình học sâu riêng
biệt ứng với từng loại ảnh qua đó việc huấn luyện sẽ dễ dàng hơn và hiệu quả
cao hơn. Đầu tiên sử dụng các phương pháp phân biệt màu để nhận diện ra vùng
khn mặt. Sau đó áp dụng Thin Plate Spline Latent Variable Model để phân
loại. Cuối cùng là đưa vùng khuôn mặt và mơ hình CNN để nhận diên ra 5 điểm
đặc trưng: giữa mắt trái (LE), giữa mắt phải (RE), đỉnh mũi (N), mép miệng bên
trái (LM) và mép miệng bên phải (RM) trên khn mặt.
Sau q trình nghiên cứu và hiện thực, luận văn đặt được những kết quả khả
quan trong một số môi trường giới hạn trước. Cụ thể là xây dựng được mơ hình
áp dụng Thin Plate Spline Latent Variable Model (TPSLVM) trước để phân loại
ảnh trước khi đưa vào mơ hình Convolutional Neural Networks (CNN), qua đó
giúp mơ hình nhận diện các điểm chính trên khn mặt lên gần 95%.


ABSTRACT
Facial Keypoint Detection has a number of potential application in image
analytic and recognition.
Up to now, many methods for facial keypoint detection using deep learning
have been proposed. However, the challenges while using deep learning to detect
facial key point is the result maybe be impacted by occlusions or lightings...

To resolve that problems, many additional methods has been proposed such as
extending deep learning model or performing a lot of complicated reprocessing
processes. Extending deep learning model will take more time for training and
detection.
This research proposed a new approach that apply dimensionality reduction
to facial keypoint detection using deep learning. Dimensionality reduction is
used for classify image before input to deep learning. Base on that, each deep
learning model will be trained with a classified data set. At beginning, our model
uses skin color detection methods to detect face boundary. Then, using Thin
Plate Latent Variable Model to classify. After that, input the face boundary to
CNN model to detect five keypoints: left eye center (LE), right eye center (RE),
nose tip (N), left mouth corner (LM), and right mouth corner (RM).
After the process of research and implementation, we have achieved positive
results in a limited number of constraints. We built a combination model of
Thin Plate Spline Latent Variable Model and Deep Learning. In more detail, our
model can detect five facial keypoint on the accuracy of over 95%.


LỜI CAM ĐOAN
Tôi xin cam đoan ngoại trừ những kết quả tham khảo từ các cơng trình khác
như đã ghi rõ trong luận văn, sản phẩm phần mềm cũng như báo cáo là do chính
tơi thực hiện dưới sự hướng dẫn của PGS.TS. Quản Thành Thơ và TS. Nguyễn
Đức Dũng. Khơng có nội dung nào trong luận văn được sao chép từ những cơng
trình khác mà khơng có ghi chú. Nếu có bất cứ sai phạm nào so với lời cam kết,
tơi xin chịu các hình thức xử lý theo quy định.

TP HCM, ngày 04 tháng 12 năm 2017
Ký tên

Nguyễn Kim Lanh



Mục lục
1

2

Tổng quan

6

1.1

Giới thiệu vấn đề . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.2

Mục tiêu đề tài . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.3

Phạm vi đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.4


Cấu trúc luận văn . . . . . . . . . . . . . . . . . . . . . . . . .

7

Kiến thức nền tảng

9

2.1

Học máy (Machine Learning) . . . . . . . . . . . . . . . . . . .

9

2.2

Mạng neural nhận tạo (Artificial neural networks) . . . . . . . .

10

2.3

Học Sâu (Deep Learning) . . . . . . . . . . . . . . . . . . . . .

14

2.4

Mạng Neural Tích Chập (Convolutional Neural Networks (CNN)) 16


2.5

Gaussian Process Latent Variable Models
(GPLVM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

Các cơng trình nghiên cứu liên quan
3.1

26

Thuật tốn giảm chiều không gian vector Thin Plate Splines (TPSLVM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

26

Nhận diện các thành phần chính trên khn mặt bằng phương
pháp học sâu . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2

23

28

Phân tích và thiết kế


31

4.1

Phân tích yêu cầu . . . . . . . . . . . . . . . . . . . . . . . . .

31

4.2

Thiết kế tổng quan . . . . . . . . . . . . . . . . . . . . . . . .

31

4.3

Thiết kế chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . .

34

1


5

6

7

Hiện thực


36

5.1

Công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

5.2

Hiện thực hệ thống . . . . . . . . . . . . . . . . . . . . . . . .

36

Thực nghiệm và đánh giá

42

6.1

Nền tảng phần cứng dùng thể thực nghiệm . . . . . . . . . . . .

42

6.2

Mơ hình phân cụm bằng TPSLVM . . . . . . . . . . . . . . . .

42


6.3

Mơ hình CNN dự đốn các thành phần chính trên khn mặt . .

45

6.4

Thời gian huấn luyện mơ hình . . . . . . . . . . . . . . . . . .

50

Tổng kết

52

7.1

Kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . .

52

7.2

Những mặt hạn chế . . . . . . . . . . . . . . . . . . . . . . . .

53

7.3


Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . .

53

2


Danh sách hình vẽ
2.1

Mạng neural cơ bản

. . . . . . . . . . . . . . . . . . . . . . .

11

2.2

Thuật toán học perceptrons . . . . . . . . . . . . . . . . . . . .

12

2.3

Mạng neural 8x3x8 đã được học[2]

14

2.4


Sự tăng trưởng về độ lớn của mạng neural[5]

2.5

Liên kết đầy đủ trong neural network truyền thống, giá trị của

. . . . . . . . . . . . . . .

neural x3 sẽ ảnh hưởng toàn bộ đầu ra[5]
2.6

. . . . . . . . . .

. . . . . . . . . . . .

15
17

Liên kết một phần (sparse connectivity) giá trị của neural x3 chỉ
ảnh hưởng đến đầu ra s2 , s3 , s4 [5]

. . . . . . . . . . . . . . . .

18

2.7

Phép tốn tích chập trên tập dữ liệu 2 chiều[5] . . . . . . . . . .


19

2.8

Khởi đầu phép tính cho lớp tích chập

21

2.9

Phép tính thứ 2 cho lớp tích chập, ma trận kernel được dịch sang
phải S=2 cột

. . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.10 Áp dụng tổng hợp lớn nhất cho ma trận [224x224x64] . . . . . .

23

3.1

Facial Point . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

3.2


Mơ hình mạng CNN được xây dựng trong[12] . . . . . . . . . .

28

4.1

Kết quả giảm chiều vector ảnh sử dụng TPSLVM . . . . . . . .

33

4.2

Cấu trúc mơ hình mạng neural tích chập . . . . . . . . . . . . .

34

5.1

Ảnh gốc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

5.2

Ảnh vùng bao khn mặt kích thước 86x86 . . . . . . . . . . .

37

5.3


Ảnh vùng bao khn mặt kích thước 39x39 . . . . . . . . . . .

37

5.4

Hiện thực mơ hình CNN . . . . . . . . . . . . . . . . . . . . .

38

5.5

Mơ hình CNN và hàm mục tiêu được hiện thực bằng Tensorflow

40

3


6.1

Kết quả giảm chiều bằng TPSLVM

. . . . . . . . . . . . . . .

43

6.2


Kết quả huấn luyện trước khi áp dụng giảm chiều cho ảnh 39x39

45

6.3

Kết quả huấn luyện sau khi áp dụng giảm chiều cho ảnh 39x39 .

46

6.4

Mơ hình CNN dùng cho ảnh kích thước 78x78

48

6.5

Q trình huấn luyện trước (đường số 1) và sau (đường số 2) khi

6.6

. . . . . . . . .

áp dụng giảm chiều . . . . . . . . . . . . . . . . . . . . . . . .

49

Một số kết quả nhận diện các thành phần chính trên khuôn mặt .


50

4


Danh sách bảng
6.1

Số lượng ảnh của cụm bên trái (left) theo trục x (nằm ngang)
ứng với các giá trị

6.2

. . . . . . . . . . . . . . . . . . . . . . . .

44

Số lượng ảnh của cụm bên dưới (bottom) theo trục y (thẳng
đứng) ứng với các giá trị . . . . . . . . . . . . . . . . . . . . .

6.4

43

Số lượng ảnh của cụm bên phải (right) theo trục x (nằm ngang)
ứng với các giá trị

6.3

. . . . . . . . . . . . . . . . . . . . . . . .


44

Số lượng ảnh của cụm bên trên (top) theo trục y (thẳng đứng)
ứng với các giá trị

. . . . . . . . . . . . . . . . . . . . . . . .

44

6.5

Sai số đối với ảnh 39x39 trước và sau khi áp dụng giảm chiều

.

47

6.6

Sai số đối với ảnh 78x78 trước và sau khi áp dụng giảm chiều

.

49

6.7

Thời gian huấn luyện mơ hình 39x39 trên máy tính cá nhân . . .


50

6.8

Thời gian huấn luyện mơ hình 39x39 trên server

. . . . . . . .

50

6.9

Thời gian huấn luyện mơ hình 78x78 trên máy tính cá nhân . . .

51

6.10 Thời gian huấn luyện mơ hình 78x78 trên server

5

. . . . . . . .

51


Chương 1

Tổng quan
1.1


Giới thiệu vấn đề

Nhận diện các thành phần chính trên khn mặt (Facial Keypoint Detection)
là một trong những hướng nghiên cứu quan trọng trong lĩnh phân tích và nhận
diện.
Hiện tại, có rất nhiều nghiên cứu[4][10][11] nhằm áp dụng deep dearning
vào việc nhận dạng. Tuy nhiên, thách thức khi sử dụng học sâu để nhận diện
khuôn mặt là khi ảnh quan sát được bị ảnh hưởng bởi độ sáng cũng như góc
nghiêng khn mặt dẫn tới kết quả nhận dạng khơng chính xác. Khi chọn đề tài
này, chúng tơi muốn xây dựng một mơ hình giải quyết được khó khăn trên để đạt
được kết quả nhận dạng cao nhất.

1.2

Mục tiêu đề tài

Đề tài này đưa ra một hướng tiếp cận mới là sử dụng thuật tốn giảm chiều
của khơng gian vector chứa ảnh đầu vào nhằm phân loại ảnh trước khi đưa vào
mơ hình học sâu. Việc phân loại sẽ giúp xây dựng từng mơ hình học sâu riêng
biệt ứng với từng loại ảnh qua đó việc huấn luyện sẽ dễ dàng hơn và hiệu quả
cao hơn. Với mục tiêu đó những nhiệm vụ đặt ra là:
• Xây dựng được mơ hình nhận dạng các thành phần chính trên khuôn mặt
6


bằng học sâu.
• Xây dựng được mơ hình phân loại ảnh khn mặt theo độ sáng và góc
nghiêng bằng thuật tốn giảm chiều.
• Kết hợp hai mơ hình trên mới nhau để hoàn thành một ứng dụng nhận
dạng các thành phần chính trên khn mặt.


1.3

Phạm vi đề tài

Trong khn khổ của nghiên cứu này chúng tôi chỉ tập trung vào việc sử
dụng mơ hình nhận dạng 5 điểm trên khn mặt: giữa mắt trái (LE), giữa mắt
phải (RE), đỉnh mũi (N), mép miệng bên trái (LM) và mép miệng bên phải (RM)
trên khuôn mặt. Đồng thời do giới hạn thời gian thực hiện đề tài, chúng tôi chỉ
thực hiện những đánh giá dựa trên việc giảm chiều hình ảnh xuống 2 chiều.

1.4

Cấu trúc luận văn

Luận văn được chia thành 6 phần, với nội dung từng phần như sau:
Chương 1: Tổng quan
Chương này sẽ giới thiệu tổng quan về nội dung, mục tiêu, và phạm vi đề tài.
Cuối cùng là cấu trúc luận văn.
Chương 2: Kiến thức nền tảng
Như tên gọi, chương trình trình bày các kiến thức nền tảng được tìm hiểu trong
quá trình nghiên cứu và sử dụng trong luận văn: học sâu, thuật toán giảm chiều.
Chương 3: Nghiên cứu liên quan
Chương này trình bày những nghiên cứu mà luận văn tham khảo hay tiếp tục
phát triển.
7


Chương 4: Phân tích và thiết kế hệ thống
Trong chương này, chúng tơi sẽ trình bày ba phần. Phần thứ nhất là phân tích

yêu cầu nhằm xác định các yêu cầu cần có của ứng dụng. Phần thứ hai là thiết
kế tổng quan trình bày cách mà chúng tơi đã lựa chọn thuật toán cho từng bước
xử lý. Phần cuối cùng là cách chúng tôi lựa chọn các tham số, tùy chỉnh cho từng
thuật toán đã chọn.
Chương 5: Hiện thực và triển khai
Chương này trình bày cách hiện thực ứng dụng từ khi thử nghiệm đến lúc hoàn
chỉnh.
Chương 6: Đánh giá hệ thống
Chương này đánh giá lại ứng dụng mà chúng tơi đã xây dựng dựa trên hai tiêu
chí là thời gian chạy và độ chính xác.
Chương 7: Tổng kết
Chương cuối cùng sẽ rút ra những nhận xét trong quá trình thực hiện đề tài, bao
gồm những hạn chế và phương hướng phát triển cho hệ thống.

8


Chương 2

Kiến thức nền tảng
Phần này tóm tắt các kiến thức liên quan được tìm hiểu và sử dụng trong quá
trình thực hiện luân văn.

2.1

Học máy (Machine Learning)

Kể từ khi máy tính được phát minh, con người đã khơng ngừng tìm cách lập
trình cho nó học và cải thiện từ những kinh nghiệm trong quá khứ. Con người
luôn tưởng tượng về một chiếc máy tính có thể dựa vào các dữ liệu bệnh nhân

trước đó để dự đốn bệnh và đưa ra hướng điều trị cho một bệnh nhân mới mà
không cần sự tác động của con người, hay đơn giản hơn là một chiếc máy tính
có thể tự tìm được cách tiết kiệm năng lượng sử dụng trong nhà dựa vào thói
quen sử dụng trước đó của con người và đặc tính của các thiết bị trong nhà,...
Để tạo ra được những chiếc máy tính như vậy, con người cần phải am hiểu một
cách tường tận làm thế nào để làm cho một chiếc máy tính khơng những có thể
tự học những dữ liệu đã có mà cịn có thể tiếp thu những kiến thức mới vừa xuất
hiện. Đáp ứng nhu cầu đó, các thuật tốn học máy (Machine learning) đã ra đời
và nhanh chóng phát triển. Có thể nói học máy là chính là tập hợp các thuật tốn
dùng để lập trình cho một chiếc máy tính có thể học và ra quyết định dựa vào
những dữ liệu được đưa vào hay chính nó thu thập được[2].
Trong thế giới data phổ biến như hiện nay thì tầm quan trọng của các thuật
9


toán học máy ngày càng được khẳng định. Học máy đã đang và sẽ được áp dụng
trong hầu hết các lĩnh vực của cuộc sống hằng ngày như nhận diện giọng nói,
khn mặt, hình ảnh, y tế, kinh tế, giáo dục,...

2.2

Mạng neural nhận tạo (Artificial neural networks)

Từ xưa đến nay, nguyên lí hoặc động cũng như cách thức học hỏi những kiến
thức mới của bộ não người vẫn luôn là một bí mật. Mơ phỏng hoạt động của bộ
não là một trong những đề tài cực kì hấp dẫn của các nhà khoa học trên thế giới.
Trên thực tế, các nghiêng cứu cũng chỉ ra rằng bộ não người được cấu thành
bởi khoảng 1011 neural, và các neural này liên kết với nhau tạo thành một mạng
lớn. Theo ước tính, mỗi neural sẽ có liên kết với khoảng 10−4 neural khác trong
mạng.

Dựa trên cảm hứng từ mạng neural ở thế giới thực, các nhà khoa học đã xây
dựng nên một mơ hình tốn học tương tự để tận dụng khả năng tự học. Những
mơ hình đầu tiên của mạng neural nhân tạo (ANN) đã được nhen nhóm từ nửa
đầu của thế kỷ 20[1]. Tuy nhiên nó chỉ thực sự phát triển mạnh mẽ khi máy tính
bắt đầu tận dụng được ưu điểm vượt trội của nó so với các mơ hình học khác
đó là khả năng tính tốn song song (parallel computation) trên những hệ thống
phân tán (distributed system)[2][3].
Về cơ bản, một mơ hình mạng neural sẽ gồm có 3 thành phần chính như
trong hình 2.1:
• Input layer: Tập hợp những neural có nhiệm vụ tiếp nhận các giá trị đầu
vào (input) dùng để tính tốn.
• Hidden layer: Tập hợp những neural ẩn (hidden) chỉ có giá trị trong việc
tính toán nội bộ bên trong mạng, các giá trị đầu ra của những neural này
không được sử dụng ở bên ngồi.
• Output layer: Tập hợp những neural thể hiện đầu ra của tồn bộ mạng, có
10


giá trị để dự đốn (prediction), phân loại (classification),...
Hình 2.1: Mạng neural cơ bản

Quá trình huấn luyện của một mạng neural được định nghĩa là q trình tính
tốn giá trị của các cạnh và các neural ẩn trong mạng thông qua các dữ liệu có
sẵn. Với những mạng ANN chỉ có một đầu ra duy nhất, mạng có thể được học
thông qua một giải thuật đơn giản gọi là perceptrons. Với perceptrons, đầu vào
sẽ là những dữ liệu số thực, sau khi được tính tốn thơng qua những hàm tuyến
tính kết quả đầu ra sẽ là 1 nếu hàm tuyến tính trả về giá trị lớn hơn 0, ngược lại
thì kết quả đầu ra sẽ là -1 như trong công thức 2.1 và hình 2.2.

1

o(x1 , x2 , ...xn ) =
0

if

w0 + w1 x1 + w2 x2 + ... + wn xn > 0

otherwise

11

(2.1)


Hình 2.2: Thuật tốn học perceptrons

Tuy nhiên, thơng thường một bài toán sử dụng học máy phức tạp thường
yêu cầu mạng neural có nhiều lớp hơn cũng như số lượng đầu ra nhiều hơn 1,
vì vậy thuật tốn perceptrons khơng cịn phù hợp. Chính vì sự phát triển về độ
phức tạp của mơ hình neural u cầu cần có một thuật tốn học hiệu quả hơn và
đó chính là thuật toán lan truyền ngược (BACKPROPAGATION).
Lan truyền ngược là thuật toán giúp mơ hình có thể tìm được giá trị của
các cạnh và neural tối ưu thông qua việc cố gắng giảm bình phương sai số giữa
đầu ra của mạng và đầu ra mục tiêu. Như vậy một hàm mục tiêu cơ bản của
BACKPROPAGATION sẽ có dạng như cơng thức 2.2.
E(w) =

1

2 d∈D




(tkd − okd )2

(2.2)

k∈out puts

trong đó:
outputs: tập hợp những neural đầu ra của mạng.
tkd , okd : giá trị mục tiêu và giá trị đầu ra thực tế của neural đầu ra thứ k với dữ
liệu học thứ d trong tập dữ liệu D.
Thuật toán huấn luyện lan truyền ngược (BACKPROPAGATION)[2].
BACKPROPAGATION(training_examples, η, nin , nout , nhidden ):
Mỗi training_examples là một cặp (x, t), trong đó:
x là vector chứa dữ liệu đầu vào (input).
t là vector chứa dữ liệu đầu ra mục tiêu (target output).
η là learning rate.
12


nin là số lượng neural đầu vào của mạng (input layer).
nout là số lượng neural đầu ra của mạng (output layer).
nhidden là số lượng neural ẩn (hidden layer).
Giá trị input cho một cạnh nối từ neural i tới neural j là xi j , giá trị của trọng số
của cạnh nối từ i tới j là wi j .

• Tạo ra mạng neural network với nin inputs, nhidden hidden units và nout
outputs.

• Khởi tạo tất cả trọng số trong mạng với giá trị ngẫu nhiên.
• Lặp lại các bước sau cho đến khi đạt được điều kiên dừng:
Với mỗi (x, t) trong training_examples, Thực hiện:
Lan truyền giá trị đầu vào xi qua tồn bộ mạng:
1. Input the instance x to the network and compute the output ou of
every unit u in the network.
Tính tốn các giá trị sai số bằng phương pháp lan truyền ngược như
các bước 2, 3, 4 như sau:
2. Với mỗi giá trị đầu vào k, tính toán sai số δk
δk ← ok (1 − ok )(tk − ok )

(2.3)

3. Với mỗi nốt h trong lớp ẩn, tính tốn giá trị sai số của nó δh
dựa vào các giá trị đầu vào
δh ← oh (1 − oh )



wkh δk

(2.4)

k∈out puts

4. Cập nhật giá trị của mỗi trọng số trong mạng w ji
bằng cách:
w ji ← w ji + ∆w ji

13


(2.5)


trong đó:
∆w ji = ηδ j x ji

(2.6)

Sau khi thực hiện huấn luyện tên toàn bộ tập dữ liệu ta sẽ thu được kết quả
là giá trị của các trọng số trong mạng tại vị trí có sai số nhỏ nhất. Ví dụ về
một kết quả sau q trình huấn luyện như hình 2.3.
Hình 2.3: Mạng neural 8x3x8 đã được học[2]

2.3

Học Sâu (Deep Learning)

Như đã đề cập trong phần trước, mơ hình mạng neural có sự phát triển mạnh
mẽ trong thời gian gần đây một phần rất lớn là nhờ sự phát triển của máy tính
cũng như các mơ hình tính tốn song song. Cùng với sự phát triển đó, số lượng
data mà máy tính thu thập được cũng ngày một lớn hơn, yêu cầu sử dụng mạng
neural nhân tạo để giải các bài toán ngày càng phức tạp.

14


Hình 2.4: Sự tăng trưởng về độ lớn của mạng neural[5]

1. Perceptron (Rosenblatt, 1958, 1962)

2. Adaptive linear element (Widrow and Hoff, 1960)
3. Neocognitron (Fukushima, 1980)
4. Early back-propagation network (Rumelhart et al., 1986b)
5. Recurrent neural network for speech recognition (Robinson and Fallside,
1991)
6. Multilayer perceptron for speech recognition (Bengio et al., 1991)
7. Mean field sigmoid belief network (Saul et al., 1996)
8. LeNet-5 (LeCun et al., 1998b)
9. Echo state network (Jaeger and Haas, 2004)
10. Deep belief network (Hinton et al., 2006)
11. GPU-accelerated convolutional network (Chellapilla et al., 2006)
12. Deep Boltzmann machine (Salakhutdinov and Hinton, 2009)
15


13. GPU-accelerated deep belief network (Raina et al., 2009)
14. Unsupervised convolutional network (Jarrett et al., 2009)
15. GPU-accelerated multilayer perceptron (Ciresan et al., 2010)
16. OMP-1 network (Coates and Ng, 2011)
17. Distributed autoencoder (Le et al., 2012)
18. Multi-GPU convolutional network (Krizhevsky et al., 2012)
19. COTS HPC unsupervised convolutional network (Coates et al., 2013)
20. GoogLeNet (Szegedy et al., 2014a)
Biểu đồ 2.4 trên cho thấy độ lớn của mạng neural nhân tạo có thể nâng lên
gấp đôi cứ sau 2.4 năm. Khi mà việc tăng số lượng neural ở lớp ẩn (hidden layer)
đạt đến một ngưỡng nhất định, người ta đã bắt đầu nghĩ đến việc dùng nhiều
lớp ẩn hơn (multiple levels of composition). Bằng cách đó, thế giới hiện đại bắt
đầu quen với việc dùng "deep learning" như một thuật ngữ để chỉ chung những
mơ hình neural nhân tạo gồm nhiều lớp. Qua thời gian, mạng "deep learning"
ngày càng phát triển với số lượng lớp ẩn linh hoạt phụ thuộc vào từng bài tốn

cụ thể khác nhau. Bên cạnh đó, "deep learning" cũng có thể dùng để diễn tả các
mơ hình học máy khác không phải mà mạng neural nhưng vẫn là sự kết hợp của
nhiều tầng, lớp liên tiếp nhau.

2.4

Mạng Neural Tích Chập (Convolutional Neural Networks (CNN))

Khác với mơ hình truyền thống, tích chập tận dụng được ba đặc điểm quan
trọng có thể giúp tăng cường qua trình học máy: liên kết một phần (sparse interactions), dùng chung tham số (parameter sharing) và representations.
Trong neural network truyền thống, các lớp luôn sử dụng phép nhân trên một
16


ma trận tham số với những tham số khác nhau cho mỗi liên kết giữa đầu vào và
đầu ra, có nghĩa là một neural đầu ra sẽ liên kết với tất cả các neural ở lớp trước
đó (hình 2.5). Tuy nhiên, trong mạng tích chập một neural đầu ra chỉ liên kết với
một tập các đầu vào nhất định (hình 2.6) chứ khơng phải là tồn bộ. Chính điều
này làm cho ma trận tham số sẽ luôn nhỏ hơn số lượng đầu vào. Như vậy với mơ
hình neural truyền thống, nếu có m đầu vào và n đầu ra thì độ phức tạp của thuật
tốn ln là O(mxn) cho mỗi dữ liệu huấn luyện. Nếu chúng ta giới hạn một đầu
ra chỉ liên kết với k đầu vào (k nhỏ hơn n) thì số lượng liên kết của một lớp sẽ
chỉ là kxn hay nói cách khác chúng ta chỉ mất O(kxn) cho mỗi lần huấn luyên.
Trong trường hợp k nhỏ hơn n nhiều thì độ phức tạo sẽ được giảm đáng kể nhờ
có liên kết một phần (sparse interactions hay là sparse connectivity).
Hình 2.5: Liên kết đầy đủ trong neural network truyền thống, giá trị của neural
x3 sẽ ảnh hưởng toàn bộ đầu ra[5]

17



×