TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
ỨNG DỤNG HỌC SÂU GIẢI QUYẾT BÀI TOÁN
NHẬN DẠNG KÝ TỰ QUANG HỌC TIẾNG VIỆT
NGUYỄN TRỌNG HỒNG VIỆT
Ngành Tốn Tin Khoa Học
Giảng viên hướng dẫn:
TS. Lê Đình Nam
Viện:
Tốn ứng dụng và tin học
Hà Nội, 09/2021
Mục lục
Danh mục từ viết tắt
1
Danh mục hình vẽ và bảng
3
1
CÁC KHÁI NIỆM CƠ BẢN
7
1.1
Bài toán OCR . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.1.1
Giới thiệu chung . . . . . . . . . . . . . . . . . . . .
7
1.1.2
Chương trình OCR . . . . . . . . . . . . . . . . . . .
8
1.1.3
Các phương pháp tiếp cận . . . . . . . . . . . . . . . 10
1.1.4
Các thành phần của mô hình OCR . . . . . . . . . . . 11
1.1.5
Hàm chi phí - Loss Function . . . . . . . . . . . . . . 12
1.2
Mạng nơ-ron . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.1
Tổng quan mơ hình và nền tảng tốn học . . . . . . . 15
1.2.2
Bài toán Mạng Nơ-ron truyền thẳng - Feed Forward
(FF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.3
Bài toán Mạng Nơ-ron truyền ngược - Back Propagation (Backward) (BW) . . . . . . . . . . . . . . . . . 19
1.2.4
Thuật toán Tối ưu suy giảm độ dốc - Gradient Descent
(GD) . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3
Cơ sở lý thuyết - Mạng nơ-ron tích chập - Convolutional Neural Network . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4
1.3.1
Trường tiếp nhận cục bộ - Local Receptive Field (LRF) 22
1.3.2
Lớp tổng hợp - Pooling Layer (PL) . . . . . . . . . . . 23
Cơ sở lý thuyết - Mạng nơ-ron hồi quy - Recurrent Neural
Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5
Cơ sở lý thuyết - Phân loại thời gian kết nối - Connectionist
Temporal Classification Loss . . . . . . . . . . . . . . . . . . 26
1.6
1.7
2
Cơ sở lý thuyết - Lớp nơ-ron chú ý - Attention Layer . . . . . . 28
1.6.1
Tổng quát . . . . . . . . . . . . . . . . . . . . . . . . 28
1.6.2
Cơ chế chú ý trong OCR . . . . . . . . . . . . . . . . 30
Phương pháp đánh giá mơ hình OCR . . . . . . . . . . . . . . 31
1.7.1
Các phương pháp đánh giá . . . . . . . . . . . . . . . 31
1.7.2
Các bộ dữ liệu đánh giá . . . . . . . . . . . . . . . . . 34
CÁC PHƯƠNG PHÁP TIẾP CẬN BÀI TOÁN
2.1
2.2
37
Phương pháp nhận dạng từng ký tự - Character Based OCR . . 37
2.1.1
Tổng quan hướng tiếp cận . . . . . . . . . . . . . . . 37
2.1.2
Xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . 38
2.1.3
Mơ hình Character Classification . . . . . . . . . . . 42
2.1.4
Các kết quả tiêu biểu . . . . . . . . . . . . . . . . . . 44
2.1.5
Đánh giá hướng tiếp cận . . . . . . . . . . . . . . . . 45
Phương pháp nhận dạng từng từ - Word Based OCR . . . . . . 45
2.2.1
Tổng quan hướng tiếp cận . . . . . . . . . . . . . . . 45
2.2.2
Xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.3
Nhận dạng từ - Word Detection . . . . . . . . . . . . 47
2.2.4
CRNN . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3
2.4
2.5
2.2.5
CNN + RNN + CTC Loss . . . . . . . . . . . . . . . 49
2.2.6
CNN + RNN + Attention . . . . . . . . . . . . . . . . 50
2.2.7
Kết hợp CTC + Attention . . . . . . . . . . . . . . . . 50
2.2.8
Các kết quả tiêu biểu . . . . . . . . . . . . . . . . . . 50
2.2.9
Đánh giá hướng tiếp cận . . . . . . . . . . . . . . . . 51
Phương pháp nhận dạng từng câu - Sentence Based OCR . . . 52
2.3.1
Tổng quan hướng tiếp cận . . . . . . . . . . . . . . . 52
2.3.2
Xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . 52
2.3.3
Mơ hình Sentence Based OCR . . . . . . . . . . . . . 53
2.3.4
CRNN . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.3.5
CNN + RNN + CTC Loss . . . . . . . . . . . . . . . 55
2.3.6
CNN + RNN + Attention . . . . . . . . . . . . . . . . 55
2.3.7
Kết hợp CTC + Attention . . . . . . . . . . . . . . . . 56
2.3.8
Đánh giá hướng tiếp cận . . . . . . . . . . . . . . . . 56
Phương pháp nhận dạng toàn form - 2D OCR . . . . . . . . . 57
2.4.1
Tổng quan hướng tiếp cận . . . . . . . . . . . . . . . 57
2.4.2
Xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . 58
2.4.3
Mơ hình Chargrid-OCR . . . . . . . . . . . . . . . . 63
2.4.4
Các kết quả tiêu biểu . . . . . . . . . . . . . . . . . . 65
2.4.5
Đánh giá hướng tiếp cận . . . . . . . . . . . . . . . . 68
Phương pháp End2End kết hợp - End2End OCR . . . . . . . . 69
2.5.1
Tổng quan hướng tiếp cận . . . . . . . . . . . . . . . 69
2.5.2
Xử lý ảnh . . . . . . . . . . . . . . . . . . . . . . . . 70
2.5.3
Mơ hình FOTS . . . . . . . . . . . . . . . . . . . . . 70
2.5.4
Các kết quả tiêu biểu . . . . . . . . . . . . . . . . . . 72
2.5.5
Đánh giá hướng tiếp cận . . . . . . . . . . . . . . . . 73
3
MƠ HÌNH OCR CẢI TIẾN
74
3.1
Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.2
Kiến trúc mơ hình . . . . . . . . . . . . . . . . . . . . . . . . 74
3.2.1
Mơ hình Text Detection with Differentiable Binarization [42] . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.3
3.2.2
Mơ hình phân lớp (Classification) hướng xoay dịng chữ 77
3.2.3
Mơ hình Xception Attention OCR . . . . . . . . . . . 77
Dữ liệu nhân tạo - Data Generation (DG) . . . . . . . . . . . . 79
3.3.1
Tổng quan Dữ liệu nhân tạo - Data Generation (DG)
trong OCR . . . . . . . . . . . . . . . . . . . . . . . 79
3.3.2
4
Tạo dữ liệu nhân tạo giống với dữ liệu thực tế . . . . . 80
3.4
Phương pháp huấn luyện hỗn hợp - Mixed Precision . . . . . . 82
3.5
Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.6
Chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . 86
KẾT LUẬN
TÀI LIỆU THAM KHẢO
89
91
Danh mục từ viết tắt
OCR Nhận dạng ký tự quang học - Optical Character Recognition , 4, 6, 7,
8, 9, 10, 11, 13, 14, 28, 30, 31, 32, 33, 34, 37, 38, 42, 49, 51, 55, 69, 74,
75, 76, 77, 78, 79, 89
CB-OCR Phương pháp nhận dạng từng ký tự - Character Based OCR , 5, 10,
26, 37, 38, 41, 44, 45, 46, 89
WB-OCR Phương pháp nhận dạng từng từ - Word Based OCR , 5, 10, 45,
46, 52, 53, 89
SB-OCR Phương pháp nhận dạng từng câu - Sentence Based OCR , 5, 10,
52, 53, 74, 89
2D-OCR Phương pháp nhận dạng toàn form - 2D OCR , 10, 57, 89
EE-OCR Phương pháp End2End kết hợp - End2End OCR , 10, 69, 89
Deep Learning Học sâu - Deep Learning 7, 14, 15, 69
TD Phát hiện ký tự - Text Detection 69
TR Nhận diện ký tự - Text Recognition 26, 69
ML Học máy - Machine Learning 14
1
CV Thị giác máy tính - Computer Vision
CNN Mạng nơ-ron tích chập - Convolutional Neural Network , 11, 14, 21,
23, 24, 28, 42, 43, 48, 49, 53, 54, 78, 90
NN Mạng nơ-ron - Neural Network 14
RNN Mạng nơ-ron hồi quy - Recurrent Neural Network , 24, 25, 28, 30, 48,
49, 53, 54
FF Mạng Nơ-ron truyền thẳng - Feed Forward , 17
BW Mạng Nơ-ron truyền ngược - Back Propagation (Backward) , 19
GD Tối ưu suy giảm độ dốc - Gradient Descent , 20
SGD Tối ưu suy giảm độ dốc ngẫu nhiên - Stochastic Gradient Descent 64
SW Cửa sổ trượt - Sliding Windows
LRF Trường tiếp nhận cục bộ - Local Receptive Field , 4, 22, 23
LSTM Mạng bộ nhớ dài ngắn - Long Short Term Memory 71
PL Lớp tổng hợp - Pooling Layer , 4, 23, 24
Feature map Bản đồ đặc trưng - Feature map
CTC Phân loại thời gian kết nối - Connectionist Temporal Classification
Loss , 26, 27
ATTN Lớp nơ-ron chú ý - Attention Layer , 28, 78
DG Dữ liệu nhân tạo - Data Generation , 79
2
MPT Phương pháp huấn luyện hỗn hợp - Mixed Precision , 6, 82, 83
NLP Xử lý ngôn ngữ tự nhiên - Natural Language Processing 25
WRR Tỉ lệ nhận dạng từ - Word Recognition Rate 65
DPI Số lượng điểm ảnh trên một inch - Dots Per Inch 66
GPU Bộ xử lý đồ họa - Graphics processing unit
CPU Bộ xử lý trung tâm - Central processing unit
3
Danh mục hình vẽ và bảng
1.1
Minh họa một số trường hợp khó xử lý trong OCR. . . . . . .
8
1.2
Minh họa một luồng OCR tiêu biểu. . . . . . . . . . . . . . .
9
1.3
Ví dụ văn bản scan. . . . . . . . . . . . . . . . . . . . . . . .
9
1.4
Ví dụ văn bản scan. . . . . . . . . . . . . . . . . . . . . . . . 10
1.5
Tiêu chuẩn một mô hình OCR. . . . . . . . . . . . . . . . . . 11
1.6
Hàm chi phí trong mơ hình OCR. . . . . . . . . . . . . . . . . 13
1.7
Kiến trúc mạng Perceptron nhiều lớp - Multi Layer Perceptron
(MLP). Nguồn: [51] . . . . . . . . . . . . . . . . . . . . . . . 15
1.8
Quan hệ giữa các lớp trong MLP. Nguồn: [51] . . . . . . . . . 16
1.9
Mơ hình mạng CNN - Nguồn: [85]. . . . . . . . . . . . . . . 22
1.10 Trường tiếp nhận cục bộ - Local Receptive Field (LRF) Nguồn: [85]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.11 Lớp tổng hợp - Pooling Layer (PL) - Nguồn: [85]. . . . . . . . 24
1.12 Kiến trúc mạng RNN - Nguồn: [85]. . . . . . . . . . . . . . . 25
1.13 Ví dụ về vấn đề của thuật toán text recognition - Nguồn: [81]. . 27
1.14 Kiến trúc của mơ hình mạng nơ-ron chú ý. Nguồn: [4] . . . . . 29
1.15 Gộp tọa độ của điểm ảnh vào đặc trưng. Nguồn: [4] . . . . . . 31
1.16 Hình ảnh từ bộ dữ liệu FSNS. Nguồn: [45]. . . . . . . . . . . 35
1.17 Hình ảnh từ bộ dữ liệu im2latex-100k. Nguồn: [46]. . . . . . . 35
1.18 Hình ảnh từ bộ dữ liệu ArT. Nguồn: [47] [48] . . . . . . . . . 36
4
2.1
Phân tách ký tự trong Phương pháp nhận dạng từng ký tự Character Based OCR. Nguồn: [44] . . . . . . . . . . . . . . 38
2.2
Xử lý ảnh đầu vào bị lệch (De-skewing). - Nguồn: [64] . . . . 39
2.3
Chuyển ảnh về dạng trắng đen (Binarization). Nguồn: [64] . . 40
2.4
Loại bỏ nhiễu (Despeckle). Nguồn: [64] . . . . . . . . . . . . 40
2.5
Loại bỏ đường kẻ (Line removal). Nguồn: [64] . . . . . . . . . 41
2.6
Phân chia ký tự hoặc "phân đoạn" (Character isolation or
“segmentation”). Nguồn: [64] . . . . . . . . . . . . . . . . . 42
2.7
Tensor. Nguồn: DeepAI.org . . . . . . . . . . . . . . . . . . . 43
2.8
Mơ hình Character Classification. Nguồn: [23] . . . . . . . . 43
2.9
Luồng xử lý Phương pháp nhận dạng từng từ - Word Based
OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.10 Phân tách từ. . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.11 Kiến trúc mơ hình CRNN [55] . . . . . . . . . . . . . . . . . 49
2.12 Kiến trúc mơ hình ocr kết hợp CTC + Attention [65] . . . . . 50
2.13 Luồng xử lý Phương pháp nhận dạng từng câu - Sentence
Based OCR . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.14 Kiến trúc mơ hình CRNN [55] . . . . . . . . . . . . . . . . . 55
2.15 Kiến trúc mô hình ocr kết hợp CTC + Attention [65] . . . . . 56
2.16 Đầu ra của mơ hình Chargrid-OCR với đầu vào là một bức
ảnh tài liệu thuộc tập dữ liệu DOE Tables [13]. . . . . . . . . 58
2.17 Phân tách những điểm ảnh thuộc ký tự. . . . . . . . . . . . . . 60
2.18 Mơ hình dự đốn nhiều hình chữ nhật bao quanh ký tự [17]. . . 60
2.19 Minh họa thuật toán Graphcore để lọc các hình chữ nhật bao
quanh ký tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.20 Kiến trúc Chargrid-OCR với ví dụ đầu vào và đầu ra. . . . . . 63
2.21 WRR trên 2 tập dữ liệu đánh giá. . . . . . . . . . . . . . . . . 66
5
2.22 Kết quả so sánh mơ hình với WRR. . . . . . . . . . . . . . . . 67
2.23 SROIE. Trái: trước khi tinh chỉnh tham số. Phải: sau khi tinh
chỉnh tham số. . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.24 Kết quả tinh chỉnh tham số mơ hình. Tess4 là viết tắt của
Tesseract v4. . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
2.25 Kiến trúc tổng thể của kiến trúc FOTS [?]. . . . . . . . . . . . 71
2.26 Kiến trúc RoIRotate khi áp dụng trên vùng chứa ký tự. . . . . 72
3.1
Kiến trúc mơ hình OCR cải tiến. . . . . . . . . . . . . . . . . 75
3.2
Kiến trúc mô hình Text Detection with Differentiable Binarization. Nguồn: [42] . . . . . . . . . . . . . . . . . . . . . . 76
3.3
Kiến trúc mơ hình phân lớp (Classification) hướng xoay dịng
chữ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.4
Kiến trúc mơ hình Xception Attention OCR. . . . . . . . . . . 78
3.5
Luồng tạo dữ liệu nhân tạo. . . . . . . . . . . . . . . . . . . . 81
3.6
Hiệu quả sử dụng kỹ thuật Mixed Precision Training. Nguồn:
Nvidia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.7
Phương pháp Phương pháp huấn luyện hỗn hợp - Mixed Precision. Nguồn Nvidia. . . . . . . . . . . . . . . . . . . . . . . 83
3.8
Ví dụ gán nhãn dữ liệu. . . . . . . . . . . . . . . . . . . . . . 84
3.9
Ví dụ chương trình ocr . . . . . . . . . . . . . . . . . . . . . 86
3.10 Luồng ocr mở rộng . . . . . . . . . . . . . . . . . . . . . . . 87
3.11 Ví dụ bóc tách thơng tin. . . . . . . . . . . . . . . . . . . . . 88
6
Chương 1
CÁC KHÁI NIỆM CƠ BẢN
1.1
Bài toán OCR
1.1.1
Giới thiệu chung
Ngày nay, thời đại của dữ liệu đang lên ngôi, số lượng dữ liệu văn bản
ngày càng nhiều kéo theo nhu cầu số hố và chuẩn hóa dữ liệu dạng văn bản
ngày càng lớn. Từ đó bài tốn Nhận dạng ký tự quang học - Optical Character
Recognition (OCR) ra đời, giúp giải quyết việc tự động "đọc" các thông tin
ký tự trong ảnh, sau đó trích xuất thơng tin và tự động đựa vào cơ sở dữ liệu
nhằm mục tiêu lưu trữ, tìm kiếm và phân tích.
Thuật tốn OCR đã được phát triển từ rất lâu, bắt đầu từ những năm 1980s,
Yann Lecun, trong thời gian nghiên cứu khoa học sau tiến sĩ, đã phát triển nền
tàng thuật toán mạng nơ-ron cơ bản (gọi là neocognitron) nhằm giải quyết bài
toán nhận dạng từng ký tư viết tay cho US Postal Service, với sai số 1%, bằng
việc kết hợp mạng nơ-ron học sâu và thuật tốn Back Propagation, từ đó xuất
bản thuật toán LeNet [1] và được xem như là một bước tiến lớn tạo tiền đề
cho sự phát triển mạnh mẽ của các thuật toán Học sâu - Deep Learning (Deep
7
Learning) sau này.
Các thuật toán OCR đã được phát triển liên tục ngay sau đó một thời gian
dài, tuy nhiên vẫn chưa giải quyết được triệt để bài toán OCR do gặp phải rất
nhiều vấn đề trong thực tế xảy ra, điển hình như:
• Loại chữ: Chữ in, chữ viết tay.
• Font chữ đa dạng (Free font).
• Format đa dạng (Free format).
• Chữ chồng chéo nhau.
• Nhập nhằng trong ngữ cảnh.
• Điều kiện: Mờ, bóng, nhịe.
• Hướng: Xoay đa dạng.
Hình 1.1: Minh họa một số trường hợp khó xử lý trong OCR.
1.1.2
Chương trình OCR
Chương trình OCR là tập hợp các mơ hình nhằm số hóa văn bản thành
định dạng số (doc, pdf,...), một chương trình OCR bao gồm một luồng hoàn
8
chỉnh để giải quyết bài tốn, mơ hình OCR là một trong số đó. Một luồng
hồn chỉnh được mơ tả như hình dưới đây:
Hình 1.2: Minh họa một luồng OCR tiêu biểu.
Bao gồm các bước sau:
• Bước 1: Ảnh đầu vào sẽ được đi qua một mơ hình Nhận diện dịng chữ
(Layout Analysis) để nhận diện vị trí các dịng chữ.
• Bước 2: Khi đã có vị trí các dịng chữ, các dòng chữ sẽ được cắt ra và
xoay về đúng hướng nhờ mơ hình xoay (Text-line Alignment).
• Bước 3: Sau khi có ảnh chuẩn đã xoay, ảnh dịng chữ sẽ được đưa vào
mơ hình OCR để thực hiện việc nhận dạng ra từ (Text).
OCR gồm 2 bài tốn chính, tuỳ thuộc vào bài tốn, việc thiết kế mơ hình
OCR cũng có sự khác biệt:
• OCR cho văn bản scan: Dịng chữ chuẩn chỉnh và thường nằm ngang.
Hình 1.3: Ví dụ văn bản scan.
9
• OCR cho ảnh đời thực: Dòng chữ xuất hiện đa dạng góc, font, màu sắc.
Hình 1.4: Ví dụ văn bản scan.
1.1.3
Các phương pháp tiếp cận
OCR được nghiên cứu khá rộng rãi trên toàn thế giới, tập trung vào các
phương pháp chính sau:
• Phương pháp nhận dạng từng ký tự - Character Based OCR (CB-OCR).
• Phương pháp nhận dạng từng từ - Word Based OCR (WB-OCR).
• Phương pháp nhận dạng từng câu - Sentence Based OCR (SB-OCR).
• Phương pháp nhận dạng tồn form - 2D OCR (2D-OCR).
• Phương pháp End2End kết hợp - End2End OCR (EE-OCR).
Mặc dù tính ứng dụng cao, được nghiên cứu rộng rãi và áp dụng nhiều vào
các bài tốn thực tế, các cơng nghệ OCR mới vẫn chưa đạt được kết quả cao
trên dữ liệu văn bản tiếng Việt.
10
1.1.4
Các thành phần của mơ hình OCR
Mặc dù có nhiều cách tiếp cận, nhưng ở cách tiếp cận nào, mô hình OCR
cũng được thiết kế theo cấu trúc của mạng nơ-ron, thể hiện như hình dưới đây:
Hình 1.5: Tiêu chuẩn một mơ hình OCR.
Trong đó bao gồm các thành phần:
• Lớp Encoder: Lớp này được thể hiện trên hình là lớp Mạng nơ-ron tích
chập - Convolutional Neural Network (CNN), trích xuất các thông tin
dạng chữ quan trọng trong ảnh và bỏ qua các thông tin dư thừa, đầu ra sẽ
là ma trận đặc tính (Feature Map) chứa tồn bộ thơng tin dạng chữ của
bức ảnh. CNN là một cách gọi chung của tập hợp các mơ hình nơ-ron
xoắn, sẽ được mơ tả cụ thể trong các phần sau.
• Lớp Decoder: Tùy thuộc vào mơ hình, lớp giải mã sẽ được thiết kế tương
11
ứng nhằm đạt kết quả chính xác nhất.
1.1.5
Hàm chi phí - Loss Function
Một thành phần khác cũng quan trọng không kém nhưng chỉ có ý nghĩa
trong việc huấn luyện mơ hình là hàm chi phí (Loss Function), được mơ tả
như dưới đây:
12
Hình 1.6: Hàm chi phí trong mơ hình OCR.
Mơ hình sẽ được tối ưu bằng hàm chi phí, một hàm chi phí tốt sẽ tạo tiền
đề cho việc huấn luyện mơ hình tốt, cụ thể sẽ được mơ tả trong các phần tiếp
theo.
13
1.2
Mạng nơ-ron
Mơ hình OCR được hình thành trên cấu trúc của một mạng nơ-ron (NN).
Mạng nơ-ron đang là đề tài được quan tâm nhất hiện tại trên phạm vi nghiên
cứu và cả ứng dụng thực tế. Các công ty công nghệ lớn như Google, Microsoft,
Facebook đều đang sở hữu những công nghệ Học sâu (Học sâu - Deep Learning) quy mô nhất.
Học sâu (Deep Learning) thường được gắn với cụm từ mạng nơ-ron - NN.
Mạng nơ-ron hồn tồn khơng mới, thậm chí chúng là những mơ hình Học
máy - Machine Learning đầu tiên xuất hiện từ những năm 1950 khi khái niệm
học máy (Machine Learning) mới được hình thành. Tuy nhiên, tại thời điểm
đó, lượng dữ liệu chưa đủ nhiều, máy tính chưa đủ mạnh nên những mơ hình
khơng thể sánh so sánh với những mơ hình đơn giản như Logistic Regression
hay Support Vector Machines hiện tại.
Học sâu - Học sâu - Deep Learning phát triển chủ yếu dựa trên ba yếu tố
sau:
• Lượng dữ liệu dồi dào.
• Tốc độ tính tốn của máy tính.
• Các kỹ thuật nâng cao để huấn luyện mạng nơ-ron.
Theo dòng chảy phát triển 2 yếu tố đầu tiên dần dần đạt được. Mãi đến
năm 2006, bài báo của Geoff Hinton trên tạp chí Nature gây được sự chú ý lớn
trong cộng đồng khoa học. Năm 2010, AlexNet, một mơ hình Mạng nơ-ron
tích chập - Convolutional Neural Network, chiến thắng ImageNet Challenge
(một cuộc thi về nhận diện đồ vật trong hình ảnh) một cách ngoạn mục, bỏ xa
các mơ hình truyền thống về độ chính xác. Từ đó, tiềm năng của mạng nơ-ron
14
dần dần được phát hiện và hoàn thiện kỹ thuật huấn luyện chúng. Khi 3 yếu
tố kể trên được hội tụ, kỷ nguyên học sâu Deep Learning bắt đầu.
1.2.1
Tổng quan mơ hình và nền tảng tốn học
Mơ hình Perceptron nhiều lớp hay Multilayer Perceptron (MLP) là một
hàm ánh xạ y = f (x, θ ) từ tập dữ liệu đầu vào đến tập dữ liệu đầu ra. Hàm này
được cấu tạo từ nhiều hàm số đơn giản khác. Như vậy, bằng việc lựa chọn các
hàm số cơ sở thích hợp và dữ liệu đầu vào, mơ hình có thể xấp xỉ tham số θ
và từ đó tạo ra các quy tắc f (x) giúp máy tính có thể xác định được đầu ra.
Hình 1.7: Kiến trúc mạng Perceptron nhiều lớp - Multi Layer Perceptron
(MLP). Nguồn: [51]
Từ ý tưởng toán học trên, ta có thể xây dựng mơ hình MLP như hình vẽ
trên đây thơng qua các đặc trưng: Lớp, Nút, Hàm kích hoạt và Ma trận trọng
số. Lớp tương ứng với mức độ nắm bắt ý nghĩa của thông tin đầu vào trong
một quá trình xử lý gồm nhiều lớp. Nói cách khác, mơ hình có cấu trúc dạng
15
xích: f (x) = f1 ( f2 ( f3 ...(x)...)) với f1 là lớp thứ nhất, f2 là lớp thứ 2,....Trong
đó, 2 lớp ngồi cùng được gọi là input layer (lớp đầu vào) và output layer (lớp
đầu ra), các lớp ở giữa được gọi là các hidden layer (lớp ẩn). Độ dài của xích
chính là độ sâu của mơ hình, đây cũng chính là lý do vì sao mơ hình này mang
tên học sâu.
Hình 1.8: Quan hệ giữa các lớp trong MLP. Nguồn: [51]
Một nút (node) hình trịn trong một lớp (layer) được gọi là một đơn vị
(unit). Đơn vị (unit) ở các lớp đầu vào (input layer), lớp ẩn (hidden layers),
và lớp đầu ra (output layer) được lần lượt gọi là đơn vị đầu vào (input unit),
đơn vị ẩn (hidden unit), và đơn vị đầu ra (output unit). Đầu vào (input) của
các lớp ẩn (hidden layer) được ký hiệu bởi z, đầu ra (output unit) của mỗi đầu
vào (input unit) thường được ký hiệu là a (thể hiện giá trị sau hàm kích hoạt,
tức giá trị của mỗi đơn vị (unit) sau khi ta áp dụng hàm kích hoạt (activation
function) lên z). Đầu ra của đơn vị thứ i trong lớp thứ l được ký hiệu là ali . Giả
sử thêm rằng số đơn vị trong lớp thứ l (khơng tính độ chệch - bias) là d(l).
l
Vector biểu diễn đầu ra của lớp thứ l được ký hiệu là al ∈ Rd .
Có L ma trận trọng số cho một MLP có L lớp. Các ma trận này được ký
hiệu là W l ∈ Rd
l−1 xd l
,l = 1, 2, . . . , L trong đó W l thể hiện các kết nối từ layer
16
thứ l1 tới layer thứ l (nếu ta coi lớp đầu vào là lớp thứ 0). Cụ thể hơn, phần tử
wli j thể hiện kết nối từ nút thứ i của lớp thứ l1 tới nút từ j của thứ l. Các hệ số
l
tự do (bias) của thứ l được ký hiệu là bl ∈ Rd . Khi tối ưu một MLP cho một
cơng việc nào đó, chúng ta cần đi tìm ma trận trọng số và hệ số tự do này.
Mỗi đầu ra của một đơn vị (trừ các đơn vị đầu vào) được tính dựa vào cơng
thức:
l−1
ali = f wlT
+ bli
i a
Trong đó f (.) là một (nonlinear) activation function. Ở dạng vector, biểu thức
bên trên được viết là:
al = f W lT al−1 + bl
Khi hàm kích hoạt f (.) được áp dụng cho một ma trận (hoặc vector), ta hiểu
rằng nó được áp dụng cho từng thành phần của ma trận đó. Sau đó các thành
phần này được sắp xếp lại đúng theo thứ tự để được một ma trận có kích thước
bằng với ma trận đầu vào.
Thơng thường, các tham số của mơ hình trên được ước lượng thơng qua
việc tối ưu hàm chi phí J(W, b, X,Y ) dựa trên phương pháp đạo hàm. Khi đó,
ta cần tính hiệu quả các đạo hàm riêng
∂J
∂W
và
∂J
∂X .
Một ví dụ về hàm chi phí là
hàm trung bình của bình phương lỗi:
1 N
J(W, B, X,Y ) = ∑ yn − aln
N n=1
1.2.2
2
2
Bài toán Mạng Nơ-ron truyền thẳng - Feed Forward
(FF)
Theo kiến trúc cơ bản về một mạn nơ-ron thì một mạng nơ-ron bao gồm
các lớp, mỗi lớp có những nơ-ron xử lý. Một mạng nơ-ron cơ bản sẽ có một
lớp dữ liệu vào (input layer), một lớp dữ liệu ra (output layer) và một hoặc một
17
vài lớp ẩn (hidden layer). Dưới đây là minh họa cho một mạng nơ-ron:
ẢNH
Trong đó W là ma trận trọng số và b là hệ số tự do tương ứng với từng lớp của
mạng. Gọi d l−1 và d l lần lượt là số nơ-ron trong lớp thứ l − 1 và lớp thứ l, zl là
dữ liệu vào lớp thứ l và al tương ứng là đầu ra. Với các ký hiệu như vậy, việc
lan truyền dữ liệu giữa hai lớp trong mạng được thực hiện theo mô tả dưới đây:
Wl ∈ Rd
(l−1)
× d (l)
(l)
(1.2.1)
b(l) ∈ Rd × 1
(1.2.2)
zl = W(l)T a(l−1) + b(l)
(1.2.3)
a(l) = f (z(l) )
(1.2.4)
Trong đó hàm f được gọi là hàm kích hoạt (activation function). Việc chọn
hàm f thế nào tùy thuộc vào mục đích xây dựng mạng. Và khi áp dụng hàm
kích hoạt lên một ma trận hoặc vector thì điều đó tương ứng với việc thực hiện
trên từng phần tử của ma trận, vector đó (element-wise). Có một số hàm kích
hoạt thường được sử dụng như:
• hàm Sigmoid:
f (s) = 1/(1 + exp(−s))
(1.2.5)
f (s) = tanh(s)
(1.2.6)
f (s) = max(0, s)
(1.2.7)
• hàm tanh:
• hàm ReLU:
18
Bước tính tốn trên được thực hiện từ đầu đến cuối mạng, và cuối cùng sẽ đưa
ra kết quả dự đốn cho một dữ liệu đầu vào x, đó cũng là lý do việc tính tốn
này được gọi à Feed Forward.
1.2.3
Bài toán Mạng Nơ-ron truyền ngược - Back Propagation (Backward) (BW)
Giả sử J((W,b,X,Y)) là hàm mất mát của bài toán, trong đó W, b là tập
hợp tất cả các ma trận trọng số giữa các lớp và các hệ số tự do. Trước hết, ta
tính đạo hàm của hàm mất mát theo các hệ số:
∂J
∂J
;
, l = 1, 2, . . . , L
∂ W(l) ∂ b(l)
(1.2.8)
Lan truyền ngược cung cấp cho ta một phương pháp đơn giản để tính gradient
ngược từ lớp mạng cuối cùng. Bản chất của phương pháp này là sử dụng đạo
hàm của hàm hợp. Trước hết, ta tính đạo hàm của hàm mất mát theo một thành
phần của ma trận hệ số và hệ số tự do:
∂J
(L)
∂ wi j
(L)
Đặt e j =
=
∂J
(L)
∂zj
(L)
.
∂zj
∂J
(L)
(L)
=
∂ wi j ∂ b j
∂J
(L)
∂zj
(L)
.
∂zj
(L)
=
(1.2.9)
∂bj
∂J
(L)
(L)T
(L)
, mặt khác vì z j = w j a(L−1) + b j nên ta có:
L
∂zj
∂J
(L)
∂ wi j
(L) (L−1)
= e j ai
∂J
(L)
∂bj
(L)
= ej
(1.2.10)
(1.2.11)
Công thức trên áp dụng cho lớp nơ-ron cuối cùng của mạng. Với lớp l bất kỳ,
ta có thể tính tốn giá trị e(l) như sau:
19
(l)
ej
=
∂J
(l)
∂z
j
(l)
∂J ∂aj
= (l) . (l)
∂aj ∂zj
(1.2.12)
(l+1)
∂ J ∂ zk
.
(l+1)
(l)
∂aj
k=1 ∂ zk
d (l+1)
=
∑
d (l+1)
=
=
∑
(l+1) (l+1)
w jk
ek
k=1
(l+1)
w j: e(l+1)
(l)
f (z j )
(l)
f (z j )
(l)
f (z j )
(1.2.13)
(1.2.14)
(1.2.15)
(1.2.16)
Như vậy, giá trị gradient có thể được tính ngược từ lớp nơ-ron cuối lên lớp
nơ-ron đầu tiên, và vì vậy phương pháp này được gọi là lan truyền ngược.
Hồn tồn tương tự, ta có:
∂J
(l)
(l)
∂bj
1.2.4
= ej
(1.2.17)
Thuật toán Tối ưu suy giảm độ dốc - Gradient Descent
(GD)
SGD là một phương pháp tối ưu đơn giản để phục vụ cho việc xử lý với dữ
liệu chia thành từng nhóm nhỏ (mini-batch). Ý tưởng của phương pháp này
khá đơn giản, đó là tại mỗi vịng lặp, ta chọn ngẫu nhiên một số dữ liệu và
thực hiện một chỉnh sửa nhỏ trên mơ hình theo hướng của gradient. Do các
thay đổi nhỏ thực thiện trên từng điểm dữ liệu nên có thể áp dụng phương thức
này để huấn luyện tham số với các bộ dữ liệu được sử dụng lần lượt.
Trước hết, đạo hàm theo một thành phần của hàm likelihood cho một dữ
20