Giải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt ngườiGiải pháp ứng dụng kỹ thuật deep learning trong nhận dạng mặt người
Trang 1TRƯỜNG ĐẠI HỌC QUẢNG BÌNH KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN
Trang 2TRƯỜNG ĐẠI HỌC QUẢNG BÌNH KHOA KỸ THUẬT – CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP
Giảng viên hướng dẫn:
TS Hoàng Văn Dũng
Trang 3LỜ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
Trang 4MỤ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
Trang 5CHƯƠ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
Trang 6DANH MỤC HÌNH ẢNH
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ề
xa nhất [5,7]
10
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
tính
11
Hình 1.5 Dữ liệu được phân lớp bởi hàm nhân [5] 12
Hình 1.7 Mạng nơ-ron gồm nhiều perceptron [6] 15
Hình 1.10 Quá trình xử lý thông tin của một ANN [8] 18
Trang 7Hình 1.11b Several neurons[8] 19
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.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
Trang 8Hình 2.2 Quá trình huấn luyện mạng nơ ron tích chập sâu
(DCNN)
33
Hình 3.1 Ví dụ về một graph trong Tensorflow 34
Hình 3.3 Hình ảnh ví dụ từ tập dữ liệu ảnh khuôn mặt cho 8
danh tính
38
Hình 3.4 Mô tả định dạng sắp xếp các thư mục trong tập dữ
liệu ảnh mẫu ban đầu
39
Hình 3.5 Hình ảnh khuôn mặt được cắt trong tập dữ liệu ảnh
ban đầu
40
Hình 3.6 Mô tả định dạng các thư mục file được lưu trữ sau
quá trình xử lý trước dữ liệu
Trang 9MỞ ĐẦ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
Trang 103 Đố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
Trang 11Trì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
Trang 12CHƯƠ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
Trang 13Ví 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
Trang 14ksize: 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
Trang 15Trong 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
Trang 16Nhậ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]
Trang 17Hì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 :
Trang 18Hì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
Trang 19Trong đó:
𝑋𝑇 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
Trang 20Tuy 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
Hàm RBF (radial basis funciont): 𝐾(𝑥𝑖, 𝑥𝑗) = 𝑒𝑥𝑝(−𝛾‖𝑥𝑖− 𝑥𝑗‖2), 𝛾 > 0 Hàm sigmoid: 𝐾(𝑥𝑖, 𝑥𝑗) = tanh (𝛾𝑥𝑖∙ 𝑥𝑗 + 𝑟)
Hình 1.5 Dữ liệu được phân lớp bởi hàm nhân [5]
Trang 21Trong 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
Trang 22trê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]
Trang 23Hì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]
𝑥1
Output
𝑥2
𝑥3
Trang 24Trong 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 đó,
Trang 25Mộ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
Trang 26ẩn duy nhất, nhưng một số mạng có nhiều lớp ẩn Ví dụ, mạng bốn lớp trong hình 1.8
có hai lớp ẩn:
Hình 1.9 Mạng nơ-ron hai lớp ẩn [6]
Trong khi việc thiết lập lớp đầu vào và đầu ra của một mạng nơ-ron thường đơn giản, thì việc tạo các lớp ẩn thường mất nhiều thời gian và công sức Do đó, các nhà nghiên cứu mạng nơ-ron đã phát triển nhiều công nghệ tự động thiết kế cho các lớp
ẩn, giúp mọi người có được những đầu ra theo hướng mình mong muốn Điều này có thể được sử dụng để cân bằng số lớp ẩn với thời gian cần thiết để đào tạo mạng
1.3.1.4 Quá trình xử lý thông tin của một ANN
Hình 1.10 Quá trình xử lý thông tin của một ANN [8]
Inputs: Mỗi Input tương ứng với 1 thuộc tính (attribute) của dữ liệu (patterns)