Phần sau đó là giới thiệu một số các mạng học sâu điển hình đƣợc ứng dụng rộng rãi trong thực tế.1.1 Khái niệm Học sâu deep learning là một chi của ngành máy học machie learning dựa trên
Trang 1NGHIÊN CỨU CÁC KỸ THUẬT HỌC SÂU VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ KỸ THUẬT Chuyên ngành: Kỹ thuật điện tử
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Trang 3i
MỤC LỤC
MỤC LỤC i
DANH MỤC HÌNH VẼ ii
DANH MỤC BẢNG BIỂU iv
DANH MỤC CÁC TỪ VIẾT TẮT v
LỜI CẢM ƠN 1
LỜI MỞ ĐẦU 2
CHƯƠNG 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP HỌC SÂU 4
1.1 Khái niệm 4
1.2 Phân loại 5
1.2.1 Mạng nơ ron tích chập- 8
1.2.2 Mạng nơ ron hồi quy- 19
1.3 Kết luận chương 33
CHƯƠNG 2 : KỸ THUẬT HỌC SÂU CHO BÀI TOÁN NHẬN DẠNG KHUÔN MẶT……… 35
2.1 Phát hiện khuôn mặt 37
2.1.1 P-Net 37
2.1.2 R-Net 39
2.1.3 O-Net 40
2.2 Trích chọn đặc trưng 40
2.3 Nhận dạng khuôn mặt 49
2.4 Kết luận chương 51
CHƯƠNG 3 : XÂY DỰNG CHƯƠNG TRÌNH CHẠY THỬ NGHIỆM 52
3.1 Đặt vấn đề 52
3.2 Xây dựng chương trình 55
3.3 Kiểm thử và đánh giá 57
3.4 Kết luận chương 60
CHƯƠNG 4: KẾT LUẬN 62
TÀI LIỆU THAM KHẢO 63
Trang 4ii
DANH MỤC HÌNH VẼ
Hình 1.1: Vị trí của học sâu trong lĩnh vực trí tuệ nhân tạo 4
Hình 1.2: Cấu tạo nơ-ron sinh học [1] 5
Hình 1.3: Perceptron – mô hình đơn giản của một mạng neron nhân tạo 6
Hình 1.4: Cấu trúc của một mạng MultiLayer Perceptron với 2 lớp ẩn [2] 7
Hình 1.5: Ví dụ về bộ lọc của CNN [4] 10
Hình 1.6: Nhân chập bộ lọc F1 với ma trận ảnh đầu vào của số 7 [4] 11
Hình 1.7: Phép tính tích chập của bộ lọc F1 [4] 12
Hình 1.8: Bộ lọc cạnh (đứng phải, đứng trái, ngang dưới, ngang trên) với đầu vào là ảnh MNIST [4] 12
Hình 1.9: Ma trận đầu vào được bao quanh bởi đường viền phụ kích thước p (giá trị 0) [4] 13
Hình 1.10: Nhân tích chập với bước sải s = 2 [4] 14
Hình 1.11: Phép nhân chập khối với ảnh RGB [4] 14
Hình 1.12: Hai bộ lọc kích thước 3x3x3 được dùng để phát hiện cạnh đứng và cạnh ngang [4] 15
Hình 1.13: Pooling theo giá trị cực đại [4] 16
Hình 1.14: Ví dụ về mạng CNN đầy đủ dùng cho bài toán phân loại kí tự viết tay MNIST [4] 17
Hình 1.15: Một mạng RNN điển hình [5] 20
Hình 1.16: Mạng RNN cho dịch máy [9] 22
Hình 1.17: Sử dụng liên kết trực quan về ngữ nghĩa để tạo mô tả cho ảnh [12] 23
Hình 1.18: Hàm mất mát tại mỗi trạng thái ẩn 24
Hình 1.19: Lan truyền ngược của RNN 25
Hình 1.20: Hàm tanh và đạo hàm [13] 27
Hình 1.21: Mô hình RNN chuẩn chứa một lớp [14] 29
Hình 1.22: Mô hình LSTM chứa bốn lớp [14] 29
Hình 1.23: Trạng thái tế bào của LSTM [14] 30
Hình 1.24: Lớp cổng quên (Forget Gate layer) của LSTM [14] 30
Hình 1.25: Lớp cổng cập nhật (Update Gate layer) [14] 31
Hình 1.26: Cập nhật trạng thái tế bào [14] 31
Hình 1.27: Cập nhật đầu ra của mỗi tế bào [14] 32
Hình 1.28: Cấu tạo của GRU [14] 33
Hình 2.1: Các thành phần của hệ thống nhận dạng khuôn mặt 36
Hình 2.2: Tạo các bản sao ảnh với kích thước khác nhau [21] 38
Hình 2.3: Kiến trúc mạng của P-Net [21] 38
Hình 2.4: Non-Maximum Suppression [21] 39
Hình 2.5: Kiến trúc mạng của R-Net [21] 39
Hình 2.6: Kiến trúc mạng của O-Net [21] 40
Trang 5iii
Hình 2.7: Kiến trúc mạng Inception-ResNet V1 [25] 41
Hình 2.8: Cấu tạo của khối Inception-A và Reduction-A [25] 42
Hình 2.9: Cấu tạo của khối Inception-B và Reduction-B [25] 43
Hình 2.10: Cấu tạo của khối Inception-C [25] 44
Hình 2.11: Phương pháp chọn bộ ba để huấn luyện 45
Hình 2.12: Mạng Siamese 46
Hình 2.13: Triplet loss trước và sau khi huấn luyện 46
Hình 2.14: Cách chọn bộ ba để huấn luyện mô hình 48
Hình 2.15: Mini-batch trong tập huấn luyện 49
Hình 2.16: Sử dụng One-shot learning để đăng kí khuôn mặt cho nhân viên.- 50
Hình 2.17: Các bước nhận dạng khuôn mặt 50
Hình 3.1: Một vài trường hợp bị nhận sai khi chạy dự đoán trên bộ trọng số có sẵn 53
Hình 3.2: Bộ dữ liệu CASIA-WebFace và VGGFace2 54
Hình 3.3: Bộ dữ liệu Asian-Celeb và TSDVFace 54
Hình 3.4: Căn chỉnh ảnh đầu vào 55
Hình 3.5: Quá trình huấn luyện và dự đoán 56
Hình 3.6: Kết quả trong quá trình huấn luyện 58
Hình 3.7: Visualize khi chạy dự đoán sau khi huấn luyện sử dụng t-SNE 59
Trang 6iv
DANH MỤC BẢNG BIỂU
Bảng 1 1: Bảng tổng kết số lượng tham số tại mỗi lớp CNN- 18
Bảng 3 1: Kết quả khi chạy dự đoán với bộ trọng số huấn luyện trước- 52
Bảng 3 2: Cách tạo ra số cặp dựa vào số lượng ảnh- 55
Bảng 3 3: Bảng giá trị siêu tham số- 56
Bảng 3 4: Thông tin cấu hình máy huấn luyện- 57
Bảng 3 5: Thông tin phần mềm để huấn luyện- 57
Bảng 3-6: Kết quả trước và sau khi tinh chỉnh mô hình 58
Trang 7v
DANH MỤC CÁC TỪ VIẾT TẮT
ANN Artificial Neural Network Mạng nơ-ron nhân tạo
BPTT Backpropagation Through Time Lan truyền ngược liên hồi
CNN Convolutional Neural Network Mạng nơ-ron tích chập
COCO Common Objects in Context Bộ dữ liệu về các đối tượng phổ
biến trong các ngữ cảnh khác nhauGRU Gated Recurrent Units Đơn vị cổng hồi quy
LSTM Long-Short Term Memory Kiến trúc nhớ dài-ngắn hạn
LWF Labeled Faces in the Wild Bộ dữ liệu gán nhãn mặt người
trong tự nhiên MLP MultiLayer Perceptron Mạng Perceptron nhều lớp
MNIST Modified National Institute of
Standards and Technology
Bộ chữ số viết tay
MTCNN Multi-task Cascaded
Convolutional Network
Mạng tích chập Cascaded đa nhiệm vụ
NLP Natural Language Processing Xử lý ngôn ngữ tự nhiên
NMS Non-Maximum Suppression Chặn không cực đại
RNN Recurrent Neural Network Mạng nơ-ron hồi quy
VGG Visual Geometry Group Nhóm hình học trực quan
Trang 81
LỜI CẢM ƠN Trong quá trình hoàn thành luận văn, các thầy tại IC lab 618 của trường Đại học Bách Khoa Hà Nội đã giúp đỡ và tạo điều kiện cho học viên rất nhiều Học viên xin gửi lời cảm ơn chân thành nhất đến các thầy cô trong viện Điện tử viễn thông, viện đào tạo sau Đại học và đặc biệt là PGS TS Nguyễn Đức Minh của IC lab 618 đã chỉ bảo, hướng dẫn học viên thực hiện đề tài: “Nghiên cứu các kỹ thuật học sâu và ứng dụng”.Học viên cũng muốn gửi lời cảm ơn sâu sắc đến gia đình, đồng nghiệp công ty đã động viên giúp đỡ trong suốt quá trình nghiên cứu, học tập và hoàn thiện đề tài
Bước đầu làm quen với công việc nghiên cứu còn nhiều bỡ ngỡ và hạn chế về kiến thức cũng như kinh nghiệm nên không tránh khỏi những thiếu sót nhất định Rất mong nhận được những góp ý của thầy, cô và các bạn để đề tài được hoàn thiện hơn
Xin chân thành cảm ơn!
Trang 92
LỜI MỞ ĐẦU Nhận dạng khuôn mặt đang trở thành một trong những công nghệ phát triển và có rất nhiều ứng dụng thực tế Mục tiêu của luận văn này là phát triển một hệ thống nhận dạng khuôn mặt dùng cho doanh nghiệp ở Việt Nam để có thể hỗ trợ tiến tới thay thế những hệ thống chấm công hiện tại nhờ vào việc sử dụng kỹ thuật học sâu Hệ thống nhận dạng khuôn mặt sử dụng mạng nơ ron tích chập để trích chọn ra các đặc trưng -Dựa trên các đặc trưng được trích chọn ra để so sánh giữa các khuôn mặt với nhau Ngoài ra hệ thống còn có thể học trực tuyến bằng cách đăng kí những khuôn mặt mới vào cơ sở dữ liệu, điều này có ý nghĩa rất lớn trong việc ứng dụng vào nhu cầu thực tế của doanh nghiệp
Mục đích của đề tài:
Mục đích của đề tài là nguyên cứu các kỹ thuật học sâu và áp dụng vào trong hệ thống nhận dạng khuôn mặt
Đối tượng và phạm vi nghiên cứu:
Đối tượng nghiên cứu của đề tài:
- Đầu vào là bộ dữ liệu khuôn mặt người Châu Á của Microsoft và bộ dữ liệu khuôn mặt người của một doanh nghiệp Việt Nam, bộ dữ liệu này được tự tạo và trích ra từ camera giám sát của doanh nghiệp
- Kỹ thuật học sâu và phương pháp nhận dạng khuôn mặt
Phạm vi nghiên cứu của đề tài:
- Dựa trên lý thuyết về học sâu và nhận dạng để đưa ra phương pháp cụ thể nhận dạng khuôn mặt dưới dạng ảnh đầu vào
- Xây dựng chương trình chạy thử nghiệm
Luận điểm cơ bản và đóng góp mới:
Đưa ra kết quả nghiên cứu về mặt lý thuyết cơ sở của kỹ thuật học sâu trong nhận dạng khuôn mặt của người Việt Nam Xây dựng được chương trình thử nghiệm và đánh giá dựa trên một tập học trong bộ dữ liệu của Microsoft về khuôn mặt người Châu
Trang 103
Á và một tập kiểm tra được tạo ra từ khuôn mặt nhân viên trong một công ty ở Việt Nam, từ đó nêu ra một số vấn đề ứng dụng trong thực tế
Phương pháp nghiên cứu:
Cơ sở lý thuyết về nhận dạng khuôn mặt người bằng kỹ thuật học sâu từ đó cài đặt thử nghiệm trên tập dữ liệu mẫu về khuôn mặt người Châu Á của Microsoft để có thể nhận xét, đánh giá phương pháp tìm hiểu được
Luận văn được trình bày trong 4 chương, cụ thể như sau:
Chương 1: Tổng quan về các phương pháp học sâu: Trình bày khái niệm, các nội dung
và phương pháp cơ bản của học sâu cũng như hai loại học sâu phổ biến nhất
Chương 2: Kỹ thuật học sâu cho bài toán nhận dạng khuôn mặt: Nghiên cứu cụ thể và
áp dụng kỹ thuật học sâu cho bài toánnhậ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á: Trên cơ sở lý
thuyết đã trình bày ở chương 2 để cài đặt chạy thử nghiệm và đánh giá kết quả đạt được
Chương 4: Tổng kết lại những kết quả đạt được trong luận văn, những hạn chế cũng
như hướng phát triển tiếp theo của hệ thống nhận dạng khuôn mặt cho công ty ở Việt Nam
Trang 114
CHƯƠNG 1 : TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP HỌC SÂU
Chương này giới thiệu tổng quan về các phương pháp học sâu, khái niệm cũng như phân loại của các phương pháp học sâu Phần sau đó là giới thiệu một số các mạng học sâu điển hình được ứng dụng rộng rãi trong thực tế
1.1 Khái niệm
Học sâu (deep learning) là một chi của ngành máy học (machie learning) dựa trên một tập hợp các thuật toán để 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 bằng cách khác bao gồm nhiều biến đổi phi tuyến
Hình 1.1: Vị trí của học sâu trong lĩnh vực trí tuệ nhân tạo
Có nhiều định nghĩa về học sâu như sau:
- Sử dụng một tầng nhiều lớp các đơn vị xử lý phi tuyến để trích tách đặc điểm 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 Các thuật toán này có thể được giám sát hoặc không cần 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 điểm 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
Trang 125
- Là một phần của lĩnh vực máy học 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
Các định nghĩa này có điểm chung là (1) nhiều lớp các đơn vị xử lý phi tuyến và (2) học có giám sát hoặc học không có giám sát của biểu diễn đặc tính ở mỗi lớp, với các lớp hình thành một hệ thống các tính năng phân cáp từ thấp đến cao cấp
1.2 Phân loại
Mạng nơ-ron nhân (ANN) tạo là phương pháp thành công nhất và được áp dụng rộng rãi nhất trong các phương pháp học sâu Mạng nơ-ron nhân tạo được lấy cảm hứng từ các mô hình sinh học năm 1959 được đề xuất bởi người đoạt giải Nobel David
H Hubel và Torsten Wiesel, hai người đã tìm thấy hai loại tế bào trong vỏ não thị giác chính: các tế bào đơn giản và các tế bào phức tạp Nhiều mạng nơ-ron nhân tạo có thể được xem như là các mô hình ghép tầng của các tế bào loại lấy cảm hứng từ những quan sát sinh học
Hình 1.2: Cấu tạo nơ ron sinh học- [1]
Một neuron sinh học sẽ nhận các tín hiệu điện (electrical signal) có chứa các thông tin nhất định từ các Synapse của một hay nhiều các neuron khác thông qua các đuôi gai
Trang 136
(Dendrites) Các giá trị tín hiệu đầu vào (input) sẽ được đưa vào trong thân của neuron (Cell body) Nếu tổng của các tín hiệu đầu vào vượt quá một ngưỡng nhất định thì thân neuron sẽ phát ra một tín hiệu điện đầu ra (output) truyền qua sợi trục (Axon) tới các Synapse Tín hiệu điện này sẽ được truyền qua các neuron khác nhau nhờ vào sự liên kết giữa các Synapse và Dendrites và độ mạnh yếu của các liên kết sẽ quyết định lượng thông tin được truyền sang Cứ như thế quá trình nay diễn ra một cách đồng thời giữa các neuron với nhau để tạo thành một mạng lưới của hệ thần kinh trong não bộ của con người Vào năm 1958, nhà khoa học Frank Rosenblatt đã dựa trên nguyên lý hoạt động trên để đề xuát ra mô hình Perceptron
Hình 1.3: Perceptron – mô hình đơn giản của một mạng neron nhân tạo
Quá trình xử lý của một Perceptron:
- Inputs (dữ liệu vào): Mỗi Input ương ứng với một thuộc tính của dữ liệu t
- Output (kết quả): Kết quả của một ANN là một giải pháp cho một vấn đề cần giải quyết
- Weights (trọng số): Đây là một thành phần rất quan trọng của một ANN, nó thể hiện mức độ quan trọng của mỗi một Input đối với quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang Layer khác) Quá trình học của ANN thực chất là quá trình điều chỉnh các trọng số của các dữ liệu đầu vào để có được một đầu ra mong muốn
Trang 147
- Summations (hàm tổng): Tính tổng trọng số của ấ ả các input đƣợc đƣa vào t t c
mỗi nơ-ron Hàm t ng c a mổ ủ ột nơ ron đố ới n input đƣợ- i v c tính theo công thức sau:
- Transfer Function (hàm chuyển đổi): Hàm tổng (Summation Function) của một
nơ ron cho biết khả năng kích hoạt (Activation) của nơ ron đó còn gọi là kích - hoạt bên trong (internal activation) Các nơ ron này có thể sinh ra một output -hoặc không trong ANN Mối quan hệ giữa Internal Activation và kết quả (output) đƣợc thể hiện bằng hàm chuyển đổi (Transfer Function) Việc lựa chọn Transfer Function có tác động lớn đến kết quả của ANN Hàm chuyển đổi phi tuyến đƣợc sử phổ biến trong ANN là sigmoid (logical activation) function.Một mạng nơ ron đơn giản đƣợc tạo ra từ các liên kết giữa các Perceptron và là nền -tảng cho các mạng rơ ron phức tạp hơn sau này là mạng MultiLayer Perceptron (MLP) -Một mạng MLP điển hình gồm 3 thành phần chính: lớp đầu vào (input layer) và lớp đầu ra (output layer) chỉ gồm một lớp, lớp ẩn (hidden layer) có thể có một hay nhiều lớp
-Hình 1.4: Cấu trúc của một mạng MultiLayer Perceptron với 2 lớp ẩn [2]
Trang 158
Có hai cấu trúc mạng điển hình của mạng nơ ron nhân tạo là mạng nơ ron tích chập - (convolution neuron network) và mạng nơ-ron hồi quy (recurrent neuron network) 1.2.1 Mạng nơ ron tích chập-
-Cùng với âm thanh và văn bản thì hình ảnh là một trong những hình thức phổ biến nhất để con người diễn đạt một thông tin Đối với một người có thị giác bình thường thì có thể dễ dàng mô tả nội dung, nhận biết và phát hiện các đối tượng được thể hiện trong một bức ảnh Tuy nhiên dưới góc nhìn của máy tính thì việc này khó khăn hơn rất nhiều bởi vì máy tính nhìn một bức ảnh chỉ đơn thuần là một ma trận số (bức ảnh được cấu thành từ các điểm ảnh – pixel và được biểu diễn dưới dạng con số trong một không gian màu nhất định như RGB, …) Mục tiêu cơ bản của thị giác máy tính (computer vision) là làm sao để có thể làm cho máy tính hiểu được nội dung của một bức ảnh mà chỉ dựa vào các ma trận số đơn thuần Thị giác máy tính tập trung giảiquyết những bài toán như:
Phân loại ảnh
Xác định vật thể, đối tượng có trong ảnh: con người, xe cộ, động vật, …
Tạo ảnh với những phong cách khác nhau: tạo từ ảnh gốc ra những ảnh có phong cách khác nhau
Mạng nơ ron truyền thống MultiLayer Perceptron hoạt động không thực sự hiểu quả với dữ liệu đầu vào là hình ảnh Nếu coi mỗi điểm ảnh là một thuộc tính (feature), một ảnh RBG có kích thước (100x100) sẽ có 100x100x3 = 30000 thuộc tính Nếu kích thước ảnh tăng lên 1000x1000 thì sẽ là 3 triệu thuộc tính cho mỗi ảnh đầu vào Nếu sử dụng MultiLayer Perceptron với liên kết đầy đủ (fully connected) thì nếu như lớp ẩn có
-1000 thành phần (units), ma trận trọng số sẽ có kích thước -1000 x 3 triệu tương với 3 triệu trọng số cần huấn luyện Điều này yêu cầu khối lượng tính toán cực lớn và thường
Trang 16để thực hiện các phép biến đổi và tạo ra đầu ra (cũng chính là đầu vào của các lớp kế tiếp) Tuy nhiên lớp tích chập có điểm khác là sử dụng các phép tính tích chập để thực hiện việc biến đổi dữ liệu Mỗi lớp tích chập chứa một hoặc nhiều bộ lọc (filter –feature detector) cho phép pháp hiện và trích xuất những đặc trưng khác nhau của ảnh (hình dạng, kích thước của các vật thể có trong ảnh) Lớp tích chập càng chứa nhiều bộc lọc thì càng có khả năng trích xuất ra được những đặc trưng khó và phức tạp của ảnh Trong các mạng CNN thông thường với nhiều lớp tích chập thì những lớp CNN gần đầu vào của mạng sẽ học được những đặc trưng đơn giản của ảnh như các cạnh,viền (shape, edge) của những đối tượng trong ảnh (low level feature) Ngược lại những lớp CNN ở gần cuối sẽ học những đặc trưng phức tạp và chi tiết hơn về các đối tượng trong ảnh như mắt, mũi, v.v (high level feature)
Lấy ví dụ về CNN được sử dụng để phân loại tập các ảnh viết tay của các số từ 0 đến 9 (tập dữ liệu MNIST) Đầu vào là những bức ảnh đen trắng (Gray Scale) và được biểu diễn bởi một ma trận các điểm ảnh có kích thước cố định h x w Lớp đầu tiên của CNN sử dụng 4 bộ lọc kích thước 3x3: F1, F2, F3 và F4 với giá trị tương ứng như trong hình 1.5 Các giá trị tại mỗi ô của các bộ lọc có thể được biểu diễn bởi màu sắc tương ứng với Đen ( 1), Xám (0), Trắng (1) như trong hình dưới đây.-
Trang 1710
Hình 1.5: Ví dụ về bộ lọc của CNN [4]
Để minh họa cho phép nhân chập, chúng ta sử dụng đầu vào là một bức ảnh viết tay của số 7, biểu diễn dưới dạng ma trận 30 x 22 và áp dụng riêng biệt với từng bộ lọc trên Phép nhân tích chập được thực hiện bằng cách trượt ma trận lọc 3 x 3 trên ma trận ảnh đầu (bộ lọc dịch sang phải/ xuống dưới 1 cột/hàng mỗi một lần trượt) cho đến khi
nó đi qua hết tất cả các vùng kích thước 3 x 3 Như minh họa cho hình 1.6, ma trận lọc F1 được chập với từng vùng (block) điểm ảnh kích thước 3 x 3 của ảnh đầu vào Tại mỗi vị trí di chuyển của ma trận F1, giá trị đầu ra được tính bằng phép tính tích chập của ma trận F1 với vùng bao phủ tương ứng
Trang 1811
Hình 1.6: Nhân chập bộ lọc F1 với ma trận ảnh đầu vào của số 7 [4]
Ô đầu tiên (0, 0) của ma trận đầu ra có giá trị 0.01 là kết quả của phép nhân chập giữa
ma trận lọc F1 với góc trái trên cùng của ma trận đầu vào và đƣợc tính nhƣ sau:
Trang 19Có hai nhược điểm dễ nhận thấy của việc sử dụng bộ lọc để tính tích chập đó là:
Giả sử ta có ma trận đầu vào là 6 x 6 và bộ lọc có kích thước 3 x3 thì sau phép tính tích chập sẽ cho ra một ma trận kích thước 4 x 4 có kích thước nhỏ hơn kích thước đầu vào Tổng quát hóa nếu đầu vào là ma trận n x n sử dụng bộ lọc f x f thì đầu ra có ma trận (n – f + 1) x (n f – + 1), mỗi lần tính tích chập thì kích thước đầu ra bị giảm xuống Chính vì thế ta chỉ có thể thực hiện được một vài phép tính tích chập trước khi ma trận trở lên quá nhỏ
Cũng với ví dụ mà trận đầu vào là 6 x 6 thì ta dễ dàng nhận thấy những điểm ảnh ở vùng trung tâm của ảnh sẽ được nhân tích chập nhiều lần hơn so với những điểm ảnh ngoài viền Điều này có nghĩa lượng thông tin trích xuất được
sẽ không đồng điều và có thể mất những thông tin quan trọng ở ngoài viền ảnh
Trang 2013
Hình 1.9: Ma trận đầu vào được bao quanh bởi đường viền phụ kích thước p [4]
Để khắc phục hai nhược điểm trên, một đường viền phụ (padding) được thêm vào xung quanh của ma trận đầu vào (ô màu cam trong hình 9) Việc thêm đường viền phụ làm 1.tăng kích thước ma trận đầu vào từ đó dẫn đến tăng kích thước ma trận đầu ra Hơn nữa những pixel ngoài viễn cũng được tính toán nhiều hơn, từ đó tránh mất thông tin ở ngoài viền
Trong phép nhân tích chập ở trên, bộ lọc trượt trên ma trận đầu vào 1 hàng/cột trong mỗi bước di chuyển Tuy nhiên, giá trị này có thể bằng 2, 3 hoặc lớn hơn Sốhàng/c t mà b lộ ộ ọc trượt qua trong một bước di chuy n kí hi u là ể ệ s Kích thước ma tr n ậđầu ra lúc này được tính b i: ở
x Nếu n + 2p – k không chia hết cho s, chúng ta lấy chặn dưới như trong hình minh họadưới đây:
Trang 21Hình 1.11: Phép nhân chập khối với ảnh RGB [4]
Trang 2215
Tại một lớp tích chập nhiều bộ lọc có thể được sử dụng cùng một lúc để phát hiện
và trích xuất ra những đặc trưng khác nhau của ảnh
Lớp liên kết đầy đủ (Fully connected – FC)
Lớp Pooling được sử dụng trong mạng CNN để giảm kích thước đầu vào, tăng tốc độ tính toán và hiệu năng trong việc trích xuất những đặc trưng của ảnh Có nhiều cách Pooling được sử dụng nhưng trong đó có hai phương pháp phổ biến nhất là Pooling theo giá trị cực đại (Max Pooling) và Pooling theo giá trị trung bình (Average Pooling)
Trang 2316
Hình 1.13: Pooling theo giá trị cực đại [4]
Trong hình trên có sử dụng bộ lọc kích thước 2 x 2 trượt trên ma trận đầu vào 2 hàng/cột trong mỗi bước nhảy (s=2) và chia nó thành những vùng khác nhau Mỗi ô trong ma trận đầu ra lấy giá trị lớn nhất của vùng tương ứng
Có hai siêu tham số (hyperparameters) là kích thước của bộ lọc và giá trị bước f sải s tuy nhiên không có tham số cần hu n luy n trong l p Max Pooling ấ ệ ớ
Trang 2518
Bảng 1-1: Bảng tổng kết số lượng tham số tại mỗi lớp CNN
Activation shape Activation size # parameters
Lớp Pooling không có tham số
Số lượng tham số trong các lớp tích chập là không cao
Phần lớn tham số nằm ở lớp liên kết đầy đủ
Từ trái sang phải kích thước các hàm kích hoạt có xu hướng giảm Ta cần phải chú ý thiết lập giá trị các hyperparameters (p, s, f) vì kích thước các hàm kích hoạt giảm quá nhanh sẽ ảnh hưởng tiêu cực tới hiệu năng của CNN
Chúng ta có thể thấy có hai ưu điểu chính của lớp tích chập so với lớp liên kết đầy đủ
là chia sẻ tham số và liên kết thưa Nếu chúng ta có ảnh đầu vào kích thước 32 x 32 x 3
và sử dụng 6 bộ lọc kích thước 5 x 5 thì thu được đầu ra kích thước 28 x 28 x 6 Đầu vào có 3072 và đầu ra sẽ có 4704 thành phần (unit) Nếu sử dụng lớp liên kết đầy đủ,
ma trận trọng số có kích thước 3072 x 4704 tương đương với gần 14M tham số Trong khi đó lớp tích chập chỉ có 6 x (25 + 1) = 156 tham số Chúng ta có thể lý giải điều này theo hai cách sau:
Chia sẻ tham số: Một bộ phát hiện đặc trưng (feature detector) ví dụ như bộ
phát hiện cạnh (edge detector) hoạt động tốt trên một vùng của ảnh đầu vào thì
Trang 2619
cũng có thể hoạt động tốt trên các vùng còn lại Các vùng bộ lọc đi qua trên ma trận đầu vào không tách biệt hoàn toàn, mà chia sẻ ít nhiều một phần diện tích (phụ thuộc vào bước sải s) Điều này dẫn tới các tham số được dùng chung cho các vùng khác nhau cùng chứa nó trong việc tinsht oán giá trị đầu ra, do đó số lượng tham số được giảm xuống đáng kể
Liên kết thưa: Một thành phần đầu ra (output unit) chỉ phụ thuộc vào bộ phát
hiện đặc trưng và một phần nhỏ của anh đầu vào thay vì toàn bộ bức ảnh Điều này khác với lớp liên kết đầy đủ, khi mỗi thành phần đầu ra phụ thuộc vào tất cả các thành phần của đầu vào
1.2.2 Mạng nơ ron hồi quy
-Như đã đề cập ở phần đầu chương 2, mạng nơ ron nhân tạo được xây dựng để mô phỏng lại cách hoạt động của bộ não con người Đối với mạng nơ ron nhân tạo thông -thường (MLP), mỗi sự kiện đầu vào (input) được xử lý một cách độc lập và đưa ra x đầu ra y (output) tương ứng mà không có sự trao đổi thông tin thu thập được tại mỗi đầu vào trong mạng Tuy nhiên, bộ não của con người hoạt động một cách phức tạp x hơn thế rất nhiều với sự kết hợp của nhiều dạng thông tin và sự kiện với nhau để đưa ra kết luận cuối cùng Ví dụ điển hình là thông tin đầu vào ở dạng chữ trong ngôn ngữ, để
-có thể điền vào từ còn thiếu trong văn bản thì chúng ta cần phải tổng hợp ngữ nghĩa của cả một câu hoặc một đoạn Đây là một quá trình phức tạp mà những mạng nơ-ron bình thường không thể mô phỏng lại được Mạng nơ ron hồi quy (Recurrent Neural -Network – RNN) ra đời để giải quyết vấn đề này
Ý tưởng chính của mạng RNN là sử dụng chuỗi các thông tin Trong các mạng nơron truyền thống tất cả các đầu và và cả đầu ra là độc lập với nhau Tức là chúng o không thể liên kết thành chuỗi với nhau Nhưng trong thực tế các mô hình này không
-tỏ ra hiệu quả trong nhiều bài toán khác nhau, đặc biệt là xử lý ngôn ngữ RNN được gọi là hồi quy (Recurrent) bởi lẽ chúng thực hiện cùng một tác vụ cho tất cả các phần
Trang 2720
tử của một chuỗi với đầu ra phụ thuộc vào đầu ra trước đó Nói cách khác, RNN có khả năng nhớ các thông tin được tính toán trước đó Trên lý thuyết, RNN có thể sử dụng được thông tin của một văn bản rất dài, tuy nhiên thực tế thì nó chỉ có thể nhớ được một vài bước trước đó mà thôi (sẽ được đề cập ở phần sau) Về cơ bản một mạng RNN
có dạng như sau:
Hình 1.15: Một mạng RNN điển hình [5]
Mô hình trên mô tả phép triển khai nội dung của một RNN Triển khai ở đây có thể hiểu đơn giản là ta vẽ ra một mạng rơ ron chuỗi tuần tự Ví dụ ta có một câu gồm 5 -chữ, thì mạng nơ ron được triển khai sẽ gồm 5 tầng nơ ron tương ứng với mỗi chữ một - -tầng Lúc đó việc tính toán bên trong RNN được thực hiện như sau:
xt là đầu vào tại bước Ví dụ, t x0là một vec tơ one hot tương ứng với từ thứ 1 - của câu
- st là trọng thái ẩn tại bước Nó chính là bộ nhớ của mạng t st được tính toán dựa trên cả các trạngthái ẩn trước đó và đầu vào tại chính bước đó St = f(Uxt + Wst-
1) Hàm thường là một hàm phi tuyến như f tang hyperbolic (tanh) hay ReLu
Để làm phép toán cho phần tử ẩn đầu tiên ta cần khởi tạo thêm s-1, thường giá trị khởi tạo sẽ bằng 0
ot là đầu ra tại bước Ví dụ, ta muốn dự đoán từ tiếp theo có thể xuất hiện trong tcâu thì otchính là một vec tơ xác xuất các từ trong danh sách từ vựng của ta: - ot
= softmax(Vst)
Trang 2821
Ta cần lưu ý một vài điểm ở mạng RNN:
st đóng vai trò như là bộ nhớ của mạng, stsẽ tổng hợp thông tin của tất cả các trạng thái trước đó Do có rất nhiều trạng thái trước đó cần được tổng hợp, nên thực tế RNN chỉ được tổng hợp ở một hữu hạn trạng thái trước đó
Không như mạng rơ ron truyền thống sử dụng các tham số khác nhau tại mỗi layer, m ột RNN chia sẻ cùng một bộ tham số (U, V, W) cho tất cả các bước Đây là một ưu điểm và khối lượng tính toán so với mạng nơ ron truyền thống.-
- Hình 1.15 chỉ ra rằng có nhiều đầu ra cho mỗi một bước, nhưng tùy thuộc vào bài toán cụ thể mà có thể số lượng đầu ra sẽ khác nhau Ví dụ khí dự đoán từ trong một câu, chúng ta có thể chỉ cần quan tâm đến đầu ra cuối cùng, không cần phải quan tâm đến đầu ra cho mỗi từ Tương tự, chúng ta không cần đầu vào tại mỗi bước Đặc trưng chủ yếu của RNN là trạng thái ẩn, nơi tổng hợp thông tin dưới dạng chuỗi
Trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP – Natural Language Processing), đã ghi nhận nhiều thành công của RNN cho nhiều vấn đề khác nhau Dưới đây là một vài ứng dụng của RNN trong xử lý ngôn ngữ tự nhiên:
Mô hình hóa ngôn ngữ và sinh văn bản: Mô hình ngôn ngữ cho phép ta dự
đoán được xác xuất của một từ nào đó xuất hiện sau một chuỗi các từ đi liền trước nó Do có khả năng ước lượng được độ tương tự của các câu nên nó còn được ứng dụng cho việc dịch máy Một ưu điểm của việc có thể dự đoán được
từ tiếp theo là ta có thể xây dựng được một mô hình tự sinh từ cho phép máy tính có thể tự tạo ra các văn bản mới từ tập mẫu và xác xuát đầu ra của mỗi từ Trong mô hình ngôn ngữ, đầu vào thường là một chuỗi các từ (được mô tả bằng vec-tơ one hot) và đầu ra là một chuỗi các từ dự đoán được Khi huấn luyện -mạng, ta sẽ gán ot = xt+1 vì ta muốn đầu ra tại bước chính là từ tiếp theo của t câu Một vài nghiên cứu về mô hình hóa ngôn ngữ và sinh văn bản được thể hiện trong [6 7 8 ][ ][ ]
Trang 2922
Dịch máy (Machien Translation) tương tự như mô hình hóa ngôn ngữ ở điểm
là đầu vào là một chuỗi các từ trong ngôn ngữ nguồn (ngôn ngữ cần dịch – ví dụ
là tiếng Anh) Còn đầu ra sẽ là một chuỗi các từ trong ngôn ngữ đích (ngôn ngữ dịc – ví dụ là tiếng Việt) Điểm khác nhau ở đây là đầu ra của ta chỉ xử lý sau khi đã xem xét toàn bộ chuỗi đầu vào Một số nghiên cứu nổi bật về dịch máy được thể hiện trong [9][10 ]
Hình 1.16: Mạng RNN cho dịch máy [9]
Nhận dạng giọng nói: Đưa vào một chuỗi các tín hiệu âm thanh, ta có thể dự đoán được chuỗi các đoạn ngữ âm đi kèm với xác xuất của chúng Nghiên cứu
về nhận dạng giọng nói có thể được tìm thấy trong [11]
Mô tả hình ảnh: cùng với mạng nơ ron tích chập như đã đề cập trong phần 2.1 thì RNN được sử dụng để tự động tạo ra mô tả cho các ảnh chưa được gán nhãn
-Sư kết hợp này đã đưa ra được các kết quả đáng kinh ngạc Ví dụ như các ảnh dưới đây, các mô tả sinh ra có mức độ chính xác và độ tường tận khá cao
Trang 3023
Hình 1.17: Sử dụng liên kết trực quan về ngữ nghĩa để tạo mô tả cho ảnh [12]
1.2.2.1 Lan truy ề n ngư ợc liên h ồi
Huấn luyện mạng RNN cũng tương tự như các mạng nơ ron truyền thống, tuy nhiên giải thuật lan truyền ngược (backpropagation) có sự thay đổi một chút Đạo hàm tại mỗi đầu ra phụ thuộc không chỉ vào các tính toán tại bước trước đó, mà còn phụ thuộc vào các bước trước đó nữa, vì các tham số trong mạng RNN được sử dụng chung cho tất cả các bước trong mạng Ví dụ, để tính đạo hàm tại t=4 ta phải lan truyền ngược
-cả 3 bước phía trước rồi cộng tổng đạo hàm của chúng lại với nhau Việc tính toán đạo hàm như thế này được gọi là lan truyền ngược liên hồi (BPTT – Backpropagation Through Time)
Như đã đề cập trong phần đầu của mạng RNN, ta có các công thức cơ bản c a RNN ủnhư sau (lưu ý là có một chút thay đổ ừi t thành o )
Ta cũng định nghĩa hàm mất mát, hay hàm lỗi dạng cross entropy như sau:
Trang 3124
Ở đây, yt là t chính xác ừ ở bước t, còn là từ mà ta dự đoán Ta coi mỗi chuỗi đầy đủ (một câu) là một mẫu huấn luyện Vì vậy tổng số lỗi chính là tổng của tất cả các lỗi ở mỗi bước (mỗi từ)
Hình 1.18: Hàm mất mát tại mỗi trạng thái ẩn
Mục tiêu của ta là tính đạo hàm của lỗi với tham số U, V, W tương ứng và sau đó học các tham s này b ng cách s d ng ố ằ ử ụ Stochastic Gradient Descent (SGD) Tương tựnhư việc c ng t ng các lộ ổ ỗi, ta cũng sẽ ộ c ng tổng các đạo hàm t i mạ ỗi bước cho m i ỗ
m u hu n luy n: ẫ ấ ệ Đề tính đạo hàm, ta sử dụng quy tắc chu i vi phân Quy ỗ
tắc này được áp dụng cho vi c lan truyệ ền ngược lỗi của giải thuật lan truyền ngược
Trong đó, và là phép nhân ngoài c a 2 véc-ủ tơ Qua phép triển khai trên ta
có th ểthấy chỉ ph thu c vào các giá tr ụ ộ ị ở bước hi n thệ ời: Từ đó ta thấy rằng tính đạo hàm cho V chỉ đơn giản là phép nhân ma trận Nhưng với W và thì Uphép tính của ta lại không đơn giản như vậy:
Trang 32chuẩn khó để huấn luyện, vì các chuỗi (câu) có thể khá dài đến tận hàng chục kí tự
Trang 33Ở đây, cũng tuân theo quy tắc chuỗi đạo hàm Ví dụ: , các thành phần ở công thức trên đều là véc tơ vì phép lấy đạo hàm cho véc tơ cũng là véc tơ, nên kết - - -quả thu được sẽ là một ma trận (ma trận Jacobi), trong đó các phầ ử tương tứng đượn t c tính theo phép toán pointwise ới đạo hàm tương ứv ng Ta có th vi t l i công th c trên ể ế ạ ứnhư sau:
Chứng minh công thức trên được thực hiện trong [15] và phép tính trên cho ta một norm bậc 2 Vì hàm kích hoạt (tanh hay sigmoid) của ta sẽ cho kết quả đầu ra nằm
trong khoảng [-1, 1] nên đạo hàm của nó sẽ bị đóng trong khoảng [0, 1] (với sigmoid
thì giá trị sẽ là [0, 0.25])
Trang 3427
Hình 1.20: Hàm tanh và đạo hàm [13] Nhìn vào hình trên ta có thể thấy cả hàm tanh và sigmoid sẽ có đạo hàm bằng 0 tại
2 đầu Mà khi đạo hàm bằng 0 thì nút mạng tương ứng tại đó sẽ bị bão hòa Lúc đó các nút phía trước cũng sẽ bị bão hòa theo Nên với các giá trị nhỏ trong ma trận, khi ta thực hiện phép nhân ma trận sẽ đạo hàm tương ứng sẽ bùng nổi rất nhanh, thậm chí nó
sẽ bị triệt tiêu chỉ sau vài bước nhân Như vậy, các bước ở xa sẽ không còn tác dụng với nút hiện tại nữa, làm cho RNN không thể học được các phụ thuộc xa Vấn đề này không chỉ xảy ra với mạng RNN mà ngay cả mạng nơ ron chuẩn khá sâu cũng có hiện -tượng này RNN cũng là một mạng chuẩn sâu, với số tầng mạng bằng với số từ đầu vào của một chuỗi, nên hiện tượng này có thể thấy ngay trong RNN
Với cách nhìn như trên ta có thể suy luận thêm vấn đề bùng nổ đạo hàm của RNN nữa Tùy thuộc vào hàm kích hoạt và tham số của mạng, vấn đề bùng nổ đạo hàm có thể xảy ra khi các giá trị của ma trận là lớn Tuy nhiên, bùng nổ đạo hàm có thể theo dõi được vì khi đạo hàm bị bùng nổ thì ra sẽ thu được kết quả là một giá trị phi số (NaN) làm cho trường trình của ta bị dừng hoạt động Lý do thứ hai là bùng nổ đạo hàm có thể ngăn chặn được khi ta đặt ngưỡng giá trị trên cho đạo hàm như trong [14]
Trang 351997 và là phương pháp phổ biến nhất trong lĩnh vực NLP Còn GRU mới được đề xuất vào năm 2014, nó là một phiên bản đơn giản hóa của LSTM Cả hai kiến trúc RNN này được thiết kế để tránh vấn đề mất mát đạo hàm và kiểu quả cho việc học các phụ thuộc xa.
1.2.2.3 M ng LS™ ạ
Mạng LSTM được thiết kế nhằm tránh cho đạo hàm bị triệt tiêu như mô tả trong phần 2.1.2 Về cơ bản, LSTM có kiến trúc như mạng RNN thuần nhưng khác nhau ở cách tính toán các trạng thái ẩn (o kí hilà ệu c a phép nhân ủ poitwise hay còn g i là – ọphép nhân Hadamard):
V i m ng RNN thu n, các tr ng thái ớ ạ ầ ạ ẩn được tính toán d a vào ự
với st là trạng thái ẩn mới, st-1 là trạng thái ẩn phía trước và xt là đầu vào của bước đó Như vậy, đầu vào và đầu ra của LSTM cũng không khác so với RNN thuần,