直覺理解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稱之為一個門,它來控制資訊的傳遞。