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

Ứng dụng học máy trong nghiên cứu bài toán phân loại dữ liệu hình ảnh x quang lồng ngực

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

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC QUY NHƠN
LÊ PHƯƠNG THẢO

ỨNG DỤNG HỌC MÁY TRONG NGHIÊN CỨU
BÀI TOÁN PHÂN LOẠI DỮ LIỆU HÌNH ẢNH

X-QUANG LỒNG NGỰC

ĐỀ ÁN THẠC SĨ KHOA HỌC DỮ LIỆU ỨNG DỤNG

Bình Định - Năm 2023

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC QUY NHƠN
LÊ PHƯƠNG THẢO

ỨNG DỤNG HỌC MÁY TRONG NGHIÊN CỨU
BÀI TOÁN PHÂN LOẠI DỮ LIỆU HÌNH ẢNH

X-QUANG LỒNG NGỰC

ĐỀ ÁN THẠC SĨ KHOA HỌC DỮ LIỆU ỨNG DỤNG
Ngành : Khoa học dữ liệu ứng dụng
Mã số : 8904648

Người hướng dẫn khoa học : TS. Nguyễn Văn Vũ

Bình Định - Năm 2023



i

Lời cam đoan

Tôi xin cam đoan nội dung trong đề tài "Ứng dụng học máy trong nghiên cứu bài
toán phân loại dữ liệu hình ảnh X-quang lồng ngực" là kết quả thực hiện của tác giả
cùng với cộng sự và có định hướng của thầy hướng dẫn. Các nội dung và kết quả sử dụng ở
đây đều có trích dẫn và chú thích nguồn gốc rõ ràng.

Bình Định, ngày ... tháng 11 năm 2023
Tác giả

Lê Phương Thảo

ii

Lời cảm ơn

Đề án được hoàn thành dưới sự hướng dẫn của Thầy Nguyễn Văn Vũ. Tác giả xin bày
tỏ lòng biết ơn chân thành đến Thầy, người đã tận tình giúp đỡ để tác giả có thể hồn thành
cơng việc một cách tốt nhất. Tác giả cũng xin chân thành cảm ơn q Thầy, Cơ khoa Tốn
và Thống kê, khoa Cơng nghệ thơng tin, Phịng đào tạo sau đại học trường Đại học Quy
Nhơn, cùng quý thầy cô tham gia giảng dạy cho lớp Cao học Khoa học dữ liệu ứng dụng
K24B đã tạo điều kiện giúp đỡ cho tác giả trong quá trình học tập và nghiên cứu. Xin gửi
lời cảm ơn đến bạn Nguyễn Quốc Dương - Lớp Cao học Khoa học dữ liệu ứng dụng K24B,
trường Đại học Quy Nhơn đã đồng hành, hỗ trợ tác giả nhiệt tình trong q trình hồn thành
đề án. Cuối cùng, tác giả cũng xin cảm ơn gia đình, bạn bè đã quan tâm, động viên và giúp
đỡ tác giả trong quá trình học tập và hoàn thành đề án này. Lê Phương Thảo được tài trợ bởi
Tập đồn Vingroup – Cơng ty CP và hỗ trợ bởi Chương trình học bổng thạc sĩ, tiến sĩ trong

nước của Quỹ Đổi mới sáng tạo Vingroup (VINIF), Viện Nghiên cứu Dữ liệu lớn, mã số
VINIF.2021.ThS.QN.05.

iii

Mục lục

Lời cam đoan i

Lời cảm ơn ii

Mở đầu 1

1 Kiến thức chuẩn bị 3

1.1 Mạng neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 Perceptron đa tầng . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2 Hàm kích hoạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.3 Đào tạo có giám sát . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.1.4 Chính quy hóa (Regularization) . . . . . . . . . . . . . . . . . . . 10

1.2 Mạng neuron tích chập - Convolutional neural networks . . . . . . . . . . . 11

1.3 Faster R-CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.4 Các thước đo đánh giá mơ hình phát hiện vật thể . . . . . . . . . . . . . . . 15


1.4.1 Độ chính xác . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4.2 Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4.3 Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.4.4 F1 Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.4.5 Precision và recall trong phát hiện đối tượng . . . . . . . . . . . . . 18

1.4.6 AP - average precision và mAP - mean average precision . . . . . . 19

1.4.7 Non-Maximum Suppression (NMS) . . . . . . . . . . . . . . . . . 19

2 Mơ hình YOLO và một số vấn đề liên quan 21

2.1 Lịch sử hình thành . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 YOLO: You Only Look Once . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.2.1 YOLOv1 hoạt động như thế nào? . . . . . . . . . . . . . . . . . . 23

2.2.2 Kiến trúc mơ hình YOLOv1 . . . . . . . . . . . . . . . . . . . . . 23

