Tải bản đầy đủ (.docx) (53 trang)

Nghiên cứu về học sâu và ứng dụng trong phát hiện ổ gà trên mặt đường

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 (15.74 MB, 53 trang )

MỤC LỤC
LỜI CAM ĐOAN....................................................................................................................i
LỜI CẢM ƠN........................................................................................................................ii
TRÍCH YẾU LUẬN VĂN CAO HỌC..............................................................................iii
MỤC LỤC..............................................................................................................................iv
DANH MỤC KÍ HIỆU VÀ TỪ VIẾT TẮT......................................................................vi
DANH MỤC HÌNH VẼ......................................................................................................vii
MỞ ĐẦU.................................................................................................................................1
CHƯƠNG 1: TỔNG QUAN HỌC MÁY...........................................................................2
1.1 Học máy là gì?...........................................................................................................2
1.2 Một số ứng dụng của học máy...................................................................................2
1.3 Tổng quan về học sâu................................................................................................3
CHƯƠNG 2: HỌC SÂU VỚI MẠNG R2CNN.................................................................6
2.1 Xác định vật thể (object detection)............................................................................6
2.1.1 Giới thiệu bài toán xác định vật thể...................................................................6
2.1.2 Multi-layer Perceptron.......................................................................................6

2.1.3 Convolutional neural network (CNN)..................................................19
2.1.4 Lịch sử hình thành của mơ hình R2CNN..............................................27
2.2 Tổng quan về R2CNN..................................................................................30
2.2.1 Các khái niệm cơ bản...........................................................................30
2.2.2 Cấu trúc của R2CNN.............................................................................32
CHƯƠNG 3. ỨNG DỤNG MẠNG R 2CNN NHẬN DẠNG Ổ GÀ TRÊN
MẶT ĐƯỜNG..............................................................................................................34
3.1. Xây dựng mơ hình nhận dạng ổ gà.............................................................34
3.2. Giới thiệu về cấu trúc mơ hình R2CNN......................................................34
3.3. Chuẩn bị dữ liệu.........................................................................................35
3.4. Thiệt lập tham số thuật toán và huấn luyện mạng.......................................43
3.4.1 Thiết lập các tham số thuật toán R2CNN.............................................43
3.4.2 Q trình huận luyện mạng..................................................................44
3.5. Đánh giá mơ hình.......................................................................................47


KẾT LUẬN..........................................................................................................49
TÀI LIỆU THAM KHẢO...................................................................................50


DANH MỤC KÍ HIỆU VÀ TỪ VIẾT TẮT

Ký hiệu
viết tắt

Tiếng Anh

Tiếng Việt

DL

Deep learning

Học sâu

ML

Machine leaning

Học máy

ANN

Artifical Neural Network

Mạng nơ ron nhân tạo


RPN

Region Proposal Network

MLP

Multi-layer Perceptron

ROI

Region of interest

IOU

Intersection over union


DANH MỤC HÌNH VẼ
Hình 2.1 Một perceptron...........................................................................................7
Hình 2.2 Multi-layer perceptron................................................................................7
Hình 2.3 Cấu trúc MLP.............................................................................................8
Hình 2.4 Cơng thức tính thơng số của unit................................................................9
Hình 2.5 Đồ thị phép tính........................................................................................14
Hình 2.6 Đồ thị phép tình khi biết a, b.....................................................................14
Hình 2.7 Đạo hàm trên từng cạnh của đồ thị...........................................................15
Hình 2.8 Đồ thị biểu diễn liên kết............................................................................16
Hình 2.9 Tính đạo hàm theo chain forward.............................................................17
Hình 2.10 Tính đạo hàm theo reverse-mode............................................................17
Hình 2.11 Ảnh đầu vào kích thước 6*6 với 3 kênh màu RGB.................................19

Hình 2.12 Cấu trúc CNN hồn chỉnh.......................................................................20
Hình 2.13 Phép tốn giữa ma trận điểm ảnh và bộ lọc............................................20
Hình 2.14 Ma trận 5x5 và bộ lọc 3x3......................................................................21
Hình 2.15 Các bước tính tốn “Feature Map”.........................................................21
Hình 2.16 Các bộ lọc cơ bản....................................................................................22
Hình 2.17 Phép nhân tích trập với stride 2...............................................................23
Hình 2.18 “Zero Padding”.......................................................................................23
Hình 2.19 Activation ReLU.....................................................................................24
Hình 2.20 Ví dụ về max pooling..............................................................................25
Hình 2.21 Mơ hình MLP.........................................................................................25
Hình 2.22 Mơ hình CNN hồn chỉnh.......................................................................26
Hình 2.23 So sánh thời gian xử lý ảnh của các model.............................................28
Hình 2.24 Ví dụ về sử dụng Faster R-CNN đối với object nghiêng.........................28
Hình 2.25 Kết quả ứng dụng R2CNN......................................................................29


Hình 2.26 Ví dụ về pooling layer.............................................................................29
Hình 2.27 Cách thức tính IoU..................................................................................31
Hình 2.28 Cấu trúc R2CNN.....................................................................................31
Hình 3.1 Ổ gà trên mặt đường (1)............................................................................33
Hình 3.2 Ổ gà trên mặt đường (2)............................................................................34
Hình 3.3 Ổ gà trên mặt đường (3)............................................................................34
Hình 3.4 Ổ gà trên mặt đường (4)............................................................................35
Hình 3.5 Sử dụng tool labelme để gán nhãn cho ảnh...............................................35
Hình 3.6 Xác định vị trí ổ gà và gán nhãn (1)..........................................................36
Hình 3.7 Xác định vị trí ổ gà và gán nhãn (2)..........................................................36
Hình 3.8 Xác định vị trí ổ gà và gán nhãn (3)..........................................................37
Hình 3.9 Xác định vị trí ổ gà và gán nhãn (4)..........................................................37
Hình 3.10 Theo dỗi quá trình training model qua TensorBoard (1).........................43
Hình 3.11 Theo dỗi quá trình training model qua TensorBoard (2).........................43

