下圖是我看過對LSTM物理結構描述最清楚的圖,參考自LSTM神經網絡輸入輸出究竟是怎樣的?
答主在圖中對三種架構有簡要的說明,這裏根據自己的理解,再對它做進一步的解釋。
圖中的第一部分是LSTM的時序結構版本,它是單個LSTM Cell在多個時間步上展開的形式,實際上是隻有一個Cell,因此也可以理解爲LSTM是神經網絡在時序上的權重共享(CNN是在空間上的權重共享)。嗯,單個LSTM/RNN是下面這樣的。
圖中的第二部分是LSTM單個Cell的邏輯結構版本,每一個 對應一個 門,從左到右依次爲遺忘門,輸入門和輸出門,時序的傳遞是在上下兩條線中,上面的線對應較長的短時記憶「long short-term memory」,也即隱狀態,下面的線對應短時記憶「short-term memory」,也即輸出狀態,在普通的RNN中,就只有輸出狀態會反饋到輸入。
從控制的角度看,這種時序的傳遞,其實類似反饋「PS:看來控制沒白學hhh」。看一下經典的反饋圖:
在控制中,反饋即是把當前輸出回傳到輸入項,和下一時刻的輸入共同決定下一時刻的輸出,這裏輸入和輸出的組合方式是通過做差得到誤差項,然後通過誤差項來得到控制量。
在LSTM中,網絡的隱狀態和輸出狀態同樣會傳遞到下一個時刻, 和系統下一刻的輸入一起共同決定下一刻的輸出,這種傳遞和循環與控制理論中的反饋有異曲同工之妙。這也使得LSTM區別於一般的前饋和卷積神經網絡,它能保留歷史輸入中的重要信息,刻畫複雜的歷史依賴,和當前輸入一起去決定下一個輸出。
圖中第三部分的物理架構纔是這幅圖的精髓,看到這部分,才能真正理解LSTM內部的神經網絡結構。
LSTM中的每一個門實際上就是一個以sigmoid作爲激活函數的全連接層,因爲這些門輸出都是(0,1)的,也就相當於一個濾波器,0爲全部過濾,1爲全部通過,以這種方式來保留神經網絡認爲重要的信息。
LSTM中 ‘X’ 符號對應的是按位做乘法的操作,而不是矩陣的乘法,’+’ 號也是按位的加法。
LSTM中一個非常關鍵的參數,num_units,它是每一個門的神經元個數,它也是輸出的維度,在圖中它是128。
LSTM的輸入和上一時刻的輸出是通過concat的形式組合在一起的,然後作爲每一個門的輸入。
如獲至寶的一幅圖,希望能幫助大家揭開LSTM的神祕面紗~