1. 程式人生 > >讀書筆記26:adding attentiveness to the neurons in recurrent neural networks

讀書筆記26:adding attentiveness to the neurons in recurrent neural networks

摘要首先介紹RNN可以模擬複雜的序列資訊的temporal dynamics,但是當前的RNN神經元的結構主要是控制當前資訊和歷史資訊的貢獻,但是沒有考慮探索input vector中不同元素的重要性(這個指的是某一個時刻的vector的不同dimension的重要性),因此本文提出了element-wise-attention gate(EleAttG)加入到RNN block中,得到EleAtt-RNN block。提出的ElleAttG是一個additional fundamental unit,可以靈活地加到任何RNN結構中,是一個一般性的結構。最後,本文的模型在skeleton based action recognition和RGB based action recognition任務上都進行了測試,都顯示加入這個模組後RNN的能力可以得到極大的提高。

對於EleAttG模組,一個簡單直觀的示意圖如下

可以看出,這個模組的想法很是直截了當,通過歷史的資訊和當前的資訊計算一個EleAttG,用計算好的東西對當前的輸入的每一個維度的貢獻進行一下modulation,得到一個,再用這個modulated的當前輸入進行正常的RNN操作。

對於一個標準的RNN來說,t時刻的hidden state的計算如下,基於當前時刻的輸入和上一時刻的hidden state

標準的RNN會有梯度消失的問題,LSTM解決了這個問題,GRU是一個比LSTM簡單但是很相似的結構,其公式如下

GRU有兩個gate,一個reset gate,一個是update gate,分別是

,這個和基礎的RNN相比來說,多了幾個中間步驟,並且有些步驟被修改,首先,RNN是直接用當前的輸入和之前的hidden state來獲得當前的hidden state,而GRU是先用當前輸入和上一步隱藏態獲得一個reset gate,來決定上一步隱藏態的哪些dimension的資訊要保留,哪些要去掉,接著用修飾過的隱藏態獲得一個產生當前hidden state的前驅物h‘,這個h’的計算除了上一步的hidden state是修飾過的以外,操作是和標準的RNN完全一致的。產生最後的當前時刻hidden state的時候,還需要用到一個之前生成的update gate ,它控制著多少資訊可以從前一時刻的hidden state流向當前時刻的hidden state,而
起到的作用是,如果reset gate的元素都接近0,那麼就和當前的輸入xt很接近,也就傾向於將當前的hidden state重置為xt,而至於能否重置,還要看update gate是否允許,如果update gate的元素值也很小,力量很弱,那麼最終得到的當前hidden state就基本上全是xt了。

LSTM的公式如下

這些模型啟發本文作者的地方在於,這些模型在處理當前輸入xt的時候都是當做一個整體來操作,沒有像對待hidden state一樣對每一個dimension進行控制,因此,本文就提出了對每一個dimension進行分配不同權重加以控制的方法,其實就是和不同的RNN變體一樣,只不過這次多了一個對xt的不同元素的控制。

EleAttG模組得到的是一個向量,和當前輸入xt維度相同,用來控制每一個dimension元素的貢獻

可見,這個vector的計算和之前那些RNN模型中計算gate的方式一模一樣,都是基於當前的輸入和前一時刻的hidden state,只不過這次是作用在xt上了,這裡面的就是一個sigmoid函式,W和b都是待訓練的引數,這個式子的意思就是用上一時刻的hidden state和當前輸入xt來巨鼎當前輸入xt的每一個元素的重要程度。有了這個之後,就可以得到modulated input了,具體形式是

之後其他的計算就是基於而不是原始的當前輸入xt了,EleAttG加入之後,對於不同的RNN模型,具體的操作方式不同,但是也就是將xt換成就行了,例如標準的RNN加入EleAttG之後就按下式

若是EleAttG-GRU,就是

其他RNN網路以此類推,同理可得。