Hình 3.12 Theo dỗi quá trình training model qua TensorBoard (3).........................44
Hình 3.13 Theo dỗi quá trình training model qua TensorBoard (4).........................44
Hình 3.14 Theo dỗi quá trình training model qua TensorBoard (5).........................45


1

MỞ ĐẦU
Tính đến năm 2017, theo dữ liệu thống kê từ Tổng cục ĐBVN, mạng lưới đường
bộ bao gồm hệ thống quốc lộ với 21.100km, chiếm tỉ lệ 4%; đường đơ thị có
26.950km, chiếm 5%; đường tỉnh 28.910km, chiếm 5,1%; đường huyện 58.430km,
chiếm 10%; đường liên xã 144.670km, chiếm 25%; đường thơn xóm, đường trục nội
đồng 289.790km, chiếm 51% và 741km đường cao tốc [1]. Trong những năm vừa qua,
hệ thống kết cấu hạ tầng giao thơng đường bộ có những bước phát triển mạnh, theo
hướng hiện đại, có trọng tâm, trọng điểm, tập trung vào các cơng trình có tính kết nối,
lan tỏa, tạo động lực phát triển kinh tế - xã hội; chất lượng vận tải đường bộ ngày một
nâng cao, bước đầu góp phần thực hiện mục tiêu GTVT đi trước một bước trong tiến
trình xây dựng và phát triển đất nước, góp phần bảo đảm quốc phòng - an ninh và bảo
vệ Tổ quốc. Tuy nhiên, thực trạng hiện nay đã có nhiều tuyến đường xuống cấp, hư
hỏng ảnh hưởng không nhỏ đến các hoạt động kinh tế, xã hội và đời sống của người
dân, tiềm ẩn nguy cơ tai nạn giao thông.
Nhận thấy rằng nhu cầu về ứng dụng tự động phát hiện ổ gà trên mặt đường với
mục đích phục vụ các cơ quan chức năng có thẩm quyền lên kế hoạch bảo trì, sửa chữa
mặt đường là cấp thiết và có tính thực tế cao. Ngoài ra, hiện tại các hãng xe hơi lớn
như trên thế giới cũng đã phát triển chức năng lái tự động, việc phát hiện ổ gà trong
khi xe đang di chuyển sẽ giúp xe tránh/giảm xóc tại các vị trí mặt đường bị hư hại từ
đó đẩm bảo an toàn cho người sử dụng.
Học sâu là một thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu
nhiều tầng biểu đạt, cả cụ thể lẫn trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu.
Học sâu đuợc ứng dụng trong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngơn ngữ

tự nhiên. Hiện nay rất nhiều các bài toán nhận dạng sử dụng học sâu để giải quyết do
học sâu có hiệu năng cũng như độ chính xác vượt trội so với các phương pháp phân
lớp truyền thống.
Do đó, tơi đã chọn đề tài “Nghiên cứu về học sâu và ứng dụng trong phát hiện ổ
gà trên mặt đường” làm đề tài luận văn của mình nhằm nghiên cứu các phương pháp
nhận dạng, ứng dụng phát triển phương pháp nhận dạng ổ gà phục vụ phát triển các
phương tiện giao thông thông minh.


2

1. CHƯƠNG 1: TỔNG QUAN HỌC MÁY
1.1 Học máy là gì?
Học máy (Machine Learning) là một ngành khoa học nghiên cứu các thuật tốn
cho phép máy tính có thể học được các khái niệm (concept). Có hai loại phương pháp
học máy chính:
Phương pháp quy nạp: Máy học/phân biệt các khái niệm dựa trên dữ liệu đã thu
thập được trước đó. Phương pháp này cho phép tận dụng được nguồn dữ liệu rất nhiều
và sẵn có.
Phương pháp suy diễn: Máy học/phân biệt các khái niệm dựa vào các luật.
Phương pháp này cho phép tận dụng được các kiến thức chuyên ngành để hỗ trợ máy
tính.
Hiện nay, các thuật tốn đều cố gắng tận dụng được ưu điểm của hai phương
pháp này. Các nhóm giải thuật học máy:
Học có giám sát: Máy tính được xem một số mẫu gồm đầu vào (input) và đầu ra
(output) tương ứng trước. Sau khi học xong các mẫu này, máy tính quan sát một đầu
vào mới và cho ra kết quả.
Học khơng giám sát: Máy tính chỉ được xem các mẫu khơng có đầu ra, sau đó
máy tính phải tự tìm cách phân loại các mẫu này và các mẫu mới. Học nửa giám sát:
Một dạng lai giữa hai nhóm giải thuật trên.

Học tăng cường: Máy tính đưa ra quyết định hành động (action) và nhận kết quả
phản hồi (response/reward) từ mơi trường (environment). Sau đó máy tính tìm cách
chỉnh sửa cách ra quyết định hành động của mình.

1.2 Một số ứng dụng của học máy
 Các dịch vụ tài chính
Ngân hàng và những doanh nghiệp hoạt động trong lĩnh vực tài chính sử dụng
cơng nghệ Học Máy với 2 mục đích chính: xác định insights trong dữ liệu và ngăn
chặn lừa đảo. Insights sẽ biết được các cơ hội đầu tư hoặc thông báo đến nhà đầu tư
thời điểm giao dịch hợp lý. Data mining cũng có thể tìm được những khách hàng đang
có hồ sơ rủi ro cao hoặc sử dụng giám sát mạng để chỉ rõ những tín hiệu lừa đảo.


3
 Chính phủ
Các tổ chức chính phủ hoạt động về an ninh cộng đồng hoặc tiện ích xã hội sở
hữu rất nhiều nguồn dữ liệu có thể khai thác insights. Ví dụ, khi phân tích dữ liệu cảm
biến, chính phủ sẽ tăng mức độ hiệu quả của dịch vụ và tiết kiệm chi phí. Học máy cịn
hỗ trợ phát hiện gian lận và giảm thiểu khả năng trộm cắp danh tính.
 Chăm sóc sức khỏe