2.2.3 Đào tạo mơ hình YOLOv1 . . . . . . . . . . . . . . . . . . . . . . 24

iv

2.2.4 Những điểm mạnh và hạn chế của YOLOv1 . . . . . . . . . . . . . 26

2.3 YOLOv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4 YOLOv3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 YOLOv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.6 YOLOv5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7 Scaled-YOLOv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.8 YOLOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.9 YOLOX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.10 YOLOv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.11 YOLOv7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.12 DAMO-YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.13 YOLOv8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.14 PP-YOLO, PP-YOLOv2, and PP-YOLOE . . . . . . . . . . . . . . . . . . . 44

2.14.1 PP-YOLO tăng cường và tiền xử lý . . . . . . . . . . . . . . . . . . 45
2.14.2 PP-YOLOv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.14.3 PP-YOLOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.15 YOLO-NAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.16 YOLO với Transformers . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3 Ứng dụng trong bài toán chẩn đoán bất thường trên ảnh X-quang lồng ngực 51
3.1 Tập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1.1 Khái quát tập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.1.2 Phân tích tập dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1.3 Xử lý dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2 Tiến trình thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3 Xây dựng hệ thống giao diện người dùng . . . . . . . . . . . . . . . . . . . 58

Kết luận 61

v


Danh sách bảng

3.1 Các loại bất thường được phát hiện và gắn nhãn trên hình ảnh X-quang . . . 52
3.2 Các tham số đào tạo mơ hình Faster R-CNN . . . . . . . . . . . . . . . . . 57
3.3 Số lượng của mỗi lớp sau khi phân chia tập dữ liệu . . . . . . . . . . . . . 58
3.4 Kết quả đào tạo của các mô hình YOLO . . . . . . . . . . . . . . . . . . . 58
3.5 Kết quả đào tạo của mơ hình YOLOv7 . . . . . . . . . . . . . . . . . . . . 59

vi

Danh sách hình vẽ

1.1 Biểu đồ mạng cho một đơn vị xử lý . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Biểu đồ mạng cho perceptron (L + 1) tầng. . . . . . . . . . . . . . . . . . . 5
1.3 Các hàm kích hoạt Sigmoidal. . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Minh họa thuật toán Gradient descent . . . . . . . . . . . . . . . . . . . . 8
1.5 Tổng quan về kiến trúc mạng neuron tích chập (CNN) và quy trình đào tạo . 12
1.6 Minh họa lớp tích chập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7 Tổng quan về kiến trúc Faster R-CNN . . . . . . . . . . . . . . . . . . . . 14
1.8 IoU - Intersection over union . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.9 Precision-recall curve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.10 Ức chế không tối đa (NMS) . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1 Dòng thời gian của các phiên bản YOLO . . . . . . . . . . . . . . . . . . . 22
2.2 Dự đoán đầu ra YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Hàm YOLO cost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Anchor boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 Dự đoán bounding boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 YOLOv3 Darknet-53 backbone . . . . . . . . . . . . . . . . . . . . . . . . 30

2.7 YOLOv3 Kiến trúc phát hiện đa quy mô . . . . . . . . . . . . . . . . . . . 30
2.8 Kiến trúc của mơ hình phát hiện vật thể hiện đại . . . . . . . . . . . . . . . 31
2.9 Kiến trúc YOLOv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.10 Kiến trúc YOLOv5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.11 Sự khác biệt giữa YOLOv3 head và YOLOX decoupled head . . . . . . . . 38
2.12 Kiến trúc YOLOv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.13 Kiến trúc YOLOv7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.14 Kiến trúc YOLOv8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.15 Kiến trúc PP-YOLOE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.16 Kiến trúc YOLO-NAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.17 Kiến trúc ViT-YOLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

vii

3.1 Một số ví dụ minh họa về tập dữ liệu . . . . . . . . . . . . . . . . . . . . . 53
3.2 Minh họa về bảng dữ liệu chứa trong file csv . . . . . . . . . . . . . . . . . 54
3.3 Phân phối về ghi chú của mỗi bệnh nhân. . . . . . . . . . . . . . . . . . . 54
3.4 Phân phối về ghi chú của mỗi bệnh nhân. . . . . . . . . . . . . . . . . . . 55
3.5 Phân phối về số lượng chú thích của các bác sĩ . . . . . . . . . . . . . . . . 55
3.6 Intersection over Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.7 Xử lý dữ liệu trên những ảnh có bounding box chồng lên nhau . . . . . . . 56
3.8 Cấu hình cho hình ảnh và nhãn tương ứng để đào tạo mơ hình YOLO . . . . 57
3.9 Sử dụng mơ hình YOLOv7 để dự báo bất thường trên ảnh X-quang lồng ngực 60
3.10 Mơ tả quy trình của hệ thống thử nghiệm dành cho người dùng . . . . . . . 60
3.11 Giao diện hệ thống thử nghiệm dành cho người dùng . . . . . . . . . . . . 61

1

Mở đầu


Trí tuệ nhân tạo (AI) đang có tác động rất lớn đến hầu hết các lĩnh vực khoa học, đặc
biệt là lĩnh vực y tế. Ngày nay, trí tuệ nhân tạo đang được ứng dụng để phát hiện, chẩn đoán
và can thiệp sớm nhiều bệnh lý ở người. Một số nghiên cứu đã sử dụng AI để chẩn đoán
các bệnh như tiểu đường [1], viên giác mạc [2], chẩn đoán ung thư gan [3], dự đoán bại
não [4], . . . Đây là một bước tiến tiên phong trong việc phát hiện và điều trị bệnh. AI cũng
giúp các hệ thống chăm sóc sức khỏe dễ dàng chuyển trọng tâm và nguồn lực từ chữa bệnh
sang phịng ngừa. Trong chẩn đốn các bệnh lý về phổi, chụp X-quang là một trong những
xét nghiệm cận lâm sàng cực kì quan trọng. Thơng qua kỹ thuật này, bác sĩ sẽ nhanh chóng
phát hiện các bất thường và lên kế hoạch điều trị bệnh phù hợp nhất; đồng thời theo dõi tình
trạng hồi phục của người bệnh nếu đang trong thời gian điều trị. Trong phạm vi hiểu biết
của tác giả, hiện đã có nhiều nghiên cứu ứng dụng AI trong việc hỗ trợ phát hiện sớm dấu
hiệu bệnh lý từ ảnh X-quang phổi. Tuy nhiên, cùng với cơ hội, ứng dụng AI trong những
tình huống như vậy cũng đang phải đối diện với không ít thách thức, chẳng hạn như: thiếu
các bộ dữ liệu chuẩn hóa và khả năng diễn giải của các mơ hình AI cịn hạn chế. Đó là lý
do thúc đẩy tác giả chọn đề tài này.

Có thể nói hai thành phần chủ yếu quyết định hiệu quả của việc ứng dụng AI trong
việc hỗ trợ chẩn đốn bệnh lý về phổi là một mơ hình học máy đủ tốt và một bộ dữ liệu
đủ tốt. Các bệnh lý về phổi thường xuất hiện dưới dạng một vùng trên phim chụp X-quang
ngực. Có nhiều mơ hình máy học giúp phát hiện tổn thương phổi trên ảnh X-quang dựa trên
những kỹ thuật phát hiện đối tượng khác nhau, chẳng hạn như: CNN, Mask RCNN, Faster
R-CNN, YOLO, . . . và đều cho kết quả khá tốt trong một số nghiên cứu trên một số dữ liệu
phim chụp X-quang phổi [5? , 6]. Các phiên bản cải tiến gần đây của mơ hình cuối cùng
dường như tỏ ra vượt trội hơn về mặt hiệu năng và vẫn còn là chủ đề cho nhiều hướng phát
triển tiếp nối. Để xây dựng một mơ hình phù hợp cho mục đích nghiên cứu, một bộ dữ liệu
kiểm thử đủ tốt là yếu tố không thể thiếu, chẳng hạn, ChestX-ray14 [6] phát hành bởi Viện
Y tế Quốc gia Hoa Kỳ (NIH). Gần đây, Viện Nghiên cứu Dữ liệu lớn VinBigdata, Tập đoàn

2
Vingroup đã chia sẻ bộ dữ liệu “Phát hiện bất thường trên ảnh X-quang lồng ngực”1 gồm

18.000 file mẫu. Sự kết hợp giữa bộ dữ liệu mới này và các mơ hình đã nêu bên trên hứa
hẹn là một hướng nghiên cứu tốt cho ra kết quả khả quan.

Đề tài dành sự quan tâm chủ yếu vào xem xét ứng dụng một số mơ hình thuộc họ YOLO
vào bài tốn phát hiện và phân loại bất thường trên hình ảnh X-quang dựa trên bộ dữ liệu
“Phát hiện bất thường trên ảnh X-quang lồng ngực” đề cập bên trên. Về mặt nội dung, đề
án được chia thành các chương như sau.
Chương 1: Kiến thức chuẩn bị

Trong chương này, chúng tôi hệ thống hóa lại một số kiến thức cơ sở về mạng neuron,
các khái niệm và định nghĩa cơ bản trong học sâu.
Chương 2: Mơ hình YOLO và một số vấn đề liên quan

Mục đích của chương này là thực hiện một khảo sát tương đối toàn diện về các phiên
bản YOLO khác nhau. Nội dung ở đây được biên tập theo tinh thần cố gắng chuyển tải
nhiều nhất có thể những đặc điểm cơ bản của các đối tượng liên quan theo hiểu biết của
nhóm thực hiện cùng với tác giả.
Chương 3: Ứng dụng trong bài toán chẩn đoán bất thường trên ảnh X-quang lồng
ngực

