Hidden state là gì

Nhận xét Lstm Là Gì – Bài 14: Long Short Term Memory [Lstm] là ý tưởng trong bài viết hôm nay của blog Tiên Kiếm. Theo dõi content để biết chi tiết nhé.

Bài trước mình đã giới thiệu về recurrent neural network [RNN]. RNN có thể xử lý thông tin dạng chuỗi [sequence/ time-series]. Như ở bài dự đoán hành động trong video ở bài trước, RNN có thể mang thông tin của frame [ảnh] từ state trước tới các state sau, rồi ở state cuối là sự kết hợp của tất cả các ảnh để dự đoán hành động trong video.

Bạn đang xem: Lstm là gì

Các đọc biểu đồ trên: bạn nhìn thấy kí hiệu sigma, tanh ý là bước đấy dùng sigma, tanh activation function. Phép nhân ở đây là element-wise multiplication, phép cộng là cộng ma trận.

f_t, i_t, o_t tương ứng với forget gate, input gate và output gate.

Forget gate: displaystyle f_t = sigma[U_f*x_t + W_f*h_t-1 + b_f]Input gate: displaystyle i_t = sigma[U_i*x_t + W_i*h_t-1 + b_i] Output gate: displaystyle o_t = sigma[U_o*x_t + W_o*h_t-1 + b_o]

Nhận xét: 0 ; b_f, b_i, b_o là các hệ số bias; hệ số W, U giống như trong bài RNN.

displaystyle tildec_t = tanh[U_c*x_t + W_c*h_t-1 + b_c] , bước này giống hệt như tính s_t trong RNN.

displaystyle c_t = f_t * c_t-1 + i_t * tildec_t, forget gate quyết định xem cần lấy bao nhiêu từ cell state trước và input gate sẽ quyết định lấy bao nhiêu từ input của state và hidden layer của layer trước.

displaystyle h_t = o_t * tanh[c_t], output gate quyết định xem cần lấy bao nhiêu từ cell state để trở thành output của hidden state. Ngoài ra h_t cũng được dùng để tính ra output y_t cho state t.

Xem thêm: Personal Pronouns Là Gì – Các Loại Pronoun, 1 Số Bài Tập Về Pronoun

Nhận xét: h_t, tildec_t khá giống với RNN, nên model có short term memory. Trong khi đó c_t giống như một băng chuyền ở trên mô hình RNN vậy, thông tin nào cần quan trọng và dùng ở sau sẽ được gửi vào và dùng khi cần => có thể mang thông tin từ đi xa=> long term memory. Do đó mô hình LSTM có cả short term memory và long term memory.

cell state trong LSTM

LSTM chống vanishing gradient

Ta cũng áp dụng thuật toán back propagation through time cho LSTM tương tự như RNN.

Thành phần chính gây là vanishing gradient trong RNN là displaystyle fracpartial s_t+1partial s_t = [1-s_t^2] * W , trong đó s_t, W .

Tương tự trong LSTM ta quan tâm đến displaystyle fracpartial c_tpartial c_t-1 =f_t. Do 0 nên về cơ bản thì LSTM vẫn bị vanishing gradient nhưng bị ít hơn so với RNN. Hơn thế nữa, khi mang thông tin trên cell state thì ít khi cần phải quên giá trị cell cũ, nên f_t approx 1 => Tránh được vanishing gradient.

Xem thêm: Narcissism Là Gì – Rối Loạn Nhân Cách Ái Kỷ

Do đó LSTM được dùng phổ biến hơn RNN cho các toán thông tin dạng chuỗi. Bài sau mình sẽ giới thiệu về ứng dụng LSTM cho image captioning.

Chuyên mục: Hỏi Đáp

Cũng giống như con người, Mạng nơ ron hồi quy [Recurrent Neural Networks – RNNs] có thể rất hay quên. Cuộc đấu tranh với bộ nhớ ngắn hạn này khiến RNN dần mất hiệu quả trong hầu hết các tác vụ. Tuy nhiên, đừng băn khoăn, các mạng Bộ nhớ dài-ngắn [Long Short-Term Memory – LSTM] có bộ nhớ tuyệt vời và có thể nhớ những thông tin mà Vanilla RNN không thể làm được.

Các LSTM là một biến thể đặc biệt của RNN, do đó nắm bắt được các khái niệm xung quanh RNN sẽ hỗ trợ đáng kể cho bạn để hiểu về LSTM trong bài viết này.

RNN xử lý dữ liệu đầu vào theo cách tuần tự, nơi mà thông tin từ đầu vào trước đó được xem xét khi tính toán đầu ra cho bước hiện tại. Điều này cho phép mạng nơ ron [Neural network] lưu trữ thông tin qua các bước khác nhau trong mạng [time steps] thay vì giữ tất cả các đầu vào độc lập với nhau.

Tuy nhiên, một thiếu sót đáng kể gây khó khăn cho RNN truyền thống là vấn đề vanishing/exploding gradients. Vấn đề này phát sinh khi lan truyền ngược [back-propagation] qua RNN trong quá trình huấn luyện [training], đặc biệt là đối với các mạng có lớp [layers] sâu hơn. Gradients phải trải qua quá trình nhân ma trận liên tục trong quá trình lan truyền ngược do quy tắc chuỗi, làm cho gradients co lại theo cấp số nhân [hao hụt] hoặc mở rộng theo cấp số nhân [bùng nổ]. Gradients thường sẽ có giá trị nhỏ dần khi đi xuống các layer thấp hơn. Kết quả là các cập nhật thực hiện bởi Gradient Descent không làm thay đổi nhiều weights của các layer đó, khiến chúng không thể hội tụ và Deep Neural Network [DNN] sẽ không thu được kết quả tốt. Hiện tượng này được gọi là Vanishing Gradients. Trong nhiều trường hợp khác, gradients có thể có giá trị lớn hơn trong quá trình backpropagation, khiến một số layers có giá trị cập nhật cho weights quá lớn khiến chúng phân kỳ [phân rã], tất nhiên DNN cũng sẽ không có kết quả như mong muốn. Hiện tượng này được gọi là Exploding Gradients, và thường gặp khi sử dụng Recurrent Neural Networks [RNNs].

Gradients

Gradient thực chất chính là đạo hàm của một hàm số được dùng để biểu diễn tỷ lệ thay đổi [sự biến thiên] của một hàm số tại một điểm nào đó. Nó là một vector với hai tính chất chính sau:

  • Hướng của vector sẽ hướng theo chiều tăng của hàm.
  • Giá trị của Gradient sẽ là 0 tại các điểm cực tiểu [local minimum] hay cực đại [local maximum].

Do những vấn đề này, với các bước phụ thuộc càng xa thì việc học sẽ càng khó khăn hơn vì sẽ xuất hiện vấn đề hao hụt/bùng nổ [vanishing/exploding] của đạo hàm. Có một vài phương pháp được đề xuất để giải quyết vấn đề này và các kiểu mạng RNN hiện nay đã được thiết kế để triệt tiêu bớt chúng như LSTM chẳng hạn.

Trong khi LSTM là một loại RNN và hoạt động tương tự như RNN truyền thống, thì cơ chế Gating của nó là thứ tạo ra sự khác biệt. Tính năng này giải quyết vấn đề bộ nhớ ngắn hạn “short-term memory” của RNNs.

Như chúng ta có thể thấy từ hình ảnh, sự khác biệt chủ yếu nằm ở khả năng của LSTM khi lưu trữ được “long-term memory”. Điều này đặc biệt quan trọng trong phần lớn bài toán Xử lý ngôn ngữ tự nhiên [NLP] hoặc xử lý thông tin dạng chuỗi [time-series]. Ví dụ: giả sử chúng tôi một network text [văn bản] dựa trên một số đầu vào [input] được cung cấp. Ở phần đầu của văn bản, người ta đã đề cập rằng người viết có một chú chó tên là Cliff  “dog named Cliff”. Sau một vài câu khác mà không đề cập đến pet or dog, người viết lại đưa thú cưng [pet] của mình ra và giờ mô hình phải tạo ra từ tiếp theo thành “However, Cliff, my pet ____”. Vì từ thú cưng [pet] xuất hiện ngay trước chỗ trống, RNN có thể suy luận rằng từ tiếp theo có thể sẽ là một con vật mà có thể được coi như là thú cưng.

RNNs không có khả năng nhớ thông tin phụ thuộc xa

Tuy nhiên, do short-term memory, RNN truyền thống sẽ chỉ có thể sử dụng thông tin theo ngữ cảnh từ văn bản xuất hiện trong một vài câu gần nhất – hoàn toàn không có ích gì. RNN không có manh mối nào về việc con vật cưng đó là con nào vì những thông tin liên quan từ ban đầu đoạn văn bản đó đã bị biến mất [không được nhớ nữa].

Ngược lại, LSTM có thể giữ lại thông tin trước đó mà người viết có một con pet dog và điều này sẽ hỗ trợ mô hình chọn “the dog” khi mà viết tiếp văn bản tại thời điểm đó bởi vì thông tin theo ngữ cảnh từ đầu đã được nhớ.