Học máy là 1 xu hướng phát triển nhanh chóng trong ngành chăm sóc sức khỏe,
nhờ vào sự ra đời của các thiết bị và máy cảm ứng đeo được sử dụng dữ liệu để đánh
giá tình hình sức khỏe của bệnh nhân trong thời gian thực (real-time). Cơng nghệ Học
máy cịn giúp các chun gia y tế xác định những xu hướng hoặc tín hiệu để cải thiện
khả năng điều trị, chẩn đoán bệnh.
 Marketing và sales
Dựa trên hành vi mua hàng trước đây, các trang web sử dụng Học máy phân tích
lịch sử mua hàng, từ đó giới thiệu những vật dụng mà bạn có thể sẽ quan tâm và u
thích. Khả năng tiếp nhận dữ liệu, phân tích và sử dụng những dữ liệu đó để cá nhân
hóa trải nghiệm mua sắm (hoặc thực hiện chiến dịch Marketing) chính là tương tai của

ngành bán lẻ.
 Dầu khí
Tìm kiếm những nguồn ngun liệu mới. Phân tích các mỏ dầu dưới đất. Dự
đốn tình trạng thất bại của bộ cảm biến lọc dầu. Sắp xếp các kênh phân phối để đạt
hiệu quả và tiết kiệm chi phí. Có thể nói, số lượng các trường hợp sử dụng Học máy
trong ngành cơng nghiệp này cực kì lớn và vẫn ngày càng mở rộng.
 Vận tải
Phân tích dữ liệu để xác định patterns & các xu hướng là trọng tâm trong ngành
vận tải vì đây là ngành phụ thuộc vào khả năng tận dụng hiệu quả trên mỗi tuyến
đường và dự đoán các vấn đề tiềm tàng để gia tăng lợi nhuận. Các chức năng phân tích
dữ liệu và modeling của Học máy đóng vai trị quan trọng với các doanh nghiệp vận
chuyện, vận tải công cộng và các tổ chức vận chuyển khác.

1.3 Tổng quan về học sâu
Học máy chỉ là một thành phần trong hướng tiếp cận hành động như người, và
hướng tiếp cận này lại thuộc bốn hướng tiếp cận của AI. Để đạt được mục tiêu này, các
nhà khoa học đã nghiên cứu ra nhiều giải thuật và các hướng giải quyết khác nhau.


4
 Supervised-learning: decision tree, k-NN, naive bayes, SVM, neural
network, deep learning, …
 Unsupervised-learning: k-means, hierachical clustering
 Reinforcement learning: passive/acive/generalization.
Một lần nữa ta có thể thấy Học sâu chỉ là một phương pháp nằm trong hướng
giải quyết học có giám sát của Học máy.
Học sâu chính là một thuật tốn dựa trên các ý tưởng đến từ não bộ với việc tiếp
thu rất nhiều các tầng biểu đạt hay trừu tượng qua đó có thể lãm rõ nghĩa các loại dữ
liệu.
Học sâu chính là ứng dụng nhận diện hình ảnh, giọng nói hay xử lý các ngơn ngữ

tự nhiên, đặc biết nhất là Học sâu có thể tính chính xác dựa vào số lượng dữ liệu. Số
lượng dữ liệu có thể có kích thước khổng lồ và khơng bị hạn chế
Học sâu gần đây được nhắc đến rất nhiều như một xu hướng thời thượng, câu hỏi
được đặt ra là tại sao nó lại trở nên được chú ý đến như vậy? Lý do nằm ở chỗ Học sâu
khai thác được Big Data cùng với độ chính xác cao trên tập dữ liệu ảnh và tín hiệu số
có thể lên đến 95%.
Những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt bậc trong
ngành Thị giác máy tính (Computer Vision). Các hệ thống xử lý ảnh lớn như
Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng
thông minh như nhận diện khuôn mặt nguời dùng, phát triển xe hơi tự lái hay drone
giao hàng tự động.
Cần lưu ý rằng, hiện tại mới đang là thời kỳ bình minh của kỷ nguyên Học sâu và
AI. Học sâu còn rất nhiều tiềm năng to lớn. Học sâu trong tương lai chắc chắn sẽ
không dừng lại ở việc nhận diện được các hình ảnh trên máy thơng thường. Những
chiếc máy tính sẽ sớm có thể nhận biết từng sự vật có mặt trong khung cảnh và mơ tả
lại chúng. Một khi máy tính có thể nhận diện được mọi thứ với mức độ chi tiết khơng
kém gì con người thì chẳng có lý do gì nó khơng thể nghe/nhìn thay những người dùng
khiếm thính/khiếm thị. Trên thực tế, Baidu đã phát triển Baidu Light, một thiết bị đeo
có thể chụp ảnh mọi thứ xung quanh và trình bày caption mô tả chúng cho người dùng.
Các nhà nghiên cứu hiện nay đã có thể nâng cấp độ chính xác trong nhận diện giọng
nói từ 89% lên 99%. 10% nghe có vẻ ít ỏi này thực chất sẽ thay đổi toàn bộ cuộc
chơi.Chưa cần kể đến một lượng lớn dân số mù chữ trên thế giới có thể tiếp cận sớm
với các thiết bị thông minh như smartphone, khả năng nhận diện này rõ ràng đang mở
đường cho những nền tảng giao thức qua giọng nói giữa con người với máy tính, cho


5
phép chúng ta trò chuyện và ra khẩu lệnh cho những chiếc smartphone, xe hơi, các
món đồ gia dụng thơng minh hay thậm chí là cả chính ngơi nhà mà chúng ta sống mà
khơng cịn cần đến những chiếc màn hình cồng kềnh.Xa hơn nữa, các robot giúp việc

