上面是lstm的計算公式,首先找那幾個門,其實好找,那三個sigmod作為非線性函式的就是三個門,很明顯其取值範圍在0到1和門開啟關閉的物理意義是很好對應起來的。
所以含義很清楚,
輸入門是用來控制輸入i』(t)進出多少或者是否允許進出的門控裝置;
輸出門是用來控制t時刻狀態值m(t)對外多少是可見的門控裝置;
遺忘門是控制rnn中歷史狀態m(t-1)流動到t時刻後允許多少進入t時刻的門控裝置;
結合常見的lstm示意圖,以下就是三個門的控制,上面羅列的公式中mt就是ct
遺忘門
輸入門
輸出門
lstm是rnn模型,決定t時刻節點的除了當前輸入值x(t)外,還有t-1時刻的隱層節點輸出h(t-1),這代表了歷史資訊對當前的影響,所以決定門開關程度的除了當前輸入 x(t)外,還有h(t-1),僅此區別而已。
所以關鍵在lstm的狀態值更新函式和隱層節點輸出值函式上。對於狀態更新函式來說:
f(t)是遺忘門門控,m(t-1)是歷史狀態資訊,兩者相乘代表t時刻允許多少歷史資訊進入來決定m(t)當前狀態,如果遺忘門全關取值0,則歷史對當前狀態無影響,如果遺忘門全開取值1,則歷史資訊原封不動的傳到t時刻,沒有任何資訊損失,當然更大可能是取值0到1之間,代表歷史資訊的部分流入;
i(t)是輸入門門控,i』(t)是當前t時刻輸入值, 兩者相乘代表t時刻允許多少當前輸入資訊進入來決定m(t)當前狀態,如果輸入門全關取值0,則lstm忽略當前輸入的影響,等於沒看到這個輸入直接跳過去了,如果輸入門全開取值1,則當前輸入最大化地決定當前狀態m(t),沒有任何資訊損失,當然更大可能是取值0到1之間,代表輸入資訊的部分流入;
經過上面兩個門控控制歷史資訊的影響以及當前輸入的影響,就形成了t時刻的隱層節點狀態值m(t)。
隱層節點輸出值h(t)好理解,就是說通過輸出門控制當前狀態m(t)對外有多少是可見的,因為m(t)是內部隱藏的狀態資訊,除了往t+1時刻隱層傳輸外,外部其它地方是看不到的,但是它們可以看到h(t)。
這就是lstm是如何用三個門控以及抽離出的m狀態儲存器來表達運算邏輯的思路,其實可以看到它本質跟rnn一樣,無非是體現歷史影響及當前輸入的影響,但是相對rnn來說,通過門控來自適應地根據歷史和輸入來控制資訊的流動,當然其實更主要的是通過抽離出的m儲存往後傳遞方式來解決梯度瀰散問題的,因為今天主講門控,所以這塊不展開講。
很多其它深度學習的工作也引入了門函式,其思路和上面介紹的豬家的門控系統思路本質上是一樣的,無非是用門函式來控制資訊流動程度的。在計算模型上怎麼理解「有門」和「沒門」的模型呢?其實你可以預設地認為所有的模型都是「有門」的,而「沒門」只是有門的一種特例情況。為什麼呢?因為「沒門」等價於什麼,等價於:「有門」但是那個門是永遠全開的,永遠不會關上或者半遮半掩。所以引入門其實在幹什麼呢,就是加入控制,在有些情況下讓你進入,有些情況下不讓你進入,比如看見x不讓進,看見y則自由出入。
|其它的模擬
上面為了方便理解門函式的作用,我們用現實生活中的門作為模擬例子。其實生活中還有很多起到類似模擬作用的裝置,比如水龍頭,開啟水龍頭那麼水就可以流進來,如果關上水龍頭,那麼就切斷了水源,水龍頭開啟的大點,那麼水流量就大些,水龍頭開啟的小點,那麼水流量就小些。dl中的門函式其實跟這個水龍頭調節的作用是一樣的,區別無非是控制的不是水流量,而是流入的資訊流量。
再比如,也可以把門函式模擬為燈的光調節器,我們常見到帶有光調節器的燈控裝置,把裝置調大,則照明強度增加,把裝置調小,則照明強度減少。這個模擬也能很形象地說明門函式的作用。
其實歸納起來,所有這些生活中的門起的是什麼作用呢?其實起的作用是個「調節閥」的作用,通過開關調節閥來控制物體的流入;通過開關調節閥大小來控制流入程度;所以,所有起到調節閥作用的生活設施都可以用來做門函式的模擬。
原文連線:
單層LSTM和多層LSTM的輸入與輸出
rnn結構 對應的 為 中沒寫偏置 上圖是單層lstm的輸入輸出結構圖。其實它是由乙個lstm單元的乙個展開,如下圖所示 所以從左到右的每個lstm block只是對應乙個時序中的不同的步。在第乙個圖中,輸入的時序特徵有s個,長度記作 seq len,每個特徵是乙個c維的向量,長度記作 input ...
C 入門 輸入和輸出
輸入輸出體系結構 1 在c 的流類庫中定義了四個全域性流物件 cin,cout,cerr和clog cin 標準輸入流物件,鍵盤為其對應的標準裝置。cout 標準輸出流物件,顯示器為標準裝置。cerr和clog 標準錯誤輸出流,輸出裝置是顯示器。為非緩衝區流,一旦錯誤發生立即顯示。提取運算子 str...
overlay中的輸入和輸出
overlay技術跟幀快取技術都可以用於顯示。overlay在驅動層是v4l2架構。struct v4l2 format format format.type v4l2 buf type video output ret ioctl fd,vidioc g fmt,format,get format...