2.2.3.10.Khái niệm Deep Learning
Một trong những hạn chế đã đề cập của mạng nơ-ron là vấn đề “biến mất đạo hàm” (vanishing gradient). Đây là hiện tượng khi việc đạo hàm ở các ma trận hệ số dần tiến tới 0 khi nhân với nhau bằng các giá trị nhỏ hơn 1. Chính vì vậy, những ma trận trọng số ứng với các layer này của network rất khó được huấn luyện vì đạo hàm của hàm mất mát theo các ma trận này nhỏ. Với ý tưởng của
42 giáo sư Geoffrey Hinton, các ma trận trọng số ở những hiđen layer đầu tiên được tiền huấn luyện (pretrained). Các trọng số được tiền huấn luyện này có thể coi là giá trị khởi tạo tốt cho các hiđen layer phía đầụ Việc này giúp phần nào tránh được sự phiền hà của vanishing gradient.
Kể từ đây, mạng nơ-ron với nhiều lớp ẩn được đổi tên thành deep learning. Rất nhiều những ý tưởng cơ bản của deep learning được đặt nền móng từ những năm 80-90 của thế kỷ trước, tuy nhiên deep learning chỉ đột phá trong khoảng 5-6 năm naỵ Có nhiều nhân tố dẫn đến sự bùng nổ này:
- Sựra đời của các bộ dữ liệu lớn được gán nhãn - Khảnăng tính toán song song tốc độ cao của GPU
- Sự ra đời của ReLU và các hàm kích hoạt liên quan làm hạn chế vấn đề vanishing gradient
- Sự cải tiến của các kiến trúc: GoogLeNet, VGG, ResNet, … và các kỹ thuật transfer learning, fine tuning
- Nhiều kỹ thuật regularization mới: dropout, batch normalization, data augmentation
- Nhiều thư viện mới hỗ trợ việc huấn luyện deep network với GPU: theano, caffe, mxnet, tensorflow, pytorch, keras, …
- Nhiều kỹ thuật tối ưu mới: Adagrad, RMSProp, Adam, …
2.2.3.11. Một số mô hình học sâu có thể áp dụng
a) Mạng nơ-ron hồi quy Recurrent Neural Network (RNN)
Recurrent neural network hay RNN (Rumelhart 1986), là một họ mạng
nơ-ron để xử lý dữ liệu tuần tự. Khác với CNN chuyên xử lý các giá trị như hình ảnh, RNN chuyên để xử lý dữ liệu dạng chuỗị Ý tưởng ban đầu chia sẻ các tham số trên khác phần khác nhau ở mô hình. RNN rất có lợi trong xử lý dữ liệu dạng chuỗi như văn bản hay số.
RNN có thể thực hiện khi bộ dữ liệu tuần tự không lồ, đầu ra bộ dữ liệu hiện tại phụ thuộc vào đầu ra quá khứ. Không khác gì một mạng nơ-ron bình thường. Một ý tưởng khác có thể sử dụng để xử lý dữ liệu chuỗi là sử dụng tích chập trên 1 chuỗi thời gian. Cách tiếp cận này là cơ sở cho các mạng time-delay neural network. Phép tích chập cho phép một mạng chia sẻ các tham số theo thời gian nhưng ở mức độnông hơn. Đầu ra của phép tích chập là một chuỗi trong đó mỗi phần tửđầu ra là một hàm của một số nhỏ các phần tử lân cận đầu vàọ Ta sẽ nhân chập tại mỗi bước thời gian. [6]
43 Các mạng hồi tiếp. Mỗi thành viên đầu ra là một hàm của thành viên đầu ra trước đó. Mỗi thành viên đầu ra được tạo bằng cách sử dụng một vài cùng một quy tắc được cập nhật được áp dụng cho đầu ra trước đó. Việc này khiến cho việc chia sẻ tham số trởnên sâu hơn. Thực tế, các mạng hồi tiếp thường chạy trên các phần nhỏ (minibatch) của chuỗi, với độ dài chuỗi khác nhau trên mỗi minibatch.
b) Mô hình GRU (Gated Recurrent Unit)
Kiểm soát trạng thái ẩn
Sự khác biệt chính giữa RNN thông thường và GRU là GRU hỗ trợ việc kiểm soát trạng thái ẩn. Điều này có nghĩa là các cơ chế được học để quyết định khi nào nên cập nhật và khi nào nên xóa trạng thái ẩn. Ví dụ, nếu ký tựđầu tiên có mức độ quan trọng cao, mô hình sẽ học để không cập nhật trạng thái ẩn sau lần quan sát đầu tiên. Tương tự, mô hình sẽ học cách bỏ qua những quan sát tạm thời không liên quan, cũng như cách xóa trạng thái ẩn khi cần thiết.
Cổng xóa và Cổng cập nhật
Cổng xóa và cổng cập nhật được thiết kế thành các vector có các phần tử trong khoảng (0,1) để có thể biểu diễn các tổ hợp lồị Chẳng hạn, một biến xóa cho phép kiểm soát bao nhiêu phần của trạng thái trước đây được giữ lạị Tương tự, một biến cập nhật cho phép kiểm soát bao nhiêu phần của trạng thái mới sẽ giống trạng thái cũ.
Hình 2.15: Cổng xóa và cổng cập nhật trong GRU
Hình 2.15 minh họa các đầu vào và đầu ra cho cả cổng xóa và cổng cập nhật trong GRU, với đầu vào ởbước thời gian hiện tại 𝑋𝑋𝑡𝑡 và trạng thái ẩn ở bước thời gian trước đó 𝑯𝑯𝑡𝑡−1. Đầu ra được tạo bởi một tầng kết nối đầy đủ với hàm kích hoạt sigmoid. Tại bước thời gian t, với đầu vào minibatch là Xt ϵ Rnxd (số
44 lượng mẫu: n, số lượng đầu vào: d) và trạng thái ẩn ởbước thời gian gần nhất là Ht-1 ϵ Rnxh (số lượng trạng thái ẩn: h), cổng xóa Rt ϵ Rnxh và cổng cập nhật Zt ϵ Rnxh được tính như sau:
𝑅𝑅𝑡𝑡 =𝜎𝜎(𝑋𝑋𝑡𝑡𝑊𝑊𝑥𝑥𝑝𝑝 +𝐻𝐻𝑡𝑡𝑊𝑊ℎ𝑝𝑝 +𝑏𝑏𝑝𝑝)𝑍𝑍𝑡𝑡 = 𝜎𝜎(𝑋𝑋𝑡𝑡𝑊𝑊𝑥𝑥𝑧𝑧+ 𝐻𝐻𝑡𝑡−1𝑊𝑊ℎ𝑧𝑧+𝑏𝑏𝑧𝑧) PT 2.97
Trong đó Wxr, Wxzϵ Rdxh và Whr, Whz ϵ Rhxh là các tham số trọng số và br, bzϵ R1xh là các hệ sốđiều chỉnh. Hàm sigmod được sử dụng để biến đổi đầu vào nằm trong khoảng (0,1).
Hoạt động của Cổng xóa
Trong RNN, thông thường việc cập nhật trạng thái ẩn (hàm tác động là hàm tanh) theo công thức:
𝐻𝐻𝑡𝑡 = tanh(𝑋𝑋𝑡𝑡𝑊𝑊𝑥𝑥ℎ +𝐻𝐻𝑡𝑡−1𝑊𝑊ℎℎ+𝑏𝑏ℎ ) PT 2.108
Ở GRU, nếu muốn giảm ảnh hưởng của các trạng thái trước đó, ta nhân Ht-1 với Rt theo từng phần tử. Nếu tại thời điểm t, Rt có giá trị gần bằng 1 thì đầu ra sẽ gần giống PT 2.18. Ngược lại, Rt gần với không thì đầu ra sẽ là tanh(XtWxh
+ bh). Bất kỳ trạng thái ẩn nào tồn tại trước đó đều được đặt lại về giá trị mặc định. Tại đây nó được gọi là trạng thái ẩn tiềm năng, và chỉ là tiềm năng vì ta vẫn cần kết hợp thêm đầu ra của cổng cập nhật.
𝐻𝐻𝑡𝑡 = tanh�𝑅𝑅𝑡𝑡𝑊𝑊𝑥𝑥ℎ + (𝑅𝑅𝑡𝑡ʘ𝐻𝐻𝑡𝑡−1𝑊𝑊ℎℎ+𝑏𝑏ℎ)� PT 2.119
Hình 2.16 Tính toán của trạng thái ẩn tiềm năng trong một GRU minh họa luồng tính toán sau khi áp dụng cổng xóạ Ký hiệu ʘ biểu thị phép nhân theo từng phần tử giữa các tensor.
45
Hoạt động của Cổng Cập nhật
Cổng cập nhật 𝑍𝑍𝑡𝑡 được mô tả trong Hình 2.17. Cổng này xác định mức độ tương đồng giữa trạng thái mới 𝐻𝐻𝑡𝑡 và trạng thái cũ 𝐻𝐻𝑡𝑡−1, cũng như mức độ trạng thái ẩn tiềm năng𝑯𝑯�𝒕𝒕được sử dụng.
Hình 2.17: Tính toán trạng thái ẩn trong GRU
Ta có phương trình cập nhật cuối cùng cho GRU:
𝐻𝐻𝑡𝑡 = 𝑍𝑍𝑡𝑡ʘ𝐻𝐻𝑡𝑡−1+ (1− 𝑍𝑍𝑡𝑡)ʘ𝑯𝑯𝒕𝒕 PT 2.20
Nếu các giá trị trong cổng cập nhật 𝑍𝑍𝑡𝑡bằng 1, chúng ta chỉ đơn giản giữ lại trạng thái cũ. Thông tin mới từXt vềcơ bản sẽ được bỏ quạ Ngược lại, nếu
𝑍𝑍𝑡𝑡 gần bằng 0, trạng thái ẩn 𝐻𝐻𝑡𝑡−1sẽ gần với trạng thái ẩn tiềm năng 𝑯𝑯𝒕𝒕. Những thiết kế trên có thể giúp chúng ta giải quyết vấn đề tiêu biến gradient trong các mạng RNN và nắm bắt tốt hơn sự phụ thuộc xa trong chuỗi thời gian.
Tóm lại, các mạng GRU có hai tính chất nổi bật sau:
- Cổng xóa giúp nắm bắt các phụ thuộc ngắn hạn trong chuỗi thời gian. - Cổng cập nhật giúp nắm bắt các phụ thuộc dài hạn trong chuỗi thời gian.
c) Bộ nhớ ngắn dài Long-Short Term Memory (LSTM)
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường được gọi là LSTM - là một dạng đặc biệt của RNN, nó có khảnăng học được các phụ thuộc xạ LSTM được giới thiệu bởi Hochreiter & Schmidhuber (1997), và sau đó đã được cải tiến và phổ biến bởi rất nhiều người trong ngành. Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên dần đã trở nên phổ biến như hiện naỵ LSTM được thiết kếđể tránh được vấn đề phụ thuộc xa (long-term dependency). Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của
46 chúng, chứ ta không cần phải huấn luyện nó để có thể nhớ được. Tức là ngay nội tại của nó đã có thể ghi nhớđược mà không cần bất kì can thiệp nàọ
LSTM cũng có kiến trúc dạng chuỗi như RNN, nhưng các mô-đun trong nó có cấu trúc khác với mạng RNN chuẩn. Thay vì chỉ có một tầng mạng nơ-ron, chúng có tới 4 tầng tương tác với nhau một cách rất đặc biệt.
Hình 2.18: Mô tả cấu trúc mạng LSTM
- Ý tưởng cốt lõi của LSTM
Chìa khóa của LSTM là trạng thái tế bào (cell state) - chính là đường chạy thông ngang phía trên của sơ đồ hình vẽ (Hình 2.18).
Trạng thái tế bào là một dạng giống như băng truyền. Nó chạy xuyên suốt tất cả các mắt xích (các nút mạng) và chỉ tương tác tuyến tính đôi chút. Vì vậy mà các thông tin có thể dễ dàng truyền đi thông suốt mà không sợ bị thay đổi (Hình 2.19).
Hình 2.19: Mô tả trạng thái tế bào (cell state)
LSTM có khảnăng bỏđi hoặc thêm vào các thông tin cần thiết cho trạng thái tếbáo, chúng được điều chỉnh cẩn thận bởi các nhóm được gọi là cổng (gate).
47
Hình 2.20: Minh họa cổng kích hoạt
Các cổng là nơi sàng lọc thông tin điqua nó, chúng được kết hợp bởi một tầng mạng sigmoid và một phép nhân. Tầng sigmoid sẽcho đầu ra là một số trong khoảng [0, 1], mô tả có bao nhiêu thông tin có thể được thông quạ Khi đầu ra là 0 thì có nghĩa là không cho thông tin nào qua cả, còn khi đầu ra là 1 thì có nghĩa là cho tất cảcác thông tin đi qua nó. Một LSTM gồm có 3 cổng như vậy để duy trì và điều hành trạng thái của tế bàọ
- Bên trong LSTM
Bước đầu tiên của LSTM là quyết định xem thông tin nào cần bỏđi từ trạng thái tế bàọ Quyết định này được đưa ra bởi tầng sigmoid - gọi là “tầng cổng quên” (forget gate layer) (Hình 2.21). Nó sẽ lấy đầu vào là ht-1 và xt rồi đưa ra kết quả là một số trong khoảng [0, 1] cho mỗi số trong trạng thái tế bào Ct-1. Đầu ra là 1 thể hiện rằng nó giữ toàn bộ thông tin lại, còn 0 chỉ rằng toàn bộ thông tin sẽ bị bỏđị
Hình 2.21: Minh họa cổng quên
Bước tiếp theo là quyết định xem thông tin mới nào ta sẽ lưu vào trạng thái tế bàọ Việc này gồm 2 phần. Đầu tiên là sử dụng một tầng sigmoid được gọi là “tầng cổng vào” (input gate layer) để quyết định giá trị nào ta sẽ cập nhập. Tiếp theo là một tầng tanh tạo ra một véc-tơ cho giá trị mới 𝐶𝐶�𝑡𝑡 nhằm thêm vào cho trạng tháị Trong bước tiếp theo, ta sẽ kết hợp 2 giá trị đó lại để tạo ra một cập nhập cho trạng tháị
Trong đề tài này, giá trị mới của thông số cần dự đoán ở thời điểm tiếp theo sẽ được thêm vào trạng thái tế bào và loại bỏ những thông số cũ mà có ít tính tương quan với thông số cần dựđoán này.
48
Hình 2.22: Minh họa việc cập nhật trạng thái tế bào cũ
Giờ là lúc cập nhập trạng thái tếbào cũCt-1 thành trạng thái mới Ct. Ở các bước trước đó đã quyết định những việc cần làm, nên giờ ta chỉ cần thực hiện là xong. Ta sẽ nhân trạng thái cũ với it để bỏđi những thông tin ta quyết định quên lúc trước. Sau đó cộng thêm it×𝐶𝐶�𝑡𝑡. Trạng thái mới thu được này phụ thuộc vào việc ta quyết định cập nhập mỗi giá trị trạng thái ra sao (Hình 2.23).
Hình 2.23: Minh họa việc cập nhật trạng thái tế bào mới
Cuối cùng, ta cần quyết định xem ta muốn đầu ra là gì. Giá trị đầu ra sẽ dựa vào trạng thái tếbào, nhưng sẽ được tiếp tục sàng lọc. Đầu tiên, ta chạy một tầng sigmoid để quyết định phần nào của trạng thái tế bào ta muốn xuất rạ Sau đó, ta đưa nó (trạng thái tế bào) qua một hàm tanhđể co giá trị nó về khoảng [-1, 1], và nhân nó với đầu ra của cổng sigmoid đểđược giá trịđầu ra ta mong muốn.
Quay lại với bài toán của đề tài, dựa trên việc thông sốđã tính toán ởđầu ra có tính tương quan như thế nào với thông số mục tiêu thì ta có thể biết được sự biến chuyển của thông số mục tiêu sắp tới là như thế nàọ
Hình 2.24: Minh họa cổng ra
Để bài toán trở nên không quá phức tạp, mô hình LSTM truyền thống được sử dụng cho đề tài nàỵ [7]
49
CHƯƠNG 3.XÂY DỰNG MÔ HÌNH DỰ BÁO
Quá trình xây dựng mô hình dự báo được thực hiện theo các giai đoạn: Xây dựng bộ dữ liệu huấn luyện mạng, phân tích đặc trưng của các tham số cần dự báo từ dữ liệu đã thu thập; xây dựng mạng nơ-ron và sau đó sử dụng mô hình học máy vào chương trình để dựđoán các tham số.