trong tương lai có thể hồn tồn “nghe hiểu” con người và “nhìn” được vạn vật xung
quanh để thực hiện các tác vụ ở mức chính xác cao.
Do tiềm năng phát triển cũng như tính ứng dụng của Học sâu trong tương lai là
vơ cùng to lớn, vì vậy, tơi đã chọn học sâu làm đề tài nghiên cứu của luận văn.


6

2. CHƯƠNG 2: HỌC SÂU VỚI MẠNG R2CNN
2.1 Xác định vật thể (object detection)
2.1.1 Giới thiệu bài toán xác định vật thể
Hơn một thập kỷ qua, có rất nhiều cơng trình nghiên cứu về bài tốn xác định vật
thể từ ảnh đen trắng, ảnh xám, đến ảnh màu như ngày nay. Các nghiên cứu đi từ bài
toán đơn giản là ảnh chỉ chứa một vật thể, cho đến ảnh màu với nhiều vật thể trong
cùng ảnh, vật thể có quay một góc nhỏ, hay bị che khuất một phần, và với ảnh nền của
ảnh phức tạp (ảnh chụp ngoài thiên nhiên) nhằm đáp ứng nhu cầu thật sự cần thiết của
con người.
Bài toán xác định vật thể (Object detection) là một kỹ thuật máy tính để xác định
các vị trí và các kích thước của vật thể trong ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này
nhận biết các đặt trưng vật thể và bỏ qua những thứ khác(background) như: tồ nhà,
cây cối...Nhìn chung, bài tốn xác định vật thể nhận đầu vào là 1 một bất kì và cho đầu
ra là một ảnh với các vật thể đã được xác định vị trí và dán nhãn.
Một số ứng dụng của bài toán xác định vật thể là: hệ thống xe lái tự động (xe tự
động tránh vật thể trên đường), hệ thống nhận dạng vật thể (giúp cho các công ty chăn
nuôi thủy hải sản quản lý được lượng thức ăn vừa đủ một cách tự động), hệ thống quan
sát theo dõi, hệ thống quản lý việc ra vào cho các cơ quan và công ty, hệ thống kiểm
tra người lái xe có ngủ gật hay khơng...
Hiện nay có rất nhiều mơ hình xác định vật thể từ cơ bản đến các mơ hình nâng
cao hơn như: RCNN, Fast RCNN, Faster RCNN, YOLO, R 2CNN. Trong bài nghiên
cứu này, chúng ta sẽ đi sâu vào tìm hiểu và ứng dụng mơ hình R2CNN.

R2CNN là mơ hình được nghiên cứu bởi Yingying Jiang, Xiangyu Zhu, Xiaobing
Wang, Shuli Yang, Wei Li, Hua Wang, Pei Fu and Zhenbo Luo thuộc Viện nghiên cứu
và phát triển của SamSung tại Bắc Kinh, Trung Quốc. Thuật tốn được phát triển với
mục tiêu “đóng khung” được vật thể ngay cả khi vật thể không nằm theo các hướng cố
định (dọc, ngang). Chúng ta sẽ tìm hiểu chi tiết hơn về mơ hình này tại những phần
sau.
2.1.2 Multi-layer Perceptron
a. Tổng quan về Multi-layer Perceptron


7
Multi-layer Perceptron được sử dụng cho bài toán supervised learning (học có
giám sát). Nghĩa là ta sẽ cho mơ hình học của chúng ta học một tập dữ liệu đã được
gán nhãn trước, sau đó mơ hình đó sẽ được dùng đễ dự đoán nhãn cho các dữ liệu đầu
vào. Nói đơn giản hơn là ta đưa vào mơ hình đó một input, và nó sẽ trả về một output
là nhãn của input đó. Ta sẽ sử dụng một mơ hình MLP để học tập dữ liệu có sẵn để dự
đoán cảm xúc trong bức ảnh.
Gọi là Multi-layer Perceptron (perceptron nhiều lớp) bởi vì nó là tập hợp của các
perceptron chia làm nhiều nhóm, mỗi nhóm tương ứng với một layer. Trong hình trên
ta có một mơ hình với 3 lớp: Input layer (lớp đầu vào), Output layer (lớp đầu ra) và
Hidden layer (lớp ẩn). Thông thường khi giải quyết một bài toán ta chỉ quan tâm đến
input và output của một model, do vậy trong MLP ngoài lớp Input và Output ra thì các
lớp neuron ở giữa được gọi chung là Hidden (ẩn khơng phải là khơng nhìn thấy mà
đơn giản là khơng quan tâm đến). Nói cách một cách dễ hiểu, MLP là nhiều lớp
Perceptron chồng lên nhau.

Hình 2.1 Một perceptron

Hình 2.2 Multi-layer perceptron



8
b. Cấu trúc của MLP và các khái niệm
Layer:
Cấu trúc của MLP bao gồm 3 layer : Input Layer, Hidden Layer và Output Layer.
Input Layer và Output Layer chỉ có duy nhất một layer, trong khi đó Hidden Layer có
thể có rất nhiều layer bên trong nó. Hình minh họa dưới đây là một MLP mà trong
Hidden Layer của nó bao gồm 2 layer ta gọi là Hidden Layer 1 và Hidden Layer 2.

Hình 2.3 Cấu trúc MLP

Số lượng layer có trong MLP được tính bằng tổng số layer của nó trừ đi Input
Layer. Số lượng layer có trong MLP thường được ký hiệu là L . Với hình minh họa bên
trên, ta nhận thấy số layer của nó là 3 (L = 3). Nằm trong mỗi layer là các Unit.
Mỗi Hidden layers sẽ có một nhiệm vụ, output của tầng này sẽ là input của tầng
sau. Ở phần sau về CNN ta sẽ tìm hiểu kỹ về phần này. Nói dễ hiểu hơn thì nó giống
q trình trưởng thành của sâu bướm. quá trình trưởng thành gồm các bước: Đầu tiên
là trạng thái trong trứng, sau đó nở thành sâu, phát triển và đóng kén thành nhộng, kết
quả cuối cùng là nở thành bướm. Mỗi quá trình trưởng thành của sâu bướm cũng giống
như mỗi layer trong MLP vậy. Q trình phải diễn ra tuần tự, khơng thể cắt bỏ phần
nào cả.
Unit (hay cịn gọi là Node):
Như ta có thể quan sát ở hình 2.2.3, trong mỗi layer đều có các hình trịn với màu
sắc tưng ứng với mỗi layer, ta gọi đó là các Unit. Các Unit được đặt tên theo layer của
chúng, lần lượt là Input Unit, Hidden Unit, Output Unit.


