上面是lstm的計算公式,那三個sigmoid作為非線性函式的就是三個門。lstm是rnn模型,決定t時刻節點的除了當前x(t)外,還有t-1時刻的隱層節點輸出h(t-1).這代表了歷史資訊對當前的影響,所以決定門開關程度的除了當前輸入x(t)外,還有h(t-1)。
含義很清楚,輸入門是用來控制輸入i'(t)進出多少或者是否允許進出門的裝置;輸出門是用來控制t時刻狀態值m(t)對外多少是可見的門裝置。遺忘門是控制歷史狀態m(t-1)流動到t時刻後允許多少進入t時刻的門裝置。
所以關鍵在lstm的狀態值更新函式和隱層節點輸出值函式上。對於狀態更新函式來說,
f(t)是遺忘門門控,m(t-1)是歷史狀態資訊,兩者相乘代表t時刻允許多少歷史資訊進入來決定m(t)當前狀態,如果遺忘門取0值,則歷史對當前狀態無影響,如果遺忘門全開取1值,則歷史資訊原封不動的傳到t時刻,沒有任何資訊損失,更大可能是取值為0到1,代表歷史資訊的部分流入。
i(t)是輸入門門控,i'(t)是當前輸入值,兩者相乘代表t時刻允許多少歷史資訊進入來決定m(t)當前狀態,如果輸入門全關取值0,則lstm忽略當前輸入的影響,如果輸入門全開取值1,則當前輸入最大化地決定當前狀態m(t),沒有任何資訊損失,當然更大可能取值是0到1之間,代表資訊的部分流入。
經過兩個門控制歷史資訊的影響以及當前當前輸入的影響,就形成了t時刻的隱層節點狀態值m(t),其實可以看到它本質跟rnn一樣,無非是體現歷史影響和當前輸入的影響,但是相對rnn,通過門控來自適應地根據歷史和輸入來控制資訊的流動,當然更主要的是通過抽離出的m儲存往後傳遞方式來解決梯度瀰散問題的。
隱層節點輸出值h(t)好理解,就是說通過門控制當前狀態m(t)對外多少是可見的,因為m(t)是內部隱藏的狀態資訊,除了往t+1時刻隱層傳輸外,外部其它地方是看不到的,但是他們可以看到h(t)。
這就是lstm是如何用三個門控以及抽離出的m狀態儲存器來表達邏輯的思路
(三)深度學習計算 1 模型構造
相比於先前 示例中的tf.keras.sequential類,tf.keras.model的模型構造方法更加靈活。tf.keras.model類是tf.keras模組裡提供的乙個模型構造類,可以繼承它來定義需要的模型。構造多層感知機,示例如下 import tensorflow as tfclass...
深度學習 batch size的作用
batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 full batch learning 的形式,這樣做至少有 2 個好處 其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。其二,由於不同權重的梯度值差別巨大,因此選取乙個全域性的學習...
深度學習中模型的優化
準備 整理資料集 將各個標籤的資料放於不同的資料夾中,並統計各個標籤的數目 如 第一列是路徑,最後一列是數目。ps 可能會存在某些標籤樣本很少 多,記下來模型效果不好就怨它。樣本均衡,樣本不會絕對均衡,差不多就行了 如 控制最大類 最小類 切分樣本集 如 90 用於訓練,10 留著測試,比例自己定。...