Download as pdf or txt
Download as pdf or txt
You are on page 1of 56

Bài 5:

Mạng nơ ron hồi quy

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

“The” “food” “was” “really” “good”

Recurrent Neural Network (RNN)

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

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

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

“The dog is hiding”

10
Sinh mô tả bức ảnh

“The” “dog” “is” “hiding” “STOP”

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

CNN “START” “The” “dog” “is” “hiding”

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)

“Matches” “Nature” “is”

“Correspondances” “La” “nature”

13
Tổng hợp các loại dự đoán

Phân Sinh mô Phân Phân loại


Dịch máy video
lớp tả ảnh loại sắc mức
ảnh thái câu frame

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

Dữ liệu vào tại thời điểm t xt

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 𝑊 ℎ
#$%

Dùng chung trọng số


h0 x1 h1 x2 h2 x3 (shared weights)

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

Lỗi từ dự đoán ở các bước


tương lai

𝜕𝑒
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 𝑊" 𝑥# + 𝑊! ℎ#$% ⨀
𝜕ℎ#$% 𝜕ℎ#

Giá trị hàm tanh lớn sẽ tương ứng


h1 h2 h3 với gradient nhỏ (vùng bão hòa)

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

Tham khảo thêm: Illustrated LSTM Forward and Backward Pass


41
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”
xt ht-1

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

• Phổ biến trong nhận dạng âm thanh


48
Một số ví dụ ứng dụng

49
Phân loại chuỗi

Linear
Ignore Ignore
Classifier

h1 h2 hn

RNN RNN RNN


h1 h2 hn-1

The food good

50
Phân loại chuỗi

Linear
Classifier

h = Sum(…)

h1 hn
h2

RNN RNN RNN


h1 h2 hn-1

The food good

http://deeplearning.net/tutorial/lstm.html

51
Phân loại chuỗi

Linear
Classifier

h = Sum(…)

h1 hn
h2

Bi-RNN Bi-RNN Bi-RNN


h1 h2 hn-1

The food good

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

“The” “dog” “is” “hiding” “STOP”

Classifier Classifier Classifier Classifier Classifier

h1 h2 h3 h4 h5

h0 h1 h2 h3 h4

CNN “START” “The” “dog” “is” “hiding”

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

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
56
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

57

You might also like