9

 Một số ký hiệu: Đầu vào của các hidden layer được ký hiệu bởi z, đầu ra

của mỗi unit thường được ký hiệu là a (thể hiện activation, tức giá trị của
mỗi unit sau khi ta áp dụng activation function lên z). Đầu ra của unit
thứ i trong layer thứ l được ký hiệu là ai(l) Đầu vào của mỗi unit tại layer l
là zi(l) Giả sử thêm rằng số unit trong layer thứ l là d(l). Gọi W(l), b(l) lần
lượt là trọng số và hẳng số của layer l Vector biểu diễn output của
 layer thứ l được ký hiệu là a(l )∈ Rd(l). f(x) là một Activation function.
Sau đây là ảnh cơng thức tính các thơng số của unit.

Hình 2.4 Cơng thức tính thơng số của unit

 z(l) là giá trị đầu vào của một layer, được tính bằng: ma trận trọng số
chuyển vị tại layer thứ l nhân với đầu ra của layer thứ (l-1) sau đó cộng
với hệ số.
 a(l) là đầu các giá trị đầu ra của layer, áp dụng một Activation function lên
z(l) ta sẽ có đầu ra của layer đang xét.
 Từ các cơng thức trên ta tình lần lượt ở các layer cho đến layer cuối cùng
(thường sử dụng softmax) sẽ cho ra kết quả phân lớp của MLP.
Activation functions:
 Mỗi output của một unit (trừ các input units) được tính dựa vào cơng thức:
ai(l)=f(wi(l)T*a(l−1)+bi(l))
 Trong đó f(.) là một (nonlinear) activation function. Ở dạng vector, biểu
thức bên trên được viết là:
a(l)=f(W(l)T*a(l−1)+b(l))


10
 Khi activation function 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 input. Trong tiếng Anh, việc áp dụng lên

từng phần tử như thế này được gọi là element-wise.
 Có một số các hàm thường được sử dụng như:
 Hàm sgn (còn gọi là hard-threshold): chỉ được sử dụng trong PLA, mang
mục đích giáo dục nhiều hơn. Trong thực tế, hàm sgn khơng được sử dụng
vì hai lý do: đầu ra là rời rạc, và đạo hàm tại hầu hết các điểm bằng 0 (trừ
điểm 0 khơng có đạo hàm). Việc đạo hàm bằng 0 này khiến cho các thuật
toán gradient-based (ví dụ như Gradient Descent) khơng hoạt động!
 Hàm sigmoid: có dạng

Đồ thị hàm sigmoid


11
Nếu đầu vào lớn, hàm số sẽ cho đầu ra gần với 1. Với đầu vào nhỏ
(rất âm), hàm số sẽ cho đầu ra gần với 0. Hàm số này được sử dụng nhiều
trong q khứ ví có đạo hàm rất đẹp. Những năm gần đây, hàm số này ít
khi được sử dụng. Nó có một nhược điểm cơ bản là Sigmoid saturate and
kill gradients: Một nhược điểm dễ nhận thấy là khi đầu vào có trị tuyệt
đối lớn (rất âm hoặc rất dương), gradient của hàm số này sẽ rất gần với 0.
Điều này đồng nghĩa với việc các hệ số tương ứng với unit đang xét sẽ
gần như không được cập nhật.
 Hàm ReLU(Rectified Linear Unit): được sử dụng rộng rãi gần đây vì tính
đơn giản của nó. ReLU được biểu diễn như sau: f(x)= x+ = max (0, x).
ReLU được chứng minh giúp cho việc training các Deep Networks nhanh
hơn rất nhiều (theo Krizhevsky et al.). Hình 5 (phải) so sánh sự hội tụ của
SGD khi sử dụng hai activation function khác nhau: ReLU và tanh. Sự
tăng tốc này được cho là vì ReLU được tính tốn gần như tức thời và
gradient của nó cũng được tính cực nhanh với gradient bằng 1 nếu đầu
vào lớn hơn 0, bằng 0 nếu đầu vào nhỏ hơn 0. Mặc dù hàm ReLU khơng
có đạo hàm tại x=0, trong thực nghiệm, người ta vẫn thường định nghĩa

ReLU′(0)=0 và khẳng định thêm rằng, xác suất để input của một unit bằng
0 là rất nhỏ.
Đồ thị hàm ReLU:

 Một vài lưu ý:
 Output layer nhiều khi khơng có activation function mà sử dụng trực tiếp
giá trị đầu vào zi(l) của mỗi unit. Hoặc nói một cách khác, activation
function chính là hàm identity, tức đầu ra bằng đầu vào. Với các bài toán


12
classification, output layer thường là một Softmax Regression layer giúp
tính xác suất để một điểm dữ liệu rơi vào mỗi class.
 Mặc dù activation function cho mỗi unit có thể khác nhau, trong cùng một
network, activation như nhau thường được sử dụng. Điều này giúp cho
việc tính tốn được đơn giản hơn.
MLP hoạt động như thế nào:

 Khởi tạo:Quyết định số layer trong Hidden Layer, chọn ra các activation
function phù hợp cho các layer. Các trọng số W ở các layer được khởi tạo
một cách ngẫu nhiên, và sẽ được cập nhật lại sau mỗi lần học.
 Huấn luyện: Ta truyền vào MLP dữ liệu đã được gán nhãn. Sau mỗi lần
học xong, W ở các layer được update lại. Ta sẽ học đi học lại tập dữ liệu
học nhiều lần, đến khi nào các W của chúng ta ổn nhất hoặc sau N lần lặp
lại. Phân đoạn “Huấn Luyện” là phân đoạn quan trọng nhất, cho nên ở
phần sau ta sẽ tìm hiểu chi tiết về quá trình này.
 Kiểm tra tính chính xác của mơ hình: ta đưa tập dữ liệu “test” và sau đó
đưa ra được các nhãn dự đoán và so sánh với nhãn thật sự của nó. Từ đó ta
sẽ biết được khả năng phân loại của MLP là tốt hay không.
 Sau khi MLP được đánh giá là thành cơng thì ta có thể sử dụng nó để phân

lớp, dự đốn.
c. Chi tiết q trình huấn luyện MLP
Phương pháp phổ biến nhất để tối ưu MLP vẫn là Gradient Descent
(GD). Để áp dụng GD, chúng ta cần tính được gradient của hàm mất mát
theo từng ma trận trọng số W(l) và vector bias b(l) . Trước hết ta cần tính được
lớp dự đốn ŷ của một input x.
a(0) = x
zi(l) = wi(l)Ta(l-1) + bi(l)
z(l) = W(l)T a(l-1) + b(l), l=1, 2, …, L
a(l) = f(z(l)), l= 1, 2, …, L
ŷ =a(L)
Bước này được gói là feedforward vì cách tính tốn được thực hiện từ đầu đến
cuối của network. MLP cũng được gọi
Giả sử J(W, b, X, Y) là một hàm mất mát của bài tốn, trong đó W,bW,b là tập
hợp tất cả các ma trận trọng số giữa các layers và biases của mỗi layer. X, Y là cặp dữ


13
liệu huấn luyện với mỗi cột tương ứng với một điểm dữ liệu. Để có thể áp dụng các
gradient-based methods (mà Gradient Descent là một ví dụ), chúng ta cần tính được
đạo hàm của hàm mất mát theo từng ma trận trọng số và theo từng bias của từng layer:
Một ví dụ của hàm mất mát là hàm Mean Square Error (MSE) tức trung bình của
bình phương lỗi:
J(W,b,X,Y) = 2
=2
Với N là số cặp dữ liệu (x, y) trong tập training. Theo những cơng thức ở trên,
việc tính tốn trực tiếp giá trị này là cực kỳ phức tạp vì hàm mất mát không phụ thuộc
trực tiếp vào các hệ số. Phương pháp phổ biến nhất được dùng có tên là
Backpropagation giúp tính gradient ngược từ layer cuối cùng đến layer đầu tiên. Layer
cuối cùng được tính tốn trước vì nó gần gũi hơn với predicted outputs và hàm mất

mát. Việc tính tốn gradient của các layer trước được thực hiện dựa trên một quy tắc
quen thuộc có tên là chain rule, tức đạo hàm của hàm hợp.
Backpropagation (lan truyền ngược):
 Giới thiệu:
Lan truyền ngược (backpropagation) là giải thuật cốt lõi giúp cho các mơ hình
học sâu có thể dễ dàng thực thi tính tốn được. Với các mạng NN hiện đại, nhờ giải
thuật này mà thuật toán tối ưu với đạo hàm (gradient descent) có thể nhanh hơn hàng
triệu lần so với cách thực hiện truyền thống. Cứ tưởng tượng 1 mơ hình với lan truyền
ngược chạy mất 1 tuần thì có thể mất tới 200,000 năm để huấn luyện với phương pháp
truyền thống!
Mặc dù lan truyền ngược được sử dụng cho học sâu, nhưng nó cịn là cơng cụ
tính tốn mạnh mẽ cho nhiều lĩnh vực khác từ dự báo thời tiết tới phân tích tính ổn
định số học, chỉ có điều là nó được sử dụng với những tên khác nhau. Thực ra nó được
khai phá lại để sử dụng cho rất nhiều lĩnh vực khác nhau. Nhưng một cách tổng quát
không phụ thuộc vào ứng dụng thì tên của nó là “phép vi phân ngược” (reverse-mode
differentiation).
Về cơ bản, nó là một kĩ thuật để nhanh chóng tính được đạo hàm. Và nó là một
mẹo cần thiết mà bạn cần hành trang cho mình khơng chỉ trong lĩnh vực học sâu mà
cịn cho nhiều bài tốn tính tốn số học khac nữa.
 Đồ thị tính tốn:


14
Đồ thị tính tốn là một cách hay để hiểu các biểu thức tốn học. Ví dụ, với biểu
thức e=(a+b) * (b+1), ta có 3 phép tốn: 2 phép cộng và 1 phép nhận. Để dễ giải thích
hơn, ta 2 biến c, d để kết quả mỗi phép tính được gán vào một biến nhất định:
c = a+b
d= b+1
e= c*d
Để tạo đồ thị tính tốn, ta nhóm mỗi phép tính với các biến đầu vào bằng các nút

đồ thị. Bằng các mũi tên ta thể hiện đầu ra của một nút là đầu vào cho nút khác.

Hình 2.5 Đồ thị phép tính

Ta có thể thực hiện các phép tốn bằng cách gắn giá trị cho các biến đầu vào
bằng các giá trị cụ thể nào đó và tính dần các nút từ dưới lên trên của đồ thị. Ví dụ, gắn
a=2 và b=1, ta được giá trị e=6:

Hình 2.6 Đồ thị phép tình khi biết a, b


15
 Đạo hàm với đồ thị tính tốn:
Nếu muốn hiểu đạo hàm trong đồ thị tính tốn, thì chìa khố là cần hiểu được
đạo hàm trên các cạnh của đồ thị. Nếu a ảnh hưởng trực tiếp tới c thì ta muốn biết nó
ảnh hưởng tới c thế nào. Nếu a thay đổi một chút thì c sẽ thay đổi ra sao? Ta gọi nó là
đạo hàm riêng của c theo a.
Để tính các đạo hàm riêng trên đồ thị này, ta cần phải sử dụng luật cộng và luật
nhân:

Các đạo hàm trên mỗi cạnh được thể hiện trên đồ thị dưới đây:

Hình 2.7 Đạo hàm trên từng cạnh của đồ thị

Như vậy, làm sao để biết được một nút bị ảnh hưởng thế nào bởi 1 nút không kết
nối trực tiếp? Ví dụ, làm sao để biết e bị ảnh hưởng thế nào bởi a. Nếu ta thay đổi a 1
đơn vị, thì c cũng thay đổi 1 đơn vị. c thay đổi 1 đơn vị thì e bị thay đổi 2 đơn vị. Vì
vậy, e thay đổi 1*2 đơn vị theo sự thay đổi của a.
Quy tắc chung là lấy tổng tất cả các đường từ một nút tới nút khác và nhân với
đạo hàm trên mỗi cạnh tương ứng. Ví dụ, để tính đạo hàm cùa e theo b, ta có:



16

Quy tắc tổng các đường này chỉ đơn giản là một cách tư duy khác của quy tắc
chuỗi đạo hàm đa biến (multivariable chain rule).
Thay đổi quy tắc tổng: Vấn đề với luật tổng các đường này là nó rất dễ bị bùng
phát tổ hợp nhân theo số cạnh liên kết.

Hình 2.8 Đồ thị biểu diễn liên kết

Ở hình trên, ta có 3 cạnh từ X tới Y và có thêm 3 cạnh từ Y tới Z. Nếu ta lấy đạo
hàm bằng cách lấy tổng tất cả các đường thì ta sẽ cần phải tính tổng của 3*3=9 đường
tất cả:

Ở trên ta chỉ có 9 cạnh, nhưng nó rất dễ bùng nổ số cạnh nếu như đồ thị của ta
phức tạp hơn.
Thay vì sử dụng phương pháp truyền thống như vậy, ta có thể biến đổi 1 chút thì
nhìn sẽ hiệu quả hơn:

Đây chính là khởi điểm của 2 phương pháp đạo hàm tiến (forward-mode
differentitation) và đạo hàm ngược (reverse-mode differentiation). Cả 2 phương pháp
là giúp cho việc tính đạo hàm tổng các cạnh trở nên hiệu quả hơn. Thay vì lấy tổng của
tất cả các cạnh như truyền thống thì chúng sẽ nhóm các đường cùng tới một nốt với
nhau lại rồi tính tổng. Như vậy, mỗi cạnh chỉ cần duyệt 1 lần duy nhất là được!


17
Đạo hàm tiến bắt đầu từ một nút đầu vào và di chuyển dần tới nút cuối cùng cần
tính đạo hàm. Tại mỗi nút, nó sẽ tính tổng tất cả các đường đầu vào của nó. Đương

nhiên là mỗi đường như vậy thể hiện một cách ảnh hưởng tới nút tương ứng bởi đầu
vào. Bằng cách lấy tổng của chúng, ta sẽ thu được tổng tất cả các cách ảnh hưởng tới
nút tương ứng bởi tất cả các đầu vào. Hay nói cách khác, nó chính là đạo hàm của nút
tương ứng đó.

Hình 2.9 Tính đạo hàm theo chain forward
Mặc dù có thể bạn khơng nghĩ cách tính này dựa theo phương pháp đồ thị, nhưng đạo
hàm tiến rất gần với cách tính đạo hàm theo mà bạn được học trong các bài giảng về
giải tích.
Ngược lại, đạo hàm ngược lại bắt đầu từ đầu ra (điểm cần tính) cho tới đầu vào
(điểm bắt đầu). Tại mỗi nút, nó sẽ nhóm tất cả các cạnh xuất phát từ nút tương ứng đó.

Hình 2.10 Tính đạo hàm theo reverse-mode
Đạo hàm tiến theo dõi một đầu vào ảnh hưởng tới tất cả các nút ra sao, còn đạo
hàm ngược thể hiện tất cả các nút ảnh hưởng tới 1 nút đầu vào thế nào. Nói cách khác,
đạo hàm tiến áp dụng phép tốn cho tất cả các nút, cịn đạo hàm ngược áp dụng phép
toán cho tất cả các nút. Ta nhận thấy đạo hàm ngược lại bắt đầu từ đầu ra (điểm cần
tính) phù hợp với bài tốn huấn luyện MLP của ta hơn vì với một đồ thị triệu đầu vào


18
và 1 đầu ra với đạo hàm tiến ta phải duyệt qua đồ thị 1 triệu lần để có thể tính được
đạo hàm. Nhưng với đạo hàm ngược, ta giảm được hẳn xuống còn 1 lần.
 Kết luận:
Khi huấn luyện mạng NN, ta quan tâm tới chi phí (một giá trị đánh giá mạng NN
của ta tồi tới đâu) như một hàm của các tham số (các số mô tả mạng NN suy diễn thế
nào). Khi đó, ta muốn tính đạo hàm của hàm chi phí theo tất cả các tham số để sử dụng
cho việc tối ưu hàm chi phí với thuật tốn gradient descent. Mà hiện nay, tham số của
một mạng NN thường có tới hàng triệu, thậm chí là hàng chục triệu, nên đạo hàm
ngược - cịn được gọi là lan truyền ngược (backpropagation) trong mạng NN giúp ta

tăng tốc lên cực nhiều.
2.1.3 Convolutional neural network (CNN)
a. Tổng quan về CNN
Convolutional neural network (Mạng nơ ron tích chập) là một bộ phận của học
sâu, nó là một deep ANN (mạng lưới thần kinh sâu). CNN thường được dùng cho bài
tốn phân loại ảnh là chính (ví dụ gán nhãn cho thứ mà ta thấy) hay phân hoạch chúng
bằng sự tương đồng (tìm kiếm hình ảnh), và nhận dạng đối tượng trong cảnh vật.
Chúng là những thuật toán có thể xác định nhân dạng, cá nhân, biển báo giao thơng,
khối u, động vật và vơ vàn khía cạnh khác của dữ liệu trực quan (hình ảnh).
CNN giúp ta ứng dụng nhận dạng ký tự quan học (ORC) để số hóa các ký tự và
khiến natural-language processing (xử lý ngơn ngữ tự nhiên) có thể xử lý trên tín hiệu
số và các bản viết tay. CNN cịn có thể sử dụng đối với âm thanh khi nó được tái cấu
trúc lại thành dữ liệu số. Gần đây, các mạng chập đã được áp dụng trực tiếp vào phân
tích văn bản cũng như dữ liệu biểu đồ với các mạng chập biểu đồ.
Hiệu quả của CNN trong nhận dạng hình ảnh là một lời khẳng định về hiệu năng
của học sâu đối với các vấn đề thực tiễn của thế giới. Nó đang tạo ra những tiến bộ lớn
trong lĩnh vực computer vision (thị giác máy tính), có ứng dụng rõ ràng cho xe tự lái,
robot, máy bay không người lái, an ninh, chẩn đoán y tế và phương pháp điều trị cho
người khiếm thị.
CNN được coi như là một dạng đặc biệt của MLP vì nó cũng có cấu trúc và cách
huấn luyện trọng số tương tự với nhau. Vậy có gì thay đổi? Kiến trúc ConvNet đưa ra
giả định rõ ràng rằng các đầu vào là hình ảnh, cho phép chúng ta mã hóa các thuộc tính
nhất định vào kiến trúc. Những điều này sau đó làm cho chức năng chuyển tiếp giữa
output của layer này thành input của layer tiếp theo hiệu quả hơn và giảm đáng kể số


19
lượng tham số trong mạng. Nếu như ở một MLP thông thường mà ta muốn nhận dữ
liệu đầu vào là một ảnh màu với số kênh màu là 3 RGB thì ta phải “làm phẳng” ảnh
đầu vào thành một ma trận một cột và truyền vào MLP vì các neural của nó được sắp

xếp thành từng cột. Cịn đối với CNN, các neural ở input được sắp xếp thành dạng 3
chiều, cho nên ta không cần phải làm “làm phẳng” ảnh đầu vào và mỗi neural chỉ có
kết nối với một vùng nhất định trong layer trước, chứ không phải là tồn bộ neural của
layer trước đó như MLP.
Cách CNN hoạt động: CNN nhận đầu vào là ảnh, xử lý nó và phân loại theo các
mục nhất định (ví dụ: chó, mèo, gấu, …). Máy tính sẽ “nhìn” ảnh đầu vào dưới dạng
dãy các pixel và cấu trúc của dãy đó dựa chất lượng của ảnh đầu vào. Dựa vào độ phân
giải hình ảnh, nó sẽ thấy h * w * d (h = chiều cao, w = chiều rộng, d = số kênh màu
của ảnh). Ví dụ: Một hình ảnh gồm 6 x 6 x 3 mảng ma trận RGB (3 liên quan đến các
giá trị RGB) và một hình ảnh của 4 x 4 x 1 mảng ma trận của hình ảnh thang độ xám.

Hình 2.11 Ảnh đầu vào kích thước 6*6 với 3 kênh màu RGB
Về mặt kỹ thuật, các mơ hình CNN dùng để huấn luyện và kiểm tra, mỗi hình
ảnh đầu vào sẽ chuyển nó qua một loạt các convolution layers (các lớp tích chập) với
các kernals (bộ lọc), Pooling (thu giảm kích thước), các lớp được kết nối đầy đủ (FC)
và áp dụng chức năng Softmax để phân loại một đối tượng có giá trị xác suất từ 0 và 1.
Hình dưới đây là một luồng CNN hồn chỉnh để xử lý hình ảnh đầu vào và phân loại
các đối tượng dựa trên các giá trị. Cấu trúc đầy đủ của một CNN được minh họa ở
hình dưới, bao gồm Convolution Layer, Pooling, Activation fuction, fully connected
layer.


20

Hình 2.12 Cấu trúc CNN hồn chỉnh

b. Cấu trúc và các khái niệm
 Convolution Layer (lớp tích chập):
Convolution là layer đầu tiên trong CNN dùng để trích xuất đặc trưng từ ảnh đầu
vào. Convolution duy trì mối quan hệ giữ các pixel bằng cách tìm hiểu các đặc trưng

của một vùng nhỏ thuộc dữ liệu đầu vào. Đây là phép toán sử dụng 2 input đầu vào là
ma trận điểm ảnh và bộ lọc (filter hay còn được gọi là kernel) được gọi là nhân tích
chập.

Hình 2.13 Phép tốn giữa ma trận điểm ảnh và bộ lọc
Để hiểu rõ hơn về phép tốn nhân tích chập giữa ma trận điểm ảnh với bộ lọc, ta
xét một ma trận điểm ảnh có kích thước 5x5 với một bộ lọc có kích thước 3x3 như
hình 2.14:


21

Hình 2.14 Ma trận 5x5 và bộ lọc 3x3
Sau đó ta nhân tích chập giữa ma trận điểm ảnh với bộ lọc ta sẽ có kết quả là ma
trận “Feature Map”. Cách thực hiện của phép tính này rất đơn giản, ta chỉ cần “kéo”
tâm của bộ lọc trên từng điểm của ma trận điểm ảnh theo hàng ma trận, sau đó nhân
các điểm tương ứng ở ma trận với các điểm của bộ lọc và sau đó cộng tổng lại, ta sẽ có
giá trị mới của một ơ trong ma trận “Feature Map”. Phép tính được minh họa như sau:

Hình 2.15 Các bước tính tốn “Feature Map”
Kết quả của phép nhân tích chập giữa một ma trận điểm ảnh đầu vào với các bộ
lọc khác nhau sẽ cho ra các “Feature Map” khác nhau. Mỗi bộ lọc sẽ có một chức năng
khác nhau, ví dụ như tìm các cạnh, lọc nhiễu, hay làm nét cảnh vật. Dưới đây là một số
các bộ lọc và chức năng của nó:


×