Toàn bộ chương này được dành cho việc trình bày kết quả chính của đề án, vận dụng
một số phiên bản YOLO phù hợp phát hiện bất thường có mặt trên ảnh X-quang lồng ngực.
Nhằm minh hoạ cho triển vọng ứng dụng cũng như cải tiến xa hơn, chúng tôi sử dụng kết
quả đạt được của bước nghiên cứu và xây dựng bước đầu một giao diện người dùng đơn
giản bằng FastAPI như là một kênh trải nghiệm và tham khảo.

1 />
3

Chương 1


Kiến thức chuẩn bị

Chương này nhằm mục đích hệ thống hố lại khái niệm và thuật ngữ chính có liên quan
làm cơ sở cho việc triển khai các nội dung về sau. Chúng được chọn lọc ra từ một số lượng
tương đối các tài liệu tham khảo thuộc lĩnh vực có liên quan đến đề tài, và rất nhiều trong
số đó là tài liệu ngoại văn. Để đảm bảo tính thống nhất, chúng tôi đã cố gắng thực hiện việc
chuyển ngữ khi có phương án phù hợp, tuy nhiên, vẫn cịn nhiều tình huống chưa thể khắc
phục được tối ưu tác giả vẫn dùng lại thuật ngữ gốc tiếng Anh trong nguyên bản.

1.1. Mạng neuron

Mạng neuron (nhân tạo) bao gồm một tập hợp các đơn vị xử lý (processing units) được
kết nối với nhau. Cho các giá trị đầu vào w0, x1, . . . , xD, với w0 là đại diện cho các giá trị
nhập vào từ bên ngoài và x1, . . . , xD là đầu vào có nguồn gốc từ các đơn vị xử lý khác trong
mạng neuron, đơn vị xử lý tính tốn đầu ra của nó là y = f (z). f được gọi là hàm kích hoạt
và z thu được bằng cách áp dụng quy tắc lan truyền (propagation rule), ở đó các input được
ánh xạ tới đầu vào thực tế z. Mơ hình của một đơn vị xử lý này bao gồm định nghĩa về
neuron trong [7], thay vì quy tắc lan truyền, một bộ cộng (adder) được sử dụng để tính z là
tổng trọng số của tất cả các input.

Mạng neuron có thể được hình dung dưới dạng đồ thị có hướng gọi là biểu đồ mạng
(network graph) [8]. Mỗi đơn vị được biểu diễn bằng một nút được gắn nhãn theo đầu ra
của nó và các đơn vị được kết nối với nhau bằng các cạnh có hướng. Đối với một đơn vị xử
lý, điều này được minh họa trong Hình 1.1, trong đó đầu vào bên ngoài w0 chỉ được thêm
vào nhằm mục đích minh họa và thường bị bỏ qua.

Để thuận tiện, chúng tôi phân biệt đơn vị đầu vào và đơn vị đầu ra. Đơn vị đầu vào tính
tốn đầu ra y := x trong đó x là giá trị đầu vào duy nhất của đơn vị. Các đơn vị đầu ra có thể


4

1 Hình 1.1: Một đơn vị xử lý bao gồm một quy tắc
truyền ánh xạ từ tất cả các đầu vào w0, x1 . . . , xD tới
w0 đầu vào thực tế z và hàm kích hoạt f được áp dụng
x1 trên đầu vào thực tế để tạo thành đầu ra y = f (z).
Mỗi đơn vị đều được gắn nhãn theo đầu ra của nó.
... y Do đó, để bao gồm cả độ lệch w0, một đơn vị giả có
giá trị 1 được đưa vào.
xD

chấp nhận một số lượng giá trị đầu vào tùy ý. Nhìn chung, mạng đại diện cho một hàm y(x)
có kích thước được cố định bởi số lượng đơn vị đầu vào và đơn vị đầu ra, điều này có nghĩa
là đầu vào của mạng được các đơn vị đầu vào chấp nhận và các đơn vị đầu ra tạo thành đầu
ra của mạng.

1.1.1. Perceptron đa tầng

Thuật toán Perceptron (L + 1) tầng, được minh họa trong Hình 1.2, bao gồm các đơn vị
đầu vào D, đơn vị đầu ra C và một số đơn vị được gọi là đơn vị ẩn. Các đơn vị được sắp xếp
thành các tầng, đó là một perceptron nhiều tầng bao gồm một tầng đầu vào, một tầng đầu
ra và L các tầng ẩn 1. Đơn vị thứ i trong tầng l tính tốn đầu ra

yi(l) = f zi(l) m(l−1) (1.1)

