+1

Deep Dive – Phân Tích Chi Tiết LSTM: Giữ Thông Tin Lâu Dài, So Sánh với RNN và Công Thức Toán Học 🔍

👋 Chào mừng bạn quay trở lại! Nếu bạn đã theo dõi bài Tìm Hiểu LSTM: Bí Quyết Giữ Thông Tin Lâu Dài Hiệu Quả 🧠🔗 trước đó, bạn sẽ biết LSTM vượt trội RNN nhờ cell state và cổng điều khiển. Nhưng làm sao cell state "sống sót" qua chuỗi dài? Tại sao gradient không biến mất? Hôm nay, chúng ta sẽ "đào sâu" vào:

  • Cơ chế lưu trữ thông tin qua Forget/Input/Output gates.
  • So sánh trực tiếp LSTM vs RNN qua góc nhìn toán học.
  • Breakdown từng công thức – hiểu tường tận cách LSTM học!

image.png

LSTM Architecture

Cell State: "Siêu Năng Lực" Giữ Thông Tin Dài Hạn 🦸♀️

  • Forget Gate có nhiệm vụ giảm trọng số cho các thông tin không liên quan, giúp mô hình tập trung vào những dữ liệu thiết yếu. Cơ chế này sử dụng hàm sigmoid để “quét” qua thông tin cũ và chỉ giữ lại phần quan trọng.

    Ví dụ, khi xử lý câu "Tôi thích ăn táo vì chúng...", nếu mô hình đã xác định chủ đề chính là "táo", thì Forget Gate sẽ giảm trọng số của cụm từ "Tôi thích", loại bỏ thông tin không cần thiết và giúp tập trung vào ý chính của câu.

  • Input Gate có nhiệm vụ kiểm soát và lựa chọn thông tin mới cần được thêm vào cell state. Cơ chế này sử dụng hàm sigmoid để đánh giá mức độ quan trọng của dữ liệu mới, kết hợp với hàm tanh tạo ra các giá trị ứng cử, đảm bảo rằng chỉ những thông tin thiết yếu mới được lưu trữ.

\rightarrow Cell state như một bộ lọc thông minh:

Ct=ftCt1Queˆn coˊ chọn lọc+itC~tTheˆm thoˆng tin tinh gọn C_t = \underbrace{f_t \odot C_{t-1}}_{\text{Quên có chọn lọc}} + \underbrace{i_t \odot \tilde{C}_t}_{\text{Thêm thông tin tinh gọn}}

LSTM vs RNN: Cuộc Đua Của Gradient 🏎️

Vấn Đề Của RNN

Recurrent Neural Networks (RNN) gặp một số vấn đề quan trọng liên quan đến gradient khi lan truyền ngược (backpropagation through time - BPTT):

  1. Hidden State Trong RNN:

    Hidden state được tính toán theo công thức:

    ht=tanh(W[ht1,xt]+b)h_t = \tanh(W \cdot [h_{t-1}, x_t] + b)

    Trong đó:

    • hth_t là hidden state tại thời điểm tt.
    • WW là ma trận trọng số.
    • xtx_t là đầu vào tại thời điểm tt.
    • bb là bias.
  2. Vấn Đề Gradient Vanishing

    Gradient phụ thuộc vào tích ma trận k=1thkhk1\prod_{k=1}^{t} \frac{\partial h_k}{\partial h_{k-1}}.

    Khi số bước thời gian tt tăng lên, nếu các phần tử trong ma trận có giá trị nhỏ hơn 1, gradient sẽ suy giảm theo hàm mũ, dẫn đến vanishing gradient. Điều này làm cho các trạng thái ban đầu của chuỗi dữ liệu gần như không có ảnh hưởng đến đầu ra cuối cùng.

LSTM Cải Thiện Thế Nào?

