TRƯỜNG ĐẠI HỌC QUẢNG BÌNH
KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN
ĐẶNG VĂN ĐẠT
GIẢI PHÁP ỨNG DỤNG KỸ THUẬT DEEP LEARNING
TRONG NHẬN DẠNG MẶT NGƯỜI
Ngành đào tạo: Công nghệ thông tin
Trình độ đào tạo: Đại học
KHÓA LUẬN TỐT NGHIỆP
QUẢNG BÌNH, NĂM 2018
TRƯỜNG ĐẠI HỌC QUẢNG BÌNH
KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN
ĐẶNG VĂN ĐẠT
GIẢI PHÁP ỨNG DỤNG KỸ THUẬT DEEP LEARNING
TRONG NHẬN DẠNG MẶT NGƯỜI
Ngành đào tạo: Công nghệ thông tin
Trình độ đào tạo: Đại học
KHÓA LUẬN TỐT NGHIỆP
Giảng viên hướng dẫn:
TS. Hoàng Văn Dũng
QUẢNG BÌNH, NĂM 2018
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu
của riêng tôi, các số liệu và kết quả nghiên cứu nêu
trong luận văn là trung thực, được tác giả
cho phép sử dụng và chưa từng được công bố trong
bất kỳ một công trình nào khác.
Tác giả luận văn
Đặng Văn Đạt
MỤC LỤC
MỞ ĐẦU ....................................................................................................................1
1. Lý do chọn đề tài ...................................................................................................1
2. Mục đích nghiên cứu .............................................................................................1
3. Đối tượng, phạm vi nghiên cứu ............................................................................2
3.1 Đối tượng nghiên cứu ...................................................................................2
3.2 Phạm vi nghiên cứu ......................................................................................2
4. Phương pháp nghiên cứu ......................................................................................2
5. Ý nghĩa khoa học và thực tiễn đề tài ...................................................................2
6. Bố cục luận văn......................................................................................................2
CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
1.1 Một số kỹ thuật xử lý ảnh trong nhận dạng .....................................................4
1.1.1 Tiền xử lý ảnh ............................................................................................4
1.1.2 Các phép toán hình thái học ......................................................................4
1.1.3 Một số bộ lọc .............................................................................................5
1.1.4 Nhận dạng ..................................................................................................7
1.2. Học máy...............................................................................................................8
1.2.1 Máy vector hỗ trợ (Suport Vector Machine) .............................................8
1.2.2 Deep learning...........................................................................................13
1.3. Kỹ thuật deep learning ....................................................................................14
1.3.1 Mạng nơ ron nhân tạo..............................................................................14
1.3.2 Mạng nơ ron tích chập .............................................................................22
CHƯƠNG 2
ÁP DỤNG KỸ THUẬT DEEP LEARNING VÀO NHẬN DẠNG
KHUÔN MẶT
2.1. Bài toán nhận dạng khuôn mặt con người .....................................................29
2.2. Áp dụng kỹ thuật Deep learning vào nhận dạng khuôn mặt .......................29
2.2.1 Mô hình giải pháp nhận dạng khuôn mặt ................................................29
2.2.2 Phân tích giải pháp nhận dạng khuôn mặt ...............................................30
2.2.3 Thuật toán lan truyền ngược ....................................................................31
2.2.4 Quá trình huấn luyện mạng nơ ron tích chập sâu (DCNN) .....................32
CHƯƠNG 3
XÂY DỰNG CHƯƠNG TRÌNH, CÀI ĐẶT, THỬ NGHIỆM VÀ ĐÁNH GIÁ
3.1. Thư viện TensorFlow và OpenCV ..................................................................34
3.1.1 Thư viện TensorFlow ..............................................................................34
3.1.2 Thư viện OpenCV ...................................................................................36
3.2 Ngôn ngữ và công cụ lập trình .........................................................................37
3.3. Thực nghiệm .....................................................................................................38
3.3.1 Thu thập và xử lý dữ liệu ........................................................................38
3.3.2 Xử lý trước dữ liệu ..................................................................................39
3.3.3 Đào tạo mô hình ......................................................................................41
3.3.4 Nhận dạng ................................................................................................41
3.4. Kết quả nhận dạng ...........................................................................................42
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................................44
TÀI LIỆU THAM KHẢO ......................................................................................45
DANH MỤC HÌNH ẢNH
Số bảng
Tên bảng
Trang
Hình 1.1
Biểu diễn phân lớp dựa trên thuật toán SVM [5]
9
Hình 1.2
Siêu phẳng phân chia dữ liệu tốt có khoảng cách lề
10
xa nhất [5,7]
Hình 1.3
Trường hợp dữ liệu có thể phân chia tuyến tính
10
Hình 1.4
Mô tả trường hợp dữ liệu không phân chia tuyến
11
tính
Hình 1.5
Dữ liệu được phân lớp bởi hàm nhân [5]
12
Hình 1.6
Một perceptron với ba đầu vào
14
Hình 1.7
Mạng nơ-ron gồm nhiều perceptron [6]
15
Hình 1.8
Mạng Nơ ron một lớp ẩn [6]
17
Hình 1.9
Mạng nơ-ron hai lớp ẩn [6]
18
Hình 1.10
Quá trình xử lý thông tin của một ANN [8]
18
Hình 1.11a
Single neuron [8]
19
Hình 1.11b
Several neurons[8]
19
Hình 1.12
Hoạt động của PE [8]
20
Hình 1.13
Phân loại dựa theo thuật toán và kiến trúc [8]
21
Hình 1.14
Mạng kết nối đầy đủ với ba lớp ẩn [6,9]
22
Hình 1.15
Các nơ-ron đầu vào [6,9]
23
Hình 1.16
Trường tiếp nhận cục bộ [6]
23
Hình 1.17
Trường tiếp nhận cục bộ với nơ-ron ẩn đầu tiên [6]
24
Hình 1.18
Trường tiếp nhận cục bộ với nơ-ron ẩn thứ hai [6,9]
24
Hình 1.19
Ánh xạ đặc trưng vào lớp ẩn
26
Hình 1.20
Ánh xạ đặc trưng trong các hình ảnh khác nhau
26
[6,9]
Hình 1.21
Max-polling [6,9]
28
Hình 1.22
Tương quan giữa ánh xạ đặc trưng và max-polling
28
[6,9]
Hình 2.1
Mô hình giải pháp nhận dạng khuôn mặt
30
Hình 2.2
Quá trình huấn luyện mạng nơ ron tích chập sâu
33
(DCNN)
Hình 3.1
Ví dụ về một graph trong Tensorflow
34
Hình 3.2
Tổ chức thư viện OpenCV
36
Hình 3.3
Hình ảnh ví dụ từ tập dữ liệu ảnh khuôn mặt cho 8
38
danh tính
Hình 3.4
Mô tả định dạng sắp xếp các thư mục trong tập dữ
39
liệu ảnh mẫu ban đầu
Hình 3.5
Hình ảnh khuôn mặt được cắt trong tập dữ liệu ảnh
40
ban đầu
Hình 3.6
Mô tả định dạng các thư mục file được lưu trữ sau
40
quá trình xử lý trước dữ liệu
Hình 3.7
Mô tả file “bounding_boxes.txt” lưu trữ path, các
41
trọng số và ngưỡng
Hình 3.8
Định danh các khuôn mặt có trong camera
42
MỞ ĐẦU
1. Lý do chọn đề tài
Cùng với sự phát triển của khoa học công nghệ, trí tuệ nhân tạo được xem là
nhân tố định hình tương lai. Với sự phát triển nhanh chóng trong những năm gần đây,
trí tuệ nhân tạo đã thực sự đi vào cuộc sống. Hàng loạt các công nghệ mới sử dụng
trí tuệ nhân tạo ra đời giúp ích cho con người trong nhiều lĩnh vực như an ninh , bảo
mật, y học, giáo dục...
Machine learning là một lĩnh vực con của trí tuệ nhân tạo (AI). Nguyên tắc cốt
lõi của Machine learning là các máy tiếp nhận dữ liệu và tự học. Machine learning là
một phương pháp phân tích dữ liệu mà sẽ tự động hóa việc xây dựng mô hình phân
tích. Sử dụng các thuật toán lặp để học từ dữ liệu, cho phép máy tính tìm thấy những
thông tin giá trị ẩn sâu mà không được lập trình một cách rõ ràng nơi để tìm. Một
trong những kỹ thuật được sử dụng phổ biến trong Machine learning hiện nay là kỹ
thuật Deep learning.
Deep learning là một lĩnh vực chuyên sâu trong Machine learning. Nó sử dụng
một số kỹ thuật của Machine learning để giải quyết các vấn đề thực tế bằng cách khai
thác các mạng thần kinh nhân tạo và mô phỏng việc đưa ra các quyết định của con
người.
Deep learning có ứng dụng sâu rộng trong các lĩnh vực của đời sống như tìm
kiếm sự sai khác giữu các văn bản, phát hiện gian lận, phát hiện spam, nhận dạng chữ
viết tay, nhận dạng hình ảnh, giọng nói… góp phần quan trọng trong việc hỗ trợ con
người trong nhiều lĩnh vực đời sống. Từ những ứng dụng thực tế, lợi ích mà Deep
learning đem lại và các kiến thức chuyên môn, là cơ sở để thực hiện đề tài: “Giải
pháp ứng dụng kỹ thuật Deep Learning trong nhận dạng mặt người ” nhằm
nghiên cứu và ứng dụng kỹ thuật Deep learning để xây dựng hệ thống nhận dạng
khuôn mặt con người.
2. Mục đích nghiên cứu
-
Nghiên cứu kỹ thuật Deep learning
-
Ứng dụng kỹ thuật deep learning trong nhận dạng khuôn mặt con người
1
3. Đối tượng, phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
-
Đối tượng nghiên cứu của đề tài là kỹ thuật Deep Learning, thuật toán ứng
dụng deep learning trong nhận dạng khuôn mặt
3.2 Phạm vi nghiên cứu
-
Phạm vi nghiên cứu, hình ảnh khuôn mặt các bạn sinh viên trong lớp Đại học
Công nghệ thông tin K56, giới hạn ở mức độ thực nghiệm tạo hệ thống nhận dạng mặt
con người sử dụng kỹ thuật Deep learning để hệ thống nhận biết mặt của các bạn sinh
viên trong lớp.
4. Phương pháp nghiên cứu
-
Phương pháp tài liệu: Nghiên cứu tài liệu về kỹ thuật deep learning Deep
Learning; các phép lọc, các thuật toán tìm kiếm và so khớp mẫu trong nhận dạng xử
lý ảnh. Các tài liệu về nhận dạng và xử lý ảnh và một số tài liệu liên quan.
-
Phương pháp thực nghiệm: Xây dựng cơ sở dữ liệu ảnh huấn luyện nhận dạng
khuôn mặt, sử dụng kỹ thuật Deep Learning để huấn luyện tập dữ liệu hình ảnh khuôn
mặt. Kết hợp các thuật toán được thu thập trong quá trình nghiên cứu để giải quyết
bài toán nhận dạng mặt người. Xây dựng hệ thống dựa trên ngôn ngữ lập trình Python
sử dụng IDE Pycharm và công cụ thiết kế giao diện QT.
5. Ý nghĩa khoa học và thực tiễn đề tài
-
Nghiên cứu kỹ thuật Deep Learning, đưa ra cơ sở lý thuyết về các kỹ thuật của
Deep Learning
-
Xây dựng được chương trình thực nghiệm và đánh giá hệ thống nhận dạng
khuôn mặt con người sử dụng kỹ thuật deep learning.
-
Ứng dụng hệ thống nhận dạng mặt con người vào hệ thống giám sát an ninh,
bảo mật, quản lý thông tin cá nhân tại cơ quan, doanh nghiệp, hộ gia đình.
6. Bố cục luận văn
Bố cục luận văn được chia thành 3 chương
Chương 1. Cơ sở lý thuyết
2
Trình bày một số kỹ thuật xử lý ảnh trong nhận dạng đối tượng, máy vector hỗ
trợ (Suport Vector Machine) trong quá trình học máy. Mô tả chi tiết về hai kiến trúc
mạng nơ ron nhân tạo và mạng nơ ron tích chập.
Chương 2. Áp dụng kỹ thuật Deep learning vào nhận dạng khuôn mặt
Chương này trình bày về việc ứng dụng kỹ thuật Deep learning vào nhận dạng
khuôn mặt. Đưa ra mô hình cho toàn bộ giải pháp, phân tích các thành phần trong hệ
thống, mô tả các thành phần (cơ sở dữ liệu ảnh, các quá trình huấn luyện cơ sở dữ
liệu, quá trình nhận dạng) để hình thành hệ thống nhận dạng khuôn mặt.
Chương 3. Xây dựng chương trình, cài đặt, thử nghiệm và đánh giá
Lựa chọn công cụ phát triển, xử lý dữ liệu đầu vào để đưa vào chương trình.
Quá trình cài đặt chương trình, quá trình chạy thử nghiệm. Thống kê, đánh giá các
kết quả trong quá trình thử nghiệm chương trình.
3
CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
Chương này trình bày một số kỹ thuật xử lý ảnh trong nhận dạng đối tượng,
máy vector hỗ trợ (Suport Vector Machine) trong quá trình học máy. Mô tả về hai
kiến trúc mạng nơ ron nhân tạo và mạng nơ ron tích chập.
1.1 MỘT SỐ KỸ THUẬT XỬ LÝ ẢNH TRONG NHẬN DẠNG
1.1.1 Tiền xử lý ảnh
Quá trình tiền xử lý đối với khuôn mặt nhằm nâng cao chất lượng ảnh, chuẩn
hóa dữ liệu, kích thước ảnh. Nếu các ảnh có chất lượng không tốt như bị thừa sáng,
nhiễu có thể sử dụng một số phép cân bằng sáng, một số bộ lọc để tăng chất lượng
hình ảnh và giảm nhiễu. Trường hợp ảnh có chất lượng khá tốt thì chỉ cần chuẩn hóa
ảnh (normalize image), nó khiến độ lệch giữa 2 điểm ảnh được giảm xuống làm quá
trình rút đặc trưng thêm chính xác.
1.1.2 Các phép toán hình thái học
Hình thái là thuật ngữ chỉ sự nghiên cứu về cấu trúc hay hình học topo của đối
tượng trong ảnh. Phần lớn các phép toán của "Hình thái" được định nghĩa từ hai phép
toán cơ bản là phép "giãn nở" (Dilation) và phép "co" (Erosion) [1],[2].
Các phép toán này được định nghĩa như sau: Giả thiết ta có đối tượng X và phần
tử cấu trúc (mẫu) B trong không gian Euclide hai chiều. Kí hiệu Bx là dịch chuyển
của B tới vị trí x.
DILATION
Phép "giãn nở" của X theo mẫu B là hợp của tất cả các Bx với x thuộc X.
Ta có:
EROSION
Phép "co" của X theo B là tập hợp tất cả các điểm x sao cho Bx nằm trong X.
Ta có:
4
Ví dụ: Ta có tập X như sau:
1.1.3 Một số bộ lọc
1.1.3.1 Bộ lọc Blur
Là một phép lọc làm cho trơn ảnh và khử nhiễu hạt và là một bộ lọc trung bình.
Ma trận lọc (Kernel) của bộ lọc Blur có dạng:
Trong OpenCV để sử dụng Blur cho một hình ảnh, sử dụng hàm:
cv::blur(cv::InputArray src, cv::InputArray dst, cv::Size ksize,
cv::Point anchor = cv::Point(-1,-1), int borderType = 4)
Phân tích
src: Là ảnh gốc.
dst: Là ảnh sau khi thực hiện phép lọc số ảnh.
5
ksize: Là kích thước của ma trận lọc.
anchor: Là Anchor Point của ma trận lọc. Giá trị mặc định là (-1,-1).
borderType: Là phương pháp để ước lượng và căn chỉnh các điểm ảnh nếu
phép lọc chúng vượt ra khỏi giới hạn của ảnh. Giá trị mặc định là 4.
1.1.3.2 Bộ lọc Sobel
Kỹ thuật sử dụng 2 ma trận lọc (Kernel) xấp xỉ đạo hàm theo hướng x và y:
Là một phép lọc giúp tìm đường biên cho ảnh. Trong OpenCV để sử dụng
Sobel cho một hình ảnh, sử dụng hàm:
cv::Sobel(cv::InputArray src, cv::OutputArray dst, int ddepth, int dx,
int dy, int ksize = 3, double scale = (1,0) , double delta = (0,0),
int borderType = 4);
Phân tích
src: Là ảnh gốc.
dst: Là ảnh sau khi thực hiện phép lọc số ảnh.
ksize: Là kích thước của ma trận lọc. Giá trị mặc định là 3.
ddepth: Là độ sâu của ảnh sau phép lọc: VD: CV_32F, CV_64F,...
dx: Là đạo hàm theo hướng x.
dy: Là đạo hàm theo hướng y.
Để đạo hàm theo hướng nào thì ta đặt giá trị đó lên 1.
scale và delta: Là 2 thông số tùy chọn cho việc tính giá trị đạo hàm lưu giá trị
vi sai vào ảnh sau phép lọc. Mặc định là 1 và 0.
borderType: Là phương pháp để ước lượng và căn chỉnh các điểm ảnh nếu
phép lọc chúng vượt ra khỏi giới hạn của ảnh. giá trị mặc định là 4.
6
1.1.3.3 Bộ lọc Laplace
Là một phép lọc giúp tìm đường biên cục bộ cho ảnh. Tư tưởng là lấy đạo hàm
bậc hai của các điểm. Ma trận lọc (Kernel) của bộ lọc Laplace có dạng:
Trong thực tế, người ta dùng nhiều kiểu ma trận lọc (Kernel) khác nhau để xấp xỉ rời
rạc đạo hàm bậc hai Laplace. 3 kiểu ma trận lọc (Kernel) thường dùng:
Trong OpenCV để sử dụng Laplace cho một hình ảnh, bạn sử dụng hàm sau:
cv::Laplace(cv::InputArray src, cv::OutputArray dst, int ddepth, int ks ze = 1,
double scale = (1,0), double delta = (0,0), int borderType = 4);
Có một phương pháp lọc dùng để tìm đường biên cục bộ khác là Gradient,
phương pháp này làm việc khá tốt khi độ sáng thay đổi rõ nét, khi mức xám thay đổi
chậm hoặc miền chuyển tiếp trải rộng thì phương pháp này tỏ ra kém hiệu quả. Vậy
nên người ta sử dụng phương pháp laplace để khắc phục nhược điểm này.
Trong kỹ thuật lọc laplace, điểm biên được xác định bởi điểm cắt điểm không.
Và điểm không là duy nhất do vậy kỹ thuật này cho đường biên rất mảnh (Rộng 1
pixel). Rất nhạy cảm với nhiễu do đạo hàm bậc 2 không ổn định.
1.1.4 Nhận dạng
Nhận dạng tự động (automatic recognition), mô tả đối tượng, phân loại và phân
nhóm các mẫu [2]. Nó được ứng dụng trong nhiều ngành khoa học khác nhau.
Nhận dạng có mẫu (supervised classification), chẳng hạn phân tích phân biệt
(discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần của
một lớp đã xác định.
7
Nhận dạng không có mẫu (unsupervised classification hay clustering) trong
đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào
đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ
yếu sau đây:
1. Thu nhận dữ liệu và tiền xử lý.
2. Biểu diễn dữ liệu.
3. Nhận dạng, ra quyết định.
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
1. Đối sánh mẫu dựa trên các đặc trưng được trích chọn.
2. Phân loại thống kê.
3. Đối sánh cấu trúc.
4. Phân loại dựa trên mạng nơ-ron nhân tạo.
Trong các ứng dụng rõ ràng không thể chỉ dùng có một cách tiếp cận đơn lẻ để
phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách tiếp
cận khác nhau. Các phương thức phân loại tổ hợp hay được sử dụng khi nhận dạng
và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid
system) bao gồm nhiều mô hình kết hợp.
1.2. HỌC MÁY
1.2.1 Máy vector hỗ trợ (Suport Vector Machine)
1.2.1.1 Giới thiệu
Trong các thuật toán phân lớp trong kỹ thuật học máy giám sát thì máy véc tơ
hỗ trợ là một thuật toán hiệu quả đặc biệt trong các bài toán phân lớp dữ liệu. Thuật
toán này được đề xuất bởi Vladimir N. Vapnik. Ý tưởng chính của nó là coi các dữ
liệu đầu vào như là các điểm trong một không gian n chiều và từ các dữ liệu huấn
luyện ban đầu được gán nhãn sẽ tìm ra được một siêu phẳng phân lớp chính xác các
dữ liệu này, siêu phẳng sau đó được dùng để phân lớp các dữ liệu chưa biết cần tiên
đoán [5].
8
Hình 1.1 Biểu diễn phân lớp dựa trên thuật toán SVM [5]
Xét một tập dữ liệu mẫu: 𝒟= {( 𝓍1,y1),...,(𝓍𝜄,y𝜄) , 𝓍 ∈ ℝ𝑛 , y ∈{-1,1}
Trong đó i x là một véc tơ đặc trưng hay một điểm ( trong không gian n chiều
𝑥𝑖 ∈ ℝ𝑛 biễu diễn tập mẫu i d cặp ( , ) ii xybiểu diễn rằng với một véc tơ đặc trưng i
x thì được gán nhãn là i y tương ứng trong đó y ∈{-1,1} hay nói cách khác với tập
mẫu i d sẽ được gán nhãn cho trước là i y . Ta có phương trình một siêu phẳng được
cho như sau :
𝑓(𝓍) = w ∙ x + b = 0 [6]
Trong đó w∙x là tích vô hướng giữa véc tơ x và véc tơ pháp tuyến w ∈ ℝ𝑛 được
biểu diễn trong không gian n chiều, và b ∈ ℝ là hệ số tự do.
Trên thực tế với các dữ liệu ban đầu có thể sinh ra vô số các siêu phẳng khác
nhau để phân lớp dữ liệu tuy nhiên bài toán đặt ra là trong một không gian n chiều
với các tập dữ liệu mẫu như vậy làm sao tìm được một siêu phẳng để luôn đảm bảo
rằng nó phân chia các dữ liệu một cách tốt nhất, ta có thể hiểu rằng một siêu phẳng
tốt là một siêu phẳng mà khoảng cách từ các điểm dữ liệu được phân lớp gần nhất với
siêu phẳng đó là lớn nhất. Phương trình chứa các điểm dữ liệu này được gọi là các lề,
như vậy nói cách khác siêu phẳng tốt là siêu phẳng mà khoảng cách giữa nó và lề
càng xa càng tốt.
9
Hình 1.2 Siêu phẳng phân chia dữ liệu tốt có khoảng cách lề xa nhất [5],[7]
1.2.1.2 Phân lớp dữ liệu phân chia tuyến tính
Việc huấn luyện Suport Vector Machine (SVM) với mục đích là để tìm ra các
support vector và MMH. MMH là ranh giới phân chia tuyến tính giữa các lớp và vì
thế SVM tương ứng có thể được sử dụng để phân lớp dữ liệu mà dữ liệu đó có thể
phân chia tuyến tính thì SVM được huấn luyện được gọi là SVM tuyến tính.
Sau khi huấn luyện SVM, chúng ta sẽ phân loại các bộ mới.
Hình 1.3 Trường hợp dữ liệu có thể phân chia tuyến tính
Công thức Lagrangian [5]:
𝑙
𝑑 (𝑋 𝑇 ) = ∑ 𝑦𝑖 𝛼𝑖 𝑋 𝑇 + 𝑏0
𝑖=1
10
Trong đó:
𝑋 𝑇 là một bộ test
𝑦𝑖 là nhãn lớp của support vector 𝑋𝑖
𝑙 là số lượng các support vector.
𝛼 là nhân tử Lagrangian
𝑏0 là biến số được xác định bởi sự tối ưu hóa hay các thuật toán SVM
MMH được xem là ranh giới quyết định trong việc quyết định xem một bộ test
bất kỳ sẽ thuộc vào lớp nào.
Giả sử cho một bộ test XT, ta gắn nó vào phương trình trê, sau đó kiểm tra dấu
hiệu của kết quả. Từ đó ta sẽ được bộ test sẽ rơi vào mặt nào của siêu phẳng. Nếu dấu
gường, thì XT rơi vào phía trên của MMH và SVM đoán XT thuộc về lớp +1. Nếu dấu
âm, thì XT nằm tại hoặc dưới MMH và nhãn được đoán là -1.
1.2.1.3 Phân lớp dữ liệu không phân chia tuyến tính
Trường hợp dữ liệu không thể phân chia tuyến tính được nghĩa là không có
đường thẳng nào có thể vẽ được để phân chia lớp này [5].
Hình 1.4 Mô tả trường hợp dữ liệu không phân chia tuyến tính
Hình 1.4 cho thấy được trường hợp dữ liệu không phân chia tuyến tính trên
không gian 2 chiều. Ở đây ta không thể vẽ một đường thẳng phân chia 2 lớp, do đó
ranh giới quyết định ở đây không tuyến tính.
11
Tuy nhiên đối với trường hợp này SVM vẫn có cách để giải quyết bằng cách
mở rộng SVM phi tuyến như sau:
Bước 1: Chuyển dữ liệu nguồn lên một không gian nhiều chiều hơn bằng cách
sử dụng ánh xạ phi tuyến. Một vài ánh xạ phi tuyến thông thường có thể được sử
dụng để thực hiện bước này.
Bước 2: Tìm những siêu phằng trong không gian mới này. Cuối cùng quay lại
tối ưu bình phương đã được giải quyết sử dụng công thức SVM tuyến tính. Siêu
phằng có biên độ lớn nhất được tìm thấy trong không gian mới tương ứng với siêu
bề mặt phân chia không tuyến tính trong không gian ban đầu.
1.2.1.4 Hàm nhân (Kernel)
Trên thực tế đối với thuật toán svm chúng ta không cần phải biết một cách quá
rõ ràng các giá trị của một véc tơ dữ liệu trong không gian mới như thế nào, để tìm
ra các siêu phẳng tối ưu giá trị cần quan tâm nhất chính là tích vô hướng giữa các véc
tơ đặc trưng là ảnh của véc tơ dữ liệu ban đầu trong không gian mới, một hàm cho
phép tìm ra các tích vô hướng của các dữ liệu ảnh này được gọi hàm nhân Kernel đây
là một hàm hết sức quan trọng trong thuật toán svm: 𝐾(𝑥𝑖 , 𝑥𝑗 ) = ∅(𝑥𝑖 ) ∙ ∅(𝑥𝑗 )
Một số hàm nhân (Kernel) cơ bản [4]:
Hàm nhân tuyến tính (linear):
𝐾(𝑥𝑖 , 𝑥𝑗 ) = 𝑥𝑖 ∙ 𝑥𝑗
Hàm nhân đa thức (polynomial): 𝐾(𝑥𝑖 , 𝑥𝑗 ) = (𝛾𝑥𝑖 ∙ 𝑥𝑗 + 𝑟)𝑑 , 𝛾 > 0
2
Hàm RBF (radial basis funciont): 𝐾(𝑥𝑖 , 𝑥𝑗 ) = 𝑒𝑥𝑝(−𝛾‖𝑥𝑖 − 𝑥𝑗 ‖ ), 𝛾 > 0
Hàm sigmoid: 𝐾(𝑥𝑖 , 𝑥𝑗 ) = tanh(𝛾𝑥𝑖 ∙ 𝑥𝑗 + 𝑟)
Hình 1.5 Dữ liệu được phân lớp bởi hàm nhân [5]
12
Trong hình 1.5 Bên trái là một SVM với polynominal kernel bậc 3 được áp dụng
để phân lớp dữ liệu phi tuyến tính. Hình bên phải là một SVM với radial kernel được
áp dụng. Trong ví dụ này cả hai Kernel đều tỏ ra tương đối thích hợp với việc ra quyết
định phân lớp
1.2.2 Deep learning
1.2.2.1. Giới thiệu.
Deep learning là một nhánh của lĩnh vực học máy, dựa trên một tập hợp các
thuật toán nhằm cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử
dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bao gồm nhiều biến đổi phi tuyến.
Deep learning là một lớp của các thuật toán máy học :
- Sử dụng một tầng (cascade) nhiều lớp các đơn vị xử lý phi tuyến để trích trọn
đặc trưng và chuyển đổi. Mỗi lớp kế tiếp dùng đầu ra từ lớp trước làm đầu vào. Thuật
toán này có thể được giám sát hoặc không cần giám sát và được ứng dụng cho các
mô hình phân tích (không có giám sát) và phân loại (giám sát).
- Dựa trên học (không có giám sát) của nhiều cấp các đặc trưng hoặc đại diện
của dữ liệu. Các tính năng cao cấp bắt nguồn từ các tính năng thấp cấp hơn để tạo
thành một đại diện thứ bậc.
- Là một phần của lĩnh vực máy học và rộng lớn hơn về việc học đại diện dữ
liệu.
- Học nhiều cấp độ đại diện tương ứng với các mức độ trừu tượng khác nhau;
các mức độ hình thành một hệ thống phân cấp của các khái niệm.
1.2.2.2. Phương pháp deep learning.
Các lớp được sử dụng trong deep learning bao gồm các lớp ẩn của một mạng
nơron nhân tạo và tập các công thức mệnh đề phức tạp. Chúng cũng có thể bao gồm
các biến tiềm ẩn được tổ chức thành các lớp chọn lọc trong các mô hình thể sinh (có
khả năng sinh ra) sâu như các nút trong Deep Belief Networks và Deep Boltzmann
Machines [6].
Sự khác nhau giữa deep learning và học nông: deep learning sử dụng nhiều
lớp ẩn thay vì chỉ một lớp ẩn như học nông, bên cạnh đó, deep learning còn cần truyền
tín hiệu giữa các lớp ẩn qua thuật toán lan truyền. Các thuật toán deep learning dựa
13
trên các đại diện phân tán. Giả định tiềm ẩn đằng sau các đại diện phân tán là các dữ
liệu được tạo ra bởi sự tương tác của các yếu tố được tổ chức theo lớp. Deep learning
thêm giả định rằng các lớp của các yếu tố này tương ứng với các mức độ trừu tượng
hay theo thành phần. Các con số khác nhau của các lớp và kích thước của lớp có thể
được sử dụng để quy định các lượng trừu tượng khác nhau. Deep learning khai thác
ý tưởng thứ bậc các yếu tố được tổ chức theo lớp ở cấp cao hơn, những khái niệm
trừu tượng cao được học từ các cấp độ thấp hơn. Những kiến trúc deep learning này
thường được xây dựng với phương pháp lớp chồng lớp tham lam. Deep learning giúp
tháo gỡ những khái niệm trừu tượng và chọn ra những đặc trưng cần thiết cho việc
học. Đối với học có giám sát, phương pháp deep learning sẽ tránh kỹ thuật đặc trưng
(feature engineering), bằng cách ánh xạ các dữ liệu vào các đại diện trung gian nhỏ
gọn, và lấy được các cấu trúc lớp mà loại bỏ sự dư thừa trong đại diện.
* Một số thuật toán deep learning: deep learning có nhiều thuật toán khác
nhau nên nó phát triển rất nhanh nhiều biến thể và thuật toán mới ra đời liên tục trong
thời gian ngắn, có thể kể đến một số thuật toán như: Mạng nơ-ron sâu (DNN - Deep
Nơ-ron Network), mạng niềm tin sâu (Deep Belief Network), mạng nơ-ron chập,
mạng lập trình sâu, các mạng bộ nhớ...
1.3. KỸ THUẬT DEEP LEARNING
1.3.1 Mạng nơ ron nhân tạo
Mạng nơ-ron nhân tạo (còn gọi là mạng nơ-ron) là một mô hình toán học hay
mô hình tính toán được xây dựng dựa trên các mạng nơ-ron sinh học. Nó gồm có một
nhóm các nơ-ron nhân tạo (nút) nối với nhau, và xử lý thông tin bằng cách truyền
theo các kết nối và tính giá trị mới tại các nút.. Để hiểu rõ hơn mạng nơron nhân tạo,
chúng ta cần tìm hiểu hai loại nơ-ron nhân tạo là perceptron và sigmoid.
1.3.1.1 Perceptron
Perceptron được phát triển vào những năm 1950 và 1960 bởi nhà khoa học
Frank Rosenblatt. Ngày nay, nó phổ biến trong nhiều mô hình mạng nơ-ron khác
nhau. Một perceptron có một số đầu vào (input) nhị phân, 𝑥1 , 𝑥2 ,..., và tạo ra một
đầu ra (output) nhị phân duy nhất [6].
14
𝑥1
𝑥2
Output
𝑥3
Hình 1.6 Một perceptron với ba đầu vào
Trong hình 1.6, perceptron có ba đầu vào 𝑥1 , 𝑥2 , 𝑥3 . Cũng có thể có nhiều hơn
hoặc ít hơn số đầu vào. Rosenblatt đề xuất một quy tắc đơn giản để tính toán đầu ra.
Các trọng số 𝑤1 , 𝑤2 , ... là các số thực thể hiện tầm quan trọng của các yếu tố đầu vào
tương ứng với đầu ra.
Các nơ-ron đầu ra 00 hoặc 11, được xác định bởi tổng ∑𝑗𝑊𝑗 𝑋𝑗 là nhỏ hơn hoặc
lớn hơn so với một vài giá trị ngưỡng (threshold). Cũng giống như các trọng số,
ngưỡng là số thực và là tham số của nơ-ron. Khi đó đầu ra được tính như sau:
Bằng cách thay đổi trọng số và ngưỡng, chúng ta có thể có được các mô hình
khác nhau của việc ra quyết định. Nhưng một perceptron không phải là một mô
hình ra quyết định tối ưu, do đó ta có một mạng lưới kết hợp nhiều perceptron để có
thể đưa ra quyết định chính xác hơn:
Hình 1.7. Mạng nơ-ron gồm nhiều perceptron [6]
15
Trong hình 1.7, cột đầu tiên hay còn gọi là lớp đầu tiên của perceptron có thể
đưa ra ba quyết định từ đầu vào. Còn trong lớp perceptron thứ hai, mỗi perceptron
được quyết định bởi trọng số lên các đầu ra từ lớp đầu tiên.
Perceptron trong lớp thứ hai có thể đưa ra quyết định ở mức độ phức tạp và trừu
tượng hơn perceptron trong lớp đầu tiên. Và thậm chí quyết định phức tạp hơn có thể
được thực hiện bởi các perceptron trong lớp thứ ba, thứ tư.... Bằng cách này, một
mạng lưới nhiều lớp của perceptron có thể thamgia vào việc ra quyết định phức tạp.
Khi xác định perceptron ta hiểu rằng một perceptron chỉ có một đầu ra duy nhất.
Trong mạng trên perceptron trông giống như có nhiều đầu ra nhưng thực ra chúng chỉ
có một đầu ra. Việc nhiều mũi tên đầu ra chỉ là một cách hữu hiệu cho thấy đầu ra từ
một perceptron đang được sử dụng như là đầu vào cho một vài perceptron khác.
Perceptron cho thấy rằng chúng ta có thể đưa ra các thuật toán học tự động điều
chỉnh trọng số và định hướng của một mạng nơ-ron nhân tạo. Điều chỉnh này sẽ xảy
ra khi phản ứng với các kích thích bên ngoài, mà không cần sự can thiệp trực tiếp của
một lập trình viên. Các thuật toán học cho phép chúng ta sử dụng nơron nhân tạo theo
cách hoàn toàn khác với các cổng logic thông thường. Mạng nơ-ron có thể học để
giải quyết vấn đề một cách đơn giản trong khi vấn đề đó lại vô cùng khó khăn đối với
mạch thông thường.
1.3.1.2 Sigmoid
Trong thực tế, đôi khi chỉ cần một thay đổi nhỏ ở trọng số để cho ra kết quả tốt
hơn, nhưng với perceptron thì việc thay đổi dù chỉ một chút ở trọng số của bất kỳ
perceptron trong mạng cũng có thể dẫn đến kết quả hoàn toàn thay đổi. Để khắc phục
vấn đề này, ta sử dụng nơ-ron nhân tạo được gọi là nơ-ron sigmoid. Nơ-ron sigmoid
tương tự như perceptron nhưng có sự sửa đổi để nếu có thay đổi nhỏ trong trọng số
và định hướng chỉ gây ra một sự thay đổi nhỏ trong đầu ra. Đây là điều rất quan trọng
cho phép một mạng lưới các nơ-ron sigmoid có thể học. Cũng giống như perceptron,
các nơ-ron sigmoid có đầu vào, 𝑥1 , 𝑥2 ,... Nhưng thay vì chỉ 00 hoặc 11, các đầu vào
có thể đưa vào bất cứ giá trị nào giữa 00 và 11. Ví dụ, 0,638 là một đầu vào có giá trị
trong một nơ-ron sigmoid. Các nơ-ron sigmoid cũng có trọng số cho mỗi đầu vào là
𝑤1 , 𝑤2 , …và định hướng b. Nhưng đầu ra không phải là 00 hoặc 11. Thay vào đó,
đầu ra là σ(w⋅x + b), trong đó σ được gọi là hàm sigmoid và được xác định bằng:
16
Một nơ-ron sigmoid với đầu vào 𝑥1 , 𝑥2 ,... trọng số 𝑤1 , 𝑤2 ,... thì khi đó định
hướng b là:
Để hiểu rõ hơn sự tương đồng giữa sigmoid và perceptron, giả sử z ≡ w ⋅ x + b
là một số dương lớn, tiếp đó e-z ≈ 0 và σ(z) ≈ 1. Nói cách khác, khi z = w ⋅ x + b là
lớn và dương, đầu ra từ các nơ-ron sigmoid là xấp xỉ 1, cũng giống như perceptron.
Giả sử theo cách khác khi z = w ⋅ x + b âm, tiếp đó e-z → ∞ và σ(z)≈ 0. Vì vậy, khi
z = w ⋅ x + b âm, hoạt động của nơ-ron sigmoid cũng tương tự với perceptron. Chỉ
khi w ⋅ x + b không là các giá trị quá lớn hoặc quá nhỏ thì sigmoid mới có nhiều sai
lệch so với perceptron.
1.3.1.3 Kiến trúc của mạng nơ ron
Giả sử chúng ta có một mạng như hình 1.8:
Hình 1.8. Mạng Nơ ron một lớp ẩn [6]
Đây là mạng nơ-ron đơn giản với một lớp ẩn, lớp ngoài cùng bên trái trong
mạng này được gọi là lớp đầu vào, và các nơ-ron trong lớp này được gọi là nơ-ron
đầu vào. Lớp ngoài cùng bên phải hoặc đầu ra chứa các nơ-ron đầu ra, như trong
trường hợp này chỉ có một nơron đầu ra duy nhất. Lớp giữa được gọi là lớp ẩn, các
nơ-ron trong lớp này không phải đầu vào cũng không đầu ra. Mạng trên có một lớp
17