với zi(l) = ∑ wi,k(l)yk(l−1) + wi,0 (l)

k=1

trong đó, wi,k(l) biểu thị kết nối có trọng số từ đơn vị thứ k trong tầng (l − 1) đến đơn vị thứ i


(l)

trong tầng l và wi,0 có thể được coi là đầu vào bên ngoài của đơn vị và được gọi là độ lệch.
Ở đây, m(l) biểu thị số lượng đơn vị trong tầng l, sao cho D = m(0) và C = m(L+1). Để đơn
giản, độ lệch có thể được coi là trọng số khi giới thiệu đơn vị giả y0(l) := 1 trong mỗi tầng

m(l−1) hoặc z(l) = w(l)y(l−1), (1.2)

zi(l) = ∑ wi,k(l)yk(l−1)

k=0

trong đó z(l), w(l) và y(l−1) biểu thị các biểu diễn vectơ và ma trận tương ứng của các đầu
vào thực tế zi(l), các trọng số wi,k(l) và kết quả đầu ra tương ứng là yk(l−1).

Theo ngơn ngữ tốn học, một perceptron đa tầng nói chung đại diện cho một hàm

y(·, w) : RD → RC, x → y(x, w) (1.3)

với vectơ đầu ra y(x, w) bao gồm các giá trị đầu ra yi(x, w) := yi(L+1) và w là vectơ của tất
cả các trọng số trong mạng.

1Trên thực tế, một perceptron (L + 1) tầng có (L + 2) tầng bao gồm cả tầng đầu vào. Tuy nhiên, như đã nêu
trong [9], tầng đầu vào khơng được tính vì khơng có q trình xử lý thực sự nào diễn ra.

input layer 1st hidden layer 5 Lth hidden layer output layer
x0 y0(1) ... y1(L+1)
y1(1) ... (L)
x1 .. ... y2(L+1)

.. . y0 ..
. .
xD (1) (L)
yC(L+1)
ym(1) y1
..
.

(L)

ym(L)

Hình 1.2: Biểu đồ mạng của perceptron (L + 1) tầng với đơn vị đầu vào D và đơn vị đầu ra
C. Tầng ẩn thứ l chứa các đơn vị ẩn m(l).

Người ta thường nói là mạng lưới thần kinh sâu nếu nó có nhiều hơn ba tầng ẩn [10].
Việc đào tạo mạng lưới thần kinh sâu, hay còn gọi là học sâu, được coi là thách thức đặc
biệt [10].

1.1.2. Hàm kích hoạt

Trong [7], ba loại hàm kích hoạt được thảo luận: hàm ngưỡng (threshold functions),

hàm tuyến tính từng đoạn (piecewise-linear functions) và hàm sigmoid. Hàm ngưỡng phổ

biến được đưa ra bởi hàm bước Heaviside



h(z) = 1 if z ≥ 0,


(1.4)

0 if z < 0.

Tuy nhiên, cả hai hàm ngưỡng cũng như hàm tuyến tính từng đoạn đều có một số hạn chế.
Đầu tiên, để huấn luyện mạng, chúng ta có thể cần hàm kích hoạt có tính khả vi. Thứ hai,
các hàm kích hoạt phi tuyến được ưa chuộng hơn do khả năng tính tốn bổ sung mà chúng
tạo ra [11].

Loại hàm kích hoạt được sử dụng phổ biến nhất là hàm sigmoid. Ví dụ, hàm sigmoid
logistic được cho bởi

σ(z) = 1 . (1.5)
1 + exp(−z)

Đồ thị của nó có hình chữ S, khả vi, đơn điệu. Một ứng viên khác là hàm tanh(z), có thể
được coi là phép biến đổi tuyến tính của hàm sigmoid logistic trên khoảng [−1, 1].

6

1 Logistic sigmoid 1 Hyperbolic tangent

σ(z) 0.5 tanh(z) 0

0 −1
−4 −2 0 2 4 −4 −2 0 2 4
z z

(a) Hàm kích hoạt Logistic sigmoid. (b) Hàm kích hoạt tanget Hyperbolic.


1 Softsign 1 Rectified tanh

s(z) 0.5 tanh(z) 0.5

0 0
−4 −2 0 2 4 −4 −2 0 2 4
z z

(c) Hàm kích hoạt Logistic sigmoid. (d) Hàm kích hoạt tanget hyperbol chỉnh lưu.

Hình 1.3: Một số hàm kích hoạt.

Khi sử dụng mạng neuron để phân loại 2, hàm kích hoạt softmax cho các đơn vị đầu ra

được sử dụng để diễn giải các giá trị đầu ra dưới dạng xác suất3. Theo đó, đầu ra của đơn

vị thứ i trong lớp đầu ra được cho bởi

