ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TIỂU LUẬN
Mơn học: Khai phá dữ liệu
Chương 10: MƠ HÌNH CHUỖI:
MẠNG NƠ-RON HỒI QUY VÀ ĐỆ QUY
Giáo viên hướng dẫn: PGS. TS. Hà Quang Thụy
Sinh viên thực hiện: Nhóm 6
HÀ NỘI – 2018
MỤC LỤC
BẢNG CHÚ GIẢI VIẾT TẮT 1
PHẦN 1. PHÂN CÔNG CÔNG VIỆC 2
PHẦN 2 – CHƯƠNG 10
3
SEQUENCE MODELING: RECURRENT AND RECURSIVE
NETS
3
10.1. Unfolding Computational Graphs
4
10.2. Recurrent Neural Networks
7
10.2.1. Teacher Forcing and Network with Output Recurrent
12
(Giáo viên bắt buộc và mạng có tái xuất đầu ra)
12
10.2.2. Tính tốn Gradient trong một Recurrent Neural Network 14
10.2.3. Recurrent Networks as Directed Graphical Models 16
10.2.4. Modeling Sequences Conditioned on Context with RNNs 20
10.3. Bidirectional RNNs (mạng nơron hồi quy 2 chiều)
24
10.4. Encoder-Decoder Sequence-to-Sequence Archiectures
26
10.5. Deep Reccurent Networks: Mạng hồi quy sâu
28
10.5.1. Computation: Sự tính tốn 28
10.5.2. Các kiểu mạng RNNs sâu
29
10.6. Recursive Neural Netwoks: Mạng nơron đệ quy
31
10.6.1 Đồ thị tính tốn của mạng đệ quy
10.6.2. Cấu trúc cây trong mạng đệ quy
10.6.3. Biến thể của mạng đệ quy
32
10.7. Thách thức của phụ thuộc xa
33
31
32
10.7.1. Giới thiệu
33
10.7.2. Các hàm thành phần trong RNNs
33
10.7.3. Trường hợp vô hướng và giải pháp khả thi 35
10.7.4. Vanishing and Exploding Gradient Problem 35
10.8. Echo state networks.
Phương pháp ESN
36
2
36
10.9. Leaky units and other strategies for multiple time scales.
39
10.9.1. Adding Skip Connections through Time
39
10.9.2. Leaky units and a spectrum of different time scales. 39
10.9.3. Removing connections.
40
10.10. The long short-term memory and other gated RNNs.
40
10.10.1. Long short-term memory. 41
10.10.2. Other gated RNNs 42
10.11. Optimization for Long-Term Dependencies
43
10.11.1. Clipping Gradients 43
10.11.2. Regularizing to Encourage Information Flow
10.12. Explicit Memory (Bộ nhớ rõ ràng)
46
45
PHẦN 3 - CHƯƠNG 2 50
WORD VECTOR REPRESENTATIONS
50
2.1. Introduction to Word Embedding
50
Neural Language Model
2.2. Word2vec
55
54
2.2.1. Skip-Gram Model
56
2.2.2. Model Components: Architecture
57
2.2.3. Model Components: Hidden Layer 57
2.2.4. Model Components: Output Layer 58
2.2.5. CBOW model 59
2.3. Subsampling Frequent Words
2.3.1. Negative Sampling
60
61
PHẦN 4 – DEMO WORD2VEC – THE SKIP-GRAM MODEL
62
4.1. Thực nghiệm
Bước 1. Lấy dữ liệu: 62
Bước 2. Làm sạch dữ liệu
Bước 3. Tách từ
64
Bước 4: Huấn luyện 65
Bước 5. Test 65
62
63
3
Bước 6. Visualization 67
Link github: 68
4.2. Kết luận
68
PHẦN 5. TÀI LIỆU THAM KHẢO69
Nguồn sách:
69
Các nguồn khác:
69
BẢNG CHÚ GIẢI VIẾT TẮT
Viết tắt
Tiếng Anh
Tiếng Việt
NN
Neural network
Mạng nơron
RNN,
RNNs
Recurrent neural network
Mạng nơron hồi quy
BTTT
Backpropagation through time Truyền ngược liên hồi
MLP
Multi-layer Perceptron
Mạng perceptron đa tầng
SGD
Stochastic gradient descent
Trượt gradient ngẫu nhiên
NTMs
Neural Turing machine
Máy Turing nơron
LSTM
Long short-term memory
Bộ nhớ dài-ngắn
CBOW Continuous Bag of Words
Affine transformation
Phép biến đổi tịnh tiến
Vanishing
Hiện tượng biến mất gradien
Exploding
Hiện tượng gradien tăng đột biến
4
PHẦN 1. PHÂN CÔNG CÔNG VIỆC
Thành viên
Nguyễn Trọng Hà
Nguyễn Hồng Quân
Trần Thị Phương Anh
Dương Thanh Hải
Trần Văn Định
Công việc
10.2. Recurrent Neural Networks
Demo: Word2Vec
Tổng hợp, biên soạn tài liệu chung.
10.1. Unfolding Computational Graphs
10.3. Bidirectional Recurrent Neural Networks
10.4. Encoder-Decoder Sequence-to-Sequence Archiectures
Introduction to Word Embedding
Word2Vec: giới thiệu
Giới thiệu chương 10
10.5. Deep Reccurent Networks
10.6. Recursive Neural Netwoks
10.7. Thách thức của phụ thuộc xa
Word2Vec: Skip-Gram, Model Components
Hỗ trợ biên soạn tài liệu chung.
10.9. Leaky units and other strategies for multiple time scales
10.10. The long short-term memory and other gated Recurrent
Neural Networks
Word2Vec: CBOW
Subsampling Frequent Words
10.11. Optimization for Long-Term Dependencies
10.12. Explicit Memory (Bộ nhớ rõ ràng)
Phần 2 – Chương 10
Sequence Modeling: Recurrent and Recursive Nets
(Mơ hình tuần tự: mạng hồi quy và mạng đệ quy)
Recurrent neural networks (Mạng nơron hồi quy) - RNN (Rumelhart et
al., 1986a) là một dạng mạng nơron để xử lý dữ liệu dạng chuỗi. RNN là mạng nơron
5
chuyên biệt cho xử lý một chuỗi các giá trị x (1), …, x(τ). Nó có thể chia tỷ lệ các chuỗi dài
hơn thực tế đối với các mạng không có dạng chuỗi chun mơn hóa. Hầu hết các
Recursive Nets cũng có thể xử lý các chuỗi có chiều dài thay đổi.
Để chuyển từ mạng đa tầng sang Reccurent Networks, chúng ta cần tận dụng một
trong những ý tưởng ban đầu được tìm thấy trong các mơ hình học máy và thống kê
những năm 1980: chia sẻ các tham số qua các phần khác nhau của một mơ hình. Việc chia
sẻ tham số giúp cho nó có thể mở rộng và ứng dụng mơ hình cho các ví dụ theo các hình
thức khác nhau (ở đây là độ dài khác nhau) và tổng quát chúng. Nếu ta có tham số riêng
với mỗi giá trị ở từng thời điểm, chúng ta khơng thể khái qt hóa độ dài một chuỗi mà ta
khơng thấy trong q trình training, cũng như khơng thể chia sẻ sức mạnh thống kê qua
các độ dài chuỗi khác nhau và qua các vị trí khác nhau trong cùng thời điểm. Chia sẻ như
vậy đặc biệt quan trọng khi một thơng tin cụ thể có thể xảy ra tại nhiều vị trí trong chuỗi.
Ví dụ, hãy xem xét hai câu “I went to Nepal in 2009” và “In 2009, I went to Nepal.” Nếu
chúng ta yêu cầu một mơ hình học máy đọc từng câu và đưa năm mà người kể chuyện đến
Nepal, chúng ta muốn nó nhận ra năm 2009 là phần thông tin liên quan, cho dù nó xuất
hiện ở vị trí nào trong câu đi chăng nữa. Giả sử rằng chúng ta đã đào tạo một feedforward
network xử lý các câu có độ dài cố định. Một kết nối truyền thống đầy đủ của mạng
feedforward sẽ có các tham số riêng biệt cho mỗi đặc trưng đầu vào, vì vậy nó sẽ cần phải
tìm hiểu tất cả các quy tắc về mặt ngôn ngữ một cách riêng biệt tại mỗi vị trí trong câu.
Bằng cách so sánh, một RNN sẽ chia sẻ trọng số qua một vài bước thời gian.
Các Recurrent networks chia sẻ các tham số theo cách: mỗi phần tử của đầu ra là
một hàm của phần tử trước đó. Mỗi thành phần của output được tạo ra bằng cách sử dụng
cùng một quy tắc cập nhật đã được áp dụng cho các kết quả đầu ra trước đó. Cơng thức
hồi quy này dẫn đến chia sẻ các tham số thông qua một đồ thị tính tốn sâu.
Để đơn giản, chúng ta đề cập đến RNNs như phép toán trên một chuỗi mà chứa
vectơ x(t) với bước thời gian chỉ số t chạy từ 1 đến τ. Trong thực tế, mạng thường tính
tốn trên các minibatch (khối con) của các chuỗi như vậy, với độ dài chuỗi τ khác nhau
cho mỗi thành phần minibatch. Chúng ta có bỏ qua các chỉ số minibatch để đơn giản hóa
ký hiệu. Hơn nữa, chỉ số bước thời gian không hiểu theo nghĩa đen ám chỉ thời gian trơi
qua trong thế giới thực. Đơi khi nó chỉ đề cập đến vị trí trong chuỗi (index). RNN cũng có
thể được áp dụng trên dữ liệu trong khơng gian hai chiều như hình ảnh và thậm chí khi
được áp dụng cho dữ liệu liên quan đến thời gian, nó có thể có các kết nối đi ngược thời
gian, với điều kiện toàn bộ chuỗi được quan sát trước khi nó được cung cấp cho RNN.
Để biết thêm thơng tin về RNN, chúng tôi giới thiệu người đọc đến sách giáo khoa
của Graves (2012).
6
10.1. Unfolding Computational Graphs
(Mở rộng đồ thị tính tốn)
Đồ thị tính tốn là một cách để hợp thức hóa cấu trúc của một tập các phép tính,
chẳng hạn như những người tham gia vào việc lập bản đồ đầu vào, tham số cho đầu ra và
mất mát. Bạn hãy xem mục 6.5.1 để có phần giới thiệu chung. Trong phần này chúng tơi
giải thích ý tưởng unfolding một tính tốn đệ quy hoặc tái diễn vào một tính tốn biểu đồ
có cấu trúc lặp lại, thường tương ứng với chuỗi sự kiện. Việc mở rộng biểu đồ này sẽ dẫn
đến việc chia sẻ thông số trên một mạng sâu kết cấu.
Ví dụ, hãy xem xét dạng cổ điển của một hệ thống:
s(t) = f(s(t-1); θ),
(10.1)
trong đó s(t) được gọi là trạng thái của hệ thống.
Phương trình 10.1 có sự hồi quy bởi vì định nghĩa của s tại thời điểm t đề cập đến
thời điểm t - 1. Đối với số time step hữu hạn τ, biểu đồ có thể được mở ra bằng cách áp
dụng định nghĩa τ - 1 lần. Ví dụ, nếu chúng ta mở rộng phương trình 10.1 cho τ = 3,
chúng tơi có được
s(3) = f(s(2); θ),
(10.2)
= f(f(s(1); θ) ; θ),
(10.3)
Mở rộng phương trình bằng cách lặp lại việc áp dụng định nghĩa, cách này mang
lại một biểu thức không liên quan đến sự hồi quy, bây giờ nó được biểu diễn bằng đồ thị
tính toán theo chu kỳ truyền thống. Các Unfolding Computational Graphs của phương
trình 10.1 và phương trình 10.3 được minh họa trong hình 10.1.
(10.1)
Hình 10.1: Hệ thống động học cổ điển được mơ tả theo phương trình 10.1, được coi
như một Unfolding Computational Graphs. Mỗi nút thể hiện trạng thái tại một số thời
điểm và hàm f ánh xạ trạng thái tại t tới trạng thái tại t + 1. Các tham số giống nhau (cùng
một giá trị θ với vai trò là tham số) được sử dụng cho tất cả các bước thời gian. Một ví dụ
7
khác, chúng ta hãy xem xét một hệ thống lực thúc đẩy bởi một bên ngồi tín hiệu x(t)
s(t) = f(s(t-1), x(t) ; θ),
(10.4)
chúng ta thấy rằng trạng thái hiện tại chứa thơng tin về tồn bộ chuỗi q khứ.
RNN có thể được xây dựng theo nhiều cách khác nhau. Hầu như chức năng nào
cũng có thể được coi là mạng thần kinh feedforward, về bản chất bất kỳ chức năng liên
quan đến hồi quy có thể được coi là một RNN.
Nhiều RNN sử dụng phương trình 10.5 hoặc một phương trình tương tự để xác
định giá trị của các đơn vị ẩn. Để chỉ ra rằng trạng thái là đơn vị ẩn, bây giờ chúng ta viết
lại phương trình 10.4 bằng lấy h để đại diện:
h(t) = f(s(t-1), x(t) ; θ),
(10.5)
minh họa trong hình 10.2, RNNs điển hình sẽ thêm các tính năng kiến trúc bổ sung,
như vậy là các lớp đầu ra đọc thông tin output từ trạng thái h để đưa ra các dự đoán.
Khi Recurrent network được huấn luyện để thực hiện một nhiệm vụ đòi hỏi phải
dự đoán tương lai từ quá khứ, mạng thường học cách sử dụng h(t) như một hàm mất mát
tóm tắt các khía cạnh liên quan đến nhiệm vụ của chuỗi các đầu vào trong quá khứ ảnh
hưởng tới t. Điều này nói chung là mất mát, vì nó ánh xạ một chuỗi chiều dài tùy ý (x (t),
x (t − 1), x (t − 2),.,., x (2), x (1)) đến một vectơ chiều dài cố định h (t). Tùy thuộc vào tiêu
chí. Bản tóm tắt này có thể chọn lọc giữ một số khía cạnh với độ chính xác cao hơn các
khía cạnh khác. Ví dụ, nếu RNN được sử dụng trong mơ hình ngơn ngữ thống kê, thường
để dự đoán từ tiếp theo dựa vào các từ trước đó, có thể việc lưu trữ tất cả thơng tin về
input cho đến thời điểm t là không cần thiết, nhưng vẫn đủ thơng tin để dự đốn phần cịn
lại của câu. Tình huống khắt khe nhất là khi chúng ta yêu cầu h(t) đủ “giàu” để cho phép
một khoảng khôi phục chuỗi đầu vào, như trong cơ cấu tự động hóa (chương 14).
(10.2)
Hình 10.2: Recurrent network khơng có đầu ra. Recurrent network này chỉ là các
quá trình đưa input x vào trạng thái h được chuyển tiếp qua thời gian bằng cách kết hợp
8
nào đó (bên trái). Hình vng màu đen biểu thị sự chậm trễ của một bước. Bên phải, một
mạng lưới tương tự được thấy dưới dạng Unfolding Computational Graphs, trong đó mỗi
nút đang được kết hợp với một cá thể thời gian cụ thể.
Phương trình 10.5 có thể được vẽ theo hai cách khác nhau. Một cách để vẽ RNN :
một sơ đồ chứa một nút cho mỗi thành phần có thể tồn tại trong một bước thục nghiệm
vật lý, chẳng hạn như mạng nơron sinh học. Nhìn chung, mạng lưới xác định một mạch
hoạt động trong thời gian thực, với các thành phần vật lý ở trạng thái hiện tại có thể ảnh
hưởng đến trạng thái tương lai của chúng, bên trái của hình 10.2. Trong suốt chương này,
chúng ta sử dụng một hình vng màu đen trong sơ đồ mạch để biểu thị rằng một tương
tác diễn ra với sự chậm trễ của một bước thời gian, từ trạng thái tại thời điểm t đến trạng
thái tại thời điểm t + 1. Cách khác để vẽ RNN là vẽ Unfolding Computational Graphs,
trong đó mỗi thành phần được biểu diễn bởi nhiều các biến khác nhau, với một biến cho
mỗi một time step, đại diện cho trạng thái tại thời điểm đó. Mỗi biến cho mỗi time step
được vẽ như một nút riêng biệt của biểu đồ tính tốn, bên phải của hình 10.2. Những gì
chúng tơi gọi unfolding (bày ra) chính là hoạt động ánh xạ một mạch phía bên trái của
hình vào một computational graph với các phần lặp lại ở phía bên phải. Mở ra biểu
đồ có kích thước phụ thuộc vào độ dài chuỗi.
Chúng ta có thể biểu diễn sự hồi quy mở rộng sau vài bước t với hàm g(t):
h(t) = g(t) (x(t) ,x(t-1), x(t-2),…,x(2), x(1))
(10.6
= f (h(t-1), x(t) ; θ)
(10.7)
Hàm g (t) lấy toàn bộ chuỗi quá khứ (x (t), x (t − 1), x (t − 2),.., x
(2), x(1)) làm đầu vào và tạo ra trạng thái hiện tại, nhưng cấu trúc hồi quy mở rộng cho
phép chúng ta đưa g(t) vào ứng dụng lặp lại của hàm f. Việc này có 2 ưu điểm chính:
1. Bất kể độ dài chuỗi, mơ hình học được ln có cùng kích thước đầu vào, bởi vì
nó được xác định trong điều kiện chuyển đổi từ một trạng thái sang một trạng thái khác,
thay vì được xác định theo tiêu chí thay đổi độ dài của ca làm việc.
2. Có thể sử dụng cùng hàm chuyển tiếp f với cùng các tham số ở mọi time step.
Hai yếu tố này làm cho nó có thể học một mơ hình hoạt động trên tất cả các time
step và tất cả các độ dài chuỗi, thay vì cần phải tìm hiểu riêng biệt mơ hình g(t) tại tất cả
thời điểm có thể. Học một mơ hình chia sẻ cho phép tổng quát về độ dài chuỗi mà chưa
xuất hiện trong tập training và cho phép mơ hình ước tính được các ví dụ đào tạo ít hơn
rất nhiều so với cần thiết mà không cần chia sẻ thông số.
9
Cả recurrent graph và unrolled graph đều có cơng dụng của chúng. Các
cách lặp lại biểu đồ ngắn gọn. Biểu đồ bày ra một mơ tả rõ ràng về tính toán. Unfolded
graph - Biểu đồ mở rộng cũng giúp minh họa ý tưởng luồng thông tin chuyển tiếp theo
thời gian (đầu ra tính tốn và sự thất thốt) và ngược trong thời gian (gradient máy tính)
bằng cách hiển thị rõ ràng đường dẫn kèm theo với luồng thông tin.
10.2. Recurrent Neural Networks
Với các ý tưởng phân tích đồ thị và tham số của phần 10.1, chúng ta có thể thiết kế
một loạt các Recurrent Neural Networks. Một số ví dụ về các mẫu thiết kế quan trọng cho
các Recurrent Neural Networks như sau:
• Các Recurrent Networks tạo ra một output ở mỗi bước và có kết nối hồi quy giữa
các đơn vị ẩn, được minh họa trong hình 10.3.
• Các Recurrent Networks tạo ra một output ở mỗi bước và chỉ có kết nối hồi quy từ
đầu ra tới đơn vị ẩn ở bước tiếp theo, được minh họa trong hình 10.4.
• Các Recurrent Networks với các kết nối ngược lại giữa các đơn vị ẩn, toàn bộ
chuỗi cho một đầu ra duy nhất, được minh họa trong hình 10.5.
Hình 10.3: Đồ thị tính tốn để tính độ sai số trong quá trình huấn luyện của Recurrent Network
10
ánh xạ mỗi chuỗi đầu vào của các giá trị x tới một chuỗi giá trị đầu ra o tương ứng. (bên Trái)
RNN và sự mất mát của nó được vẽ với các kết nối ngược lại. (bên Phải) Khai triển theo thời
gian, mỗi nút ứng với một thời điểm xác định.
Giá trị mất mát L là độ lệch của dự đốn o với kết quả chính xác tương ứng y
(training target). Khi sử dụng các softmax outputs, chúng ta giả định o là các xác suất log
phi chuẩn (unnormalized log probabilities). Hàm loss L là biểu thức ŷ = softmax(o) so
sánh nó với mục tiêu y. RNN có đầu vào cho các kết nối ẩn được tham số hóa bởi một ma
trận trọng số U, các kết nối hồi quy ẩn được tham số hóa bởi một ma trận trọng số W và
các kết nối ẩn đến đầu ra được tham số hóa bởi một ma trận trọng số V. Phương trình 10.8
định nghĩa sự lan truyền xi trong mơ hình này.
Hình 10.3 là một ví dụ điển hình hợp lý mà chúng ta sẽ quay lại trong suốt chương.
Recurrent Neural Network của hình 10.3 và phương trình 10.8 cho thấy rằng bất kỳ chức
năng nào được tính tốn bởi một máy Turing có thể được tính tốn bởi một Recurrent
Network có kích thước hữu hạn. Đầu ra có thể được đọc từ RNN sau một số bước có tính
tiệm cận tuyến tính trong số bước được sử dụng bởi máy Turing và tuyến tính tiệm cận
theo chiều dài của đầu vào (Siegelmann and Sontag, 1991; Siegelmann, 1995; Siegelmann
and Sontag, 1995; Hyotyniemi, 1996). Các hàm được tính tốn bởi một máy Turing là rời
rạc, vì vậy các kết quả này xem xét việc thực hiện chính xác hàm, chứ không phải xấp xỉ.
RNN, khi được sử dụng như một máy Turing, lấy một chuỗi nhị phân làm đầu vào và đầu
ra của nó phải được phân loại để cung cấp đầu ra nhị phân. Có thể tính tốn tất cả các
chức năng trong thiết lập này bằng cách sử dụng một RNN cụ thể có kích thước hữu hạn
(Siegelmann and Sontag (1995) sử dụng 886 đơn vị). “Đầu vào” của máy Turing là một
đặc điểm kỹ thuật của hàm cần được tính tốn, vì vậy cùng một mạng mơ phỏng máy
Turing này là đủ cho mọi vấn đề. Lý thuyết RNN được sử dụng cho các bằng chứng có
thể mô phỏng một ngăn xếp không bị chặn bằng cách đại diện cho các hàm kích hoạt
(activacations) và các vecto trọng số (weights) của nó với số lượng hợp lý của độ chính
xác khơng bị ràng buộc.
Chúng tơi đang phát triển các phương trình forward propagation (lan truyền thẳng)
cho RNN được mơ tả trong hình 10.3. Hình này khơng chỉ rõ lựa chọn hàm kích hoạt cho
các đơn vị ẩn. Ở đây chúng tơi giả sử hàm kích hoạt tiếp tuyến hyperbol. Hình này cũng
khơng xác định chính xác hình thức của hàm đầu ra và hàm mất mát. Ở đây chúng tôi giả
định rằng đầu ra là rời rạc, như thể RNN được sử dụng để dự đoán từ hoặc ký tự. Một
cách tự nhiên để biểu diễn các biến rời rạc là coi đầu ra o là cho các xác suất log khơng
chuẩn hóa của mỗi giá trị có thể có của biến rời rạc. Sau đó chúng ta có thể áp dụng hàm
softmax như một bước hậu xử lý để thu được một vectơ ŷ là xác suất chuẩn hóa trên đầu
ra (normalized probabilities over the output). Sự làn truyền của mơ hình (Forward
Propagation) bắt đầu với một đặc tả của trạng thái ban đầu h(0). Sau đó, đối với mỗi bước
từ t = 1 đến t = τ, chúng ta áp dụng các phương trình cập nhật sau:
11
Trong đó các tham số là các vectơ bias b và c cùng với các ma trận trọng số U, V
và W, tương ứng cho các kết nối đầu vào đến đơn vị ẩn (input-to-hidden), đơn vị ẩn đến
đầu ra (hidden-to-output) và các đơn vị ẩn với nhau (hidden-to-hidden). Đây là một ví dụ
về một Recurrent Network ánh xạ một chuỗi đầu vào đến một chuỗi đầu ra có cùng độ
dài. Tổng mất mát (total loss) cho một chuỗi giá trị x được ghép nối với một chuỗi các giá
trị y là tổng số lỗi trên tất cả các bước. Ví dụ, nếu L (t) là hàm âm log-likelihood của y(t)
cho x(1),..., x(t) thì:
trong đó pmodel(y(t) | {x(1),..., x(t)}) được cho bằng cách for y(t) in model’s output
vector ŷ(t). Tính toán gradient của hàm mất này đối với các tham số là khá khó khăn. Để
tính Gradient thì trước tiên là phải tính từ trái sang phải qua hình minh họa 10.3, tiếp theo
là một đường lan truyền từ phải sang trái trong mạch. Thời gian chạy là O(τ) và khơng thể
giảm bằng cách chạy song song các bước vì mạch Forward propagation vốn có tuần tự;
mỗi bước cần có sử dụng kết quả trong đơn vị ẩn của bước trước để tính nên chỉ có thể
được tính sau bước trước đó. Các trạng thái tính trong thể chuyển tiếp phải được lưu trữ
cho đến khi chúng được tái sử dụng trong q trình truyền ngược, do đó chi phí bộ nhớ
cũng là O(τ). Thuật toán back-propagation được áp dụng cho mạch chưa được kiểm tra
với chi phí O(τ) được gọi là truyền ngược liên hồi (back-propagation through time)
hoặc BPTT và được thảo luận thêm trong phần 10.2.2. Mạng nơron với liên kết hồi quy
giữa các đơn vị ẩn là rất mạnh mẽ nhưng huấn luyện cũng rất tốn kém về thời gian và bộ
nhớ. Vậy có cách nào khác không?
12
Hình 10.4: Một RNN chỉ có sự hồi quy là kết nối phản hồi (feedback connection) từ đầu ra
đến lớp ẩn. Tại mỗi bước t, đầu vào xt, hàm hoạt động của lớp ẩn (hidden layer activations) là h(t),
đầu ra là o(t), các mục tiêu là y(t) và mất mát là L(t). (bên Trái) mạch vòng tổng quát. (bên Phải)
Khai triển mạch.
Một RNN như hình 10.4 ít mạnh hơn (có thể biểu hiện một tập hợp các hàm nhỏ
hơn) so với các hàm biểu diễn trong hình 10.3. RNN trong hình 10.3 có thể chọn bất kỳ
thơng tin nào nó muốn ở quá khứ bằng cách đặt vào ẩn h của và truyền h tới tương lai.
RNN trong hình này được huấn luyện để đặt một giá trị cụ thể vào o, và o là thông tin duy
nhất được phép truyền lại sau này. Khơng có kết nối trực tiếp từ h về sau. Trước đó h
được kết nối với hiện tại chỉ là gián tiếp, thông qua các dự đoán o. Trừ khi o là rất nhiều
chiều (high-dimensional) và nhiều dữ liệu(rich), nó thường sẽ thiếu thơng tin quan trọng
từ quá khứ. Điều này làm cho RNN trong hình này kém mạnh hơn, nhưng có thể dễ huấn
luyện hơn vì mỗi bước có thể được huấn luyện độc lập với nhau, cho phép sự song song
lớn hơn trong quá trình training, Chúng ta sẽ nói thêm về mơ hình này trong phần tiếp
theo.
13
10.2.1. Teacher Forcing and Network with Output Recurrent
(Giáo viên bắt buộc và mạng có tái xuất đầu ra)
Recurrent Network chỉ có các kết nối từ đầu ra tại một bước tới các đơn vị ẩn ở
bước tiếp theo (được hiển thị trong hình 10.4) là rất ít mạnh hơn vì nó thiếu các kết nối
hồi quy giữa các đơn vị ẩn. Ví dụ, nó khơng thể mơ phỏng một máy Turing phổ dụng. Vì
mạng này thiếu kết nối hồi quy giữa các đơn vị ẩn, nó địi hỏi rằng các đơn vị đầu ra nắm
bắt tất cả thông tin về quá khứ mà mạng sẽ sử dụng để dự đoán tương lai. Vì các đơn vị
đầu ra được huấn luyện một cách rõ ràng để match với training set targets, chúng không
thể nắm bắt các thông tin cần thiết về lịch sử quá khứ của đầu vào, trừ khi người dùng biết
cách mô tả trạng thái đầy đủ của hệ thống và cung cấp nó như một phần của training set
targets. Lợi thế của việc loại bỏ hidden-to-hidden recurrence, đối với bất kỳ hàm mất nào
dựa trên so sánh các dự đoán với training target tại thời điểm t là tất cả các bước có thể
được tách riêng. Sự huấn luyện do đó có thể thực hiện song song, với gradient cho mỗi
bước t được tính tốn độc lập. Khơng cần tính tốn đầu ra cho bước trước, vì tập huấn
luyện cung cấp giá trị lý tưởng của đầu ra đó.
Hình 10.5: Recurrent Neural Network thời gian mở với một đầu ra duy nhất ở cuối
chuỗi. Một mạng như vậy có thể được sử dụng để tóm tắt một chuỗi và tạo ra một biểu
diễn kích thước cố định được sử dụng làm đầu vào để xử lý tiếp. Có thể có một đích ở
cuối (như được mơ tả ở đây) hoặc gradient trên output o(t) có thể thu được bằng cách
truyền lại từ các mô đun tiếp theo.
Các mô hình có kết nối hồi quy từ kết quả đầu ra của chúng dẫn trở lại mơ hình có thể
được huấn luyện với Teacher Forcing. Teacher Forcing là một thủ tục xuất hiện từ tiêu
chí khả năng tối đa, trong q trình training, mơ hình nhận được mục tiêu đầu ra y(t) làm
đầu vào tại thời điểm t + 1. Chúng ta có thể thấy điều này bằng cách kiểm tra một chuỗi
14
với hai bước. Tiêu chi hợp lý cực đại có điều kiện là:
Trong ví dụ trên, chúng ta thấy rằng tại thời điểm t = 2, mơ hình được huấn luyện để
tối đa hóa xác suất có điều kiện của y(2) cho cả chuỗi x tính đến bước đang xét và giá trị y
trước đó từ tập huấn luyện. Do đó, khả năng tối đa (maximum likelihood) chỉ định rằng
trong q trình training, thay vì cho đầu ra của chính mơ hình trở lại chính nó, các kết nối
này nên được cung cấp với các giá trị đích xác định đầu ra chính xác. Điều này được minh
họa trong hình 10.6.
Hình 10.6: Minh họa Teacher Forcing. Teacher Forcing là một kỹ thuật huấn luyện áp
dụng cho RNN có kết nối hồi quy từ đầu ra đến trạng thái ẩn ở bước tiếp theo. (bên Trái) Tại thời
điểm training, chúng tôi cung cấp kết quả mục tiêu y(t) (target) được lấy từ bộ huấn luyện như đầu
vào cho h(t +1). (bên Phải) Khi mơ hình được triển khai, đầu ra thực sự thường không được biết.
Trong trường hợp này, chúng ta ước lượng mục tiêu đầu ra y(t) với đầu ra của mơ hình o(t) và đưa
đầu ra trở lại vào mơ hình.
Ban đầu chúng tơi dùng Teacher Forcing để tránh việc truyền lại qua thời gian trong
các mơ hình thiếu các kết nối ẩn giấu hidden-to-hidden. Teacher Forcing có thể vẫn được
áp dụng cho các mơ hình có các kết nối ẩn đến ẩn (hidden-to-hidden), miễn là chúng có
các kết nối từ đầu ra tại một bước tới các giá trị được tính trong bước tiếp theo. Tuy nhiên,
ngay sau khi các đơn vị ẩn trở thành một hàm của các bước trước đó, chúng ta sẽ cần
15
dùng thuật toán lan truyền ngược liên hồi (BPTT). Một số mơ hình do đó có thể được
huấn luyện kết hợp Teacher Forcing và BPTT.
Những bất lợi của Teacher Forcing phát sinh nếu mạng sẽ được sử dụng sau này trong
một chế độ vòng lặp mở (open-loop), với các đầu ra mạng được nạp lại như đầu vào.
Trong trường hợp này, loại đầu vào trong q trình huấn luyện có thể hồn tồn khác với
loại đầu vào mà nó sẽ thấy vào thời điểm kiểm định (test). Một cách để giảm thiểu vấn đề
trên là huấn luyện với cả đầu vào do Teacher Forcing và các đầu vào tự do (free-running
inputs), ví dụ bằng cách dự đốn mục tiêu chính xác một số bước trong tương lai thông
qua các đường dẫn đầu vào-đầu ra (input-to-output) không hồi quy. Theo cách này, mạng
có thể học xem xét các điều kiện đầu vào (chẳng hạn như những điều mà nó tự tạo ra
trong chế độ tự do) khơng thấy trong q trình trianing và cách ánh xạ trạng thái hướng
tới trạng thái đầu ra sau vài bước. Một cách tiếp cận khác (Bengio et al., 2015b) để giảm
thiểu khoảng cách giữa các đầu vào thời điểm training và thời điểm test ngẫu nhiên chọn
sử dụng các giá trị được tạo ra hoặc các giá trị dữ liệu thực tế như đầu vào. Cách tiếp cận
này khai thác một chiến lược học tập chương trình giảng dạy để dần dần sử dụng nhiều
giá trị được tạo ra như đầu vào.
10.2.2. Tính tốn Gradient trong một Recurrent Neural Network
Tính tốn gradient thơng qua Recurrent Neural Network rất đơn giản. Chúng ta có thể
áp dụng thuật tốn back-propagation của phần 6.5.6 mà khơng cần thuật tốn q cao
siêu. Gradients thu được bằng back-propagation sau đó có thể được sử dụng với bất kỳ kỹ
thuật dựa trên gradient có mục đích chung để training một RNN.
Để đạt được một số trực giác về cách hoạt động của thuật tốn BPTT, chúng tơi cung
cấp một ví dụ về cách tính tốn gradient bằng BPTT cho các phương trình RNN ở trên
(phương trình 10.8 và phương trình 10.12). Các nút của mạch tính tốn của chúng tơi bao
gồm các tham số U, V, W, b và c cũng như chuỗi các nút phụ thuộc t cho x(t), h(t), o(t) và
L(t). Đối với mỗi nút N, chúng ta cần tính tốn gradient đệ quy ∇NL, dựa trên gradient
được tính tốn tại các nút theo sau nó trong mạch. Chúng ta bắt đầu đệ quy với các nút
cuối cùng.
Trong đạo hàm này, chúng ta giả định rằng các đầu ra o(t) được sử dụng làm đối số cho
hàm softmax để thu được vectơ ŷ của xác suất trên đầu ra. Chúng tôi cũng giả định rằng
hàm mất mát là hàm âm log-likelihood của kết quả đúng y(t). Gradient ∇o(t)L của đầu ra tại
bước t, qua tất cả i, t, như sau:
Ở bước cuối cùng, τ, h(τ) chỉ có o(τ) như một kết quả, do đó gradient của nó đơn
16
giản:
Sau đó chúng ta truyền lại gradient theo từng bước, từ t = τ −1 về t = 1, lưu ý rằng
h (với t <τ) có dạng con cháu của o(t) và h(t). Do đó, gradient của nó được cho bởi
(t)
trong đó diag (1-(h(t+1))2) biểu thị ma trận đường chéo chứa các phần tử 1 – (h i(t+1))2.
Nó là định thức Jacobian của tiếp tuyến hyperbol liên kết với unit i tại thời điểm t+1.
Khi thu được các gradient qua các đồ thị tính tốn, chúng ta có thể có được các
gradient trên các nút tham số. Bởi vì các tham số được chia sẻ qua nhiều bước, chúng ta
phải cẩn thận khi biểu thị các phép toán liên quan đến các biến này. Các phương trình
chúng tơi muốn thực hiện sử dụng phương pháp backpropagation của phần 6.5.6, tính
tốn sự đóng góp của một cạnh đơn trong mạch với gradient. Tuy nhiên, toán tử ∇W f được
sử dụng trong phép tính tính đến sự đóng góp của W với giá trị của f do tất cả các cạnh
trong mạch tính tốn. Để nói rõ hơn, chúng tơi giả sử các biến giả W(t) được định nghĩa là
bản sao của W nhưng với mỗi W(t) chỉ được sử dụng ở bước t. Sau đó, chúng tơi có thể sử
dụng ∇W(t) để biểu thị sự đóng góp của các trọng số tại từng bước t góp phần vào gradient.
Ta có thể sử dụng ký hiệu này để biể thị gradient trên các tham số con lại như sau:
17
10.2.3. Recurrent Networks as Directed Graphical Models
(RNN như một mô hình đồ thị)
Trong các ví dụ về Recurrent Network mà chúng ta đã nói cho đến nay, các giá trị mất
mát L(t) là các cross-entropies (độ lệch giữa 2 phân bố xác suất) giữa các target y(t) và kết
quả đầu ra o(t). Như với một mạng feedforward, về nguyên tắc có thể sử dụng hầu như bất
kỳ hàm mất mát nào với Recurrent Network. Sự mất mát nên được lựa chọn dựa trên bài
toán cụ thể. Như với một mạng feedforward, chúng ta thường muốn giải thích đầu ra của
RNN như là một phân phối xác suất, và chúng ta thường sử dụng cross-entropy kết hợp
với phân phối đó để xác định sự mất mát. Giá trị bình phương trung bình của mất mát là
cross-entropy kết hợp với một phân bố đầu ra là một đơn vị Gaussian, ví dụ như với một
mạng feedforward.
Khi chúng ta sử dụng một đối tượng huấn luyện dự đoán khả năng cao nhất, chẳng
hạn như phương trình 10.12, chúng ta huấn luyện RNN để ước tính sự phân bố có điều
kiện của phần tử tiếp theo y(t) cho các đầu vào trong quá khứ. Điều này có thể hiểu là
chúng ta đi tối đa hóa hàm log-Likelihood
Hoặc, nếu mơ hình bao gồm các kết nối từ đầu ra tại một bước tới bước tiếp theo,
18
Phân tích xác suất chung trên chuỗi các giá trị y như một loạt các dự đoán xác suất
từng bước là một cách để nắm bắt đầy đủ sự phân bố trên tồn bộ chuỗi. Khi chúng ta
khơng nạp lại các giá trị y như các đầu vào có điều kiện để dự đốn bước tiếp theo, mơ
hình đồ thị định hướng không chứa các đường từ y(i) nào trong quá khứ đến y(t) hiện tại.
Trong trường hợp này, các kết quả đầu ra y là độc lập với chuỗi giá trị x. Khi chúng ta nạp
các giá trị y thực tế (khơng phải dự đốn của chúng) trở lại vào mạng, mơ hình đồ thị có
hướng chứa các cạnh từ tất cả các giá trị y(i) trong quá khứ tới giá trị y(t) hiện tại.
Như một ví dụ đơn giản, chúng ta hãy xem xét trường hợp các mô hình RNN chỉ là
một chuỗi các biến ngẫu nhiên vơ hướng Y = {y(1),..., y(τ)}, khơng có đầu vào bổ sung x.
Đầu vào tại bước t chỉ đơn giản là đầu ra ở bước t − 1. RNN sau đó định nghĩa một mơ
hình đồ thị có hướng qua các biến y. Chúng tơi phân tích sự phân bố chung của các quan
sát này bằng cách sử dụng quy tắc chuỗi (chain rule) (phương trình 3.6) cho các xác suất
có điều kiện:
Trong đó vế phải của biểu thức rỗng khi t = 1. Do đó, khả năng log-likelihood âm của
một tập hợp các giá trị {y(1),..., y(τ)} theo mơ hình như vậy
Hình 10.7: Mơ hình đồ thị kết nối đầy đủ cho một chuỗi y (1), y(2),..., y(t),...: mỗi biến cố y(i) có
thể ảnh hưởng đến phân phối có điều kiện của y (t) (đối với t> i. Việc mô tả trực tiếp mơ hình đồ
thị theo đồ thị này (như trong phương trình 10.6) có thể rất kém hiệu quả, với số lượng đầu vào
và tham số ngày càng tăng cho từng phần tử của chuỗi. RNNs có được sự kết nối đầy đủ nhưng
hiệu quả, như minh họa trong hình 10.8.
trong đó
19
Hình 10.8: Giới thiệu biến trạng thái trong mơ hình đồ thị của RNN, mặc dù nó là hàm xác
định các đầu vào của nó, giúp chúng ta biết làm thế nào để có được một tham số thật hiệu quả,
dựa trên phương trình 10.5. Mỗi trạng thái trong chuỗi (đối với h(t) và y(t)) có cùng một cấu trúc
(cùng số lượng đầu vào cho mỗi nút) và có thể chia sẻ cùng các tham số với các giai đoạn khác.
Các cạnh trong mơ hình đồ thị cho biết sự phụ thuộc trực tiếp giữa các biến. Nhiều
mơ hình đồ thị nhắm đến việc đạt hiệu quả thống kê và tính tốn bằng cách bỏ qua các
cạnh khơng tương ứng với các tương tác mạnh. Ví dụ, thơng thường cho các giả định
Markov rằng mơ hình đồ thị chỉ nên chứa các cạnh từ {y (t-k),..., y(t-1)} đến y(t), thay vì chứa
các cạnh trong tồn bộ q khứ. Tuy nhiên, trong một vài trường hợp, chúng ta tin rằng tất
cả đầu vào trước đây nên có một ảnh hưởng đến phần tử tiếp theo trong chuỗi. RNN có
ích khi chúng ta tin rằng sự phân bố trên y (t) có thể phụ thuộc vào giá trị y (i) từ quá khứ xa
theo cách không bị ảnh hưởng bởi y(i) trên y(t-1).
Một cách để giải thích RNN giống một mơ hình đồ thị là xem RNN như định nghĩa
một mơ hình đồ đầy đủ, có thể biểu diễn trực tiếp các phụ thuộc giữa bất kỳ cặp giá trị y
nào. Mô hình đồ thị trên các giá trị y với cấu trúc đồ thị đầy đủ được thể hiện trong hình
10.7. Việc giải thích đồ thị đầy đủ của RNN dựa trên việc bỏ qua các đơn vị ẩn h (t) bằng
cách tách chúng ra khỏi mơ hình.
Điều thú vị hơn là xem xét cấu trúc mơ hình đồ thị của RNNs rút ra từ việc coi các
đơn vị ẩn h(t) như các biến ngẫu nhiên. Bao gồm các đơn vị ẩn trong mơ hình đồ thị cho
thấy rằng RNN cung cấp một tham số hoá rất hiệu quả của sự phân phối chung trên các
quan sát. Giả sử rằng chúng ta biểu diễn một phân phối chung tùy ý trên các giá trị rời rạc
với dạng bảng - một mảng chứa một mục riêng cho mỗi phép gán có thể có giá trị, với giá
trị của mục đó cho xác suất của phép gán đó xảy ra. Nếu y có thể nhận k giá trị khác nhau,
bảng biểu diễn sẽ có O(kτ) tham số. Bằng so sánh, nhờ chia sẻ tham số nên số lượng tham
số trong RNN là O(1) như một hàm của chiều dài chuỗi. Số lượng tham số trong RNN có
thể được điều chỉnh để điều khiển sức chứa của mơ hình mà khơng bị buộc phải mở rộng
theo chiều dài chuỗi. Phương trình 10.5 cho thấy rằng mơ hình này có quan hệ lâu dài
giữa các biến một cách hiệu quả, sử dụng các ứng dụng hồi quy của cùng một hàm f và
cùng các tham số θ ở mỗi bước. Hình 10.8 minh họa cách giải thích mơ hình đồ thị. Kết
hợp các nút h(t) trong mơ hình đồ thị tách rời q khứ và tương lai, hoạt động như một số
lượng trung gian giữa chúng. Một biến y(i) trong quá khứ xa có thể ảnh hưởng đến biến y (t)
thông qua tác động của nó trên h. Cấu trúc của đồ thị này cho thấy mơ hình có thể được
20
tham số hiệu quả bằng cách sử dụng cùng phân bố xác suất có điều kiện ở mỗi bước, và
khi tất cả các biến được quan sát, xác suất của phép gán chung của tất cả các biến có thể
được đánh giá một cách hiệu quả.
Sự phân bố có điều kiện đối với các biến này cho cha mẹ của chúng là xác định.
Điều này là hoàn toàn hợp pháp, mặc dù nó là hơi hiếm để thiết kế một mơ hình đồ thị
với các đơn vị ẩn xác định như vậy.
Ngay cả với tham số hoá hiệu quả của mơ hình đồ thị, một số hoạt động tính tốn
cịn khó khăn. Ví dụ, rất khó để dự đốn các giá trị còn thiếu ở giữa chuỗi.
Cái giá mà các mạng hồi quy trả cho số lượng tham số giảm của chúng là việc tối ưu
hóa các tham số có thể khó khăn.
Việc chia sẻ tham số sử dụng trong mạng hồi quy phụ thuộc vào giả định rằng với
cùng tham số có thể được sử dụng cho các bước khác nhau. Tương đương, giả định rằng
phân bố xác suất có điều kiện trên các biến tại thời điểm t + 1 cho các biến tại thời điểm t
là không đổi, có nghĩa là mối quan hệ giữa bước trước đó và bước tiếp theo khơng phụ
thuộc vào t. Về nguyên tắc, có thể sử dụng t làm đầu vào bổ sung ở mỗi bước và cho phép
người học khám phá bất kỳ sự phụ thuộc thời gian nào trong khi chia sẻ nhiều nhất có thể
giữa các bước khác nhau. Điều này sẽ tốt hơn nhiều so với việc sử dụng phân bố xác suất
có điều kiện khác nhau cho mỗi t, nhưng mạng sau đó sẽ phải ngoại suy khi đối mặt với
các giá trị mới của t.
Để hồn thành cái nhìn của chúng ta về một RNN như một mơ hình đồ thị, chúng ta
phải mơ tả cách vẽ các mẫu từ mơ hình. Hoạt động chính mà chúng ta cần thực hiện đơn
giản là lấy mẫu từ phân phối có điều kiện ở mỗi bước thời gian. Tuy nhiên, có thêm một
vấn đề. RNN phải có một vài cơ chế để xác định chiều dài chuỗi. Vấn đề này có thể giải
quyết bằng nhiều cách.
Trong trường hợp đầu ra là một ký hiệu được lấy từ một từ vựng, người ta có thể
thêm một ký hiệu đặc biệt tương ứng với phần cuối của một chuỗi (Schmidhuber, 2012).
Khi ký hiệu được tạo ra, quá trình lấy mẫu dừng lại. Trong tập huấn luyện, chúng ta chèn
ký hiệu này như một thành viên bổ sung của chuỗi, ngay sau x(τ) trong mỗi ví dụ huấn
luyện.
Một cách khác để xác định độ dài chuỗi τ là thêm đầu ra phụ vào mơ hình tự nó dự
đốn chính số nguyên τ. Cách tiếp cận này yêu cầu thêm đầu vào bổ sung cho cập nhật
hồi quy ở từng bước để cập nhật hồi quy nhận thức được liệu nó có gần cuối chuỗi được
tạo hay khơng. Đầu vào thêm này hoặc có thể bao gồm các giá trị của τ hoặc có thể bao
gồm τ−t, số lượng các bước thời gian cịn lại. Nếu khơng có đầu vào bổ sung này, RNN
có thể tạo ra các chuỗi kết thúc bất ngờ, chẳng hạn như một câu kết thúc trước khi nó
được hồn tất. Cách tiếp cận này được dựa trên công thức.
21
Chiến lược dự đoán trực tiếp τ được sử dụng cho ví dụ bởi Goodfellow et al.
(2014d).
10.2.4. Modeling Sequences Conditioned on Context with RNNs
(Mơ hình trình tự có điều kiện trên bối cảnh với Recurrent Neural Networks)
Trong phần trước chúng ta đã mơ tả cách một RNN có thể tương ứng với một mơ
hình đồ thị có hướng qua một chuỗi các biến ngẫu nhiên y (t) mà khơng có đầu vào x. Tất
nhiên, sự phát triển của các RNN như trong phương trình 10.8 bao gồm một chuỗi các
đầu vào x(1), x(2),... , x(τ). Nói chung, RNNs cho phép mở rộng cách nhìn mơ hình đồ thị
để biểu diễn không chỉ một phép phân phối chung trên các biến y mà cịn là phân phối có
điều kiện so với y đã cho x. Như đã thảo luận, trong bối cảnh của các mạng feedforward
trong phần 6.2.1.1, bất kỳ mô hình nào đại diện cho biến P(y; θ) có thể được diễn giải lại
như một mơ hình đại diện cho phân phối có điều kiện P(y | ω) với ω = θ. Chúng ta có thể
mở rộng mơ hình như vậy để biểu diễn một phân bố P(y | x) bằng cách sử dụng cùng một
P(y | ω) như trước, nhưng cho ω một hàm của x. Trong trường hợp của RNN, điều này có
thể đạt được theo nhiều cách khác nhau. Chúng tôi xem xét ở đây những lựa chọn phổ
biến nhất và rõ ràng nhất.
Trước đây, chúng ta đã thảo luận RNNs lấy một chuỗi các vectơ x (t) cho t = 1, ... , τ
làm đầu vào. Một tùy chọn khác là chỉ lấy một vector x làm đầu vào. Khi x là một vector
có kích thước cố định, chúng ta đơn giản có thể cho nó làm một đầu vào thêm của RNN
để tạo ra chuỗi y. Một số cách phổ biến để cung cấp thêm đầu vào cho RNN là:
1. Như một đầu vào bổ sung tại mỗi bước
2. Như trạng thái khởi tạo h(0)
3. Cả hai cách trên.
Cách tiếp cận đầu tiên và phổ biến nhất được minh họa trong hình 10.9. Sự tương
tác giữa đầu vào x và mỗi vector đơn vị ẩn h(t) được tham số hóa bởi một ma trận trọng số
R mới được giới thiệu khơng có trong mơ hình chỉ có chuỗi các giá trị y. Cùng một tích
xTR được thêm vào như một đầu vào bổ sung cho các đơn vị ẩn tại mỗi bước. Chúng ta có
thể nghĩ về sự lựa chọn của x khi xác định giá trị của xTR, đó là một tham số thiên vị
(bias) mới được sử dụng cho mỗi đơn vị ẩn. Các trọng số vẫn độc lập với đầu vào. Chúng
ta có thể nghĩ về mơ hình này khi lấy các tham số θ của mơ hình phi điều kiện và biến
chúng thành ω, với các tham số thiên vị (bias) trong ω bây giờ là một hàm của đầu vào.
22
Hình 10.9: Một RNN ánh xạ một vectơ có độ dài cố định thành phân bố theo dãy Y. RNN
này thích hợp cho các tác vụ như chú thích hình ảnh, trong đó một hình ảnh được sử dụng làm
đầu vào cho một mơ hình, sau đó tạo ra một chuỗi các từ mơ tả hình ảnh. Mỗi phần tử y (t) của
chuỗi đầu ra đóng vai trị là đầu vào cho bước hiện tại và làm mục tiêu cho bước trước đó.
Thay vì chỉ nhận được một vector x làm đầu vào, RNN có thể nhận được một chuỗi
các vectơ x(t) làm đầu vào. RNN được mô tả trong phương trình 10.8 tương ứng với sự
phân bố có điều kiện P (y (1),.,., y(τ) | x(1),.., x(τ)) tạo ra một giả định độc lập có điều kiện
rằng phân phối này có yếu tố như:
Để loại bỏ giả định độc lập có điều kiện, chúng ta có thể thêm các kết nối từ đầu ra
tại thời điểm t tới đơn vị ẩn tại thời điểm t + 1, như trong hình 10.10. Sau đó, mơ hình có
thể biểu diễn các phân bố xác suất tùy ý trong chuỗi y. Loại mơ hình này thể hiện sự phân
bố theo trình tự được cho một chuỗi khác vẫn có một hạn chế, đó là độ dài của cả hai trình
tự phải giống nhau. Chúng tơi sẽ mơ tả cách xóa giới hạn này trong phần 10.4.
23
Hình 10.10: Mạng nơ-ron hồi quy có điều kiện ánh xạ một chuỗi các giá trị x có độ dài biến
đổi thành một phân bố trên dãy các giá trị y có cùng độ dài. So với hình 10.3, RNN này chứa
thêm các kết nối từ đầu ra trước đó tới trạng thái hiện tại. Các kết nối này cho phép RNN mơ hình
hóa sự phân bố tùy ý theo các trình tự của các chuỗi x có cùng độ dài. RNN của hình 10.3 chỉ có
thể biểu diễn các phân phối trong đó các giá trị y có điều kiện độc lập với nhau cho bởi các giá trị
x.
24
Hình 10.11: Một mạng nơron hồi quy hai chiều điển hình, có nghĩa là ánh xạ các
chuỗi đầu vào x đến các chuỗi mục tiêu y, với mất mát L(t) ở mỗi bước t. Sự lặp lại h lan
truyền thông tin về phía trước theo thời gian (về phía bên phải) trong khi g lặp lại thông
tin ngược thời gian (về phía bên trái). Vì vậy, tại mỗi bước t, các đơn vị đầu ra o(t) có thể
hưởng lợi từ một bản tóm tắt có liên quan của quá khứ trong đầu vào h(t) và từ một bản
tóm tắt có liên quan về tương lai trong đầu vào g(t) của nó.
10.3. Bidirectional RNNs (mạng nơron hồi quy 2 chiều)
Tất cả các recurrent networks mà chúng ta đã xem xét đến nay đều có cấu trúc
"nhân quả", có nghĩa là trạng thái tại thời điểm t chỉ thu thập thông tin từ quá khứ, x (1),... ,
x (t − 1) và đầu vào hiện tại x (t). Một số mơ hình chúng tôi đã thảo luận cũng cho phép
thông tin từ các giá trị y trong quá khứ cũng ảnh hưởng đến trạng thái hiện tại khi y là giá
25