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