σ(z(L+1), i) = exp(zi(L+1)) . (1.6)
C (L+1)
∑k=1 exp(zk )

Các thử nghiệm trong [12] cho thấy rằng hàm sigmoid logistic cũng như tanh (·) hoạt

động khá kém trong học sâu. Hiệu suất tốt hơn được thể hiện qua hàm kích hoạt softsign

s(z) = 1 . (1.7)
1 + |z|


Trong [13], hàm kích hoạt khơng bão hòa (non-saturating) được sử dụng

r(z) = max(0, z). (1.8)

Đơn vị ẩn sử dụng hàm kích hoạt trong phương trình (1.8) được gọi là đơn vị tuyến tính
chỉnh lưu (ReLU). Một số hàm kích hoạt trên được minh họa trong Hình 1.3.

1.1.3. Đào tạo có giám sát

Đào tạo có giám sát là vấn đề xác định trọng số mạng để xấp xỉ ánh xạ mục tiêu cụ thể
g. Trong thực tế, g có thể chưa biết nên ánh xạ được đưa ra bởi một tập dữ liệu đào tạo. Bộ

2Nhiệm vụ phân loại có thể được phát biểu như sau: Cho một vectơ đầu vào x có kích thước D, mục tiêu là gán
x cho một trong các lớp rời rạc C [9].

3Các đầu ra yi(L+1), 1 ≤ i ≤ C, có thể được hiểu là xác suất khi chúng nằm trong [0, 1] và có tổng bằng 1.

7

đào tạo

TS := {(xn,tn) : 1 ≤ n ≤ N}, (1.9)

bao gồm cả giá trị đầu vào xn và giá trị đầu ra mong muốn tương ứng, có thể có nhiễu
tn ≈ g(xn) [7].

Các thước đo sai số

Quá trình đào tạo được thực hiện bằng cách điều chỉnh các trọng số w của mạng neuron


để giảm thiểu hàm mục tiêu đã chọn, hàm này có thể được hiểu là thước đo sai số giữa đầu
ra mạng y(xn) và đầu ra mục tiêu mong muốn tn. Các lựa chọn phổ biến để phân loại bao
gồm thước đo tổng bình phương sai số được đưa ra bởi

N NC

E(w) = ∑ En(w) = ∑ ∑ (yk(xn, w) − tn,k)2, (1.10)

n=1 n=1 k=1

và thước đo cross-entropy sai số được đưa ra bởi

N NC

E(w) = ∑ En(w) = ∑ ∑ tn,k log(yk(xn, w)), (1.11)

n=1 n=1 k=1

trong đó tn,k là mục thứ k của giá trị đích tn. Chi tiết về việc lựa chọn thước đo sai số và các
thuộc tính của chúng có thể tìm thấy trong [8].

Tiếp theo, chúng tôi giới thiệu một số khái niệm thường dùng trong học sâu.

Stochastic training Giá trị đầu vào được chọn ngẫu nhiên và trọng số mạng được cập nhật
dựa trên sai số En(w).

Batch training Tất cả các giá trị đầu vào đều được xử lý và trọng số được cập nhật dựa

trên sai số tổng thể E (w) = N En(w).


∑n=1

Online training Mỗi giá trị đầu vào chỉ được xử lý một lần và các trọng số được cập nhật
bằng sai số En(w).

Mini-batch training Một tập hợp con ngẫu nhiên M ⊆ {1, . . . , N} (các mini batch) của
tập huấn luyện được xử lý và các trọng số được cập nhật dựa trên sai số tích lũy
EM(w) := ∑n∈M En(w).

Parameter Optimization

Xét q trình ngẫu nhiên, chúng tơi tìm cách giảm En với trọng số w. Tiêu chí cần thiết


∂En = ∇En(w) = 0! (1.12)

∂w

8

w[0] Hình 1.4: Ý tưởng về gradient
w[1] descent là tuân theo độ dốc âm
w[2] ở vị trí hiện tại vì nó mơ tả
w[3] hướng đi xuống dốc nhất. Tốc
w[4] độ học γ mô tả kích thước bước
được thực hiện trong mỗi bước
lặp. Do đó, gradient descent
mô tả một kỹ thuật tối ưu hóa
bậc nhất.


trong đó ∇En là đạo hàm của sai số En.
Do sự phức tạp của sai số En nên cần sử dụng phương pháp lặp để giải nghiệm. Đặt w[t]

biểu thị vectơ trọng số trong lần lặp thứ t. Trong mỗi lần lặp, chúng tôi tính tốn và cập
nhật trọng số ∆w[t] và trọng số tương ứng

w[t + 1] = w[t] + ∆w[t]. (1.13)

