閘控循環單元(GRU)
/ gee-ar-YOO /
GRU——「閘控循環單元」(gated recurrent unit)——是 LSTM 的一個精簡版表親。它追求的目標是一樣的:讓循環網路把資訊跨過序列的長段一路帶下去,不致褪沒。區別在於,GRU 用更少的零件做到這一點。如果說 LSTM 是一台帶三個閥門、兩條獨立記憶線的機器,那麼 GRU 就是一種更俐落的設計,只有兩個閥門和一條記憶線,力圖用更少的搭建和訓練,換來幾乎相同的結果。
它靠兩個閘來運作。更新閘決定舊記憶保留多少、新資訊放進多少——實際上把「守住我已知的」與「接納剛到來的」合成了一個動作。重置閘決定在形成一份新的候選記憶時,要忽略掉多少過去,這幫助它甩掉無關的歷史。關鍵在於,GRU 把 LSTM 那條獨立的細胞狀態和隱狀態合併成了一條,於是要學的數字更少。和 LSTM 一樣,它的閘可以選擇「基本不動那份記憶」,正是這一點,讓有用的信號——以及訓練時的誤差信號——能跨過許多步而存活,不致消失。
實踐中,GRU 與 LSTM 在大多數任務上表現相近;誰也不是放之四海皆優,所以人們常常兩者都試。GRU 的魅力在於它更輕、訓練略快,這在資料集較小或硬體較緊時很要緊。要老實說出的告誡,與整個 RNN 家族相同:它們一次只讀一步,因而在很長的序列上很慢,而對最大的語言模型,Transformer 已把它們超越。不過,對於規模不大的序列問題,GRU 依然是一個實用而省儉的主力。
用過去一個月去預測明天的氣溫:更新閘讓 GRU 大體把一個穩定的季節趨勢帶下去,同時讓幾天前一場突如其來的寒潮去微調預測——既守住穩定的,又為新情況做調整。
兩個閘、一條記憶:GRU 在「記住」這件事上更精簡的做法。
GRU 與 LSTM 的較量,很少有一方明顯勝出;GRU 只是更輕、往往訓練更快。沒有哪條規則說誰永遠贏誰——真要緊的時候,就在你自己的資料上把兩者都試一遍。