機器學習中的短期記憶是如何工作的?
介紹
LSTM,代表長短期記憶網路,是一種高階迴圈神經網路(RNN),專門設計用於分析文字、語音和時間序列等順序資料。與傳統的 RNN 難以捕捉資料中的長期依賴關係不同,LSTM 擅長理解和預測序列中的模式。
傳統的 RNN 在隨著時間推移處理序列時,面臨著保留關鍵資訊的重大挑戰。此限制阻礙了它們根據長期記憶進行準確預測的能力。LSTM 的開發旨在克服這一障礙,使網路能夠儲存和維護資訊更長時間。
LSTM 網路結構
LSTM 網路的架構由記憶單元和幾個控制資訊流的門組成。遺忘門是一個重要的門,它控制著是否應該保留或丟棄資訊。輸入門則控制將新資料插入到記憶單元中。LSTM 網路中的遺忘門對於確定哪些資訊應該儲存,以及哪些資訊應該從單元狀態中忽略至關重要。它接收兩個輸入:xt,表示當前時間步的輸入,以及 ht-1,表示前一個單元的輸出。為了生成二進位制輸出,這些輸入與權重矩陣 (Wf) 相乘,並加上偏差項 (bf),然後透過 sigmoid 啟用函式 () 傳送。
遺忘門的方程式為 −
f_t = σ(W_f · [h_t-1, x_t] + b_f)
在以下方程式中 −
Wf 是遺忘門的權重矩陣,它幫助我們瞭解輸入在選擇要丟棄哪些資訊中的重要性。
[ht-1, xt] 表示前一個隱藏狀態 (ht-1) 和當前輸入 (xt) 的組合,同時考慮了兩個時間步的資訊。
遺忘門的偏差項為 bf,它允許網路調整其行為。
表示 sigmoid 啟用函式,它將輸入的加權和轉換為 0 到 1 之間的值。此值指定單元狀態的每個元素是否應該被遺忘或保留。
輸入門
輸入門控制資訊流入長短期記憶 (LSTM) 架構。它決定哪些輸入元素應該儲存,哪些應該忽略。
LSTM 輸入門使用 sigmoid 啟用函式計算,其內容包括:當前輸入和前一個隱藏狀態。這些元件結合起來計算輸入門啟用。
當前輸入 − 在當前時間步,當前輸入是新的輸入。可以是單詞、特徵向量或任何其他與 LSTM 相關的輸入。此輸入在與其他元件合併之前會乘以權重矩陣。
前一個隱藏狀態 − 前一個隱藏狀態表示 LSTM 單元在前一個時間步儲存的資訊。它記錄了先前的上下文,並確定當前輸入中有多少應該被保留。前一個隱藏狀態在與其他元件混合之前會乘以另一個權重矩陣。
偏差項 − 偏差項會新增到當前輸入和前一個隱藏狀態的加權和中。此偏差有助於調整輸入門的決策過程。
啟用函式 − sigmoid 啟用函式應用於當前輸入、前一個隱藏狀態和偏差項的加權和。sigmoid 函式將結果壓縮到 0 到 1 之間的值,表示門是開啟還是關閉。接近 1 的值表示門是開啟的,允許更多資訊進入單元狀態,而接近 0 的值表示門是關閉的,阻止資訊進入單元狀態。
單元狀態更新 − 輸入門的輸出(介於 0 和 1 之間)與單元狀態候選按元素相乘。單元狀態候選表示可能新增到單元狀態的其他資訊。最終的乘積隨後會新增到單元狀態,然後用必要的資訊更新單元狀態。
透過改變與輸入門相關的權重和偏差,LSTM 可以學會選擇保留或丟棄來自輸入和前一個隱藏狀態的資訊,從而使其能夠捕獲長期依賴關係並做出明智的判斷。
輸出門
輸出門指導從記憶單元中提取重要資訊,以生成最終輸出。LSTM 特別適用於需要上下文理解和記錄長期依賴關係的任務。它們可以分析和預測資料序列,這使得它們成為語言翻譯、語音識別和時間序列預測等任務的有用工具。
LSTM 的優勢之一是它們能夠透過在記憶單元中儲存資訊來捕獲長期依賴關係。它們解決了傳統 RNN 在長時間序列訓練期間遇到的梯度消失和梯度爆炸問題。LSTM 透過選擇性地回憶或遺忘資訊可以有效地解決這些挑戰。
侷限性
然而,LSTM 也有一些缺點。它們在計算上成本更高,因此對於大型資料集或資源受限的應用程式來說,可擴充套件性較差。由於計算複雜性,LSTM 需要更多資料和更長的訓練週期才能獲得良好的效能。由於 LSTM 處理的順序性質,短語或序列不容易並行化。
結論
LSTM 應用於各種領域。語言建模、機器翻譯、語音識別、時間序列預測、異常檢測、推薦系統以及影片分析任務(例如物件檢測和活動識別)都廣泛使用它們。這些應用程式透過利用 LSTM 的特性,從模型捕獲順序資料中複雜模式和關係的能力中受益。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP