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