Long Short-Term Memory (LSTM) được thiết kế để giải quyết vấn đề gradient vanishing bằng cách sử dụng cell state thay vì chỉ dựa vào hidden state như RNN.

  1. Gradient Chủ Yếu Truyền Qua Cell State

    CtCt1=ft+(đạo haˋm caˊc thaˋnh phaˆˋn khaˊc)\frac{\partial C_t}{\partial C_{t-1}} = f_t + (\text{đạo hàm các thành phần khác})

    Ở đây, ftf_t là gate kiểm soát mức độ thông tin được giữ lại từ trạng thái trước đó.

  2. Giữ Gradient Không Đổi Khi Cần Thiết

    Khi ft1f_t \approx 1 (tức là khi LSTM cần giữ thông tin lâu dài), gradient gần như không thay đổi theo thời gian. Điều này giúp tránh hiện tượng vanishing gradient, cho phép LSTM ghi nhớ thông tin từ các bước thời gian xa hơn so với RNN.

Giải Mã Toán Học 🧮

1. Các thành phần cốt lõi của một cell LSTM

  • Forget Gate (ftf_t ): Quyết định loại bỏ những thông tin không cần thiết từ cell state.
  • Input Gate (iti_t ): Quyết định thông tin mới nào sẽ được lưu trữ.
  • Output Gate (oto_t ): Quyết định thông tin nào sẽ được xuất ra làm hidden state cho bước tiếp theo.
  • Cell State (CtC_t ): Bộ nhớ dài hạn (được cập nhật tại mỗi bước thời gian).
  • Hidden State (hth_t ): Bộ nhớ ngắn hạn (được suy ra từ cell state).

2. Các phương trình toán học

Tại mỗi bước thời gian tt, với đầu vào xtx_t và các trạng thái trước đó ht1h_{t-1} cũng như Ct1C_{t-1}, LSTM tính toán như sau:

Bước 1: Forget Gate

ft=σ(Wf[ht1,xt]+bf)f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)

Mục đích: Quyết định bao nhiêu phần của Ct1C_{t-1} (cell state trước đó) cần bị loại bỏ.

Đầu vào: Concatenation của ht1h_{t-1} (trạng thái ẩn trước đó) và xtx_t (đầu vào hiện tại).

Trọng số: WfW_f (trọng số của Forget Gate), bfb_f (bias).

Hàm kích hoạt: Hàm sigmoid σ\sigma cho ra giá trị trong khoảng từ 0 (loại bỏ) đến 1 (giữ lại).

Bước 2: Input Gate & Candidate Cell State

it=σ(Wi[ht1,xt]+bi),C~t=tanh(WC[ht1,xt]+bC)i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \quad,\quad \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)

Mục đích:

  • iti_t : Quyết định lượng của C~t\tilde{C}_t (candidate cell state) sẽ được thêm vào CtC_t .
  • C~t\tilde{C}_t: Tạo ra giá trị đề xuất cập nhật cho cell state.

Trọng số: Wi,WCW_i, W_C (trọng số cho input gate & candidate cell state), bi,bCb_i, b_C (bias).

Hàm kích hoạt:

  • Hàm sigmoid σ\sigma điều chỉnh giá trị của candidate cell state.
  • Hàm tanh\tanh nén các giá trị về khoảng [1,1][-1,1] nhằm đảm bảo cập nhật ổn định.

Bước 3: Update Cell State

Ct=ftCt1+itC~C_t = f_t \odot C_{t-1} + i_t \odot C̃

Mục đích: Kết hợp thông tin cũ Ct1C_{t-1} với thông tin mới C~t\tilde{C}_t.

Phép toán:

  • ftCt1f_t \odot C_{t-1}: Phép nhân từng phần \odot giúp loại bỏ các phần không cần thiết của Ct1C_{t-1}.
  • itC~ti_t \odot \tilde{C}_t: Thêm thông tin mới có liên quan từ C~t\tilde{C}_t.

Bước 4: Output Gate & Hidden State

ot=σ(Wo[ht1,xt]+bo)ht=ottanh(Ct)o_t=σ(W_o⋅[h_{t−1},x_t]+b_o) \\ h_t=o_t \odot tanh⁡(C_t)

Mục đích:

  • oto_t : Quyết định phần nào của CtC_t sẽ được xuất ra làm hth_t .
  • hth_t : Trạng thái ẩn được truyền cho bước thời gian tiếp theo.

Trọng số: WoW_o (trọng số của output gate), bob_o (bias).

