Professional Documents
Culture Documents
L5 RNN Hust
L5 RNN Hust
1
Nội dung
• Bài toán dự đoán chuỗi
• Mạng hồi quy thông thường
• Lan truyền ngược theo thời gian (BPTT)
• Mạng LSTM và GRU
• Một số áp dụng
2
Bài toán dự đoán chuỗi
3
Bài toán dự đoán chuỗi
• Trước giờ, ta chỉ tập trung vào vấn đề dự đoán với đầu
vào và đầu ra kích thước cố định
• Chuyện gì sẽ xảy ra nếu đầu vào và đầu ra là một
chuỗi có kích thước thay đổi?
4
Phân lớp văn bản
• Phân loại sắc thái (sentiment): phân loại bình luận một
nhà hàng hay một bộ phim hay một sản phẩm là tích
cực hay tiêu cực
• “The food was really good” - “Thức ăn rất ngon”
• “Máy hút bụi bị hỏng trong vòng hai tuần”
• “Bộ phim có những phần buồn tẻ, nhưng tổng thể là rất đáng
xem”
• Cần dùng đặc trưng gì và mô hình phân loại gì để giải
quyết bài toán này?
5
Phân loại sắc thái
• “The food was really good”
Classifier
Trạng thái ẩn
“Memory” h5
“Context”
h1 h2 h3 h4
6
Mô hình ngôn ngữ
7
Mô hình ngôn ngữ
• Character RNN
8
Image source
Character RNN
Kí tự đầu ra yi
Mã hóa One-hot xi
Ký tự đầu vào
9
Sinh mô tả bức ảnh
• Cho một bức ảnh, cần sinh ra một câu mô tả nội dung
bức ảnh
10
Sinh mô tả bức ảnh
Bộ phân loại Bộ phân loại Bộ phân loại Bộ phân loại Bộ phân loại
h1 h2 h3 h4 h5
h0 h1 h2 h3 h4
11
Dịch máy
https://translate.google.com/
12
Dịch máy
• Nhiều đầu vào – nhiều đầu ra (hay còn gọi là
sequence to sequence)
13
Tổng hợp các loại dự đoán
14
Mạng hồi quy thông thường
15
Mạng hồi quy
Recurrent Neural Network (RNN)
Đầu ra tại thời điểm t yt
Bộ phân loại
Hồi quy:
Trạng thái ẩn tại
thời điểm t ht ℎ! = 𝑓" (𝑥! , ℎ!#$ )
new function input at old
Lớp ẩn state of W time t state
16
Duỗi (unroll) RNN
y3
y2
Bộ phân loại
y1 h3
Bộ phân loại h3
h2 Lớp ẩn
Bộ phân loại h2
h1 h1 Lớp ẩn
x3
Lớp ẩn t=3
x2
h0 t=2
x1
t=1
17
RNN thông thường
ht
ℎ- = 𝑓. (𝑥- , ℎ-/0 )
W
𝑥-
= tanh 𝑊 ℎ
-/0
ht-1 xt
J. Elman, Finding structure in time, Cognitive science 14(2), pp. 179–211, 1990
18
RNN thông thường
ht
ℎ- = 𝑓. (𝑥- , ℎ-/0 )
W
𝑥-
= tanh 𝑊 ℎ
-/0
ht-1 xt
𝑒 ! − 𝑒 "!
𝜎 𝑎 tanh 𝑎 = !
𝑒 + 𝑒 "!
tanh 𝑎 = 2𝜎 2𝑎 − 1
19
Image source
RNN thông thường
ht
ℎ- = 𝑓. (𝑥- , ℎ-/0 )
W
𝑥-
= tanh 𝑊 ℎ
-/0
ht-1 xt
𝑑
tanh 𝑎 = 1 − tanh)(𝑎)
𝑑𝑎
20
Image source
RNN thông thường
ht
ℎ- = 𝑓. (𝑥- , ℎ-/0 )
W
𝑥-
= tanh 𝑊 ℎ
-/0
ht-1 xt = tanh 𝑊1 𝑥- + 𝑊2 ℎ-/0
n m
m 𝑊" 𝑊!
𝑥! n-dim.
ℎ!"# m-dim.
21
RNN Forward Pass
e1 e2 e3 𝑒# = −log(𝑦# (𝐺𝑇# ))
y1 y2 y3 𝑦# = softmax(𝑊& ℎ# )
𝑥#
h1 h2 h3 ℎ# = tanh 𝑊 ℎ
#$%
22
Lan truyền ngược theo thời gian
(BPTT)
23
Lan truyền ngược theo thời gian (BPTT)
• Đây là phương pháp thông dụng nhất để huấn luyện
RNNs
• Mạng sau khi duỗi được xem như một mạng nơ-ron
feed-forward lớn nhận dữ liệu đầu vào là cả chuỗi dữ
liệu
• Gradient đối với một trọng số mạng RNN được tính tại
mỗi bản sao của nó trong mạng duỗi (unfolded
network), sau đó được cộng lại (hoặc tính trung bình)
và được sử dụng để cập nhật trọng số mạng.
24
Tính toán tiến (forward pass) mạng RNN duỗi
e1 e2 e3 𝑒# = −log(𝑦# (𝐺𝑇# ))
y1 y2 y3 𝑦# = softmax(𝑊& ℎ# )
𝑥#
h1 h2 h3 ℎ# = tanh 𝑊 ℎ
#$%
h0 x1 h1 x2 h2 x3
25
Tính toán tiến (forward pass) mạng RNN duỗi
e1 e2 e3 𝑒# = −log(𝑦# (𝐺𝑇# ))
y1 y2 y3 𝑦# = softmax(𝑊& ℎ# )
𝑥#
h1 h2 h3 ℎ# = tanh 𝑊 ℎ
#$%
h0 x1 h1 x2 h2 x3
26
Lan truyền ngược mạng RNN
Lỗi từ yt
𝜕𝑒
ht ℎ( = tanh 𝑊) 𝑥( + 𝑊* ℎ(&!
𝜕ℎ#
𝜕𝑒 𝜕𝑒 +
𝜕𝑒 = ⨀ 1 − tanh" 𝑊) 𝑥( + 𝑊* ℎ(&! ℎ(&!
𝜕𝑊* 𝜕ℎ(
𝜕𝑊 W
𝜕𝑒 𝜕𝑒
= ⨀ 1 − tanh" 𝑊) 𝑥( + 𝑊* ℎ(&! 𝑥(+
ht-1 xt 𝜕𝑊) 𝜕ℎ(
𝜕𝑒
𝜕𝑒 + "
𝜕𝑒
𝜕ℎ#$% = 𝑊* 1 − tanh 𝑊) 𝑥( + 𝑊* ℎ(&! ⨀
𝜕ℎ(&! 𝜕ℎ(
Lan truyền ngươc tới
các bước sớm hơn
28
Lan truyền ngược mạng RNN
e1 e2 e3
y1 y2 y3 𝜕𝑒 ' (
𝜕𝑒
= 𝑊! 1 − tanh 𝑊" 𝑥# + 𝑊! ℎ#$% ⨀
𝜕ℎ#$% 𝜕ℎ#
h0 x1 h1 x2 h2 x3
=>#
Xét với 𝑘 ≪ 𝑛
=?$
29
Lan truyền ngược mạng RNN
e1 e2 e3
y1 y2 y3 𝜕𝑒 ' (
𝜕𝑒
= 𝑊! 1 − tanh 𝑊" 𝑥# + 𝑊! ℎ#$% ⨀
𝜕ℎ#$% 𝜕ℎ#
h1 h2 h3
Gradient sẽ triệt tiêu nếu
giá trị riêng lớn nhất của
𝑊! nhỏ hơn 1
h0 x1 h1 x2 h2 x3
=>#
Xét với 𝑘 ≪ 𝑛
=?$
30
Chi tiết xem tại khóa cs224n
31
Chi tiết xem tại khóa cs224n
32
Mạng LSTM và GRU
33
Long Short-Term Memory (LSTM)
• Sử dụng thêm “cell” có bộ nhớ để tránh hiện tượng
triệt tiêu gradient
xt
ht-1 ht
ct-1 ct
S. Hochreiter and J. Schmidhuber, Long short-term memory, Neural Computation 9 (8), pp. 1735–1780, 1997
34
LSTM Cell
xt Wg Cell
𝑥!
ct ht ℎ! = tanh 𝑐!
𝑔! = tanh 𝑊$ ℎ
ht-1 !"#
𝑐! = 𝑐!"# + 𝑔!
35
LSTM Cell
xt Wg Cell
𝑥!
ct ht
𝑔! = tanh 𝑊$ ℎ
ht-1 !"#
36
LSTM Cell
xt ht-1
Wi
Input Gate it
𝑥!
𝑖! = 𝜎 𝑊% ℎ + 𝑏%
!"#
xt Wg Cell
. 𝑥!
ct ht
𝑔! = tanh 𝑊$ ℎ
ht-1 !"#
𝑐! = 𝑐!"# + 𝑖! ⨀ 𝑔!
37
LSTM Cell
xt ht-1 xt ht-1
Wi
Input Gate it Output Gate Wo
ot
𝑥! 𝑥!
𝑖! = 𝜎 𝑊% ℎ + 𝑏% 𝑜! = 𝜎 𝑊& ℎ + 𝑏&
!"# !"#
xt Wg Cell
. 𝑥!
ct . ht ℎ! = 𝑜! ⨀ tanh 𝑐!
𝑔! = tanh 𝑊$ ℎ
ht-1 !"#
𝑐! = 𝑐!"# + 𝑖! ⨀ 𝑔!
38
LSTM Cell
xt ht-1 xt ht-1
Wi
Input Gate it Output Gate Wo
ot
𝑥! 𝑥!
𝑖! = 𝜎 𝑊% ℎ + 𝑏% 𝑜! = 𝜎 𝑊& ℎ + 𝑏&
!"# !"#
xt Wg Cell
. 𝑥!
ct . ht ℎ! = 𝑜! ⨀ tanh 𝑐!
𝑔! = tanh 𝑊$ ℎ
ht-1 !"#
𝑐! = 𝑓! ⨀𝑐!"# + 𝑖! ⨀ 𝑔!
Forget Gate 𝑥!
ft 𝑓! = 𝜎 𝑊' ℎ + 𝑏'
Wf !"#
xt ht-1
39
LSTM Forward Pass Summary
𝑔C tanh 𝑊D
𝑖C 𝜎 𝑊E 𝑥C
• 𝑓C = 𝜎 ℎC"H
𝑊F
𝑜C 𝜎 𝑊G
• 𝑐C = 𝑓C ⨀𝑐C"H + 𝑖C ⨀ 𝑔C
• ℎC = 𝑜C ⨀ tanh𝑐C
40
Figure source
Lan truyền ngược LSTM
• Luồng gradient từ 𝑐C tới 𝑐C"H chỉ lan truyền ngược qua
phép cộng và nhân từng phần tử, không đi qua phép
nhân ma trận và hàm tanh
Update Gate zt Wz
xt W
h’t
ht
ht-1
.
rt Reset Gate
Wf
xt ht-1 42
Gated Recurrent Unit (GRU)
𝑥#
xt W ℎ# = tanh 𝑊 ℎ
ht #$%
ht-1
43
Gated Recurrent Unit (GRU)
𝑥#
𝑟# = 𝜎 𝑊) ℎ + 𝑏#
#$%
𝑥#
xt W ℎ#* = tanh 𝑊 𝑟 ⨀ ℎ
h’t # #$%
ht-1
.
rt Reset Gate
Wf
xt ht-1
44
Gated Recurrent Unit (GRU)
xt ht-1
Wz 𝑥#
Update Gate zt 𝑟# = 𝜎 𝑊) ℎ + 𝑏#
#$%
𝑥#
xt W ℎ#* = tanh 𝑊 𝑟 ⨀ ℎ
h’t # #$%
ht-1
. 𝑧# = 𝜎 𝑊+ ℎ
𝑥#
+ 𝑏+
#$%
rt Reset Gate
Wf
xt ht-1
45
Gated Recurrent Unit (GRU)
xt ht-1
Wz 𝑥#
Update Gate zt 𝑟# = 𝜎 𝑊) ℎ + 𝑏#
#$%
𝑥#
xt W ℎ#* = tanh 𝑊 𝑟 ⨀ ℎ
h’t # #$%
ht
ht-1
. 𝑧# = 𝜎 𝑊+ ℎ
𝑥#
+ 𝑏+
#$%
Wf
rt Reset Gate ℎ# = 1 − 𝑧# ⨀ ℎ#$% + 𝑧# ⨀ ℎ#*
xt ht-1
46
RNNs nhiều lớp
• Có thể thiết kế RNNs với nhiều lớp ẩn
y1 y2 y3 y4 y5 y6
x1 x2 x3 x4 x5 x6
47
RNNs hai chiều
• RNNs có thể xử lý chuỗi đầu vào theo chiều ngược
vào chiều xuôi
y1 y2 y3 y4 y5 y6
x1 x2 x3 x4 x5 x6
49
Phân loại chuỗi
Linear
Ignore Ignore
Classifier
h1 h2 hn
50
Phân loại chuỗi
Linear
Classifier
h = Sum(…)
h1 hn
h2
http://deeplearning.net/tutorial/lstm.html
51
Phân loại chuỗi
Linear
Classifier
h = Sum(…)
h1 hn
h2
52
Character RNN
100th
iteration
300th
iteration
700th
iteration
2000th
iteration
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
53
Image source
Image Caption Generation
h1 h2 h3 h4 h5
h0 h1 h2 h3 h4
54
Sinh mô tả ảnh
55
Dịch máy
Sequence-to-sequence
I. Sutskever, O. Vinyals, Q. Le, Sequence to Sequence Learning with Neural Networks, NIPS 2014
Encoder-decoder
57