CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Hình 5: Luồng xử lý RNN và các biến thể [6] Luồng dữ liệu chung của các kiến trúc liên quan đến RNN đều được xử lý tuần tự qua các nút, tuy nhiên mỗi kiến trúc đều có sự khác nhau với sự nổi bật và điểm yếu riêng, đối với kiến trúc cell của RNN. • Recurrent Neutron Network (RNN) Hình 6: Kiến trúc RNN [7] RNN là một mạng có tính chất xử lý tuần tự từng nút một trong lớp mạng (layer), ở đây, nút đầu tiên sẽ được xử lý, rồi trả về kết quả sau đó nút kế tiếp sẽ nhận kết quả đó và xử lý, quá trình này tiếp diễn liên tục cho đến khi đến nút mạng cuối cùng. Kiến trúc của một nút trong RNN có hai đầu vào và hai đầu ra. Hai đầu vào ℎ𝑡−1 là giá trị của các nút mạng trước đó tính từ đầu đến nút t-1 và 𝑥𝑡 là giá trị đầu vào của nút mạng hiện tại.
Hai giá trị đầu ra là giá trị đầu ra của nút mạng hiện tại 𝑜𝑡 và giá trị của lớp ẩn ℎ𝑡. Luồng xử lý của mỗi nút là hai giá trị đầu vào sẽ được xử lý qua hàm kích hoạt (activation function) - ở đây sử dụng hàm tanh, và cho ra hai giá trị đầu ra. RNN lúc mới ra mắt đã trở thành một giải pháp hàng đầu cho việc xử lý các kiểu dữ liệu dạng chuỗi, tuy nhiên RNN vẫn còn hiện hữu một số hạn chế như: - Phải thực hiện tuần tự từng nút mạng một vì thế mạng này không thể tận dụng được việc tính toán song song của các GPU, TPU. 9 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT - Gây ra hiện tượng đạo hàm triệt tiêu (vanishing gradient) hay bùng nổ đạo hàm (explode gradient).
- Vì hàm kích hoạt thường được dùng trong RNN là tanh hoặc sigmoid vậy kết quả của đầu ra nằm trong khoảng [-1; 1] (với sigmoid là [0; 1]) nên đạo hàm sẽ bị đóng băng trong khoảng [0; 1] (với sigmoid là [0; 0. Trong học sâu, việc tính đạo hàm để tối ưu sử dụng phương pháp chain rule, tuy nhiên có một vấn đề là hàm tanh và sigmoid đều có đạo hàm bằng 0 tại hai đầu giới hạn. Đạo hàm bằng 0 thì nút mạng tương ứng tại đó sẽ bị đóng băng, lúc đó các nút tiếp theo sẽ bị bão hòa theo. Với các giá trị nhỏ trong ma trận, khi thực hiện phép nhân ma trận sẽ đạo hàm tương ứng sẽ xảy ra hiện tượng vanishing gradient chỉ sau vài bước.
- RNN không thể học được các phụ thuộc xa do hiện tượng triệt tiêu đạo hàm và không có cơ chế lọc các thông tin không cần thiết, vì thế các thông tin càng xa so với nút đang xét đến thì thông tin sẽ càng mờ mặc dù thực tế là mối quan hệ của chúng có chặt chẽ hơn các từ lân cận hay không. • Long – Short Term Memory (LSTM) RNN có một hạn chế đó là không có cơ chế lọc được những thông tin không cần thiết, vì thế những thông tin dư thừa nhưng nếu gần nút đang xét thì mối quan hệ sẽ được xem là lớn hơn so với dữ liệu có mối quan hệ lớn hơn nhưng lại phụ thuộc xa. Vì thế, LSTM đã được thêm một vài cơ chế mới để có thể lọc được các thông tin không cần thiết. Hình 7: Kiến trúc LSTM [7] Về ý tưởng thì LSTM sẽ giống với RNN, tuy nhiên thiết kế của mỗi nút trong LSTM sẽ thêm một vài cổng và một vài tác vụ để phục vụ cho việc lọc các thông tin cần thiết, xử lý thông tin cần thiết.
Như kiến trúc trên thì LSTM sẽ có ba đầu vào và ba (đôi khi là hai) đầu ra. 10 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Ba đầu vào sẽ có hai đầu vào giống RNN là ℎ𝑡−1 là giá trị trạng thái của các nút trước đó tính từ ban đầu đến t-1, 𝑥𝑡 là đầu vào của nút đang xét và thêm một đầu vào 𝐶𝑡−1 có thể được xem là bộ nhớ trong của mỗi nút LSTM sẽ giúp mang thông tin đi xa hơn và sẽ được dùng khi cần. Đầu ra có hai giá trị là ℎ𝑡 là giá trị trạng thái của các nút từ đầu đến t của mạng, và 𝐶𝑡 là giá trị vector của bộ nhớ trong trong nút t, hai giá trị này được đưa ra ba đầu ra, trong đó hai đầu ra cho ℎ𝑡 và một cho 𝐶𝑡. Kiến trúc bên trong được thiết kế với bốn cổng (thay vì một cổng trong RNN), lần lượt là cổng quên (forget gate) 𝑓𝑡 , cổng đầu vào (input gate) 𝑖𝑡 , cổng ẩn 𝐶̃𝑡 và cổng đầu ra (output gate) 𝑜𝑡.
- Cổng quên 𝑓𝑡 : Cổng này sẽ quyết định sẽ bỏ đi bao nhiêu lượng thông tin đến từ trạng thái trước đó. - Cổng đầu vào 𝑖𝑡 : Cổng này quyết định bao nhiêu lượng thông tin đầu vào sẽ ảnh hưởng đến trạng thái mới. Thông qua hàm kích hoạt sigmoid khi giá trị đầu ra nằm trong khoảng [0;1], vì thế khi một vector đi qua cổng đầu vào, nếu nhân với 0 vector sẽ bị triệt tiêu, nếu nhân với 1 thì thông tin sẽ được bảo toàn. - Cổng ẩn 𝐶̃𝑡 : Đây cũng chỉ là một trạng thái ẩn được tính dựa trên đầu vào 𝑥𝑡 và trạng thái trước đó là ℎ𝑡−1.
Tính toán hoàn toàn giống với cổng đầu vào nhưng thay vào đó là sử dụng hàm tanh. - Cổng đầu ra 𝑜𝑡 : Cổng này điều chỉnh lượng thông tin có thể ra ngoài làm giá trị đầu ra và lượng thông tin truyền đến nút tiếp theo. LSTM đã giải quyết được vấn đề phụ thuộc xa so với RNN, tuy nhiên LSTM vẫn mang một số hạn chế như: - Vẫn phải xử lý tuần tự như RNN. - LSTM có tốc độ huấn luyện và dự đoán chậm hơn với RNN do có số lượng xử lý thông tin lớn hơn.
Mô hình sinh dữ liệu và mô hình sinh dữ liệu theo luồng (Generative Model and Flow – Based Generative Model) 1. Mô hình sinh dữ liệu (Generative Model) Generative Model là một mô hình được sử dụng trong học máy, thống kê và xác suất với mục tiêu là tạo ra những cách biểu diễn dữ liệu hoặc trừu tượng hóa một tổng thể dữ liệu từ một số mẫu thu thập hoặc quan sát được. 11 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Đến hiện tại, mô hình gồm các loại sau: - Generative Adversarial Network (GAN): Mô hình này gồm hai thành phần là Generator có nhiệm vụ sinh ra dữ liệu và Discriminator có nhiệm vụ kiểm tra dữ liệu được sinh ra có trùng khớp với mẫu quan sát được không. - Variational AutoEncoder (VAE): Mô hình này tối ưu hàm mất mát giữa dữ liệu được sinh ra với dữ liệu quan sát bằng cách ánh xạ trên một miền không gian ẩn rồi từ đó khôi phục lại dữ liệu.
- Flow – Based Model: Đây là mô hình sử dụng phương pháp Normalizing Flow để sinh ra dữ liệu, bằng cách học hàm mật độ phân phối xác suất của mẫu các dữ liệu quan sát được. Flow – Based Generative Model • Biến đổi phân phối xác suất Ý tưởng của mô hình này là cách mô hình có thể học được hàm mật độ phân phối xác suất của mẫu quan sát được từ một mẫu có phân phối xác suất đơn giản hơn bằng cách đi qua một hàm biến đổi: Giả sử ta có: - Mẫu quan sát x với không biết hàm mật độ phân phối xác suất. - Mẫu dữ liệu z với hàm mật độ phân phối xác xuất đơn giản hơn (thường là phân phối Gaussian) - Có một phép biến đổi khả nghịch sao cho: 𝑋 = 𝑓 (𝑍) 𝑍 = 𝑓 −1 (𝑋) Ta gọi 𝑝𝜃 (𝑥) và 𝑝𝜃 (𝑧) lần lượt là hàm mật độ phân phối xác suất của biến ngẫu nhiên liên tục X và Z. +∞ +∞ ∫−∞ 𝑝𝜃 (𝑥)𝑑𝑥 = ∫−∞ 𝑝𝜃 (𝑧)𝑑𝑧 = 1 𝑑𝑧 𝑝𝜃 (𝑥) = 𝑝𝜃 (𝑧) |det ( )| 𝑑𝑥 𝑑𝑓−1 (𝑥) 𝑝𝜃 (𝑥) = 𝑝𝜃 (𝑧) |det ( )| (1) 𝑑𝑥 Vậy hàm mật độ phân phối xác suất của mẫu quan x có thể biến đổi từ mẫu z với phân phối xác suất đã biết.
• Hàm biến đổi và luồng khả nghịch Để xác định được hàm mật độ phân phối xác suất của biến X (1), ta cần cần các thông tin: - Hàm mật độ xác suất của biến Z: Phân phối Gaussian. 12 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT - Phép biến đổi 𝑓: Cần phải xây dựng trong quá trình huấn luyện. Ta có: - Một hàm số 𝑓 khả nghịch sẽ luôn có thể tham số hóa, vậy những tham số này có thể tối ưu trong quá trình học hay huấn luyện bằng cách ứng dụng các thuật toán machine learning. - Một hàm khả nghịch 𝑓 có thể được biểu diễn bằng nhiều hàm khả nghịch khác lồng nhau.
Do tính chất của hàm hợp, vậy nếu ta có 𝑋 = 𝑓 (𝑍 ) = 𝑓1 (𝑓2 (𝑓3 (𝑍))) = (𝑓1 ∘ 𝑓2 ∘ 𝑓3 )(𝑍) suy ra 𝑍 = (𝑓3−1 ∘ 𝑓2−1 ∘ 𝑓1−1 )(𝑋) Vậy, thay vì tìm một hàm khả nghịch 𝑓 phức tạp, mô hình có thể xây dựng nhiều hàm biến đổi xác định được lồng lại với nhau hay nói cách khác là có thể cho Z đi qua nhiều phép biến đổi để biển diễn sự chuyển đổi từ một phân phối đơn giản thành một phân phối phức tạp của mẫu quan sát được. Hình 8: Luồng thực thi mô hình flow – based model [8] • Normalizing Flow Normalizing Flow là luồng thực hiện việc tối ưu hóa các tham số sao cho các phép biến đổi có thể học được phân phối xác xuất của mẫu quan sát được và chuyển đổi từ phân phối Gaussian thành phân phối đó. Ta có hàm mật độ phân phối xác suất của biến quan sát X: 𝑑𝑓 −1 (𝑥) 𝑝𝜃 (𝑥) = 𝑝𝜃 (𝑧) |det ( )| 𝑑𝑥 Áp dụng Maximum Logarithm – Likelihood Estimation, ta tối ưu tham số như sau: 𝑎𝑟𝑔𝑚𝑎𝑥 𝑑𝑓 −1 (𝑥) 𝜃 = 𝑎𝑟𝑔𝑚𝑎𝑥(𝑝𝜃 (𝑥)) = (𝑝𝜃 (𝑧) |det ( )|) 𝜃 𝑑𝑥 13 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 𝑎𝑟𝑔𝑚𝑎𝑥 𝑑𝑓 −1 (𝑥) 𝜃= (log (𝑝𝜃 (𝑧) |det ( )|)) 𝜃 𝑑𝑥 𝑎𝑟𝑔𝑚𝑎𝑥 𝑑𝑓 −1 (𝑥) = (𝑙𝑜𝑔(𝑝𝜃 (𝑧)) + 𝑙𝑜𝑔 (|det ( )|)) 𝜃 𝑑𝑥 𝑎𝑟𝑔𝑚𝑖𝑛 𝑑𝑓 −1 (𝑥) = (−𝑙𝑜𝑔(𝑝𝜃 (𝑧)) − 𝑙𝑜𝑔 (|det ( )|)) 𝜃 𝑑𝑥 • Ma trận Jacobian Ma trận Jacobian là ma trận của các đạo hàm riêng. Jacobian là yếu tố quyết định của ma trận jacobian.
Ma trận sẽ chứa tất cả các đạo hàm riêng của một hàm vectơ. Việc sử dụng chính của Jacobian được tìm thấy trong việc chuyển đổi các tọa độ. Nó đề cập đến khái niệm phân biệt với phép biến đổi tọa độ.