Geoffrey Hinton講座回顧:使用快速權重來存儲臨時記憶
介紹
這個講座談了快速權重(fast weight)的思想及其實現。這種快速權重可以被用于存儲最近的臨時記憶,并且它們提供了一種實現這種類型的對過去的注意(attention)的神經上可行的方法——近期它已被證明在序列到序列模型上是非常有幫助的。通過使用快速權重,我們可以不再需要存儲神經活動模式的副本。
其中的基本思想是臨時記憶(temporary memories)可以不通過添加活動神經元(active neurons)來存儲,而是可以通過在一些已有神經元上進行一些修改來實現。
對于每一個神經元連接,與這個連接相關的權重都有兩個組分。一是標準慢權重(standard slow weight),其代表了長期記憶,學習慢衰減也慢。另一個是快速權重,代表了短期記憶,學習快衰減也快。快速權重是真正存在的,比如:啟動(priming)。假設你聽到了一個帶有大量噪聲的詞,如果這是你***次聽到這個詞,你可能無法識別它。但如果你在半個小時之前聽過這個詞,你就可以將其識別出來,這是因為你識別這個詞的閾值(threshold)被你半小時之前的記憶降低了。一般而言,假設我們有一個局部表示(localist representation),為了實現上述效果,我們就可以臨時降低某個特定詞的閾值,而不是改變整個結構。你也可以從另一個角度來思考:假設你有一種活動模式,你可以改變活動模式之間的神經元的權重,以使其中一個特定的模式變成一個更強的吸引子(attractor,比如更容易識別一個詞)。這是我們存儲記憶的方式,我們通過改變權重來存儲模式而不是直接存儲模式。因為如果我們使用權重矩陣(weight matrix)而非活動向量(activity vector)來存儲短期記憶,我們就能通過有限的神經元實現遠遠更大的容量。
存儲臨時知識的方式有兩種:
長短期記憶(LSTM):在隱藏單元存儲活動。它的容量非常有限。假設一個隱藏狀態有 H 個單元,那么在關于當前序列的歷史上,LSTM 就會受限于 O(H) 的短期記憶(吸引子)。除此之外,LSTM 將信息存儲在其隱藏單元之中,從而使得該短期記憶與正在進行的過程無關。
快速權重:讓你可以使用權重矩陣來存儲短期記憶,這能帶來更高的容量。除此之外,該短期記憶可以存儲特定于當前序列的歷史的信息,從而使得該信息可被用于影響正在進行的過程。
我們可以怎樣應用快速權重的思想?
讓我們從 ReLU RNN 開始。ReLU RNN 很易于訓練,而且很擅長學習長期依賴(長期記憶)。下面的左圖表示了普通的 RNN,右圖則表示一個相同的 RNN(如果我們使用空矩陣進行了「隱藏→隱藏」權重初始化,如藍色箭頭所示)。為了應用快速權重的思想,這里使用了外積學習規則(outer product learning rule)來更新快速權重矩陣 A。
更新快速權重矩陣 A 的規則:每次我們在時間步驟 t 學習到一個隱藏狀態 h(t),我們就將當前快速權重 A(t-1) 與權重衰減參數 λ 相乘,并且加上乘以學習率 η 的新學習到的隱藏狀態 h(t) 的外積(outer product)。這個更新函數如下所示。其快速權重即為過去的貢獻(contribution)與隨時間衰減的貢獻的總和。在數學上,該貢獻即為該隱藏狀態的外積 h(t)h(t)^T。
A(t) = λA(t − 1) + ηh(t)h(t)^T
hs+1(t + 1) = f([Wh(t) + Cx(t)] + A(t)hs(t + 1))
增加層歸一化(LN)技巧使其效果更好。
在標準 RNN 中,循環單元(recurrent units)的輸入總和的平均幅度有一個趨勢——每一個時間步驟要么會增大、要么會減小,這會導致梯度爆炸或消失。LN 則是在向隱藏單元所接收到的總輸入向量應用非線性(ReLU)之前,將該向量歸一化到零均值和單位方差。在一個層歸一化的 RNN 中,其歸一化項使其在該層的所有輸入的總和的規模調整時保持不變,這能得到遠遠更加穩定的隱藏到隱藏動態(hidden-to-hidden dynamics)?
這樣有效嗎?
任務 1:聯想任務
- 假設有一個任務,其多個關鍵值對(key-value pairs)被表示一個序列,該序列作為輸入
- 將該序列轉換成一個 R 維度向量,用作該循環隱藏單元的輸入
- 檢查這個任務的誤差率
- 結果表說明 RNN 可以通過 100 個暗隱藏單元(dim hidden unit)解決這個問題,LSTM 可以使用 50 個暗隱藏單元解決它,而快速權重 RNN 只需要 20 個即可。這并不令人驚奇,因為在 FW RNN 中的 20 個暗隱藏單元能比普通 RNN 實現遠遠更大的容量。問題在于:它能夠學習怎么使用這種記憶容量嗎?是的,因為 FW RNN 在 R=20 時能達到 1.18% 的誤差率。
任務 2 :使用快速權重結合 glimpse
- 視覺注意模型:注意模型已經展現出了能克服 ConvNet 一些缺陷的能力:一是理解 ConvNet 注意的地方;二,注意模型能有選擇的關注圖像的重要部分。注意模型如何工作?給定一張輸入圖像,視覺注意模型計算一系列的 glimpse,每個 glimpse 對應圖像的一個小區域。視覺注意模型能學習找到圖像中的不同物體并對他們進行分類,但它使用的計算 glimpse 的方法過于簡化:它使用單尺度的 glimpse,并按照特定的順序掃描整個圖像。然而,人類的眼睛能夠在不同的尺度上注意圖像的不同部分,并結合整個觀察做出正確的決定。改進模型記憶近期 glimpse 的能力,應該可以幫助視覺注意模型發現意義重大的 glimpse 策略。快速權重能學習一個序列中的所有 glimpse,因此隱態可被用于決定如何融合視覺信息,并檢索合適的記憶。
- 為了觀察快速權重是否有效,想象一個簡單的循環視覺注意模型,它不能預測該注意哪里,但卻能從不同層級中獲得位置的固定序列。該注意模型需要融合 glimpse 信息,從而成功的完成任務。快速權重可使用一個臨時緩存來存儲 glimpse 計算,而且同一模型的慢權重能融合 glimpse 信息。
- 在 MINST 上評估多級視覺注意模型
- Table 2 展現了帶有多級 glimpse 的 ReLU RNN 和帶有同樣 glimpse 序列的 LSTM 的結果。結果表明在隱藏單元數量有限的情況下,快速權重有更強的記憶能力,也因此表現比 LRNN 和 LSTM 更好。此外,LSTM 也不擅長融合 glimpse,因為 LSTM 有序的處理 glimpse。改變 glimpse 的序列不能改變物體的意義。不像必須要融合一系列 glimpse 的模型,ConvNet 并行處理所有的 glimpse,并使用隱藏單元的層來留取所有的融合,所以它的表現要比序列模型更好。
實現:
https://github.com/jiamings/fast-weights
Hugo Larochelle
所做筆記:
http://www.shortscience.org/paper?bibtexKey=journals/corr/1610.06258#hlarochelle
思考
- 該快速聯想記憶模型結合了來自神經科學的思路。
- 該論文沒有提到模型在語言相關的任務上的表現,因此在語言任務中用快速權重 RNN 取代 LSTM 會很有趣。
- 該論文表明不能使用 mini-batch,因為每個序列的快速權重矩陣都不同,但與一系列存儲的隱藏向量相比卻允許 mini-batch。mini-batch 確保我們能利用 GPU 計算能力的優勢,但該快速權重模型如何使用 mini-batch 的思路還很模糊。
【本文是51CTO專欄機構機器之心的原創文章,微信公眾號“機器之心( id: almosthuman2014)”】