100% found this document useful (1 vote)
428 views78 pages

Tim Hieu Ve Deep Learning

This document is a student project report on deep learning and constructing illustrative models. It introduces feedforward neural networks, convolutional neural networks, and recurrent neural networks. It discusses the architecture and components of these models, including layers, activation functions, loss functions, regularization techniques, backpropagation, and optimization methods. Popular deep learning architectures like LeNet, AlexNet, VGG, and GoogleNet are also examined. The student authors thank their advisor and others who contributed research they referenced.

Uploaded by

ThanhDanh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
428 views78 pages

Tim Hieu Ve Deep Learning

This document is a student project report on deep learning and constructing illustrative models. It introduces feedforward neural networks, convolutional neural networks, and recurrent neural networks. It discusses the architecture and components of these models, including layers, activation functions, loss functions, regularization techniques, backpropagation, and optimization methods. Popular deep learning architectures like LeNet, AlexNet, VGG, and GoogleNet are also examined. The student authors thank their advisor and others who contributed research they referenced.

Uploaded by

ThanhDanh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM

Tìm hiểu về Deep Learning và


xây dựng mô hình minh họa

GIẢNG VIÊN HƯỚNG DẪN:


PGS. TS. Vũ Thanh Nguyên
SINH VIÊN THỰC HIỆN:

Phạm Hữu Danh - 14520134


Phạm Văn Sĩ - 14520763

12, 2017
LỜI CÁM ƠN

Trong suốt thời gian thực hiện đồ án, chúng tôi đã nhận được rất
nhiều sự giúp đỡ từ các thầy cô của trường Đại học Công nghệ thông
tin, đặc biệt là thầy Vũ Thanh Nguyên – người đã trực tiếp giảng dạy
và hướng dẫn chúng tôi thực hiện đồ án này.
Trong quá trình thực hiện, chúng tôi đã tham khảo dựa trên các bài
tổng hợp trong Tiếng Anh của Wang et al. [2017] và Epelbaum [2017],
chúng tôi xin gửi lời cám ơn chân thành đến những đóng góp của các
tác giả.
Mặc dù chúng tôi đã cố gắng rất nhiều nhưng chắc chắn không thể
tránh khỏi những sai sót. Chúng tôi rất mong nhận được sự đóng góp
từ quý thầy cô cũng như các bạn đã đọc bài báo cáo này.
TÓM TẮT

Deep learning là một hướng tiếp cận của lĩnh vực trí tuệ nhân tạo
(Artificial Intelligence - AI) đang được bàn luận sôi nổi. Deep learning
đã cải thiện một cách đáng kể các phương pháp hiện đại nhất của
nhiều vấn đề trong AI như phát hiện đối tượng, nhận diện giọng nói,
dịch máy (machine translation) [LeCun et al., 2015].
Bài báo cáo này giới thiệu các mô hình tiên tiến phổ biến gồm Feed-
forward Neural Network, Convolutional Neural Network và Recurrent
Neural Network. Thay vì chỉ áp dụng Deep Learning với một số thư
viện có sẵn, chúng tôi mong muốn thực sự hiểu nó là gì. Chúng tôi
tập trung vào những ý tưởng ban đầu để hình thành, sự phát triển
của chúng cho đến hiện tại và đánh giá các mô hình.
Mục lục

Mục lục iii

Danh sách hình vẽ vii

Giới thiệu x

1 Feedforward Neural Networks 1


1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Kiến trúc FNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Các kí hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Cân bằng trọng số . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Hàm kích hoạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.1 Hàm sigmoid . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5.2 Hàm tanh . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.3 Hàm ReLU . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.4 Hàm leaky-ReLU . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.5 Hàm ELU . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Các layer của FNN . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.1 Input layer . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.2 Fully connected layer . . . . . . . . . . . . . . . . . . . . . 9
1.6.3 Output layer . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7 Loss function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8 Các kỹ thuật Regularization . . . . . . . . . . . . . . . . . . . . . 11
1.8.1 L2 regularization . . . . . . . . . . . . . . . . . . . . . . . 11
1.8.2 L1 regularization . . . . . . . . . . . . . . . . . . . . . . . 12

iii
MỤC LỤC

1.8.3 Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.8.4 Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.8.5 Batch Normalization . . . . . . . . . . . . . . . . . . . . . 13
1.9 Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.9.1 Backpropagate thông qua Batch Normalization . . . . . . 16
1.9.2 Cập nhật error . . . . . . . . . . . . . . . . . . . . . . . . 16
1.9.3 Cập nhật trọng số . . . . . . . . . . . . . . . . . . . . . . 17
1.9.4 Cập nhật Coefficient . . . . . . . . . . . . . . . . . . . . . 18
1.10 Dữ liệu nào sử dụng cho gradient descent? . . . . . . . . . . . . . 18
1.10.1 Full-batch . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.10.2 Stochastic Gradient Descent (SGD) . . . . . . . . . . . . . 18
1.10.3 Mini-batch . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.11 Những kỹ thuật Gradient optimization . . . . . . . . . . . . . . . 19
1.11.1 Momentum . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.11.2 Nesterov accelerated gradient . . . . . . . . . . . . . . . . 20
1.11.3 Adagrad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.11.4 RMSprop . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.11.5 Adadelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.11.6 Adam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.12 Khởi tạo trọng số . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 Convolutional Neural Networks 24


2.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Kiến trúc CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Tính đặc thù của CNN . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 Feature map . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.2 Input layer . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.3 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.4 Convolution . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.5 Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.6 Towards fully connected layers . . . . . . . . . . . . . . . . 29
2.3.7 Fully connected layers . . . . . . . . . . . . . . . . . . . . 30
2.3.8 Output connected layer . . . . . . . . . . . . . . . . . . . . 31

iv
MỤC LỤC

2.4 Các điều chỉnh với Batch Normalization . . . . . . . . . . . . . . 31


2.5 Các kiến trúc CNN . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1 Realistic architectures . . . . . . . . . . . . . . . . . . . . 33
2.5.2 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.3 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.4 VGG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.5 GoogleNet . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.6 ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6 Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6.1 Backpropagate trong Batch Normalization . . . . . . . . . 37
2.6.2 Cập nhật Error . . . . . . . . . . . . . . . . . . . . . . . . 37
2.6.2.1 Backpropagate từ output đến fc . . . . . . . . . . 37
2.6.2.2 Backpropagate từ fc đến fc . . . . . . . . . . . . 38
2.6.2.3 Backpropagate từ fc đến pool . . . . . . . . . . . 38
2.6.2.4 Backpropagate từ pool đến conv . . . . . . . . . 39
2.6.2.5 Backpropagate từ conv đến conv . . . . . . . . . 39
2.6.2.6 Backpropagate từ conv đến pool . . . . . . . . . 40
2.6.3 Cập nhật trọng số . . . . . . . . . . . . . . . . . . . . . . 40
2.6.3.1 Cập nhật trọng số từ fc đến fc . . . . . . . . . . . 40
2.6.3.2 Cập nhật trọng số từ fc đến pool . . . . . . . . . 41
2.6.3.3 Cập nhật trọng số từ conv đến conv . . . . . . . 41
2.6.3.4 Cập nhật trọng số từ conv đến pool và conv đến
input . . . . . . . . . . . . . . . . . . . . . . . . 42
2.6.4 Cập nhật Coefficient . . . . . . . . . . . . . . . . . . . . . 42
2.6.4.1 Cập nhật Coefficient từ fc đến fc . . . . . . . . . 42
2.6.4.2 Cập nhật Coefficient từ fc đến pool và conv đến
pool . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6.4.3 Cập nhật Coefficient từ conv đến conv . . . . . . 43

3 Recurrent Neural Networks 45


3.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2 Kiến trúc RNN-LSTM . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.1 Hướng Forward trong RNN-LSTM . . . . . . . . . . . . . 45

v
MỤC LỤC

3.2.2 Hướng backward trong RNN-LSTM . . . . . . . . . . . . . 47


3.3 Extreme Layers và loss function . . . . . . . . . . . . . . . . . . . 47
3.3.1 Input layer . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.2 Output layer . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.3 Loss function . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4 Các đặc trưng của RNN . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.1 Cấu trúc RNN . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.2 Forward pass trong RNN . . . . . . . . . . . . . . . . . . . 50
3.4.3 Backpropagation trong RNN . . . . . . . . . . . . . . . . . 50
3.4.4 Cập nhật trọng số và coefficient trong RNN . . . . . . . . 51
3.5 Đặc trưng của LSTM . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.1 Cấu trúc LSTM . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2 Hường forward trong LSTM . . . . . . . . . . . . . . . . . 53
3.5.3 Batch normalization . . . . . . . . . . . . . . . . . . . . . 55
3.5.4 Backpropagation trong LSTM . . . . . . . . . . . . . . . . 56
3.5.5 Cập nhật trọng số và coefficient trong LSTM . . . . . . . 57

4 Xây dựng mô hình minh họa 58


4.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2 Mã nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3 Dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.4 Xây dựng mô hình . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5 Huấn luyện mô hình . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6 Kết quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5 Kết luận và hướng phát triển 63

Trích dẫn 64

vi
Danh sách hình vẽ

1.1 Neural Network với N + 1 layers (N − 1 hidden layers). Shallow


architectures thường chỉ có một hidden layer. Deep learning có một
số hidden layer, thường chứa cùng số lượng hidden neuron. . . . . 2
1.2 Quá trình weight averaging. . . . . . . . . . . . . . . . . . . . . . 3
1.3 Hàm sigmoid và đạo hàm của nó. . . . . . . . . . . . . . . . . . . 4
1.4 Hàm tanh và đạo hàm của nó. . . . . . . . . . . . . . . . . . . . . 5
1.5 Hàm RELU và đạo hàm của nó. . . . . . . . . . . . . . . . . . . . 6
1.6 Hàm leaky-RELU và đạo hàm của nó. . . . . . . . . . . . . . . . 7
1.7 Hàm ELU và đạo hàm của nó. . . . . . . . . . . . . . . . . . . . . 8
1.8 Neural network trong hình 1.1 với dropout cho cả các hidden layer
và input. Thông thường, một tỉ lệ khác nhau (thấp hơn) dùng cho
việc tắc các nơ-ron của input và các hidden layers. . . . . . . . . . 14

2.1 Một kiến trúc CNN (đây là LeNet): các convolution operation được
theo sau là pooling operation, cho đến khi kích thước feature map
giảm còn một. Fully connected layers sau đó được kết nối. . . . . 25
2.2 Input layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3 Padding của feature map. Những số không được thêm vào là những
tile màu đỏ, kích thước padding này là P = 1. . . . . . . . . . . . 27
2.4 Convolution operation . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 The pooling operation . . . . . . . . . . . . . . . . . . . . . . . . 29
2.6 Fully connected operation để lấy chiều rộng và chiều cao 1. . . . . 30
2.7 Fully connected operation, giống như FNN operations. . . . . . . 31
2.8 Sơ đồ đại diện của các layer khác nhau . . . . . . . . . . . . . . . 33

vii
DANH SÁCH HÌNH VẼ

2.9 Realistic Fully connected operation và Realistic Convolution oper-


ation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.10 The LeNet CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.11 The AlexNet CNN . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.12 The VGG CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.13 The GoogleNet CNN . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.14 Kiến trúc Bottleneck Residual. Sơ đồ trên lí thuyết bên trái, thực
tế ở bên phải. Nó cần một 1 × 1 conv với stride 1 và padding 0,
sau đó một VGG conv chuẩn và 1 × 1 conv. . . . . . . . . . . . . 36
2.15 The ResNet CNN . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.16 Backpropagate từ output đến fc. . . . . . . . . . . . . . . . . . . . 38
2.17 Backpropagate từ fc đến fc. . . . . . . . . . . . . . . . . . . . . . 38
2.18 Backpropagate từ fc đến pool. . . . . . . . . . . . . . . . . . . . . 39
2.19 Backpropagate từ pool đến conv. . . . . . . . . . . . . . . . . . . 39
2.20 Backpropagate từ conv đến conv. . . . . . . . . . . . . . . . . . . 40
2.21 Backpropagate từ conv đến pool. . . . . . . . . . . . . . . . . . . 40
2.22 Cập nhật trọng số giữa hai fc layer . . . . . . . . . . . . . . . . . 41
2.23 Cập nhật trọng số giữa fc layer và pool layer. . . . . . . . . . . . 41
2.24 Cập nhật trọng số giữa hai conv layer. . . . . . . . . . . . . . . . 41
2.25 Cập nhật trọng số từ conv đến pool cũng giống như từ conv đến
input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.26 Cập nhật Coefficient giữa hai fc layer. . . . . . . . . . . . . . . . 42
2.27 Cập nhật Coefficient từ fc đến pool cũng giống như từ conv đến
pool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.28 Cập nhật Coefficient giữa hai conv layer. . . . . . . . . . . . . . . 43

3.1 Kiến trúc RNN, với dữ liệu được lan truyền theo cả "không gian"
và "thời gian". Trong ví dụ, chiều thời gian có kích thước là 8,
không gian có kích thức là 4. . . . . . . . . . . . . . . . . . . . . . 46
3.2 Hướng backward trong kiến trúc. Do đó không thể tính toán gra-
dient của một layer mà không tính toán những cái mà nó đã đi
qua. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3 Các chi tiết của RNN hidden unit . . . . . . . . . . . . . . . . . . 49

viii
DANH SÁCH HÌNH VẼ

3.4 Cách hidden unit RNN tương tác với nhau. . . . . . . . . . . . . . 49


3.5 Chi tiết LSTM hidden unit . . . . . . . . . . . . . . . . . . . . . . 53
3.6 Cách các LSTM hidden unit tương tác với nhau . . . . . . . . . . 54

4.1 Minh họa dữ liệu của CIFAR-10. . . . . . . . . . . . . . . . . . . 59


4.2 Mô hình CNN đơn giản của chúng tôi. . . . . . . . . . . . . . . . 60

ix
Giới thiệu

Bản chất kiến trúc nhiều lớp cho phép deep learning khả năng giải quyết nhiều
vấn đề AI phức tạp hơn [Bengio et al., 2009]. Vì vậy, các nhà nghiên cứu đang mở
rộng ứng dụng deep learning tới các lĩnh vực và vấn đề mới, ví dụ: Osako et al.
[2015] sử dụng recurrent neural network để denoise các tính hiệu thoại; Gupta
et al. [2015] để khám phá các pattern phân cụm của các biểu hiện gen; Gatys
et al. [2015] sử dụng một mô hình nơ-ron để tạo ra các hình ảnh với các kiểu
khác nhau; Wang et al. [2016] dùng deep learning để phân tích tâm lý từ nhiều
phương thức đồng thời; vv. Đây là giai đoạn chứng kiển sự bùng nổ của lĩnh vực
nghiên cứu deep learning.

Để tham gia và thúc đẩy quá trình nghiên cứu deep learning, chúng ta cần phải
hiểu rõ các kiến trúc của các mô hình và tại sao chúng tồn tại. Chúng tôi tập
trung vào ba loại mô hình deep learning phổ biến theo một trình tự từ đơn giản
đến phức tạp thông qua các chương.

Chương 1 bắt đầu với loại mô hình đầu tiên được giới thiệu trong lịch sự: mô
hình feedforward neural network, đây là bước phát triển từ thuật toán perceptron
nguyên bản Rosenblatt [1958]. Các mô hình feedforward network có cấu trúc xếp
chồng các lớp perceptron lên trên những lớp khác, như non-linear regression.

Trong chương 2, chúng tôi giới thiệu convolutional neural network, đặc biệt dùng
để xử lí dữ liệu hình ảnh. Chúng tôi giới thiệu về những kiến thứ toán như convo-
lution, pooling, v.v. Cũng như cho thấy sự thay đổi của các kiến trúc khối được
giới thiệu ở chương 1. Nhiều kiến trúc neural network được giới thiệu kèm theo
phụ lục của chúng.

x
Chương 3 sẽ giới thiệu recurrent neural network, kiến trúc thích hợp để xử lí
các dữ liệu có cấu trúc temporal–như thời gian và văn bản. Những điểm mới và
những sửa đổi sẽ được mô tả chi tiết trong văn bản chính, và các phụ lục cung
cấp các công thức phức tạp nhất của loại kiến trúc mạng này.

Ở chương 4, chúng tôi xây dựng một mô hình minh họa thuộc loại Convolu-
tional Neural Network (được giới thiệu trong chương 2), áp dụng các kỹ thuật,
phương pháp trong bài báo cáo để thực hành các kiến thức đã tìm hiểu.

xi
Chương 1

Feedforward Neural Networks

1.1 Giới thiệu


Trong phần này, chúng tôi xem xét loại neural network đầu tiên đã được phát
triển trong lịch sử: Feedforward Neural Network (FNN). Mạng này không dựa
vào bất kì cấu trúc dữ liệu đầu vào nào. Nó là một công cụ machine learning rất
mạnh, đặc biệt là khi được sử dụng với các kỹ thuật regularization. Những kỹ
thuật mà chúng tôi sẽ trình bày, cho phép giải quyết các vấn đề huấn luyện khi
xử lý các dữ liệu có cấu trúc "sâu": neural network với một số lượng đáng kể các
hidden state và các hidden layer, những thứ đã được chứng minh là rất khó để
huấn luyện (các vấn đề vanishing gradient và overfitting).

1.2 Kiến trúc FNN


Một FNN được tạo thành bởi một input layer, một (shallow network) hoặc nhiều
hơn (deep network) các hidden và một output layer. Mỗi layer của network (trừ
output) được kết nối với một layer phía sau. Kết nối này là trung tâm của cấu
trúc FNN và có hai tính năng chính ở dạng đơn giản nhất: cân bằng trọng số và
kích hoạt. Chúng tôi sẽ trình bày các tính năng này trong các phần sau.

1
Hình 1.1: Neural Network với N + 1 layers (N − 1 hidden layers). Shallow archi-
tectures thường chỉ có một hidden layer. Deep learning có một số hidden layer,
thường chứa cùng số lượng hidden neuron.

1.3 Các kí hiệu


Trong những phần sau, chúng tôi sẽ sử dụng

• N số lượng layer (không tính input) trong một Neural Network.

• Ttrain số lượng example trong dữ dữ liệu huấn luyện.

• Tmb số lượng example trong một mini-batch (xem phần 1.7).

• t ∈ J0, Tmb − 1K instance trong mini-batch.

• ν ∈ J0, N K số lượng layer của FNN.

• Fν số lượng nơ-ron của layer thứ ν.


(t) (0)(t)
• Xf = hf với f ∈ J0, F0 − 1K các biến đầu vào.
(t)
• yf với f ∈ [0, FN − 1] các biến đầu ra (để dự đoán).

2
Hình 1.2: Quá trình weight averaging.

(t)
• ŷf với f ∈ [0, FN − 1] đầu ra của network.
(ν)f 0
• Θf với f ∈ [0, Fν − 1], f 0 ∈ [0, Fν+1 − 1] và ν ∈ [0, N − 1] các ma trận
trọng số (weights matrix)

1.4 Cân bằng trọng số


Một trong hai component chính của FNN là quá trình cân bằng trọng số, ước
lượng để cân bằng các output layer phía trước với những ma trận trọng số để đi
đến layer kế tiếp. Minh họa trên Hình 1.2.
Quá trình cân bằng trọng số dưới dạng công thức:

−1+
FνX
(t)(ν) (ν)f (t)(ν)
af = Θ f 0 hf 0 , (1.1)
f 0 =0

với ν ∈ J0, N −1K, t ∈ J0, Tmb −1K và f ∈ J0, Fν+1 −1K.  ở đây để bao gồm hoặc
không bao gồm bias. Trong thực tế, vì chúng ta sẽ sử dụng batch-normalization,
chúng ta có thể bỏ qua nó một cách an toàn ( = 0 trong mọi trường hợp).

3
Hình 1.3: Hàm sigmoid và đạo hàm của nó.

1.5 Hàm kích hoạt


Hidden neuron của mỗi layer được định nghĩa như sau
 
(t)(ν+1) (t)(ν)
hf = g af , (1.2)

với ν ∈ J0, N − 2K, f ∈ J0, Fν+1 − 1K và t ∈ J0, Tmb − 1K. Ở đây g làm một hàm
kích hoạt – thành phần chính thứ hai của FNN – dự đoán dữ liệu đầu ra một
cách không tuyến tính. Trong thực tế, g thường là một trong những hàm được
mô tả trong những phần dưới đây.

1.5.1 Hàm sigmoid


Hàm sigmoid nhận giá trị trong đoạn [0, 1] với công thức:

1
g(x) = σ(x) = . (1.3)
1 + e−x

Đạo hàm của nó là:

σ 0 (x) = σ(x) (1 − σ(x)) . (1.4)

Hàm activation này không được dùng nhiều trong ngày nay (trừ RNN-LSTM
network mà chúng tôi sẽ trình bày trong chương 3).

4
Hình 1.4: Hàm tanh và đạo hàm của nó.

1.5.2 Hàm tanh


Hàm tanh nhận giá trị trong đoạn [0, 1] với công thức:

1 − e−2x
g(x) = tanh(x) = . (1.5)
1 + e−2x

Đạo hàm của nó là

tanh0 (x) = 1 − tanh2 (x) . (1.6)

Hàm kích hoạt này không được phổ biến do cách chúng ta sử dụng hàm kích
hoạt, sẽ được trình trong phần kế.
Nó chưa từng được sử dụng cho tới khi được dùng trong công thức chuẩn hóa
(standard formulation) của mô hình RNN-LSTM (chương 3).

1.5.3 Hàm ReLU


Hàm ReLU – Rectified Linear Unit (hàm đơn vị tuyến tính hiệu chỉnh) – nhận
giá trị trong đoạn [0, +∞] với công thức:

x x ≥ 0
g(x) = ReLU(x) = . (1.7)
0 x < 0

5
Hình 1.5: Hàm RELU và đạo hàm của nó.

Đạo hàm của nó là:



1 x ≥ 0
0
ReLU (x) = . (1.8)
0 x < 0

Hàm kích hoạt này được sử dụng rộng rãi nhất hiện nay. Hai biến thể phổ
biến hơn của nó cũng có thể được tìm thấy: leaky-ReLU và ELO - Exponential
Linear Unit (hàm đơn vị tuyến tính mũ). Chúng đã được giới thiệu bởi vì hàm
kích hoạt ReLU có xu hướng bỏ đi một số tế bào thần kinh ẩn: khi tế bào đã
được tắt (giá trị bằng 0), nó không bao giờ có thể được bật lên lần nữa.

1.5.4 Hàm leaky-ReLU


The leaky-ReLU nhận giá trị trong đoạn [−∞, +∞] và là một sửa đổi nhỏ của
ReLU cho phép các hidden neuron nhận giá trị khác không với bất kì giá trị x.
Công thức của nó là

x x≥0
g(x) = leaky-ReLU(x) = . (1.9)
0.01 x x < 0

6
Hình 1.6: Hàm leaky-RELU và đạo hàm của nó.

Đạo hàm của nó là



1 x≥0
leaky-ReLU0 (x) = . (1.10)
0.01 x < 0

Một biến thể của leaky-ReLU cũng có thể được tìm thấy: Parametric-ReLU,
trong đó 0, 01 trong định nghĩa của leaky-ReLU được thay thế bởi một hệ số α,
có thể được tính bằng cách backpropagation.


x x≥0
g(x) = Parametric − ReLU(x) = . (1.11)
α x x < 0

Đạo hàm của nó là



1 x≥0
Parametric − ReLU0 (x) = . (1.12)
α x < 0

1.5.5 Hàm ELU


Hàm ELU – Exponential Linear Unit (hàm đơn vị tuyến tính mũ) – function
nhận các giá trị trong đoạn [−1, +∞] và nó được lấy cảm hứng từ leaky-ReLU:

7
Hình 1.7: Hàm ELU và đạo hàm của nó.

giá trị khác 0 cho tất cả x.



x x≥0
g(x) = ELU(x) = . (1.13)
ex − 1 x < 0

Đạo hàm của nó



1 x≥0
ELU0 (x) = . (1.14)
ex x<0

1.6 Các layer của FNN


Nhưng được minh họa trong hình 1.1, một FNN thông thường sẽ bao gồm một
vài layer cụ thể. Chúng tôi sẽ giải thích chúng từng cái một.

1.6.1 Input layer


Input layer là một trong hai nơi mà các dữ liệu đi vào. Trong chương này, chúng
(t)
tôi xem xét các dữ liệu có kích thước F0 , kí hiệu Xf , với 1 t ∈ J0, Tmb − 1K
(kích thước của mini-batch, khi chúng tôi sẽ nói về kỹ thuật gradient descent),
1
Để huấn luyện FNN, chúng tôi cùng tính toán qua trình forward và backward cho Tmb
sample của dữ liệu huận luyện, với Tmb  Ttrain . Trông các phần sau, sẽ có t ∈ J0, Tmb − 1K.

8
và f ∈ J0, F0 − 1K. Một bước xử lí thông thường để trung tâm hóa dữ liệu đầu
vào:

(t) (t)
X̃f = Xf − µf , (1.15)

với

1 X−1
Ttrain
(t)
µf = Xf . (1.16)
Ttrain t=0

Điều này tương ứng việc tính trung bình cho mỗi loại dữ liệu trong tập huấn
luyện. Theo các ký hiệu, chúng ta hãy nhớ lại rằng

(t) (t)(0)
Xf = hf . (1.17)

1.6.2 Fully connected layer


The fully connected operation thực chất chỉ là hoạt động kết nối giữa việc cấn
bằng trọng số và quá trình kích hoạt. Cụ thể, ∀ν ∈ J0, N − 1K

ν −1
FX
(t)(ν) (ν)f (t)(ν)
af = Θf 0 hf 0 . (1.18)
f 0 =0

và ∀ν ∈ J0, N − 2K
 
(t)(ν+1) (t)(ν)
hf = g af . (1.19)

với các trường hợp mà ν = N − 1, hàm kích hoạt sẽ thay thế hàm output.

1.6.3 Output layer


Đầu ra của FNN

(t)(N ) (t)(N −1)


hf = o(af ), (1.20)

9
với o được gọi làm hàm output. Trong các trường hợp Euclidean loss function,
hàm output chỉ là nhận dạng. Các các bài toán phân loại, o là hàm softmax.
(t)(N −1)

(t)(N −1)
 eaf
o af = F −1 (1.21)
N (t)(N −1)
P a
e f0
f 0 =0

1.7 Loss function


Loss function đánh giá lỗi của FNN khi nó ước tính dữ liệu được dự đoán (Nơi
thứ hai mà dữ liệu đầu vào xuất hiện). Với một bài toán regression, đây là một
hàm mean square error (MSE) đơn giản.

Tmb −1 FX
N −1 
1 X (t) (t)(N )
2
J(Θ) = yf − hf , (1.22)
2Tmb t=0 f =0

trong khi với các bài toán phân loại, loss function được gọi là hàm cross-entropy

Tmb −1 FX
N −1
1 X (t)(N )
J(Θ) = − δ f ln hf , (1.23)
Tmb t=0 f =0 y(t)

và với một bài toán regression chuyển thành một bài toán phân loại, gọi C là số
lượng của mục (để phân loại) dẫn đến

Tmb −1 FX
N −1 C−1
1 X X (t)(N )
J(Θ) = − δyc(t) ln hf c . (1.24)
Tmb t=0 f =0 c=0 f

Ở mỗi bước huấn luyện, chúng tôi kí hiệu sau để hiển thị rõ ràng hơn.

mb −1
TX
J(Θ) = Jmb (Θ) . (1.25)
t=0

10
1.8 Các kỹ thuật Regularization
Một trong những khó khăn chính khi xử lí các kiến trúc deep learning là làm cho
huấn luyện deep neural network môt cách hiệu quả. Để đạt được đều đó, nhiều
kỹ thuật regularization được phát minh. Chúng tôi sẽ đánh giá chung trong phần
này.

1.8.1 L2 regularization
L2 regularization là môt kỹ thuật regularization thông dụng. Nó ước tính để thêm
regularizing term vào loss function theo cách sau

N
X −1
(ν) 2 N
X X−1 FX
−1 Fν+1 ν −1 
(ν)f 0
2
JL2 (Θ) = λL2 Θ = λL2
L2
Θf . (1.26)
ν=0 ν=0 f =0 f 0 =0

Kỹ thuật regularization hầu như luôn được sử dụng, nhưng không phải được dùng
riêng lẻ. Giá trị thông thường của λL2 nằm trong khoảng 10−4 − 10−2 . Kỹ thuật
L2 regularization này có cách diễn giải theo Bayes: nó là suy luận Bayes với phân
phối chuẩn của trọng số. Thật vậy, với ν đã cho, quá trình cân bằng trọng số như
sau
ν −1
FX
(t)(ν) (ν)f (t)(ν)
af = Θf 0 hf 0 +, (1.27)
f 0 =0

với  là noise term của trung bình 0 và phương sai σ 2 . Do đó phân phối chuẩn
sau đây cho tất cả các giá trị của t và f :
F −1 !

(t)(i) (ν)f (t)(ν)
N af Θf 0 hf 0 , σ 2 . (1.28)

f 0 =0

 
(ν)f
Giả sử tất cả các trọng số có một phân phối chuẩn có dạng N Θf 0 λ−1
L2 với

11
cùng tham số λL2 , chúng ta có biểu thức sau

Y−1

Y−1 Fν+1
"
ν −1
Tmb
! F −1 #
FX ν
Y  
(t)(ν) (ν)f (t)(ν) (ν)f
P= N af Θf 0 hf 0 , σ 2 N Θf 0 λ−1 L2

t=0 f =0 f 0 =0 f 0 =0
 
(t)(ν) PFi −1 (ν)f (t)(ν) 2 F −1 r (ν)f 2
   
Tmb Y−1
Y−1 Fν+1 a − 0 =0 Θf 0 hf 0 ν Θ 0 λL2
 √ 1 e− λL2 −
f f Y f
= 2σ 2 e 2  .
t=0 f =0
2πσ 2
f 0 =0

(1.29)

Lấy log của nó và bỏ qua các constant term, ta có


!2
1
TX X−1
mb −1 Fν+1
(t)(ν)
ν −1
FX
(ν)f (t)(ν)
Fν+1 −1 Fν −1 
X X (ν)f
2
L∝ af − Θf 0 hf 0 + λL2 Θf 0 ,
Tmb σ 2 t=0 f =0 f 0 =0 f =0 f 0 =0

(1.30)

