1
Bài 9: Mạng hồi quy
2
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
3
Bài toán dự đoán chuỗi
4
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?
5
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?
6
Phân loại sắc thái
• “The food was really good”
Classifier
h5
Trạng thái ẩn “Memory” “Context”
h1
h4
h2
h3
“good”
“was”
“food”
“really”
“The”
Recurrent Neural Network (RNN)
7
Mô hình ngôn ngữ
8
Mô hình ngôn ngữ
• Character RNN
9
Image source
Character RNN
Kí tự đầu ra yi
𝑝 𝑦!, 𝑦", … , 𝑦#
Lớp đầu ra (biến đổi tuyến tính + softmax)
#
𝑝(𝑦$|𝑦!, … , 𝑦$&!)
= & $%! #
𝑃’(𝑦$|ℎ$)
≈ & $%!
Trạng thái ẩn hi
Mã hóa One-hot xi
Ký tự đầu vào
10
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
“The dog is hiding”
11
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
“hiding” “is” “STOP” “The” “dog”
h4 h3 h5 h1 h2
h1 h4 h3 h0 h2
12
“hiding” “START” “is” “dog” “The” CNN
Dịch máy
https://translate.google.com/
13
Dịch máy
• Nhiều đầu vào – nhiều đầu ra (hay còn gọi là
sequence to sequence)
“is” “Matches” “Nature”
14
“nature” “Correspondances” “La”
Tổng hợp các loại dự đoán
Dịch máy
Sinh mô tả ảnh
Phân lớp ảnh
Phân loại sắc thái câu
Phân loại video mức frame
15
Mạng hồi quy thông thường
16
Mạng hồi quy Recurrent Neural Network (RNN)
Đầu ra tại thời điểm t
yt
Bộ phân loại
ht
Trạng thái ẩn tại thời điểm t
Hồi quy: ℎ! = 𝑓"(𝑥!, ℎ!#$)
old state
Lớp ẩn
function of W
input at time t
new state
xt
Dữ liệu vào tại thời điểm t
17
Duỗi (unroll) RNN
y3
y2
h3
y1
h3
Bộ phân loại
Lớp ẩn
h2
h2
Bộ phân loại
Lớp ẩn
h1
h1
x3
Lớp ẩn
t = 3
x2
h0
t = 2
x1
t = 1
18
Bộ phân loại
RNN thông thường
ht
= tanh 𝑊
ℎ- = 𝑓.(𝑥-, ℎ-/0) 𝑥- ℎ-/0
xt
W
J. Elman, Finding structure in time, Cognitive science 14(2), pp. 179–211, 1990
19
ht-1
RNN thông thường
ht
= tanh 𝑊
ℎ- = 𝑓.(𝑥-, ℎ-/0) 𝑥- ℎ-/0
xt
W
𝜎 𝑎
tanh 𝑎 =
𝑒! − 𝑒"! 𝑒! + 𝑒"! = 2𝜎 2𝑎 − 1
tanh 𝑎
20
Image source
ht-1
RNN thông thường
ht
= tanh 𝑊
ℎ- = 𝑓.(𝑥-, ℎ-/0) 𝑥- ℎ-/0
xt
W
tanh 𝑎 = 1 − tanh)(𝑎)
𝑑 𝑑𝑎
21
Image source
ht-1
RNN thông thường
ht
= tanh 𝑊
ℎ- = 𝑓.(𝑥-, ℎ-/0) 𝑥- ℎ-/0
xt
W
= tanh 𝑊1𝑥- + 𝑊2ℎ-/0
m
n
m
𝑊"
𝑊!
𝑥!
n-dim.
m-dim.
ℎ!"#
22
ht-1
RNN Forward Pass
e1
e2
e3
𝑒# = −log(𝑦#(𝐺𝑇#))
𝑦# = softmax(𝑊&ℎ#)
y1 y2 y3
ℎ# = tanh 𝑊
𝑥# ℎ#$%
h1 h2 h3
Dùng chung trọng số (shared weights)
23
h0 x1 h1 x2 h2 x3
Lan truyền ngược theo thời gian (BPTT)
24
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.
25
Tính toán tiến (forward pass) mạng RNN duỗi
e1
e2
e3
𝑒# = −log(𝑦#(𝐺𝑇#))
𝑦# = softmax(𝑊&ℎ#)
y1 y2 y3
ℎ# = tanh 𝑊
𝑥# ℎ#$%
h1 h2 h3
26
h0 x1 h1 x2 h2 x3
Tính toán tiến (forward pass) mạng RNN duỗi
e1
e2
e3
𝑒# = −log(𝑦#(𝐺𝑇#))
𝑦# = softmax(𝑊&ℎ#)
y1 y2 y3
ℎ# = tanh 𝑊
𝑥# ℎ#$%
h1 h2 h3
27
h0 x1 h1 x2 h2 x3
Lan truyền ngược mạng RNN
Lỗi từ yt
Lỗi từ dự đoán ở các bước tương lai
ℎ( = tanh 𝑊)𝑥( + 𝑊*ℎ(&!
𝜕𝑒 𝜕ℎ#
=
⨀ 1 − tanh" 𝑊)𝑥( + 𝑊*ℎ(&!
+ ℎ(&!
𝜕𝑒 𝜕𝑊*
𝜕𝑒 𝜕ℎ(
ht
𝜕𝑒 𝜕𝑊
=
⨀ 1 − tanh" 𝑊)𝑥( + 𝑊*ℎ(&!
+ 𝑥(
xt
𝜕𝑒 𝜕𝑊)
𝜕𝑒 𝜕ℎ(
W
𝜕𝑒 𝜕ℎ#$%
+ 1 − tanh" 𝑊)𝑥( + 𝑊*ℎ(&! ⨀
= 𝑊*
𝜕𝑒 𝜕ℎ(&!
𝜕𝑒 𝜕ℎ(
Lan truyền ngươc tới các bước sớm hơn
29
ht-1
Lan truyền ngược mạng RNN
e1
e2
e3
’ 1 − tanh( 𝑊"𝑥# + 𝑊!ℎ#$% ⨀
= 𝑊!
𝜕𝑒 𝜕ℎ#$%
𝜕𝑒 𝜕ℎ#
Giá trị hàm tanh lớn sẽ tương ứng với gradient nhỏ (vùng bão hòa)
y1 y2 y3
h1 h2 h3
Xét
với 𝑘 ≪ 𝑛
=># =?$
30
h0 x1 h1 x2 h2 x3
Lan truyền ngược mạng RNN
e1
e2
e3
’ 1 − tanh( 𝑊"𝑥# + 𝑊!ℎ#$% ⨀
= 𝑊!
𝜕𝑒 𝜕ℎ#$%
𝜕𝑒 𝜕ℎ#
y1 y2 y3
Gradient sẽ triệt tiêu nếu giá trị riêng lớn nhất của 𝑊! nhỏ hơn 1
h1 h2 h3
Xét
với 𝑘 ≪ 𝑛
=># =?$
31
h0 x1 h1 x2 h2 x3
Chi tiết xem tại khóa cs224n
32
Chi tiết xem tại khóa cs224n
33
Mạng LSTM và GRU
34
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
35
LSTM Cell
Cell
ℎ! = tanh 𝑐!
ct
Wg xt
𝑔! = tanh 𝑊$
𝑥! ℎ!"#
ht
𝑐! = 𝑐!"# + 𝑔!
36
ht-1
LSTM Cell
Cell
ct
Wg xt
𝑔! = tanh 𝑊$
𝑥! ℎ!"#
ht
37
ht-1
LSTM Cell
xt ht-1
Input Gate
Wi
𝑖! = 𝜎 𝑊%
+ 𝑏%
𝑥! ℎ!"#
Cell
it
.
ct
Wg xt
𝑔! = tanh 𝑊$
𝑥! ℎ!"#
ht
𝑐! = 𝑐!"# + 𝑖!⨀ 𝑔!
38
ht-1
LSTM Cell
xt ht-1 xt ht-1
Input Gate
Output Gate
𝑜! = 𝜎 𝑊&
+ 𝑏&
𝑖! = 𝜎 𝑊%
+ 𝑏%
𝑥! ℎ!"#
𝑥! ℎ!"#
Cell
Wi Wo it ot
ℎ! = 𝑜!⨀ tanh 𝑐!
.
.
ct
Wg xt
𝑔! = tanh 𝑊$
𝑥! ℎ!"#
ht
𝑐! = 𝑐!"# + 𝑖!⨀ 𝑔!
39
ht-1
LSTM Cell
xt ht-1 xt ht-1
Input Gate
Output Gate
𝑜! = 𝜎 𝑊&
+ 𝑏&
𝑖! = 𝜎 𝑊%
+ 𝑏%
𝑥! ℎ!"#
𝑥! ℎ!"#
Cell
Wi Wo it ot
ℎ! = 𝑜!⨀ tanh 𝑐!
.
.
ct
Wg xt
𝑔! = tanh 𝑊$
𝑥! ℎ!"#
ht
𝑐! = 𝑓!⨀𝑐!"# + 𝑖!⨀ 𝑔!
Forget Gate
𝑓! = 𝜎 𝑊’
+ 𝑏’
ht-1
𝑥! ℎ!"#
ft Wf
40
xt ht-1
LSTM Forward Pass Summary
•
=
𝑥C ℎC"H
tanh 𝜎 𝜎 𝜎
𝑔C 𝑖C 𝑓C 𝑜C
𝑊D 𝑊E 𝑊F 𝑊G • 𝑐C = 𝑓C⨀𝑐C"H + 𝑖C⨀ 𝑔C • ℎC = 𝑜C⨀ tanh𝑐C
41
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
For complete details: Illustrated LSTM Forward and Backward Pass
42
Figure source
Gated Recurrent Unit (GRU) • Không dùng “cell state” riêng biệt, ghép chung với hidden state
• Kết hợp cổng “forget” và “output” thành cổng “update”
Update Gate
xt ht-1
Wz zt
xt W
h’t
.
ht
Reset Gate
ht-1
43
rt Wf
xt ht-1
Gated Recurrent Unit (GRU)
ℎ# = tanh 𝑊
𝑥# ℎ#$%
xt W
ht
44
ht-1
Gated Recurrent Unit (GRU)
𝑟# = 𝜎 𝑊)
+ 𝑏#
𝑥# ℎ#$%
* = tanh 𝑊 ℎ#
𝑥# 𝑟# ⨀ ℎ#$%
xt W
.
h’t
Reset Gate
ht-1
rt Wf
45
xt ht-1
Gated Recurrent Unit (GRU)
xt ht-1
Update Gate
𝑟# = 𝜎 𝑊)
+ 𝑏#
𝑥# ℎ#$%
Wz zt
* = tanh 𝑊 ℎ#
𝑥# 𝑟# ⨀ ℎ#$%
xt W
.
h’t
𝑧# = 𝜎 𝑊+
+ 𝑏+
𝑥# ℎ#$%
Reset Gate
ht-1
rt Wf
46
xt ht-1
Gated Recurrent Unit (GRU)
xt ht-1
Update Gate
𝑟# = 𝜎 𝑊)
+ 𝑏#
𝑥# ℎ#$%
Wz zt
* = tanh 𝑊 ℎ#
𝑥# 𝑟# ⨀ ℎ#$%
xt W
h’t
.
ht
𝑧# = 𝜎 𝑊+
+ 𝑏+
𝑥# ℎ#$%
Reset Gate
ht-1
* ℎ# = 1 − 𝑧# ⨀ ℎ#$% + 𝑧#⨀ ℎ#
rt Wf
47
xt ht-1
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
48
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
y4
y2
y3
y5
y6
x1
x2
x3
x4
x5
x6
• Phổ biến trong nhận dạng âm thanh
49
Một số ví dụ ứng dụng
50
Phân loại chuỗi
Ignore
Ignore
Linear Classifier
hn
h2
h1
RNN
RNN
RNN
h1
hn-1
h2
The
food
good
51
Phân loại chuỗi
Linear Classifier
h = Sum(…)
h1
hn
h2
RNN
RNN
RNN
h1
hn-1
h2
food
The
good
http://deeplearning.net/tutorial/lstm.html
52
Phân loại chuỗi
Linear Classifier
h = Sum(…)
hn
h1
h2
Bi-RNN
Bi-RNN
Bi-RNN
h1
hn-1
h2
The
food
good
53
Character RNN
100th iteration
300th iteration
700th iteration
2000th iteration
http://karpathy.github.io/2015/05/21/rnn-effectiveness/
54
Image source
Image Caption Generation
“hiding” “is” “STOP” “The” “dog”
Classifier Classifier Classifier Classifier Classifier
h4 h3 h5 h1 h2
h1 h4 h3 h0 h2
55
“hiding” “START” “is” “dog” “The” CNN
Sinh mô tả ảnh
56
Dịch máy
Sequence-to-sequence
I. Sutskever, O. Vinyals, Q. Le, Sequence to Sequence Learning with Neural Networks, NIPS 2014
Encoder-decoder
K. Cho, B. Merrienboer, C. Gulcehre, F. Bougares, H. Schwenk, and Y. Bengio, Learning phrase representations using RNN encoder-decoder for statistical machine translation, ACL 2014
57
Tài liệu tham khảo
1. Khóa cs231n của Stanford:
http://cs231n.stanford.edu
2. Khóa cs244n của Stanford:
http://web.stanford.edu/class/cs224n/slides/cs224n- 2020-lecture06-rnnlm.pdf
http://web.stanford.edu/class/cs224n/slides/cs224n- 2020-lecture07-fancy-rnn.pdf
3. Training RNNs: http://www.cs.toronto.edu/~rgrosse/csc321/lec10.pdf
58
Chân thành cảm ơn!!!
59