由來
人類並不是每時每刻都從一片空白的大腦開始他們的思考。在你閱讀這篇文章時候,你都是基於自己已經擁有的對先前所見詞的理解來推斷當前詞的真實含義。我們不會將所有的東西都全部丟棄,然後用空白的大腦進行思考。我們的思想擁有永續性。
傳統的神經網路並不能做到這點,看起來也像是一種巨大的弊端。例如,假設你希望對電影中的每個時間點的時間型別進行分類。傳統的神經網路應該很難來處理這個問題——使用電影中先前的事件推斷後續的事件。
RNN 解決了這個問題。RNN 是包含迴圈的網路,允許資訊的持久化。
RNN 的關鍵點之一就是他們可以用來連線先前的資訊到當前的任務上,例如使用過去的視訊段來推測對當前段的理解。不幸的是,當時間間隔不斷增大時,RNN 會喪失學習到連線如此遠的資訊的能力。
幸運的是,LSTM 並沒有這個問題!
為什麼需要 LSTM
普通 RNN 的資訊不能長久傳播(存在於理論上)
引入選擇性機制
- 選擇性輸出
- 選擇性輸入
- 選擇性遺忘
選擇性 -> 門 - Sigmoid 函式:[0, 1]
\displaystyle f(x)=\frac{1}{1+e^{-x}}
門限機制
- 向量A -> sigmoid -> [0.1, 0.9, 0.4, 0, 0.6]
- 向量B -> [13.8, 14, -7, -4, 30.0]
- A為門限,B為資訊
- A * B = [0.138, 12.6, -2.8, 0, 18.0]
LSTM 屬於迴圈神經網路的一種,詳細的迴圈神經網路參考迴圈神經網路。
處理層的符號解釋:
網格結構 - Neural Network Layer
點積操作 - Pointwise Operation
向量傳遞 - Vector Transfer
向量拼接 - Concatenate
向量拷貝 - Copy
逐步解析LSTM
三門兩態:
LSTM 第一步是用來決定什麼資訊可以通過 cell state。這個決定由“forget gate”層通過sigmoid來控制,它會根據上一時刻的輸出通過或部分通過。如下:
「遺忘門」:
第二步是產生我們需要更新的新資訊。這一步包含兩部分,第一個是一個“input gate”層通過\mathrm{sigmoid}來決定哪些值用來更新,第二個是一個\tanh層用來生成新的候選值相加,得到了候選值。
一二步結合起來就是丟掉不需要的資訊,新增新資訊的過程:
最後一步是決定模型的輸出,首先是通過\mathrm{sigmoid}層來得到一個初始輸出,然後使用tanh將值縮放到-1到1間,再與\mathrm{sigmoid}得到的輸出逐對相乘,從而得到模型的輸出。
這顯然可以理解,首先\mathrm{sigmoid}函式的輸出是不考慮先前時刻學到的資訊的輸出,tanh函式是對先前學到資訊的壓縮處理,起到穩定數值的作用,兩者的結合學習就是遞迴神經網路的學習思想。至於模型是如何學習的,那就是後向傳播誤差學習權重的一個過程了。
這是 LSTM 的一個典型結構的理解,當然,它也會有一些結構上的變形,但思想基本不變。
本作品採用《CC 協議》,轉載必須註明作者和本文連結