và term cuối cùng chính xác là L2 regulator cho một giá trị nu cho trước (xem
công thức (1.26).

1.8.2 L1 regularization
L1 regularization thay thế norm trong kỹ thuật L2 regularization

N
X −1
(ν) N
X X−1 FX
−1 Fν+1 ν −1
(ν)f
JL1 (Θ) = λL1 Θ = λL1
L1
Θf0 . (1.31)
ν=0 ν=0 f =0 f 0 =0

Nó cũng thường được sử dụng như L2 regularization, nhưng không dùng theo cách
riêng lẻ. giá trị thông thường của λL1 trong khoảng 10−4 − 10−2 . L1 regularization
với suy luận Bayes với phân phối chuẩn Laplacian.
  λ
(ν)f
(ν)f L1 −λL1 Θf 0
F Θf 0 0, λL1 =
−1
e . (1.32)
2

12
1.8.3 Clipping
Clipping ngăn ngừa L2 norm của các trọng số vượt quá threshold C. Cụ thể với
việc cập nhật trọng số, nếu L2 norm của chúng vượt quá C, nó trở về C

(ν)f (ν)f C
if Θ(ν) L2 > C −→ Θf 0 = Θf 0 × . (1.33)
kΘ(ν) kL2

Kỹ thuật regularization này tránh vấn đề exploding gradient, và nó được dùng


chủ yếu trong RNN-LSTM network. Giá trị thông thường của C trong khoảng
100 − 101 . Bây giờ chúng ta hãy chuyển sang các kỹ thuật regularization hiệu quả
nhất cho một FNN: dropout và Batch-normalization.

1.8.4 Dropout
Là một thủ tục đơn giản cho phép thực hiện backpropagation tốt hơn cho các
bài toán phân loại: dropout tính toán để làm giảm các hidden units (trong một
số trường hợp, ngay cả một số biến đầu vào) cho mỗi example huấn luyện.

Việc tính toán này được thực hiện thông qua: với ν ∈ J1, N − 1K
 
(ν) (ν) (ν)
hf = mf g af (1.34)

(i) 1
với mf theo một phân phối Bernoulli p, thông thường p = 5
cho input layer và
p = 12 cho những cái khác.

Dropout [Srivastava et al., 2014] được xem là kỹ thuật regularization thành công
nhất cho tới khi Batch Normalization xuất hiện.

1.8.5 Batch Normalization


Batch normalizationIoffe & Szegedy [2015] tính toán để kết hợp chuẩn hóa mini-
batch cho từng loại dữ liệu, ngay cả input layer. Trong bài báo ban đầu, các tác
giả lập luận rằng bước này nên được thực hiện sau các convolutional layer, nhưng
trên thực tế nó đã được chứng minh là hiệu quả hơn sau bước không tuyến tính.

13
Hình 1.8: Neural network trong hình 1.1 với dropout cho cả các hidden layer
và input. Thông thường, một tỉ lệ khác nhau (thấp hơn) dùng cho việc tắc các
nơ-ron của input và các hidden layers.

Ở đây, chúng tôi xem xét trường hợp ∀ν ∈ J0, N − 2K

(t)(ν+1) (ν)
(t)(ν) hf − ĥf
h̃f = r 2 , (1.35)
(ν)
σ̂f +

với
Tmb −1
(ν) 1 X (t)(ν+1)
ĥf = hf (1.36)
Tmb t=0
Tmb −1 

(ν)
2 1 X (t)(ν+1) (ν)
2
σ̂f = hf − ĥf . (1.37)
Tmb t=0

Để đảm bảo rằng transform có thể đại diện cho identity transform, chúng ta
thêm hai tham số bổ sung (γf , βf ) vào mô hình.

14
(t)(ν) (ν) (t)(ν) (ν) (ν) (t)(ν) (ν)
yf = γf h̃f + βf = γ̃f hf + β̃f . (1.38)

(ν)
Hệ số βf thúc đẩy chúng ta thoát khỏi xu hướng thiên vị, vì nó được bao
gồm trong batchnorm. Trong quá trình huấn luyện, ta phải tính tóa giá trị trung
bình và phương sai, phục vụ cho việc đánh giá cross-validation và tập dữ liệu
kiểm tra (gọi e là số các vòng lặp – iterations/epochs)

h i
(t)(ν) (ν)
h i eE hf + ĥf
(t)(ν+1) e
E hf = , (1.39)
e+1 e+1
h i  2
(t)(ν) (ν)
h i eVar hf + σ̂f
(t)(ν+1) e
Var hf = (1.40)
e+1 e+1

và trong quá trình kiểm tra


h
(t)(ν)
i h
(t)(ν)
i h
(t)(ν)
i Tmb h
(t)(ν)
i
E hf = E hf , Var hf = Var hf . (1.41)
Tmb − 1

vì vậy

(t)(ν) (t)(ν)
h − E[hf ]
(t)(ν)
yf =
(ν)
γf rf h i
(ν)
+ βf . (1.42)
(t)(ν)
V ar hf +

Trong thực tế, có thể được loại bỏ dropout mà không mất độ chính xác khi
sử dụng batch normalization.

1.9 Backpropagation
Backpropagation LeCun et al. [1998] là kỹ thuật cơ bản để giảm loss function
error từ đó dự đoán chính xác cái chúng ta cần. giống như cái tên, Nó đi ngược
lại FNN với cái error được xuất ra và cập nhật lại trọng số. Trong thực tế, phải
tính toán một loạt các gradient term, và đây là một việc tính toán tẻ nhạt. Tuy

15
nhiên, nếu được thực hiện đúng, đây là công việc hữu ích và quan trọng nhất
trong FNN. Do đó chúng tôi mô tả sẽ chi tiết làm thế nào để tính toán mỗi trọng
số (và Batistorm coefficients) gradients.

1.9.1 Backpropagate thông qua Batch Normalization


Backpropagation giới thiệu một gradient mới

(t0 )(ν)
(tt0 )(ν) ∂yf 0
δff 0 Jf = (t)(ν+1)
. (1.43)
∂hf

với
(t0 )(ν) (t)(ν)
" #
(tt0 )(ν) (ν) t0
1 + h̃f h̃f
Jf = γ̃f δt − . (1.44)
Tmb

1.9.2 Cập nhật error


Để backpropagate giá trị loss error thông qua FNN, chúng ta cần tính toán error
rate

(t)(ν) ∂
δf = (t)(ν)
J(Θ) , (1.45)
∂af

với ∀ν ∈ J0, N − 2K

(t)(ν)

(t)(ν)
 TX X−1
mb −1 Fν+1
(ν+1)f 0 (tt0 )(ν) (t0 )(ν+1)
0
δf =g af Θf Jf δf 0 , (1.46)
t0 =0 f 0 =0

(t)(N −1)
giá trị δf phụ thuộc vào loss function đã dùng. Với MSE loss function

(t)(N −1) 1  (t)(N ) (t)



δf = h − yf , (1.47)
Tmb f

16
và với cross entropy loss function

(t)(N −1) 1  (t)(N ) f



δf = h − δy(t) . (1.48)
Tmb f

Hợp nhất ký hiệu của các chương 1, 2 và 3, chúng tôi gọi


 
(t)(ν+1) (t)(ν) (ν+1)f 0
Hf f 0 = g 0 af Θf , (1.49)

vì vậy quy luật cập nhật cho error rate là

mb −1
TX Fν+1 −1
(tt0 )(ν)
(t)(ν)
X (t)(ν+1) (t)(ν+1)
δf = Jf Hf f 0 δf 0 . (1.50)
t0 =0 f 0 =0

1.9.3 Cập nhật trọng số


Thông qua việc tính toán error rate, đạo hàm của error rate đơn giản. Chúng ta
có ∀ν ∈ J1, N − 1K
00
(ν)f
Θ(ν)f 1
TX X−1
mb −1 Fν+1 Fν ∂Θ
X f 000
(t)(ν−1) (t)(ν)
mb −1
TX
(t)(ν) (t)(ν−1)
∆f 0 = y
(ν)f f 000
δf 00 = δf yf 0 .
Tmb t=0 00 000 ∂Θf 0 t=0
f =0 f =0

(1.51)


mb −1
TX
Θ(0)f (t)(0) (t)(0)
∆f 0 = δf hf 0 . (1.52)
t=0

17
1.9.4 Cập nhật Coefficient
Quy luật cập nhật Batchnorm coefficient ccó thể tính thông qua error rate.

γ(ν)
TX X−1
mb −1 Fν+1 (t)(ν+1)
∂af 0 (t)(ν+1)
TX X−1
mb −1 Fν+1
(ν+1)f 0 (t)(i) (t)(ν+1)
∆f = (i)
δf 0 = Θf h̃f δf 0 ,
t=0 f 0 =0 ∂γf t=0 f 0 =0

(1.53)

β(ν)
TX X−1
mb −1 Fν+1 (t)(ν+1)
∂af 0 (t)(ν+1)
TX X−1
mb −1 Fν+1
(ν+1)f 0 (t)(ν+1)
∆f = (i)
δf 0 = Θf δf 0 , (1.54)
t=0 f 0 =0 ∂βf t=0 f 0 =0

1.10 Dữ liệu nào sử dụng cho gradient descent?


Từ đầu chúng ta đã kí hiệu Tmb dữ liệu mẫu mà chúng ta sẽ huấn luyện mô hình.
Thủ tục này được lặp lại với thời gian dài (mỗi lần được gọi là epoch). Tồn tại
ba cách để lấy mẫu từ các dữ liệu: Full-batch, Stochastic và Mini-batch gradient
descent. Chúng tôi nêu rõ các điều khoản này trong các phần sau. Chúng tôi nêu
rõ các vấn đề này trong các phần sau.

1.10.1 Full-batch
Full-batch lấy toàn bộ dữ liệu ở mỗi epoch, vì vậy loss function là

X−1
Ttrain
J(Θ) = Jtrain (Θ) . (1.55)
t=0

Sự lựa chọn này có lợi thế là ổn định về số lượng, nhưng nó rất tốn kém thời gian
tính toán nên nó hiếm khi được sử dụng.

1.10.2 Stochastic Gradient Descent (SGD)


SGD tính toán để lấy một phần mẫu của dữ liệu trong mỗi epoch

J(Θ) = JSGD (Θ) . (1.56)

18
Sự lựa chọn này dẫn đến việc tính toán nhanh hơn, nhưng vì vậy không ổn định
về số lượng. Sự lựa chọn chuẩn nhất cho đến nay là Mini-batch gradient descent.

1.10.3 Mini-batch
Mini-batch gradient descent là một sự thỏa hiệp giữa sự ổn định và hiệu quả thời
gian, là điểm giữa của Full-batch và Stochastic gradient descent: 1  Tmb 
Ttrain . Vì

mb −1
TX
J(Θ) = Jmb (Θ) . (1.57)
t=0

Tất cả các tính toán trong báo cáo này đều sử dụng kỹ thuật gradient descent.

1.11 Những kỹ thuật Gradient optimization


Khi mà các gradient cho backpropagation được tính toán, câu hỏi là làm thế nào
để thêm chúng vào các trọng số đã tồn tại. Đơn giản nhất là dùng

(ν)f (ν)f Θ(i)f


Θf 0 = Θf 0 − η∆f 0 . (1.58)

với η là một tham số ngẫu nhiên được tạo bởi cross-validation. Nó cũng có thể
được tính dựa vào epoch. Khi sử dụng Mini-batch gradient descent, sự lựa chọn
cập nhật này cho các trọng số có thể bị kẹt ở các điểm local mininum. Một số
phương pháp đã được phát minh để ngăn ngừa nguy cơ này. Chúng tôi sẽ xem
xét chúng trong các phần tiếp theo.

1.11.1 Momentum
Momentum Qian [1999] đưa ra một vec-tơ mới ve và sử dụng để lưu các cập nhật
ở những epoch trước. Gọi e là số epoch và bỏ đi các chỉ sốf, f 0 , ν gradients để
giảm bớt ký hiệu, chúng ta có

ve = γve−1 + η∆Θ , (1.59)

19
và những trọng số ở mỗi epoch e sẽ được cập nhật như sau

Θe = Θe−1 − ve . (1.60)

γ là tham số mới, thường là 0.9 nhưng có thể thay đổi bởi cross-validation.

1.11.2 Nesterov accelerated gradient


Nesterov accelerated gradient Nesterov [1983] là một sự điều chỉnh nhỏ của kỹ
thuật momentum cho phép gradients thoát các điểm local minimum.

ve = γve−1 + η∆Θ−γve−1 , (1.61)

và sau đó

Θe = Θe−1 − ve . (1.62)

Tới hiện nay, tham số η kiểm soát magnitude việc cập nhật luôn được thiết lập
toàn cục. Nó sẽ tốt hơn nếu có một sự kiểm soát tốt, để trọng số khác nhau có
thể được cập nhật với magnitudes khác nhau.

1.11.3 Adagrad
Adagrad Duchi et al. [2011] cho phép tinh chỉnh các gradients khác nhau bằng
việc có learning rate riêng biệt η. Cho mỗi giá trị của f, f 0 , i

e−1
X 2
ve = ∆Θ
e0 , (1.63)
e0 =0

quy luật cập nhật như sau

η
Θe = Θe−1 − √ ∆Θ
e . (1.64)
ve + 

Lợi thế của Adagrad là learning rate η được thiết lập một lần và cho tất cả
(thường là 10−2 ) và không cần chỉnh qua cross validation nữa, vì nó tự điều chỉnh

20
riêng biệt cho từng trọng số thông qua ve term.  dùng để tránh các trường hợp
chia cho 0, và nó thường là 10−8 .

1.11.4 RMSprop
RMSprop là một kỹ thuật điều chỉnh learning rate có tính thích nghi, nó chưa từng
được công bố, và được đề xuất bởi Geoff Hinton trong bài giảng trên Coursera.
Vì Adagrad thêm vào gradient từ epoch đầu tiên, các trọng số bị buộc phải giảm
đơn điệu. Điều này có thể được giải quyết thông qua kỹ thuật Adadelta:

ve = γve−1 + (1 − γ)∆Θ
e , (1.65)

với γ là một tham số mới, thường là 0.9. Công thức Adadelta theo Adagrad như
sau

η
Θe = Θe−1 − √ ∆Θ
e . (1.66)
ve + 

η được thiết lập một lần và cho tất cả (thường là 10−3 ).

1.11.5 Adadelta
Adadelta Zeiler [2012] là một phần mở rộng của RMSprop, với mục đích bỏ tham
số η. Để làm được điều đó, một vec-tơ mới được giới thiệu
√ 2
me−1 +  Θ
me = γme−1 + (1 − γ) √ ∆e , (1.67)
ve + 

và quy luật cập nhật mới như sau



me−1 +  Θ
Θe = Θe−1 − √ ∆e . (1.68)
ve + 

Learning rate đã được tính hoàn toàn từ quy tắc, nhưng phương thức để làm là
ad hoc (thực hiện chỉ với một mục đích cụ thể). Kỹ thuật tối ưu hóa tiếp theo và
cuối cùng được trình bày có vẻ tự nhiên hơn và là sự lựa chọn mặc định đối với
một số thuật toán deep learning.

21
1.11.6 Adam
Adam Kingma & Ba [2014] track cả gradient và bình phương của nó thông qua
hai vec-tơ độc lập

2
me = β1 me−1 + (1 − β1 )∆Θ
e , ve = β2 ve + (1 − β2 ) ∆Θ
e , (1.69)

với β1 và β2 thường là 0.9 và 0.999. Nhưng sức mạnh và tính chắc chắn của
Adam nằm ở việc nó làm cho toàn bộ quá trình học tập phụ thuộc yếu tố vào
precise. Để tránh những vấn đề về số trong các bước đầu tiên, các vector này
được thay đổi tỷ lệ

me ve
m̂e = , v̂e = . (1.70)
1 − β1e 1 − β2e

trước khi vào các quy tắc cập nhật

η
Θe = Θe−1 − √ m̂e . (1.71)
v̂e + 

Đây là kỹ thuật tối ưu hoá được sử dụng trong bài báo cáo này, cùng với độ giảm
learning rate

ηe = e−α0 ηe−1 , (1.72)

α0 được xác định bởi cross-validation, và η0 thường bắt đầu trong khoảng 10−3 −
10−2 .

1.12 Khởi tạo trọng số


Nếu không có bất kỳ sự điều chỉnh nào, huấn luyện một neural network là một
nhiệm vụ khó khăn do tinh chỉnh các điều kiện ban đầu của trọng số. Đây là một
trong những lý do tại sao neural network đã trải qua nhiều thời kỳ. Từ khi có
dropout và Batch normalization, vấn đề này ít được phát biểu hơn, nhưng không
nên khởi tạo trọng số theo kiểu đối xứng (tất cả là zero) và cũng không nên khởi

22
tạo chúng quá lớn. Một heuristic tốt là
s
h
(ν)f 0
i 6
Θf = × N(0, 1) . (1.73)
init Fν + Fν+1

23
Chương 2

Convolutional Neural Networks

2.1 Giới thiệu


Trong chương này chúng ta sẽ xem xét một loại neural network có lẽ là phổ biến
nhất: Mạng thần kinh xoắn (Convolutional Neural Network - CNN). CNN đặc
biệt thích hợp để phân loại hình ảnh, có thể là chữ số hoặc thể loại động vật,
xe, v.v. Chúng tôi sẽ giới thiệu các điểm mới liên quan đến CNN khi so sánh với
FNN. Theo đó là những khối xây dựng cơ bản của CNN: convolution và pooling.
Ngoài ra chúng tôi sẽ nói đến những thay đổi phải chú ý khi áp dụng các kỹ thuật
regularization được giới thiệu trong phần FNN. Cuối cùng, chúng tôi sẽ trình bày
các kiến trúc CNN phổ biến nhất: từ LeNet đến ResNet.

2.2 Kiến trúc CNN


Một CNN được hình thành bởi một số operation convolution và pooling, thường
là theo sau bởi một hoặc nhiều fully connected layer (tương tự như các layer FNN
truyền thống). Chúng tôi sẽ chỉ rõ các điểm mới được giới thiệu trong phần tiếp
theo.

24
Hình 2.1: Một kiến trúc CNN (đây là LeNet): các convolution operation được
theo sau là pooling operation, cho đến khi kích thước feature map giảm còn một.
Fully connected layers sau đó được kết nối.

2.3 Tính đặc thù của CNN


2.3.1 Feature map
Trong mỗi layer của CNN, dữ liệu không còn được gắn nhãn bởi một index như
trong FNN. Chúng ta nên xem index trong FNN tương đương với nhãn một tấm
ảnh trong môt layer của CNN. Nhãn này là một feature map.
Trong mỗi feature map f ∈ J0, Fν − 1K của layer thứ ν, hình ảnh được đặc
trưng bởi hai chỉ số bổ sung tương ứng là chiều cao height k ∈ Tν − 1 và chiều
rộng j ∈ Nν − 1. Một bộ f, j, k đặc trưng cho một pixel duy nhất của một feature
map. Bây giờ chúng ta hãy xem xét các lớp khác nhau của CNN.

2.3.2 Input layer


Chúng ta xét đầu với với F0 kênh. Với một ảnh thông thường, kênh này tương ứng
với kênh màu RGB (F0 = 3). Mỗi ảnh trong mỗi kênh sẽ có kích thước N0 × T0
(t)
(rộng × cao). Input sẽ được kí hiệu Xf j k , với t ∈ J0, Tmb − 1K (kích thước của
Mini-batch, xem chương 1), j ∈ J0, N0 − 1K và k ∈ J0, T0 − 1K.Một cách xử lý đầu
vào tiêu chuẩn là tập trung dữ liệu theo một trong hai thủ tục sau

(t) (t) (t) (t)


X̃f j k = Xi j k − µf , X̃f j k = Xi j k − µf j k (2.1)

25
Hình 2.2: Input layer

với

1 X−1 NX
Ttrain 0 −1 T
X0 −1
(t)
µf = Xf j k , (2.2)
Ttrain T0 N0 t=0 j k

1 X−1
Ttrain
(t)
µf j k = Xf j k . (2.3)
Ttrain t=0

Điều này tương ứng với việc tính trung bình mỗi pixel trên tập huấn luyện
hoặc trung bình trên mỗi pixel. Thủ tục này không nên được áp dụng cho các bài
toán regression. Để kết luận, con số 2.2 cho thấy lớp đầu vào trông như thế nào.

2.3.3 Padding
Khi chúng ta xử lí, để thuận tiện chúng ta "pad" các feature maps để bảo vệ
chiều rộng và chiều cao của hình ảnh khi đi qua các hidden layer. Padding tăng
thêm 0 quanh hình ảnh ban đầu. Với một padding có kích thước P , chúng tôi
thêm P zeros vào đầu mỗi hàng và cột của một feature map nhất định. Điều này
được minh họa trong hình 2.3

2.3.4 Convolution
Convolution operation được đặt tên cho CNN vì đây là khối chính của loại neural
network này. Nó nhận một feature map vào một input hidden layer với một ma
trận trọng số để tạo ra một feature map đầu ra. Các trọng số này là các tensor 4

26
Hình 2.3: Padding của feature map. Những số không được thêm vào là những
tile màu đỏ, kích thước padding này là P = 1.

Hình 2.4: Convolution operation

chiều, một chiều (F ) là số lượng feature map của convolutional input layer, một
chiều (Fp ) là số lượng feature map của convolutional output layer. Hai cái khác
là chiều rộng và chiều cao của receptive field. Receptive field cho phép convolute
một tập con thay vì cả ảnh. Nó nhằm mục đích tìm kiếm các mẫu tương tự trong
hình ảnh đầu vào, không quan tâm việc mẫu ở đâu (translational invariance).
Chiều rộng và chiều cao ảnh đầu ra cũng được xác định bởi stride: đơn giản là số
pixel theo đó một slide theo chiều dọc và/hoặc hướng ngang trước khi áp dụng
lại convolution operation.
Vì RC là kích thước của convolutional receptive field (pooling operation cũng
có receptive field và stride) và SC là convolutional stride. Chiều rộng và chiều cao
của hình đầu ra có thể được tính theo chiều rộng đầu vào N và chiều cao đầu

27
vào T

N + 2P − RC T + 2P − RC
Np = +1, Tp = +1. (2.4)
SC SC

Thông thường một padding sẽ bảo vệ chiều rộng và chiều cao của hình ảnh đầu
vào N = Np = T = Tp , nên SC = 1 và

RC − 1
P = . (2.5)
2

Với layer n cho trước, convolution operation có công thức (tương tự quá trình
cân bằng trọng số của FNN)

ν −1 R
FX X C −1 R
X C −1
(t)(ν) (o)f (t)(ν)
af l m = Θf 0 j k hf 0 SC l+j SC m+k , (2.6)
f 0 =0 j=0 k=0

với o đặc trưng cho convolution thứ o + 1 trong network. ν kí hiệu hidden layer
thứ ν của network (thuộc đoạn J0, N − 1K), và f ∈ J0, Fν+1 − 1K, l ∈ J0, Nν+1 − 1K
và m ∈ J0, Tν+1 − 1K. Như vậy SC l + j ∈ J0, Nν − 1K và SC l + j ∈ J0, Tν − 1K. Và
khi sử dụng các hidden unit thông qua activation function ReLU (xem chương
1). Ta có
 
(t)(ν+1) (t)(ν)
hf l+P m+P = g af l m . (2.7)

2.3.5 Pooling
Pooling operation, ngày càng ít được sử dụng trong các CNN tiên tiến, về cơ bản
là một hoạt động giảm kích thước. Nó tính trung bình hoặc lấy tối đa sub-image
– đặc trưng bởi pooling receptive field RP và stride SP – của input feature map
F để có được output feature map Fp = F với chiều rộng Np < N và chiều cao
Tp < T . Lưu ý: giá trị padding của input hidden layer không được tính trong
pooling operation (bởi vì những chỉ số +P trong cách công thức sau)

28
Hình 2.5: The pooling operation

Công thức average pooling procedure của pooling operation thứ ν

P −1
RX
(t)(ν) (t)(ν)
af l m = hf SP l+j+P SP m+k+P , (2.8)
j,k=0

Công thức max pooling

(t)(ν) RP −1 (t)(ν)
af l m = max hf SP l+j+P SP m+k+P . (2.9)
j,k=0

Vì ν kí hiệu hidden layer thứ ν của network (thuộc đoạn J0, N − 1K), và
f ∈ J0, Fν+1 −1K, l ∈ J0, Nν+1 −1K và m ∈ J0, Tν+1 −1K. Do đó SP l+j ∈ J0, Nν −1K
và SP l + j ∈ J0, Tν − 1K. Max pooling thường được sử dụng rộng rãi, và do đó
chúng tôi sẽ dùng nó trong tất cả các sau. Kí hiệu các chỉ số jf(t)(p)
lm
, kf(t)(p)
lm
mà tại
đó l, m đạt maximum của feature map f thuộc batch sample thứ t có thể đạt
được, chúng ta có

(t)(ν+1) (t)(ν) (t)(ν)


hf l+P m+P = af l m = h (t)(p) (t)(p) . (2.10)
f SP l+jf lm +P SP m+kf lm +P

2.3.6 Towards fully connected layers


Ở vài điểm của CNN, convolutional receptive field bằng với chiều rộng và chiều
cao của ảnh. Trong trường hợp này, convolution operation trở thành một loại quá
trình cân bằng trọng số (như trong FNN).

29
Hình 2.6: Fully connected operation để lấy chiều rộng và chiều cao 1.

Quá trình cân bằng trọng số dùng

ν −1 N
FX X T −1
−1 X
(t)(ν) (o)f (t)(ν)
af = Θf 0 lm hf 0 l+P m+P , (2.11)
f 0 =0 l=0 m=0

và được theo sau bởi hàm kích hoạt


 
(t)(ν+1) (t)(ν)
hf = g af , (2.12)

2.3.7 Fully connected layers


Sau những operation phía trước, phần còn lại của network là một FNN. Quá
trình cân bằng trọng số dùng

ν −1
FX
(t)(ν) (o)f (t)(ν)
af = Θf 0 hf 0 , (2.13)
f 0 =0

và thường được theo sau bởi hàm kích hoạt


 
(t)(ν+1) (t)(ν)
hf = g af , (2.14)

30
Hình 2.7: Fully connected operation, giống như FNN operations.

2.3.8 Output connected layer


Cuối cùng, đầu ra được tính bằng một FNN

N −1
FX  
(t)(N −1) (o)f (t)(N −1) (t)(N ) (t)(N −1)
af = Θf 0 hf 0 , hf = o af , (2.15)
f 0 =0

và trong FNN, o có thể là L2 hoặc cross-entropy loss function (xem chương 1).

2.4 Các điều chỉnh với Batch Normalization


Trong CNN, Batch normalization được thay đổi theo cách sau (bởi vì, trái với
một FNN, không phải tất cả hidden layers cần được Batch normalize. Thực tế
hoạt động này không được thực hiện trên đầu ra của các pooling layers. Chúng
tôi sẽ dùng tên khác là ν và n các hidden layer thông thường và batch normalized
hidden layer)

31
(t)(ν) (n)
(t)(n) hf l m − ĥf
h̃f l m = r 2 , (2.16)
(n)
σ̂f +

với
mb −1 N
TX n −1 Tn −1
(n) 1 X X (t)(ν)
ĥf = h (2.17)
Tmb Nn Tn t=0 l=0 m=0 f l m
mb −1 N
TX n −1 Tn −1 

(n)
2 1 X X (t)(ν) (n)
2
σ̂f = h − ĥf . (2.18)
Tmb Nn Tn t=0 l=0 m=0 f l m

Việc chuyển đổi có thể được thực hiện nhờ hai tham số bổ sung (γf , βf )

(t)(n) (n) (t)(n) (n)


yf l m = γf h̃f l m + βf . (2.19)

Đối với việc đánh giá của cross-validation và tập kiểm tra (gọi e là số lần lặp –
epochs), chúng ta có thể tính
h i
(t)(ν) (n)
h i eE hf l m + ĥf
(t)(ν) e
E hf l m = , (2.20)
e+1 e+1
h i  2
(t)(ν) (n)
h i iVar hf l m + σ̂f
(t)(ν) e
Var hf l m = (2.21)
e+1
e+1

h i h i
(t)(ν) Tmb (t)(ν)
và trong lúc kiểm thử là E hf l m and Tmb −1
Var hf lm .

2.5 Các kiến trúc CNN


Chúng tôi sẽ giới thiệu các kiến trúc CNN chuẩn đã được giới thiệu trong 20 năm
qua, từ cái cũ nhất cho đến cái mới nhất vào cuối năm 2015. Để biểu diễn dễ
dàng, chúng tôi sẽ áp dụng sơ đồ biểu diễn dưới đây cho các lớp khác nhau.

32
I
C
n
= , = o ,
p
n
u
v
t

P F
= o , = u
o l
l l

Hình 2.8: Sơ đồ đại diện của các layer khác nhau

2.5.1 Realistic architectures


Trong realistic architectures, mỗi fully connected layer (trừ cái cuối cùng liên kết
với output) được theo sau bởi một hàm kích hoạt RELU (or cái khác) và sau đó
là môt bước batch normalization (hai bước xử lí này có thể đảo ngược).
Chúng tôi sẽ áp dụng các mô tả đơn giản hóa ở bên phải. Cùng những đề cập
của Gu et al. [2015] về những tiếp bộ gần đây của CNN, bây giờ chúng tôi bắt
đầu với CNN đầu tiên được sử dụng bởi cộng đồng deep learning.

Hình 2.9: Realistic Fully connected operation và Realistic Convolution operation

33
O
I
C P C P F u
n
o o o o u t
p
n o n o l p
u
v l v l l u
t
t

Hình 2.10: The LeNet CNN

O
I
C P C P C C C P F F F u
n
o o o o o o o o u u u t
p
n o n o n n n o l l l p
u
v l v l v v v l l l l u
t
t

Hình 2.11: The AlexNet CNN

2.5.2 LeNet
LeNet network Lecun et al. [1998] bao gồm một input, theo đó là hai layer conv-
pool và một fully-connected layer trước một layer output cuối cùng. It can be
seen in figure 2.1
Khi xử lí ảnh (224 × 224), mô hình này dùng một kích thước lớn cho các
receptive field và các stride. Điều này có hai nhược điểm. Đầu tiên, số hoặc tham
số trong một ma trận trọng số cho trước tỉ lệ thuận với kích thước của receptive
field, do đó dẫn đến số lượng lớn các tham số. Network có thể dễ bị overfit. Thứ
hai, stride rộng và receptive field rộng có nghĩa là phân tích ít tinh tế về cấu trúc
của hình ảnh. Tất cả các triển khai CNN tiếp theo nhằm mục đích giải quyết một
trong hai vấn đề này.

2.5.3 AlexNet
AlexNet Krizhevsky et al. [2012] không thấy bước nhảy vọt trong lý thuyết CNN,
nhưng do các bộ vi xử lý tốt hơn đã có thể dùng nhiều các hidden layer hơn.
Network này vẫn được sử dụng phổ biến, mặc dù ít hơn kể từ khi VGG network
xuất hiện.

34
O
I
C C P C C P C C C P C C C P C C C P F F F u
n
o o o o o o o o o o o o o o o o o o u u u t
p
n n o n n o n n n o n n n o n n n o l l l p
u
v v l v v l v v v l v v v l v v v l l l l u
t
t

Hình 2.12: The VGG CNN

O
I I I I I I I I I I
C P C C P P P P F u
n n n n n n n n n n
o o o o o o o o u t
p c c c c c c c c c
n o n n o o o o l p
u e e e e e e e e e
v l v v l l l l l u
t p p p p p p p p p
t

Hình 2.13: The GoogleNet CNN

2.5.4 VGG
VGG network Simonyan & Zisserman [2014] thông qua một tiêu chuẩn đơn giản:
chỉ cần các padding 2×2 của stride 2 và convolutions 3×3 với stride 1 và padding 1,
để giữ chiều rộng và chiều cao của hình ảnh thông qua các convolution operation.
Network này là một trong những network tiêu chuẩn trong hầu hết các deep
learning package về CNN. Mặc dù nó không còn là network tiên tiến nhất, nhưng
một sự đổi mới về thiết kế đã xảy ra kể từ khi nó được tạo ra.

2.5.5 GoogleNet
GoogleNet Szegedy et al. [2015] giới thiệu một loại "layer" mới (trên thực tế là
sự kết hợp các layer đã tồn tại): inception layer (được đề cập đến bộ phim của
Christopher Nolan). Thay vì đưa tất cả vào từ một layer đến layer kế tiếp bằng
một operation đơn giản như pool, conv hoặc fully-connected (fc), họ dùng một
kết quả trung bình của chúng.
Ý tưởng kết hợp kết quả của một vài conv-pool operation để đi đến hidden
layer kế tiếp đã bắt đầu được sử dụng. Mô hình tiếp theo sử dụng rất đơn giản
và đã trở thành mô hình tiên tiến nhất: ResNet.

35
Output Output
+ +
BN 3
Conv 1 Relu 3
Conv 3

Conv 3 = Res BN 2
Relu 2
Conv 2 = Res

Conv 1 BN 1
Relu 1
Conv 1

Input Input

Hình 2.14: Kiến trúc Bottleneck Residual. Sơ đồ trên lí thuyết bên trái, thực tế
ở bên phải. Nó cần một 1 × 1 conv với stride 1 và padding 0, sau đó một VGG
conv chuẩn và 1 × 1 conv.

O
I
C P P u
n
o o o t
p
n o o p
u
v l l u
t
t

Hình 2.15: The ResNet CNN

2.5.6 ResNet
ResNet He et al. [2015] lấy ý tưởng đơn giản của VGG để luôn sử dụng cùng
kích cỡ cho các convolution operation (Trừ cái đầu tiên). Nó cũng tính đến thực
tế thực nghiệm: fully connected layer không thực sự cần thiết để hoạt động tốt.
(thường chứa hầu hết các thông số kích thước). Loại bỏ chúng dẫn đến giảm số
lượng các thông số của CNN. Ngoài ra, pooling operation cũng ít phổ biến hơn
và có xu hướng được thay thế bằng các convolution operation. Điều này đưa đến
block xây dựng cơ bản ResNet, Residual module trong hình 2.14.
ResNet CNN đã có các kết quả tiên tiến nhất trên các bộ dữ liệu huấn luyện
phổ biến (CIFAR, MNIST ...).

36
2.6 Backpropagation
Trong FNN, cần phải tính hai loại backpropagation: từ output đến fully connected
(fc) lớp và từ fc đến fc. Nhưng trông CNN, có 4 loại propagations mới cần tính:
fc đến pool, pool đến conv, conv đến conv và conv đến pool. Chúng tôi sẽ xem
xét một FNN với một input layer có nhãn 0, N-1 hidden layers có nhãn i và một
output layer có nhãn N (N + 1 layer trong network).

2.6.1 Backpropagate trong Batch Normalization


Giống như trong FNN, backpropagation giới thiệu một gradient mới

(t0 )(n)
(tt0 )(n) ∂yf 0 l0 m0
δff 0 Jf ll0 mm0 = (t)(ν)
. (2.22)
∂hf l m

Với các pool layer và conv layer

(t0 )(n) (t)(n)


" #
(tt0 )(n) (n) t0 l0 m0
1 + h̃f l0 m0 h̃f l m
Jf ll0 mm0 = γ̃f δt δl δm − , (2.23)
Tmb Nn Tn

và với các fc layer

(t0 )(n) (t)(n)


" #
(tt0 )(n) (n) t0
1 + h̃f h̃f
Jf = γ̃f δt − . (2.24)
Tmb

2.6.2 Cập nhật Error


Chúng ta sẽ xét error rate riêng cho CNN

(t)(ν) ∂
δf l(+P )m(+P ) = (t)(i)
J(Θ) , (2.25)
∂af l m

2.6.2.1 Backpropagate từ output đến fc

Quá trình backpropagate từ output đến fc được minh họa theo Hình 2.16

37
O
F u
u t
l p
l u
t

Hình 2.16: Backpropagate từ output đến fc.

F F
u u
l l
l l

Hình 2.17: Backpropagate từ fc đến fc.

Ta có L2 loss function

(t)(N −1) 1  (t)(N ) (t)



δf = hf − yf , (2.26)
Tmb

và cross-entropy là

(t)(N −1) 1  (t)(N ) f



δf = h − δy(t) , (2.27)
Tmb f

2.6.2.2 Backpropagate từ fc đến fc

Quá trình backpropagate từ fc đến fc được minh họa theo Hình 2.17
Tương tự FNN, ta có:

(t)(ν)

(t)(ν)
X−1 (o)f 0 (tt0 )(n) (t)(ν+1)
mb −1 Fν+1
 TX
δf = g 0 af Θf Jf δf 0 , (2.28)
t0 =0 f 0 =0

2.6.2.3 Backpropagate từ fc đến pool

Quá trình backpropagate từ fc đến pool được minh họa theo Hình 2.18
Với error rate là

38
P F
o u
o l
l l

Hình 2.18: Backpropagate từ fc đến pool.

C P
o o
n o
v l

Hình 2.19: Backpropagate từ pool đến conv.

Fν+1 −1
(o)f 0 (t)(ν+1)
(t)(ν)
X
δf lm = Θf l m δf 0 , (2.29)
f 0 =0

2.6.2.4 Backpropagate từ pool đến conv

Quá trình backpropagate từ pool đến conv được minh họa theo Hình 2.19
Xét pooling layer thứ p, error rate là:

(t)(ν)

(t)(ν)
 TX X−1 Tν+1
mb −1 Nν+1 X−1 (t0 )(ν+1)
0
δf l+P m+P = g af l m δf l0 m0
t0 =0 l0 =0 m0 =0
(tt0 )(n)
×J (t0 )(p) (t0 )(p) . (2.30)
f SP l0 +jf l0 m0 +P SP m0 +kf l0 m0 +P l+P m+P

2.6.2.5 Backpropagate từ conv đến conv

Backpropagate từ conv đến conv được minh hoạt trong hình 2.20

39
C C
o o
n n
v v

Hình 2.20: Backpropagate từ conv đến conv.

P C
o o
o n
l v

Hình 2.21: Backpropagate từ conv đến pool.

Error rate là:

(t)(ν)

(t)(ν)
 TX X−1 Nν+1
mb −1 Fν+1 X−1 Tν+1
X−1 RX
C −1 R
X C −1
(t0 )(ν+1)
0
δf l+P m+P =g af l m δf 0 l0 +P m0 +P
t0 =0 f 0 =0 l0 =0 m0 =0 j=0 k=0
(o)f 0 (tt0 )(n)
× Θf j k Jf SC l0 +j SC m0 +k l+P m+P (2.31)

2.6.2.6 Backpropagate từ conv đến pool

Backpropagate từ conv đến pool được minh hoạt trong hình 2.21
Error rate là
Fν+1 −1 RC −1 RC −1
(t)(ν)
X X X (o)f (t)(ν+1)
δf lm = Θf 0 j k δf l+P −j +P m+P −k
+P
. (2.32)
SC SC
f 0 =0 j=0 k=0

2.6.3 Cập nhật trọng số


Chúng ta sẽ quan tâm đến các trọng số giữa layer fc đến fc, fc đến pool, conv đến
conv, conv đến pool và conv đến input.

2.6.3.1 Cập nhật trọng số từ fc đến fc

Đối với các tương tác hai layer như trong hình 2.22.

40
F F
u u
l l
l l

Hình 2.22: Cập nhật trọng số giữa hai fc layer

P F
o u
o l
l l

Hình 2.23: Cập nhật trọng số giữa fc layer và pool layer.

Ta có công thức cập nhật trọng số

mb −1
TX
Θ(o)f (t)(n) (t)(ν)
∆f 0 = yf 0 δf (2.33)
t=0

2.6.3.2 Cập nhật trọng số từ fc đến pool

Đối với các tương tác hai layer như trong hình 2.23.
Ta có công thức cập nhật trọng số

mb −1
TX
Θ(o)f (t)(ν) (t)(ν)
∆f 0 jk = hf 0 j+P k+P δf (2.34)
t=0

2.6.3.3 Cập nhật trọng số từ conv đến conv

Đối với các tương tác hai layer như trong hình 2.24.

C C
o o
n n
v v

Hình 2.24: Cập nhật trọng số giữa hai conv layer.

41
I
P C C
n
o o o
p
o n n
u
l v v
t

Hình 2.25: Cập nhật trọng số từ conv đến pool cũng giống như từ conv đến
input.

F F
u u
l l
l l

Hình 2.26: Cập nhật Coefficient giữa hai fc layer.

Ta có công thức cập nhật trọng số

Θ(o)f
TX X−1 Nν+1
mb −1 Tν+1 X−1 (t)(n) (t)(ν)
∆f 0 jk = yf 0 l+j m+k δf l+P m+P (2.35)
t=0 l=0 m=0

2.6.3.4 Cập nhật trọng số từ conv đến pool và conv đến input

Đối với các tương tác hai layer như trong hình 2.25.
Ta có công thức cập nhật trọng số

Θ(o)f
TX X−1 Nν+1
mb −1 Tν+1 X−1 (t)(ν) (t)(ν)
∆f 0 jk = hf 0 l+j m+k δf l+P m+P (2.36)
t=0 l=0 m=0

2.6.4 Cập nhật Coefficient


Đối với việc cập nhật Coefficient, ta quan tâm đến các trọng số giữa fc đến fc, fc
đến pool, conv đến pool và conv đến conv.

2.6.4.1 Cập nhật Coefficient từ fc đến fc

Với hai layer như trong hình 2.26


Chúng ta có

42
P F P C
o u o o
o l o n
l l l v

Hình 2.27: Cập nhật Coefficient từ fc đến pool cũng giống như từ conv đến pool.

C C
o o
n n
v v

Hình 2.28: Cập nhật Coefficient giữa hai conv layer.

γ(n)
TX X−1
mb −1 Fν+1
(o)f 0 (t)(n) (t)(ν)
∆f = Θf h̃f δf 0 ,
t=0 f 0 =0

β(n)
TX X−1
mb −1 Fν+1
(o)f 0 (t)(ν)
∆f = Θf δf 0 , (2.37)
t=0 f 0 =0

2.6.4.2 Cập nhật Coefficient từ fc đến pool và conv đến pool

Với hai layer như trong hình 2.27

γ(n)
TX X−1 Tν+1
mb −1 Nν+1 X−1 (t)(n) (t)(ν)
∆f = h̃ δ ,
f SP l+jf lm +P SP m+kf lm +P f lm
(t)(p) (t)(p)
t=0 l=0 m=0

β(n)
TX X−1 Tν+1
mb −1 Nν+1 X−1 (t)(ν)
∆f = δf lm , (2.38)
t=0 l=0 m=0

2.6.4.3 Cập nhật Coefficient từ conv đến conv

Với hai layer như trong hình 2.28

43
Ta có

γ(n)
TX X−1 Nν+1
mb −1 Fν+1 X−1 Tν+1
X−1 RX
C −1 R
X C −1
(o)f 0 (t)(n) (t)(ν)
∆f = Θf jk h̃f l+j m+k δf 0 l+P m+P ,
t=0 f 0 =0 l=0 m=0 j=0 k=0

β(n)
TX X−1 Nν+1
mb −1 Fν+1 X−1 Tν+1
X−1 RX
C −1 R
X C −1
(o)f 0 (t)(ν)
∆f = Θf jk δf 0 l+P m+P . (2.39)
t=0 f 0 =0 l=0 m=0 j=0 k=0

44
Chương 3

Recurrent Neural Networks

3.1 Giới thiệu


Trong chương này, chúng tôi sẽ giới thiệu kiến trúc Neural Network thứ ba:
Recurrent Neural Networks Graves [2011]. Ngược lại với CNN, loại network này
giới thiệu một kiến trúc thực sự mới: thay vì chỉ forward theo hướng "không
gian", dữ liệu cũng được forward trong một hướng mới – hướng phụ thuộc thời
gian. Chúng tôi sẽ giới thiệu mô hình đầu tiên của kiến trúc Recurrent Neural
Network (RNN), cũng như mô hình đang phổ biến hiện tại: Long Short Term
Memory (LSTM).

3.2 Kiến trúc RNN-LSTM


3.2.1 Hướng Forward trong RNN-LSTM
Trong hình 3.1, chúng ta trình bày kiến trúc RNN theo cách sơ đồ.
Điểm mới của loại neural network này là chúng ta đang cố gắng dự đoán một
chuỗi thời gian được mã hóa trong kiến trúc của mạng. RNN lần đầu tiên được
giới thiệu để dự đoán các từ tiếp theo trong một câu (bài toán phân loại), do đó
tập trung vào trình tự thời gian trong việc dự đoán. Nhưng loại kiến trúc neural
network này cũng có thể được áp dụng cho các bài toán regression, như sự biến
đổi giá cổ phiếu, hoặc dự báo nhiệt độ. Khác với các neural network mà chúng

45
Hình 3.1: Kiến trúc RNN, với dữ liệu được lan truyền theo cả "không gian" và
"thời gian". Trong ví dụ, chiều thời gian có kích thước là 8, không gian có kích
thức là 4.

tôi đã giới thiệu, chúng tôi định nghĩa (kí hiệu ν trong các chương trước đó chỉ
số lớp theo hướng không gian)

 
(t)(ν) (t)(ν)
af = Weight Averaging hf ,
 
(t)(ν+1) (t)(ν)
hf = Activation function af , (3.1)

Bây giờ chúng ta có các hidden layer được index bởi cả hai chỉ số "không
gian" và "thời gian" (với T là kích thước network theo hướng mới này) và triết
lý chung của RNN là (a thường đặt trưng bởi c cho trạng thái của cell, kí hiệu
này giúp ta dễ hiểu khi nói về LSTM network)

 
(t)(ντ ) (t)(ντ −1) (t)(ν−1τ )
cf = Weight Averaging hf , hf ,
 
(t)(ντ ) (t)(ντ )
hf = Activation function cf , (3.2)

46
Hình 3.2: Hướng backward trong kiến trúc. Do đó không thể tính toán gradient
của một layer mà không tính toán những cái mà nó đã đi qua.

3.2.2 Hướng backward trong RNN-LSTM


Hướng backward trong RNN-LSTM phải tuân theo một thứ tự thời gian nhất
định, như minh họa trong hình 3.2.
Bây giờ chúng ta hãy xem chi tiết về cách implementation của RNN và mô
hình tiên tiến hơn của nó, Long Short Term Memory (LSTM).

3.3 Extreme Layers và loss function


Những phần sau của RTS-LSTM network đã có những thay đổi, chúng ta hãy
xem xét chúng.

3.3.1 Input layer


Trong RNN-LSTM, the input layer được định nghĩa như sau
 
(t)(0τ +1) (t)(0τ ) (t)(N −1τ )
hf = h̃f , hf . (3.3)

(t)(0τ ) (t)(0τ )
h̃f là hf với cột lần đầu tiên được gỡ bỏ.

47
3.3.2 Output layer
Output layer trong RNN-LSTM

FN −1 −1
!
(t)(N −1τ )
(t)(N τ )
X
hf =o Θff 0 hf , (3.4)
f 0 =0

với output function o giống như FNN và CNN cho cả identity function (bài toán
regression) hay cross-entropy function (bài toán nhận dạng).

3.3.3 Loss function


Loss function cho bài toán regression

Tmb −1 X N −1 
T −1 FX
1 X (t)(N τ ) (t)(τ )
2
J(Θ) = hf − yf . (3.5)
2Tmb t=0 τ =0 f =0

và cho bài toán phân loại

Tmb −1 X
T −1 C−1
1 X X 
(t)(N τ )

J(Θ) = − δyc(t)(τ ) ln hf . (3.6)
Tmb t=0 τ =0 c=0 c

3.4 Các đặc trưng của RNN


3.4.1 Cấu trúc RNN
RNN là một cấu trúc rất đơn giản sử dụng cấu trúc thời gian của dữ liệu để dự
đoán. Hãy xem chi tiết lớp hidden layer trong hình 3.1 ở hình 3.3, đây chính là
một mô hình Recurrent Neural Network đơn giản.
Và cách mà output của hidden layer được trình bày trong hình 3.3 đi vào các
hidden unit khác ở hình 3.4
Chúng tôi sẽ mô tả toán những gì được thể hiện trong hình 3.3 và 3.4.

48
Hình 3.3: Các chi tiết của RNN hidden unit

Hình 3.4: Cách hidden unit RNN tương tác với nhau.

49
3.4.2 Forward pass trong RNN
Trong RNN, Các quy luật cập nhật cho lần đầu là (spatial layer ở bên trái cùng
trong hình 3.1)

Fν−1 −1
!
(t)(ντ )
X ν(ν)f (t)(ν−1τ )
hf = tanh Θf 0 hf 0 , (3.7)
f 0 =0

và cho các lần khác

Fν−1 −1 ν −1
FX
!
τ (ν)f (t)(ντ −1)
(t)(ντ )
X ν(ν)f (t)(ν−1τ )
hf = tanh Θf 0 hf 0 + Θf 0 hf 0 . (3.8)
f 0 =0 f 0 =0

3.4.3 Backpropagation trong RNN


Triết lý backpropagation sẽ không thay đổi: tìm các cập nhật error rate, từ đó
suy luận đến cập nhật trọng số. Nhưng với các hidden layer, δ bây giờ có hai
phần là spatial component và temporal component. Do đó ta phải tính

(t)(ντ ) δ
δf = (t)(ν+1τ )
J(Θ) , (3.9)
δhf

để suy luận

δ
∆Θindexf
f0 = J(Θ) , (3.10)
δ∆Θindexf
f0

với index có thể không tồn tại (trọng số của ouput layer), ν(ν) (trọng số giữa
hai spatially connected layer) or τ (ν) (trọng số giữa hai temporally connected
layers). Dễ dàng tính được MSE loss function (giống như cách của chương 1 cho
FNN)

(t)(N −1τ ) 1  (t)(N τ ) (t)(τ )



δf = h − yf , (3.11)
Tmb f

50
và cho cross entropy loss function

(t)(N −1) 1  (t)(N τ ) f



δf = h − δy(t)(τ ) . (3.12)
Tmb f

Gọi
 2
(t)(ντ ) (t)(ντ )
Tf = 1 − hf , (3.13)

(t0 )(ντ )a (t0 )(ν+1τ ) a(ν+1)f 0


Hf f 0 = Tf 0 Θf , (3.14)

chúng ta có (nếu τ + 1 tồn lại)

(t)(ν−1τ )
Tmb
X (tt0 )(ντ )
X X−1
1 Fν+1−
(t0 )(ν−τ +)b (t0 )(ν−τ +)
δf = Jf Hf f 0 δf 0 . (3.15)
t0 =0 =0 f 0 =0

với b0 = ν và b1 = τ .

3.4.4 Cập nhật trọng số và coefficient trong RNN


Để hoàn tất thuật toán backpropagation, chúng ta có

51
mb −1
T −1 TX
X
ν(ν−)f (t)(ντ ) (t)(ν−1τ ) (t)(ν−1τ )
∆f 0 = Tf δf hf 0 , (3.16)
τ =0 t=0
mb −1
T −1 TX
(t)(ντ ) (t)(ν−1τ ) (t)(ντ −1)
τ (ν)f
X
∆f 0 = Tf δf hf 0 , (3.17)
τ =1 t=0
T −1 T mb −1
(t)(N −1τ ) (t)(N −1τ )
X X
∆ff 0 = hf 0 δf , (3.18)
τ =0 t=0

β(ντ )
TX X−1
1 Fν+1−
mb −1 X
(t0 )(ν−τ +)b (t0 )(ν−τ +)
∆f = Hf f 0 δf 0 , (3.19)
t=0 =0 f 0 =0

γ(ντ )
mb −1
TX
(t)(ντ )
X X−1
1 Fν+1−
(t0 )(ν−τ +)b (t0 )(ν−τ +)
∆f = h̃f Hf f 0 δf 0 . (3.20)
t=0 =0 f 0 =0

3.5 Đặc trưng của LSTM


Mặc dù RNN trên lý thuyết có thể họ những dependency dài, nhưng trên thực
tế chúng thất bại khi làm thế và có xu hướng trở trên thiên vị (biased toward)
với những đầu vào gần nhất trong chuỗi Bengio et al. [1994]. Mạng bộ nhớ dài
hạn-ngắn hạn (Long Short-term Memory Networks - LSTMs) đã được thiết để
khắc phục vấn đề này bằng cách kết hợp một cell bộ nhớ và đã được chứng minh
là nắm bắt được các dependency trong một khoảng dài.

3.5.1 Cấu trúc LSTM


Trong một Long Short Term Memory Neural Network Gers et al. [2000], trạng
thái của một unit nhất định không được xác định trực tiếp bởi các hàng xóm
bên trái và phía dưới. Thay vào đó, trạng thái của cell được cập nhật mỗi hidden
unit, và output của unit này là một probe của trạng thái cell. Công thức này có
vẻ như khó hiểu lúc đầu, nhưng triết lí của nó tương tự như cách tiếp cận ResNet
ở chương 1: thay vì cố gắng để input phù hợp với một function phức tạp, chúng
ta cố gắng lắp các biến thể nhỏ của input, do đó cho phép gradient đi qua một
cách mượt mà hơn trong network. Trong một LSTM network, nhiều gate được

52
h(ν τ ) h(ν τ ) h(ν τ ) h(ν τ )

c(ν τ −1) c(ν τ )


× +
f (ν τ )
h(ν τ −1) Θfτ (ν) + σ σ × h(ν τ )
i(ν τ ) g (ν τ ) tanh
h(ν τ −1) Θiτ (ν) + tanh h(ν τ )
o(ν τ )
σ ×
h(ν τ −1) Θgτ (ν) + h(ν τ )

h(ν τ −1) Θoτ (ν) + h(ν τ )

Θfν (ν) Θiν (ν) Θgν (ν) Θoν (ν)

h(ν−1 τ ) h(ν−1 τ ) h(ν−1 τ ) h(ν−1 τ )

Hình 3.5: Chi tiết LSTM hidden unit

(t)(ντ ) (t)(ντ )
giới thiệu : input gate if xác định nếu chúng cho phép thông tin mới gf
(t)(ντ )
đi vào cell state. The output gate of xác định việc thiết lặp hay không output
hidden value bằng 0, hoặc là probe của trạng thái cell hiện tại. Cuối cùng, forget
(t)(ντ )
state ff xác định việc có quên hay không trạng thái cũ của cell. Tất cả các
khái niệm này được minh họa trên hình 3.5. Sơ đồ này sẽ được giải thích chi tiết
trong phần tiếp theo.
Trong một LSTM, các hidden unit khác nhau tương tác theo cách sau trong
hình 3.6

3.5.2 Hường forward trong LSTM


Xem tất cả các giá trị của τ − 1 là 0 khi τ = 0, chúng ta có công thức sau cho
các gate: input, forget và output

53
h(ν τ ) h(ν τ ) h(ν τ ) h(ν τ )

c(ν τ −1) c(ν τ )


× +
f (ν τ )
h(ν τ −1) Θgτ (ν) + σ σ × h(ν τ )
i(ν τ ) g (ν τ ) tanh
h(ν τ −1) Θiτ (ν) + tanh h(ν τ )
o(ν τ )
σ ×
h(ν τ −1) Θgτ (ν) + h(ν τ )

h(ν τ −1) Θoτ (ν) + h(ν τ )

Θfν (ν) Θiν (ν) Θgν (ν) Θoν (ν)

h(ν−1 τ ) h(ν−1 τ ) h(ν−1 τ ) h(ν−1 τ )

Hình 3.6: Cách các LSTM hidden unit tương tác với nhau

Fν−1 −1 ν −1
FX
!
(t)(ντ −1)
(t)(ντ )
X i (ν)f (t)(ν−1τ ) i (ν)f
if =σ Θfν0 hf 0 + Θfτ0 hf 0 , (3.21)
f 0 =0 f 0 =0
F ν−1 −1 ν −1
FX
!
(t)(ντ −1)
(t)(ντ )
X f (ν)f (t)(ν−1τ ) f (ν)f
ff =σ Θfν0 hf 0 + Θfτ0 hf 0 , (3.22)
f 0 =0 f 0 =0
Fν−1 −1 ν −1
FX
!
o (ν)f (t)(ντ −1)
(t)(ντ )
X o (ν)f (t)(ν−1τ )
of =σ Θfν0 hf 0 + Θfτ0 hf 0 . (3.23)
f 0 =0 f 0 =0

Hàm sigmoid chính là lý do tại sao các hàm i, f, o được gọi là gate: chúng
nhận giá trị từ 0 đến 1, do đó cho phép hoặc ngăng không cho thông tin đi đến
bước kế tiếp. Những cập nhật trạng thái của cell được thực hiện theo cách sau

Fν−1 −1 ν −1
FX
!
g (ν)f (t)(ντ −1)
(t)(ντ )
X g (ν)f (t)(ν−1τ )
gf = tanh Θfν0 hf 0 + Θfτ0 hf 0 , (3.24)
f 0 =0 f 0 =0
(t)(ντ ) (t)(ντ ) (t)(ντ −1) (t)(ντ ) (t)(ντ )
cf = ff cf + if gf , (3.25)

54
và như được giới thiệu, cập nhật hidden state chỉ là một probe của trạng thái
cell hiện tại
 
(t)(ντ ) (t)(ντ ) (t)(ντ )
hf = of tanh cf . (3.26)

3.5.3 Batch normalization


Trong batchnorm, các quy luật cập nhật cho gate được thay đổi như sau

Fν−1 −1 ν −1
FX
!
i (−ν)f (t)(ντ −1)
(t)(ντ )
X i (ν−)f (t)(ν−1τ )
if =σ Θfν0 yf 0 + Θfτ0 yf 0 , (3.27)
f 0 =0 f 0 =0
F ν−1 −1 ν −1
FX
!
f (−ν)f (t)(ντ −1)
(t)(ντ )
X f (ν−)f (t)(ν−1τ )
ff =σ Θfν0 yf 0 + Θfτ0 yf 0 , (3.28)
f 0 =0 f 0 =0
Fν−1 −1 ν −1
FX
!
o (−ν)f (t)(ντ −1)
(t)(ντ )
X o (ν−)f (t)(ν−1τ )
of =σ Θfν0 yf 0 + Θfτ0 yf 0 , (3.29)
f 0 =0 f 0 =0
Fν−1 −1 ν −1
FX
!
g (−ν)f (t)(ντ −1)
(t)(ντ )
X g (ν−)f (t)(ν−1τ )
gf = tanh Θfν0 yf 0 + Θfτ0 yf 0 , (3.30)
f 0 =0 f 0 =0

với

(t)(ντ ) (ντ ) (t)(ντ ) (ντ )


yf = γf h̃f + βf , (3.31)


(t)(ντ ) (ντ )
(t)(ντ ) hf − ĥf
h̃f = r 2 (3.32)
(ντ )
σf +


Tmb −1 Tmb −1 
(ντ ) 1 X (t)(ντ )

(ντ )
2 1 X (t)(ντ ) (ντ )
2
ĥf = hf , σf = hf − ĥf . (3.33)
Tmb t=0 Tmb t=0

55
Điều quan trọng là phải tính tổng cho trung bình và phương sai, điều này
phục vụ cho việc đánh giá của cross-validation và tập kiểm tra (gọi e là số vòng
lặp – iterations/epochs)

h i
(t)(ντ ) (ντ )
h i eE hf + ĥf
(t)(ντ ) e
E hf = , (3.34)
e+1 e+1
h i  2
(t)(ντ ) (ντ )
h i eVar hf + σ̂f
(t)(ντ ) e
Var hf = (3.35)
e+1 e+1
h i h i
(t)(ντ ) Tmb (t)(ντ )
và được sử dụng ở cuối là E hf và Tmb −1
Var hf .

3.5.4 Backpropagation trong LSTM


labelsec:appendbackproplstm
Backpropagation trong LSTM có cấu trúc tương tự RNN, cụ thể là

(t)(N −1τ ) 1  (t)(N τ ) (t)(τ )



δf = h − yf , (3.36)
Tmb f

and

(t)(ν−1τ )
Tmb
X (tt0 )(ντ )
X X−1
1 Fν+1−
(t0 )(ν−τ +)b (t0 )(ν−τ +)
δf = Jf Hf f 0 δf 0 . (3.37)
t0 =0 =0 f 0 =0

Những thay đổi là hình thức của H, được xác định bởi
 
(t)(ντ ) (t)(ντ ) (t)(ντ )
Of = hf 1− of ,
    
(t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ )
If = of 1 − tanh2 cf gf if 1 − if ,
    
(t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ −1) (t)(ντ ) (t)(ντ )
Ff = of 1 − tanh2 cf cf ff 1 − ff ,
     2 
(t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ ) (t)(ντ )
Gf = of 2
1 − tanh cf if 1 − gf , (3.38)

56
(t)(ντ )a o (ν+1)f 0 (t)(ν+1τ ) f (ν+1)f 0 (t)(ν+1τ )
Hf f 0 = Θfa Of 0 + Θ fa Ff 0
g (ν+1)f 0 (t)(ν+1τ ) i (ν+1)f 0 (t)(ν+1τ )
+ Θfa Gf 0 + Θfa If 0 . (3.39)

3.5.5 Cập nhật trọng số và coefficient trong LSTM


giống như cho RNN, (nhưng với H được định nghĩa ở mục ??), với ν = 1 ta có

mb −1
T −1 TX
X
ρ (ν)f (ντ )(t) (ντ )(t) (ν−1τ )(t)
∆fν0 = ρf δf hf 0 , (3.40)
τ =0 t=0

(3.41)

nếu ngược lại

mb −1
T −1 TX
X
ρ (ν)f (ντ )(t) (ντ )(t) (ν−1τ )(t)
∆fν0 = ρf δf yf 0 , (3.42)
τ =0 t=0
(ντ )(t) (ντ )(t) (ν−1τ )(t)
ρf δf yf 0 , (3.43)
mb −1
T −1 TX
(ντ )(t) (ντ )(t) (ντ −1)(t)
ρ (ν)f
X
∆fτ0 = ρf δf yf 0 , (3.44)
τ =1 t=0

β(ντ )
TX X−1
1 Fν+1−
mb −1 X
(t)(ν−τ +)b (t)(ν−τ +)
∆f = Hf f 0 δf 0 , (3.45)
t=0 =0 f 0 =0

γ(ντ )
mb −1
TX
(t)(ντ )
X X−1
1 Fν+1−
(t)(ν−τ +)b (t)(ν−τ +)
∆f = h̃f Hf f 0 δf 0 .
t=0 =0 f 0 =0

(3.46)

mb −1
T −1 TX
(t)(N −1τ ) (t)(N −1τ )
X
∆ff 0 = yf 0 δf . (3.47)
τ =0 t=0

57
Chương 4

Xây dựng mô hình minh họa

4.1 Giới thiệu


Ở chương này, chúng tôi sẽ mô tả lại quá trình thực hiện cũng như đánh giá kết
quả các thí nghiệm khi thực hiện phân loại ảnh với một bộ dữ liệu phổ biến. Chúng
tôi huấn luyện một mô hình đơn giản thuộc loại convolutional neural network và
áp dựng các kiến thức đã tìm hiểu: convolutional, max pooling, droput và fully
connected layers.

4.2 Mã nguồn
Mã nguồn được chia sẻ tại https://github.com/danhph/friendly-cnn. Môi
trường lập trình sử dụng Anaconda với Python 3.x và Tensorflow. Việc cài đặt
dễ dàng với 4 bước:
1. Tải phần mềm Anaconda tại địa chỉ https://anaconda.org/anaconda/python.
2. Chạy câu lệnh cài đặt môi trường trong thư mục chứa mã nguồn:
conda env create -f setup_env.yml
3. Kích hoạt môi trường lập trình:
source activate friendly-cnn

58
Hình 4.1: Minh họa dữ liệu của CIFAR-10.

4.3 Dữ liệu
Chúng tôi sử dụng bộ dữ liệu CIFAR-10 Krizhevsky et al. bao gồm 60000 bức
ảnh màu có kích thước 32x32 với phân nhóm 10 và có 6000 ảnh mỗi nhóm. Bộ
dữ liệu được chia làm 50000 ảnh để huấn luyện và 10000 ảnh để thử nghiệm.
Bộ dữ liệu được chia thành năm batch huấn luyện và một batch thử nghiệm,
mỗi đợi có 10000 hình ảnh. Các batch thử nghiệm chứa chính xác 1000 hình ảnh
được lựa chọn ngẫu nhiên từ mỗi lớp. Các batch huấn luyện chứa các hình ảnh
còn lại theo thứ tự ngẫu nhiên, nhưng một số batch huấn luyện có thể chứa nhiều
hình ảnh của lớp này hơn lớp khác. Mỗi batch chứa các nhãn và ảnh thuộc các
nhóm sau: airplane, automobile, bird, cat, deer, dog, frog, horse, ship và truck
như mô tả trong hình 4.1.

4.4 Xây dựng mô hình


Đầu tiên, chúng tôi xây dựng các conv-maxpool layer (kết hợp Convolution và
Max Pooling Layer) với hàm kích hoạt ReLU. Bên cạnh đó, chúng tôi cũng xây
dựng các Fully-Connected Layer. Tất cả chúng đều được tự xây dựng lại dựa trên

59
O
I
C P C P C P F F u
n
o o o o o o u u t
p
n o n o n o l l p
u
v l v l v l l l u
t
t

Hình 4.2: Mô hình CNN đơn giản của chúng tôi.

các TensorFlow package.

def conv2d_maxpool(x_tensor, conv_num_outputs, conv_ksize,


conv_strides, pool_ksize, pool_strides):
"""
Apply convolution then max pooling to x_tensor
:param x_tensor: TensorFlow Tensor
:param conv_num_outputs: Num of outputs for the convolutional layer
:param conv_ksize: kernal size 2-D Tuple for the convolutional layer
:param conv_strides: Stride 2-D Tuple for convolution
:param pool_ksize: kernal size 2-D Tuple for pool
:param pool_strides: Stride 2-D Tuple for pool
: return: A tensor that represents convolution and max pooling of
x_tensor
"""
pool_ksize = [1, *pool_ksize, 1]
pool_strides = [1, *pool_strides, 1]
conv_strides = [1, *conv_strides, 1]

conv_weights = tf.Variable(tf.random_normal([*conv_ksize,
x_tensor.shape[3].value, conv_num_outputs], stddev=0.05))
conv_bias = tf.Variable(tf.zeros(conv_num_outputs))

x = tf.nn.conv2d(x_tensor, conv_weights, strides=conv_strides,


padding=’SAME’)
x = tf.nn.bias_add(x, conv_bias)
x = tf.nn.relu(x)
x = tf.nn.max_pool(x, pool_ksize, pool_strides, padding=’SAME’)
return x

60
def fully_conn(x_tensor, num_outputs):
"""
Apply a fully connected layer to x_tensor using weight and bias
: x_tensor: A 2-D tensor where the first dimension is batch size.
: num_outputs: The number of output that the new tensor should be.
: return: A 2-D tensor where the second dimension is num_outputs.
"""
weights = tf.Variable(tf.random_normal((x_tensor.shape[1].value,
num_outputs), stddev=0.05))
bias = tf.Variable(tf.zeros(num_outputs))
x = tf.add(tf.matmul(x_tensor, weights), bias)
x = tf.nn.relu(x)
return x

Kế tiếp chúng tôi xây dựng mô hình với ba conv2d_maxpool layer, theo sau
bởi 2 fully_conn layer kết hợp 2 dropout layer.

4.5 Huấn luyện mô hình


Sau khi thử các bộ tham số (epochs, keep_probability) khác nhau. Mô hình cuối
của chúng tôi sử dụng epochs là 50 và keep_probability là 0.6.

Trong mỗi lần huấn luyện, chúng tôi huấn luyện mô hình trên một batch đơn
của CIFAR-10 để tiết kiệm thời gian. Sau khi đạt được độ chính xác cao tốt hơn,
chúng tôi tiếp túc huấn luyện mô hình trên toàn bộ dữ liệu.

Chúng tôi sử dụng loss function là hàm softmax cross entropy và đánh giá mô
hình dựa trên tỉ lệ phần trăm dự đoán chính xác nhãn của ảnh.

61
4.6 Kết quả
Với kết quả kiểm thử, mô hình của chúng tôi cho độ chính xác là 68.32%. Đây
không phải là một kết quả thấp đối với một mô hình CNN đơn giản. Và còn rất
nhiều kỹ thuật khác mà chúng tôi chưa áp dụng.

62
Chương 5

Kết luận và hướng phát triển

Bài báo cáo này tổng kết lại những tìm hiểu của chúng tôi về kỹ thuật Deep
Learning. Chúng tôi đã trình bày lại kiến trúc của ba loại neutral network phổ
biến nhất, cũng các công thức toán học dùng để huấn luyện các mô hình này một
cách cẩn thận. Với những kiến thức này, chúng tôi đã hiểu thêm về cách một mô
hình neutral network được thiết kế cũng như cách nó hoạt động. Bên canh đó,
chúng tôi cũng đã xây dựng một mô hình đơn giản thông qua các kiến thức đã
tìm hiểu.
Deep Learning là một lĩnh vực phát triển rất nhanh và các mô hình hiện tại
sẽ lỗi thời trong tương lai gần. Tuy nhiên những cách tiếp cận đã được chúng tôi
giới thiệu vẫn sẽ giúp ích cho việc hiểu những nguyên lí phía sau các mô hình
tiên tiến sau này.
Báo cáo này là một bài tổng hợp kiến thức với mong muốn giúp các đọc giả dễ
dàng tiếp cận với lĩnh vực Deep Learning. Tuy đã nỗ lực rất nhiều nhưng không
thể thiếu sót, nhất là những sai sót liên quan đến vấn đề dịch các thuật ngữ giữa
Tiếng Anh và Tiếng Việt. Chúng tôi sẽ tiếp tục bổ sung và cập nhật các kiến
thức mới trong lĩnh vực cũng như chỉnh sửa các lỗi dịch của thuật ngữ cho bài
báo cáo này trong tương lai.

63
Trích dẫn

Bengio, Y., Simard, P. & Frasconi, P. (1994). Learning long-term depen-


dencies with gradient descent is difficult. IEEE transactions on neural net-
works, 5, 157–166. 52

Bengio, Y. et al. (2009). Learning deep architectures for ai. Foundations and
trends
R in Machine Learning, 2, 1–127. x

Duchi, J., Hazan, E. & Singer, Y. (2011). Adaptive subgradient methods for
online learning and stochastic optimization. J. Mach. Learn. Res., 12, 2121–
2159. 20

Epelbaum, T. (2017). Deep learning: Technical introduction. ArXiv e-prints. i

Gatys, L.A., Ecker, A.S. & Bethge, M. (2015). A neural algorithm of


artistic style. arXiv preprint arXiv:1508.06576 . x

Gers, F.A., Schmidhuber, J.A. & Cummins, F.A. (2000). Learning to for-
get: Continual prediction with lstm. Neural Comput., 12, 2451–2471. 52

Graves, A. (2011). Supervised Sequence Labelling with Recurrent Neural Net-


works. 45

Gu, J., Wang, Z., Kuen, J., Ma, L., Shahroudy, A., Shuai, B., Liu,
T., Wang, X. & Wang, G. (2015). Recent advances in convolutional neural
networks. CoRR, abs/1512.07108. 33

Gupta, A., Wang, H. & Ganapathiraju, M. (2015). Learning structure in


gene expression data using deep architectures, with an application to gene clus-

64
TRÍCH DẪN

tering. In Bioinformatics and Biomedicine (BIBM), 2015 IEEE International


Conference on, 1328–1335, IEEE. x

He, K., Zhang, X., Ren, S. & Sun, J. (2015). Deep residual learning for
image recognition. 7. 36

Ioffe, S. & Szegedy, C. (2015). Batch normalization: Accelerating deep net-


work training by reducing internal covariate shift. 13

Kingma, D. & Ba, J. (2014). Adam: A method for stochastic optimization. 22

Krizhevsky, A., Nair, V. & Hinton, G. (????). Cifar-10 (canadian institute


for advanced research), 2009a. URL http://www. cs. toronto. edu/kriz/cifar.
html . 59

Krizhevsky, A., Sutskever, I. & Hinton, G.E. (2012). Imagenet classifi-


cation with deep convolutional neural networks. In F. Pereira, C.J.C. Burges,
L. Bottou & K.Q. Weinberger, eds., Advances in Neural Information Processing
Systems 25 , 1097–1105, Curran Associates, Inc. 34

Lecun, Y., Bottou, L., Bengio, Y. & Haffner, P. (1998). Gradient-based


learning applied to document recognition. In Proceedings of the IEEE , 2278–
2324. 34

LeCun, Y., Bottou, L., Orr, G.B. & Müller, K.R. (1998). Effiicient
backprop. In Neural Networks: Tricks of the Trade, This Book is an Outgrowth
of a 1996 NIPS Workshop, 9–50, Springer-Verlag, London, UK, UK. 15

LeCun, Y., Bengio, Y. & Hinton, G. (2015). Deep learning. Nature, 521,
436–444. ii

Nesterov, Y. (1983). A method for unconstrained convex minimization problem


with the rate of convergence o (1/k2). In Doklady an SSSR, vol. 269, 543–547.
20

Osako, K., Singh, R. & Raj, B. (2015). Complex recurrent neural networks
for denoising speech signals. In Applications of Signal Processing to Audio and
Acoustics (WASPAA), 2015 IEEE Workshop on, 1–5, IEEE. x

65
TRÍCH DẪN

Qian, N. (1999). On the momentum term in gradient descent learning algo-


rithms. Neural Networks, 12, 145 – 151. 19

Rosenblatt, F. (1958). The perceptron: A probabilistic model for information


storage and organization in the brain. Psychological Review , 65–386. x

Simonyan, K. & Zisserman, A. (2014). Very deep convolutional networks for


large-scale image recognition. CoRR, abs/1409.1556. 35

Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I. &


Salakhutdinov, R. (2014). Dropout: A simple way to prevent neural net-
works from overfitting. J. Mach. Learn. Res., 15, 1929–1958. 13

Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D.,
Erhan, D., Vanhoucke, V. & Rabinovich, A. (2015). Going deeper with
convolutions. In Computer Vision and Pattern Recognition (CVPR). 35

Wang, H., Meghawat, A., Morency, L.P. & Xing, E.P. (2016). Select-
additive learning: Improving cross-individual generalization in multimodal sen-
timent analysis. arXiv preprint arXiv:1609.05244 . x

Wang, H., Raj, B. & Xing, E.P. (2017). On the origin of deep learning.
CoRR, abs/1702.07800. i

Zeiler, M.D. (2012). Adadelta: An adaptive learning rate method. CoRR,


abs/1212.5701. 21

66

You might also like