LSTMs có thể lưu trữ thông tin trong dài hạn

Mấu chốt của LSTM nằm ở cơ chế gating với mỗi tế bào LSTM. Tuy nhiên, trong tế bào RNN thông thường, đầu vào [input] tại bước t và trạng thái ẩn phía trước [hidden state] t-1 được tính toán qua “tanh” [như trong hình] để ra được trạng thái ẩn mới và đầu ra [a new hidden state and output].

Inner workings of an RNN cell

Trong khi đó LSTM có cấu trúc phức tạp hơn một chút. Về cơ bản mô hình của LSTM không khác mô hình truyền thống của RNN, nhưng chúng sử dụng hàm tính toán khác ở các trạng thái ẩn. Bộ nhớ của LSTM được gọi là tế bào [Cell] và bạn có thể tưởng tượng rằng chúng là các hộp đen nhận đầu vào là trạng thái phía trước h[t−1] và đầu vào hiện tại x[t]. Bên trong hộp đen này sẽ tự quyết định cái gì cần phải nhớ và cái gì sẽ xoá đi. Sau đó, chúng sẽ kết hợp với trạng thái phía trước, nhớ hiện tại và đầu vào hiện tại [the short-term memory from the previous cell [similar to hidden states in RNNs], lastly the long-term memory and the current input data, ]. Vì vậy mà ta ta có thể truy xuất được quan hệ của các từ phụ thuộc xa nhau rất hiệu quả.

Bộ nhớ ngắn hạn thường được gọi là trạng thái ẩn và bộ nhớ dài hạn thường được gọi là trạng thái tế bào.

Những cổng [gates] này có thể được coi giống như máy lọc nước. Vai trò của các cổng này được cho là loại bỏ có chọn lọc bất kỳ thông tin không liên quan nào, tương tự như cách máy lọc nước loại bỏ tạp chất. Đồng thời, chỉ có nước và các chất dinh dưỡng có lợi có thể đi qua các máy lọc này, giống như cách các cổng chỉ giữ thông tin hữu ích. Tất nhiên, các cổng này cần được đào tạo để lọc chính xác những gì hữu ích và những gì không.

LSTM Gates can be seen as filters

Các cổng này được gọi là Cổng đầu vào [Input Gate], Cổng quên [Forget Gate] và Cổng đầu ra [Output Gate]. Có nhiều biến thể cho tên của các cổng này; tuy nhiên, tính toán và hoạt động của các cổng này hầu hết giống nhau.

Hãy cùng nhau đi qua các cơ chế của các cổng này.

Cổng đầu vào quyết định thông tin mới nào sẽ được lưu trữ trong long-term memory. Nó chỉ hoạt động với thông tin từ đầu vào hiện tại và short-term memory từ trước đó. Vì vậy, cần phải lọc ra thông tin hữu ích và thông tin không hữu ích từ những biến đó.

Forget Gate quyết định thông tin nào từ long-term memory nên được lưu giữ hay loại bỏ. Điều này được thực hiện bằng cách nhân long-term memory sắp tới với một forget vector được tạo ra bởi đầu vào hiện tại và short-term memory sắp tới.

Cổng đầu ra sẽ lấy đầu vào hiện tại, short-term memory trước đólong-term memory mới được tính toán để tạo ra new short-term memory/hidden state [bộ nhớ ngắn hạn mới/trạng thái ẩn] và được chuyển tới tế bào [cell] ở bước tiếp theo. Đầu ra hiện tại cũng có thể được rút ra từ trạng thái ẩn này.

Hy vọng sau bài viết này, độc giả sẽ có cái nhìn tổng quan về Long Short-Term Memory, và PyTorch. Hiện nay, iRender mang tới cho khách hàng dịch vụ GPU Cloud for AI/DL – cung cấp hiệu suất máy tính với hàng ngàn CPUs và GPUs mạnh mẽ, đồng thời hỗ trợ Deep Learning Framework phổ biến như PyTorch. Chúng tôi có những dòng cấu hình máy chuyên nghiệp phục vụ cho AI Inference, AI Training, Deep Learning, VR/AR…Với kiến trúc Turing: 6/12 x RTX 2080Ti, 11GB vRAM, kiến trúc Pascal: 6/12 x NVIDIA TITAN Xp, 12GB vRam.

Hãy đăng ký tại đây để sử dụng dịch vụ của chúng tôi.

Nguồn: AI Global & Hai's Blog

Video liên quan

Chủ Đề