Từ tối ưu hóa khơng ràng buộc, chúng tơi có sẵn một số kỹ thuật tối ưu hóa. Gradient
descent là một phương pháp "bậc nhất", có nghĩa là nó chỉ sử dụng thơng tin của đạo hàm
cấp một của En và do đó có thể được sử dụng kết hợp với lan truyền ngược sai số như được
mô tả trong phần 1.1.3, trong khi đó Phương pháp Newton là phương pháp bậc hai và cần
đánh giá ma trận Hessian Hn của En4 (hoặc một phép tính gần đúng thích hợp của ma trận
Hessian) trong mỗi bước lặp.

Gradient descent: Gradient descent được thúc đẩy bởi ý tưởng thực hiện một bước theo
hướng giảm dần dốc nhất, đó là hướng của độ dốc âm, để đạt đến mức tối thiểu.
Nguyên tắc này được minh họa bằng Hình 1.4. Do đó, việc cập nhật trọng số được
đưa ra bởi

∆w[t] = −γ ∂En = −γ∇En(w[t]), (1.14)
∂w[t]

trong đó γ là tốc độ học. Như đã thảo luận trong [9, p.263-272], cách tiếp cận này có
một số khó khăn, ví dụ như làm thế nào chọn tốc độ học học nhanh nhưng đồng thời
tránh dao động5.

Phương pháp Newton Mặc dù có sẵn một số phần mở rộng của phương pháp gradient
descent, nhưng các phương pháp bậc hai hứa hẹn sự hội tụ nhanh hơn do sử dụng


4Ma trận Hessian H ∂2En n của một sai số En là ma trận đạo hàm từng phần bậc hai: (Hn)r,s =
∂wr ∂ws

5Dao động xảy ra nếu tốc độ học được chọn quá lớn khiến thuật toán liên tục vượt qua mức tối thiểu.

9

thông tin bậc hai [14]. Khi sử dụng phương pháp Newton, trọng số ∆w[t] được cập

nhập

∆w[t] = −γ ∂2En −1 (1.15)
∂w[t ]2
∂En = −γ Hn(w[t]) −1 ∇En(w[t])
∂w[t]

trong đó Hn(w[t]) là ma trận Hessian của En và γ mô tả tốc độ học. Hạn chế của
phương pháp này là việc đánh giá và nghịch đảo ma trận Hessian6 vốn rất phức tạp
về mặt tính tốn [14].

Khởi tạo trọng số

Khi chúng tôi sử dụng kỹ thuật tối ưu hóa vịng lặp (iterative optimization), việc khởi
tạo các trọng số w là rất quan trọng. [11, p. 311-312] đề xuất chọn ngẫu nhiên các trọng số
trong phạm vi

− √ 1 < wi, j(l) < √ 1 . (1.16)
m(l−1) m(l−1)

Kết quả này dựa trên giả định rằng đầu vào của mỗi đơn vị được phân phối theo phân


phối Gaussian và đảm bảo rằng đầu vào thực tế xấp xỉ bậc đơn vị (approximately of unity

order). Với các hàm kích hoạt sigmoid logistic, điều này nhằm mang lại kết quả học tập tối

ưu [11].

Trong [12] đề xuất cách khởi tạo được gọi là khởi tạo chuẩn hóa (normalized initialization).

Chúng tôi chọn trọng số ngẫu nhiên trong phạm vi √ (1.17)
√ 6.

− 6 < wi, j(l) < m(l−1) + m(l)
m(l−1) + m(l)

Các kết quả thử nghiệm trong [12] cho thấy khả năng học tập được cải thiện khi sử dụng
khởi tạo chuẩn hóa.

Sai số lan truyền ngược

Thuật tốn 1.1, được đề xuất trong [15], được sử dụng để đánh giá độ dốc ∇En(w[t])
của hàm loss En trong mỗi bước lặp. Thông tin chi tiết hơn cũng như nguồn gốc kỹ lưỡng
của thuật tốn có thể được tìm thấy trong [8] hoặc [15].

Thuật toán 1.1 (Sai số lan truyền ngược)

1. Truyền giá trị đầu vào xn qua mạng để lấy đầu vào và đầu ra thực tế của từng đơn vị.

6Thuật toán đánh giá ma trận Hessian dựa trên lan truyền ngược sai số như đã giới thiệu trong phần 1.1.3. Phép
nghịch đảo của ma trận n × n có độ phức tạp O(n3) khi sử dụng phân tách LU hoặc các kỹ thuật tương tự.


10

2. Tính tốn sai số δi(L+1) [9, p. 241-245] cho các đơn vị đầu ra

(L+1) ∂En (L+1)
δi := (L+1) f (zi ). (1.18)

∂yi

3. Xác định δi(l) cho tất cả các lớp ẩn l bằng cách sử dụng sai số lan truyền ngược

m(l+1) (1.19)

δi(l) := f (zi(l)) ∑ wi,k(l+1)δk(l+1).

