Tim Hieu Ve Deep Learning
Tim Hieu Ve Deep Learning
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
Giới thiệu x
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
iv
MỤC LỤC
v
MỤC LỤC
Trích dẫn 64
vi
Danh sách hình vẽ
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Ẽ
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Ẽ
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
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.
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+
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ó.
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
g(x) = σ(x) = . (1.3)
1 + e−x
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 − e−2x
g(x) = tanh(x) = . (1.5)
1 + e−2x
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).
5
Hình 1.5: Hàm RELU và đạo hàm của nó.
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.
6
Hình 1.6: Hàm leaky-RELU và đạo hàm của nó.
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
7
Hình 1.7: Hàm ELU và đạo hàm của nó.
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
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.
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
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 !
Xν
(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
2π
(1.29)
(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
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.
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.
(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ì 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.
(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
(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
16
và với cross entropy loss function
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.51)
và
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.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.
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.
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ó
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.
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
η
Θ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 +
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 +
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
η
Θ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
α0 được xác định bởi cross-validation, và η0 thường bắt đầu trong khoảng 10−3 −
10−2 .
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
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.
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.
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
P −1
RX
(t)(ν) (t)(ν)
af l m = hf SP l+j+P SP m+k+P , (2.8)
j,k=0
(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ó
29
Hình 2.6: Fully connected operation để lấy chiều rộng và chiều cao 1.
ν −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
ν −1
FX
(t)(ν) (o)f (t)(ν)
af = Θf 0 hf 0 , (2.13)
f 0 =0
30
Hình 2.7: Fully connected operation, giống như FNN operations.
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).
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 )
Đố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 .
32
I
C
n
= , = o ,
p
n
u
v
t
P F
= o , = u
o l
l l
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
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
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
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
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
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).
(t0 )(n)
(tt0 )(n) ∂yf 0 l0 m0
δff 0 Jf ll0 mm0 = (t)(ν)
. (2.22)
∂hf l m
(t)(ν) ∂
δf l(+P )m(+P ) = (t)(i)
J(Θ) , (2.25)
∂af l m
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
F F
u u
l l
l l
Ta có L2 loss function
và cross-entropy là
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
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
C P
o o
n o
v l
Fν+1 −1
(o)f 0 (t)(ν+1)
(t)(ν)
X
δf lm = Θf l m δf 0 , (2.29)
f 0 =0
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
Backpropagate từ conv đến conv được minh hoạt trong hình 2.20
39
C C
o o
n n
v v
P C
o o
o n
l v
(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)
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
Đố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
P F
o u
o l
l l
mb −1
TX
Θ(o)f (t)(n) (t)(ν)
∆f 0 = yf 0 δf (2.33)
t=0
Đố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
Đố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
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
Θ(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
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
γ(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
γ(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
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
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.
(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).
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
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
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
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
(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)
50
và cho cross entropy loss function
Gọi
2
(t)(ντ ) (t)(ντ )
Tf = 1 − hf , (3.13)
và
(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 = τ .
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
52
h(ν τ ) h(ν τ ) h(ν τ ) h(ν τ )
(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
53
h(ν τ ) h(ν τ ) h(ν τ ) h(ν τ )
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)
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
và
(t)(ντ ) (ντ )
(t)(ντ ) hf − ĥf
h̃f = r 2 (3.32)
(ντ )
σf +
và
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 .
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)
và
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)
mb −1
T −1 TX
X
ρ (ν)f (ντ )(t) (ντ )(t) (ν−1τ )(t)
∆fν0 = ρf δf hf 0 , (3.40)
τ =0 t=0
(3.41)
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)
và
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
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.
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
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))
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.
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
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. 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
Gers, F.A., Schmidhuber, J.A. & Cummins, F.A. (2000). Learning to for-
get: Continual prediction with lstm. Neural Comput., 12, 2451–2471. 52
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
64
TRÍCH DẪN
He, K., Zhang, X., Ren, S. & Sun, J. (2015). Deep residual learning for
image recognition. 7. 36
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
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
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
66