Hàm kích hoạt:

  • oto_t : Hàm sigmoid σ\sigma lọc thông tin từ CtC_t .
  • tanh\tanh : Nén giá trị của $C_t$0 về khoảng [1,1][-1, 1] trước khi nhân với oto_t .

3. Các chi tiết quan trọng cần được giải thích

A. Concatenation của ht1h_{t-1} xtx_t

Đầu vào của mỗi cổng là sự nối kết của trạng thái ẩn trước đó ht1h_{t-1} và đầu vào hiện tại xtx_t:

[ht1,xt]=concat(ht1,xt)[h_{t-1}, x_t] = \text{concat}(h_{t-1}, x_t)

Điều này cho phép LSTM đưa ra quyết định dựa trên cả ngữ cảnh quá khứ và thông tin hiện tại.

B. Chia sẻ Tham số

Các trọng số (Wf,Wi,WC,Wo)(W_f, W_i, W_C, W_o) và bias (bf,bi,bC,bo)(b_f, b_i, b_C, b_o) được sử dụng lại ở mọi bước thời gian, tương tự như trong RNN. Điều này giúp giảm số lượng tham số và cho phép xử lý các chuỗi có độ dài thay đổi.

C. Kích thước (Dimensions)

Giả sử:

  • nn là kích thước của hidden state.
  • mm là kích thước của đầu vào.

Ta có:

  • ht1:h_{t-1}: Kích thước (n,1)(n, 1).
  • xt:x_t : Kích thước (m,1)(m, 1)
  • [ht1,xt]:[h_{t-1}, x_t ]: Kích thước (n+m,1)(n + m, 1)
  • (Wf,Wi,Wc,Wo):(W_f, W_i, W_c, W_o): Kích thước (n,n+m)(n, n+m).
  • Ct,ht:C_t, h_t: Kích thước (n,1)(n,1)

D. Các Hàm Kích Hoạt

  1. Hàm Sigmoid (σ\sigma)
    • Được sử dụng trong các cổng (ft,it,ot)(f_t, i_t, o_t) để cho ra giá trị trong khoảng từ 0 đến 1.
    • Ví dụ: ft=0.9f_t = 0.9 nghĩa là giữ lại 90%90\% của Ct1C_{t-1}.
  2. Hàm Hyperbolic Tangent (tanh\tanh )
    • Được sử dụng trong C~t\tilde{C}_thth_t để nén các giá trị về khoảng [1,1][-1,1].
    • Ngăn chặn hiện tượng gradient bùng nổ và tạo tính phi tuyến cho mô hình.

🎯 Kết Luận

Qua bài viết này, chúng ta đã cùng nhau khám phá chi tiết cách hoạt động của LSTM, từ cơ chế cổng tinh vi cho đến việc duy trì thông tin dài hạn một cách hiệu quả. Hiểu được cách LSTM quản lý thông tin qua các bước thời gian không chỉ giúp ta nhận thức rõ hơn về cách các mô hình deep learning xử lý dữ liệu chuỗi mà còn mở ra cánh cửa để tìm hiểu sâu hơn về các kiến trúc tiên tiến khác trong lĩnh vực xử lý ngôn ngữ tự nhiên.

Nếu bạn đã cảm thấy hứng thú với việc làm thế nào các mô hình như LSTM “ghi nhớ” được thông tin quan trọng qua nhiều bước, thì hãy tiếp tục hành trình khám phá của mình! Bước tiếp theo, chúng ta sẽ chuyển sang Word2vec – công cụ mạnh mẽ giúp biểu diễn từ ngữ dưới dạng vector, tạo nền tảng cho những bước tiến vượt bậc trong các mô hình NLP hiện đại như Transformers.

👉 Đừng bỏ lỡ bài viết về Word2vec – Giải Mã Mô Hình Biểu Diễn Ngôn Ngữ Trước Khi Đến Với Transformers để cùng khám phá cách các từ được chuyển hóa thành các vector số học có ý nghĩa và tìm hiểu cách mà bước chuyển này tạo nền tảng cho các kiến trúc tiên tiến trong NLP!

Cảm ơn bạn đã đồng hành cùng bài viết này – hẹn gặp lại trong hành trình khám phá sâu hơn về thế giới của NLP và Deep Learning!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí