1. 程式人生 > >深度學習-RNN注意力模型

深度學習-RNN注意力模型

簡介

*注意力模型來源於人腦對事物的觀察,由於人腦在觀察事物時,人眼睛聚焦的位置只是很小的一塊,這時人腦會聚焦在這一小塊圖案上,此時,人腦對圖的關注並不是均衡的,是有權重區別的。

*注意力模型多用於對圖片的文字說明,對於圖片的描述,我們接下來會介紹兩種型別的圖片描述方式:

         [1]傳統影象描述   

         [2]注意力模型

傳統影象描述

*傳統方式是類似下圖的方式,從形式上是將輸入圖片傳入一個CNN中來獲取對圖片特徵的提取(輸出層資訊),並將獲取的特徵作為輸入到RNN網路中,通過RNN輸出對應的文字描述,但這種組合形式能描述的文字數不多,準確率不高,而且圖片特徵只引入了一次,資訊靈活性不強

注意力模型

*Attention Model相對於傳統模式的改進有:          

        [1]將原始圖特徵多次喂入RNN模型,使得模型的多個位置都能看到圖片特徵。          

        [2]讓網路學會查詢關注點,讓網路根據關注點來聚焦影象生成文字內容描述。

*經過以上兩點的改進,我們可以構建下圖的模型,我們會將輸入圖片傳到CNN網路,抽取CNN中間卷積層的資訊,通過RNN對卷積層位置的定位來獲取區域性位置資訊,也成為注意力所在意的位置資訊。

*接下來對網路從左到右分析(CNN假定為VGG):

        [1].我們把輸入影象放到預訓練好的VGG網路中去,適應VGG網路進行正向計算,但是我們不會像往常那樣時候最後的輸出層資料,而是使用中間位置的卷積層feature map資料,因為卷積層是通過滑窗得到的,仍具有一點的位置塊資訊,比如這裡使用的卷積層是512個14*14大小的feature map資訊,將其作為集中注意力的依據。          

       [2].使用RNN時,我們首先會走③步驟,這裡會將整個卷積層資訊作為輸入來獲取第一次要集中的點,這裡a1處會得到一個1*196的向量,這個向量上不同的數值會代表要給卷積feature map中不同點多大的注意力,從而表示對不同位置的注意。

      [3].獲取注意力向量之後,我們接下來如②會將上一部分的注意力向量1*196與卷積層大小為196*512的向量做乘積,乘積得到的1*512向量z1(每個map上的一個點)表示要注意的點的位置資訊,也就是我們當前輸出文字時要看到的位置,a1的傳入計算會得到注意力點的位置資訊z1(如圖①),將z1結合第一個輸入y1傳入RNN網路。

       [4].將z1和h1結合傳入網路後,當前時序下,我們會通過RNN計算得到兩個softmax輸出值a2和d1,其中a2是新的位置向量,向量大小為1*196,d1是詞輸出的預測概率資訊,大小應為1*詞向量數。        

      [5].重複2和4中的過程,不斷將輸出a與卷積層相結合來生成新的位置點資訊,從而獲取新的注意力,使用新注意力結合輸入獲取新的輸出資訊d。