k=1

4. Tính các đạo hàm cần thiết

∂En = δ j(l)yi(l−1). (1.20)
∂w j,i (l)

1.1.4. Chính quy hóa (Regularization)

Người ta đã chứng minh rằng các perceptron nhiều lớp có ít nhất một lớp ẩn có thể gần
đúng với bất kỳ ánh xạ mục tiêu nào với độ chính xác tùy ý. Do đó, dữ liệu huấn luyện
có thể gặp phải tình huống q khớp (overfitting), tức là sai số huấn luyện có thể rất thấp
trên tập huấn luyện nhưng lại cao trên dữ liệu không nhìn thấy [10]. Chính quy hố mơ tả
nhiệm vụ khắc phục overfitting nhằm mang lại hiệu suất khái quát hóa tốt hơn, nghĩa là

mạng được đào tạo cũng sẽ hoạt động tốt trên dữ liệu khơng nhìn thấy [7]. Do đó, tập huấn
luyện thường được chia thành tập huấn luyện thực tế và tập xác thực (validation set). Sau
đó, mạng neuron được huấn luyện bằng cách sử dụng tập huấn luyện mới và hiệu suất tổng
quát hóa của nó được đánh giá trên tập xác thực [11].

Có nhiều phương pháp khác nhau để thực hiện chính quy hóa. Thơng thường, tập huấn
luyện được tăng cường để giới thiệu một số bất biến nhất định mà mạng dự kiến sẽ học
[13]. Các phương pháp khác thêm thuật ngữ chính quy hóa vào thước đo sai số nhằm kiểm
sốt mức độ phức tạp và nghiệm có dạng

Eˆn(w) = En(w) + ηP(w), (1.21)

trong đó P(w) ảnh hưởng đến công thức của nghiệm và η là tham số cân bằng.

Lp-Regularization
Một ví dụ phổ biến của Lp-regularization là L2-regularization7:

P(w) = w 2 = wT w. (1.22)
2

Ý tưởng này là để giải quyết các trọng số lớn vì chúng có xu hướng dẫn đến overfitting [8].

7L2-regularization thường được gọi là giảm trọng số, xem [8] để biết chi tiết.

11

Early Stopping
Mặc dù sai số trên tập huấn luyện có xu hướng giảm theo số lần lặp, nhưng sai số trên

tập xác thực thường bắt đầu tăng trở lại khi mạng bắt đầu xuất hiện overfitting với tập huấn

luyện. Để khắc phục điều này, q trình huấn luyện có thể dừng ngay khi sai số trên bộ xác
thực đạt đến mức tối thiểu, tức là trước khi sai số trên bộ xác thực tăng trở lại [8]. Phương
pháp này được gọi là Early Stopping.

Dropout
Một kỹ thuật chính quy hóa khác, bất cứ khi nào mạng neuron được cung cấp một mẫu

huấn luyện, mỗi đơn vị ẩn sẽ bị bỏ qua với xác suất 0.5. Phương pháp này có thể được hiểu
theo nhiều cách khác nhau. Thứ nhất, các đơn vị không thể dựa vào sự hiện diện của các
đơn vị khác. Thứ hai, phương pháp này dẫn đến việc đào tạo nhiều mạng khác nhau cùng
một lúc. Do đó, dropout có thể được hiểu là tính trung bình của mơ hình.

Weight Sharing
Ý tưởng Weight Sharing đã được giới thiệu ở [15], trong bối cảnh của bài tốn T-C8.

Weight Sharing mơ tả ý tưởng về các đơn vị khác nhau trong cùng một lớp để sử dụng các
trọng số giống hệt nhau. Điều này có thể được hiểu như một phương pháp chuẩn hóa vì độ
phức tạp của mạng giảm đi và kiến thức trước đó có thể được tích hợp vào kiến trúc mạng.

1.2. Mạng neuron tích chập - Convolutional neural networks

Mặc dù mạng neuron thần kinh có thể được áp dụng cho các bài tốn thị giác máy tính,
nhưng để có được hiệu suất khái quát hóa tốt, việc kết hợp kiến thức có sẵn vào kiến trúc
mạng [16] là rất hữu ích. Mạng neuron tích chập nhằm mục đích sử dụng thơng tin khơng
gian giữa các pixel của hình ảnh. Vì vậy, chúng dựa trên sự tích chập rời rạc.

CNN là một cấu trúc toán học thường bao gồm lớp tích chập (convolution layers), lớp
gộp (pooling layers) và lớp được kết nối đầy đủ (fully connected layers). Trong đó, lớp tích
chập và lớp gộp thực hiện trích xuất feature, lớp được kết nối đầy đủ maps các feature được
trích xuất vào đầu ra cuối cùng, chẳng hạn như phân loại (hình 1.5).



×