直覺理解LSTM和GRU
- 2020 年 3 月 26 日
- 筆記
Q
網上有很多對於LSTM以及GRU的介紹,主要從構造方面進行了進行了介紹。但是由於構造相對較複雜,而且涉及到的變數較多,往往不那麼容易記住。下面我們從直覺的角度來對這兩者進行介紹,方便理解和記憶。其中的更深刻的理論原理,可以參看相關的文章和論文。
LSTM
對於LSTM的經常被提到的一篇文章就是 理解LSTM 。我們也基於此進行介紹。
首先, LSTM最常見到的結構如下圖:

每個矩形稱之為一個Unit。每個Unit有兩個輸入和兩個輸出:C 和 h。其中, C是Unit或者Cell的資訊。這個資訊不僅僅包含本unit的資訊,還包含了之前所有Unit的資訊。這種包含不是全部的包含,而是有所取捨的。這種取捨體現在了該Unit以及其餘Unit的構造當中。而h裡面包含的,主要是重點用於當前unit的資訊,當前這部分的資訊會進行輸出。也就是說,會影響輸出的,主要就是這部分的資訊。

C之間資訊傳遞如圖。在最上面的一層中,
到
主要有兩步:丟棄一部分資訊(對應乘號),加上一部分資訊(對應加號)。這樣就完成了上面一個Unit資訊到本Unit資訊的傳遞了。
那麼要丟棄多少,就要由forget門來決定了:

這也是forget門的來歷。通過學習,讓forget門來學習究竟應該忘掉多少。
那麼添加的資訊來自哪一部分呢?來自
和
。

它分為了兩部分:
一部分是生成新資訊,也就是
。
但是這部分新生成的資訊要把多少給
, 這個要由
輸入門這部分來決定。
這樣經過
之後,跟之前保留的資訊相加,
的資訊就完成了。
但是
還沒有完成:還需要搞清楚, 在所有的資訊
裡面,哪些是我本Unit需要關注,並用於輸出的。
這一部分就是:

這個也是分為了兩部分:
一部分是根據
生成了資訊,但是至於要多少, 讓輸出門
來決定吧。
GRU
在GRU裡面,不再有C和h兩部分,而是只用了h。

h同樣有一個忘記一部分舊資訊、添加一部分新資訊的過程,如上面紅線圈出的部分。這個忘記、添加跟LSTM有點不同:在LSTM中,忘記和添加的比例是學習來的,兩者沒什麼相關;而在GRU中,這個比例是固定的:忘記了多少比例,那麼新的資訊就添加多少比例。這個由 (1-)來進行控制。
而新的資訊的生成,是由下圖中紅色部分來標識的。

可以看出
作為update們,控制了忘記和輸入。
而新的資訊時怎麼生成的呢?

由上圖中可以看到,這部分是由
和
共同生成的。但是
並不是用了全部,而是用了一部分。至於這個「一部分」究竟是多少,這個由 reset門
來控制。
隱藏資訊和輸入資訊決定了所有的「門」,通常一個sigmoid稱之為一個門,它來控制資訊的傳遞。