當前位置:首頁 » 表格製作 » 怎樣在gru模型添加註意力機制
擴展閱讀
有那個游戲可以賺錢 2025-05-18 01:45:30
文件管理欄可以不用嗎 2025-05-18 01:04:04

怎樣在gru模型添加註意力機制

發布時間: 2023-04-22 03:08:08

⑴ 注意力機制詳解

Attention機制在近幾年來在圖像,自然語言處理等領域中都取得了重要的突破,被證明有益於提高模型的性能。Attention機制本身也是符合人腦和人眼的感知機制,激渣這里我們主要以計算機視覺領域為例,講述Attention機制的原理,應用以及模型的發展。

所謂Attention機制,便是聚焦於局部信息的機制,比如圖像中的某一個圖像區域。隨著任務的變化,注意力區域往往會發生變化。

面對上面這樣的一張圖,如果你只是從整體來看,只看到了很多人頭,但是你拉近一個一個仔細看就了不得了,都是天才科學家。

圖中除了人臉之外的信息其實都是無用的,也做不了什麼任務, Attention機制便是要找到這些最有用的信息 ,可以想見最簡單的場景就是從照片中檢測人臉了。

和注意力機制相伴而生的一個任務便是顯著目標檢測,即salient object detection。它的輸入是一張圖,輸出是一張概率圖,概率越大的地方,代表是圖像中重要目標的概率越大,即人眼關注的重點,一個典型的顯著圖如下:

右圖就是左圖的顯著圖,在頭部位置概率最大,另外腿部,尾巴也有較大概率,這就是圖中真正有用的信息。

顯著目標檢測需要一個數據集,而這樣的數據集的收集便是通過追蹤多個實驗者的眼球在一定時間內的注意力方向進行平均得到,典型的步驟如下:

於是就能得到下面這樣的圖,第二行是眼球追蹤結果,第三行就是顯著目標概率圖。

上面講述的都是空間上的注意力機制,即關注的是不同空間位置,而在CNN結構中,還有不同的特徵通道,因此不同特徵通道也有類似的原理,下面一起講述。

注意力機制的本質就是定位到感興趣的信息,抑制無用信息,結果通常都是以概率圖或者概率特徵向量的形式展示,從原理上來說,主要分為 空間注意力模型,通道注意力模型,空間和通道混合注意力模型 三種, 這里不區分soft和hard attention

不是圖像中所有的區域對任務的貢獻都是同樣重要的,只有任務相關的區域才是需要關心的,比如分類任務的主體,空間注意力模型就是尋找網路中最重要的部位進行處理。

我們在這里給大家介紹兩個具有代表性的模型,第一個就是Google DeepMind提出的STN網路(Spatial Transformer Network[1])。它通過學習輸入的明鬧悄形變,從而完成適合任務的預處理操作,是一種基於空間的Attention模型,網路結構如下:

這里的Localization Net用於生成仿射變換系數,輸入是C×H×W維的圖像,輸出是一個空間變換系數,它的大小根據要學習的變換類型而定,如果是仿射變換,則是一個6維向量。

這樣的一個網彎鏈絡要完成的效果如下圖:

即定位到目標的位置,然後進行旋轉等操作,使得輸入樣本更加容易學習。這是一種一步調整的解決方案,當然還有很多迭代調整的方案,感興趣可以去有三知識星球星球中閱讀。

相比於Spatial Transformer Networks 一步完成目標的定位和仿射變換調整,Dynamic Capacity Networks[2]則採用了兩個子網路,分別是低性能的子網路(coarse model)和高性能的子網路(fine model)。低性能的子網路(coarse model)用於對全圖進行處理,定位感興趣區域,如下圖中的操作fc。高性能的子網路(fine model)則對感興趣區域進行精細化處理,如下圖的操作ff。兩者共同使用,可以獲得更低的計算代價和更高的精度。

由於在大部分情況下我們感興趣的區域只是圖像中的一小部分,因此空間注意力的本質就是定位目標並進行一些變換或者獲取權重。

對於輸入2維圖像的CNN來說,一個維度是圖像的尺度空間,即長寬,另一個維度就是通道,因此基於通道的Attention也是很常用的機制。

SENet(Sequeeze and Excitation Net)是2017屆ImageNet分類比賽的冠軍網路,本質上是一個基於通道的Attention模型,它通過建模各個特徵通道的重要程度,然後針對不同的任務增強或者抑制不同的通道,原理圖如下。

在正常的卷積操作後分出了一個旁路分支,首先進行Squeeze操作(即圖中Fsq(·)),它將空間維度進行特徵壓縮,即每個二維的特徵圖變成一個實數,相當於具有全局感受野的池化操作,特徵通道數不變。

然後是Excitation操作(即圖中的Fex(·)),它通過參數w為每個特徵通道生成權重,w被學慣用來顯式地建模特徵通道間的相關性。在文章中,使用了一個2層bottleneck結構(先降維再升維)的全連接層+Sigmoid函數來實現。

得到了每一個特徵通道的權重之後,就將該權重應用於原來的每個特徵通道,基於特定的任務,就可以學習到不同通道的重要性。

將其機制應用於若干基準模型,在增加少量計算量的情況下,獲得了更明顯的性能提升。作為一種通用的設計思想,它可以被用於任何現有網路,具有較強的實踐意義。而後SKNet等方法將這樣的通道加權的思想和Inception中的多分支網路結構進行結合,也實現了性能的提升。

通道注意力機制的本質,在於建模了各個特徵之間的重要性,對於不同的任務可以根據輸入進行特徵分配,簡單而有效。

前述的Dynamic Capacity Network是從空間維度進行Attention,SENet是從通道維度進行Attention,自然也可以同時使用空間Attention和通道Attention機制。

CBAM(Convolutional Block Attention Mole)是其中的代表性網路,結構如下:

通道方向的Attention建模的是特徵的重要性,結構如下:

空間方向的Attention建模的是空間位置的重要性,結構如下:

首先將通道本身進行降維,分別獲取最大池化和均值池化結果,然後拼接成一個特徵圖,再使用一個卷積層進行學習。

這兩種機制,分別學習了通道的重要性和空間的重要性,還可以很容易地嵌入到任何已知的框架中。

除此之外,還有很多的注意力機制相關的研究,比如 殘差注意力機制,多尺度注意力機制,遞歸注意力機制 等。

從原理上來說,注意力機制在所有的計算機視覺任務中都能提升模型性能,但是有兩類場景尤其受益。

我們知道細粒度分類任務中真正的難題在於如何定位到真正對任務有用的局部區域,如上示意圖中的鳥的頭部。Attention機制恰巧原理上非常合適,使用了注意力機制,對模型的提升效果很明顯。

我們又回到了開頭,沒錯,Attention的本質就是重要/顯著區域定位,所以在目標檢測領域是非常有用的。

上圖展示了幾個顯著目標檢測的結果,可以看出對於有顯著目標的圖,概率圖非常聚焦於目標主體,在網路中添加註意力機制模塊,可以進一步提升這一類任務的模型。

⑵ 推薦系統論文閱讀(二十六)-基於上下文時序注意力機制的序列推薦模型

論文:

題目:《A Contextualized Temporal Attention Mechanism for Sequential Recommendation》

地址:https://dl.acm.org/doi/pdf/10.1145/3366423.3380285

序列推薦任務很少使用時間和上下文信息對h(h就是rnn,gru等序列建模網路輸出的狀態)進行加權,www這篇論文融合了上下文和時間信息的加權信號,一起看看吧,雖然筆者覺得這篇論文非常笨重。。

這篇論文的背景其實可以放在sequence recommendation任務中去看待,根據歷史記錄中用戶的先後行為來預測用戶的偏好對於現代推薦系統而言具有挑戰性且至關重要。現有的大多數序列推薦演算法都將重點放在順序動作之間的傳遞結構上,但是在對歷史事件對當前預測的影響進行建模時,很大程度上會忽略時間和上下文信息。

論文認為,過去事件對用戶當前動作的影響應隨時間推移以及在不同背景下發生變化。因此,我們提出了一個基於上下文和時間的注意機制,該機制可以學會權衡歷史行為對行為的影響,不僅影響行為是什麼,而且還影響行為發生的時間和方式。更具體地說,為了動態地校準自注意機制的相對輸入依存關系,我們設計了多個參數化的核函數來學習各種時間動態,然後使用上下文信息來確定對每個輸入遵循哪些weight kernel函數。

上面的說法可能有點晦澀難懂,下面結合一張圖來描述一下

以上圖中所示的在線購物場景為例:系統獲得了一系列用戶行為記錄,並且需要推薦下一組商品。 我們應該注意,在此場景中,我們假設這些交互行為不是彼此獨立的, 這更好地反映了推薦系統只能訪問離線數據和部分用戶行為記錄的情況。好了,接著看上圖中的場景頃散啟,用戶在過去的一段時間內點擊來網球拍,手機,運動鞋,智能手環,然後在昨天一直在瀏覽手機,那麼這個時候我們需要預估用戶的下一次點擊,這個時候的用戶正想買一個手錶,那麼這個時候系統是給用戶推薦運動手錶呢,還是推薦電子手錶呢,因為用戶過去的瀏覽有運動類的物品和智能設備的物品。

按照時間的分段性來看:長期的歷史記錄表明用戶對購物體育相關產品感興趣。 現在,用戶正在尋找手錶,該系統可以推薦一些運動手錶。 從本質上講,長期的用戶歷史記錄通常可能會攜帶稀少但至關重要的用戶偏好信息,影響著現在的意圖,而最近的交互操作應該會更能代表用戶在將來的意圖。

按上下文細分:由於用戶仔細瀏覽幾個智能手機(比平均時間間隔短得多的時間間隔),因此可以認為這些物品跟當前用戶的偏愛非常相關,因此智能手錶可能比傳統手錶更受青睞。 通常,用戶瀏覽日誌的某些時間段可能看起來是異構的,這個時間段裡面充滿了用戶的短期興趣偏好,用戶在這個時間點上會以重復的方式專注於一小部分同類物品。

很容易理解,時間因素可以理解為用戶的長期興趣偏好,即使在很遙遠的歷史,也會對現在的興趣產生影響,上下文偏好可以理解為用戶的短期興趣偏好,雀如也就是用戶在近期瀏覽的物品表徵了用戶現在的短期意圖。說白了就是對用戶進行長短期興趣建模。

本來不想說這三個問題的,無奈部分論文說的太抽象了,或許是越抽象越容易中稿?

說實話這篇論文在解釋時間跟上下文關系的時候說的太晦澀難懂了,筆者看的也是很頭疼,比如下面這段話:

首先,我們看第一個問題,我的理解就是用self-attention進行序列掘唯建模,第二個就是確定時間因素和上下文因素的影響,第三個就是綜合考慮時間和上下文的影響。

還是直接看模型吧,扯一堆什麼因果關系看得頭大:

用戶空間 U ,大小為U;物品空間 V ,大小為V。

用戶的歷史行為序列為{ },其中 ={( , ), ( , ) , ... },其中 用戶u的交互時間, 代表交互的物品。

模型的輸入為包括窗口大小為L的用戶歷史記錄:{ ( ) i: 0 -> L},當前需要推薦的時間戳 ,輸入序列的embedding X表示:

同時將輸入序列的時間信息使用時間戳差來表示:

模型整體上分為三個部分:content-based attention,temporal kernels和contextualized mixture

三層模型可以表示為:

其中, 根據content X來計算每個輸入的權重,輸出權重序列α ∈ ; 將時間信息 T 通過K temporal kernels計算每個輸入的temporal權重β ∈ ; 從 X 中提取context信息,並結合前兩個階段獲得的α 和β 來計算得到最終的contextualized temporal權重γ ∈ 。

最終被推薦的物品的表示為:

其中,F-out是一個feed-forward層。

這里用到的是self-attention機制,具體的細節不在贅述,只需要知道結果輸出就行:

其中  表示最後一個物品的輸入embedding,其實就是用最後一個物品的embedding作為key,self-attention最後一層的狀態 作為query來計算 的。

基於觀察:用戶隨意瀏覽的物品對短期的影響會急劇下降,但是在長期來說仍有著重要的作用。用戶仔細瀏覽過的物品對用戶短期的興趣有著重要的作用。

所以,文章提出了很多temporal kernels來建模這種時間變化,不同的kernel函數 : → 如下所示:

(1)   =  ,假設一個用戶操作的影響會隨著時間指數下降,但是永遠不會消失。

(2)  ,假設一個用戶操作的影響會隨著時間而減弱,最終可以忽略不計。
(3)  -alT + b,假設一個用戶操作的影響會隨著時間線性下降,之後的softmax操作會將某個時間段內的影響置為0。

(4)  假設一個用戶操作的影響不受時間影響。

根據K個kernal函數{ },我們可以將 T 轉為K個temporal權重集合:

作為下一階段的輸入。

這一階段的目標是基於提取到的context信息融合前兩個階段獲得的content和temporal信息。

使用Bidirectional RNN結構來獲得context信息。從輸入序列embedding表示X中,我們可以計算得到循環隱藏層的狀態:

其中,⊕是拼接操作,C_a​ttr是可選擇的context特徵(可以是特定推薦系統中每個行為的屬性,表示行為發生時的上下文),本文中只使用了Bi-RNN的輸出作為context特徵。

行為i的context特徵需要映射為一個長度為K的權重向量,每一個元素 都是這個行為經過 後的結果,使用feed forwaed層Fγ將它們映射到概率空間 ,然後經過softmax操作得到概率分布:

最後將context和temporal信息進行融合:

其中, ,

其中,r是每一個item的分數,對於給定的用戶,通過softmax層對item分數進行歸一化,該層會在item表上產生概率分布,也就是進行多分類的意思。

其中Ns是根據頻率進行負采樣的負樣本。

⑶ 注意力機制加在什麼位置

注意力機制可以加在編碼層和解碼層之間,甚至可以加在Auto-Encoder裡面。

此外,深度殘差收縮網路是一種特殊的注意力機制演算法,實現了注意力機制下的軟閾值化;把注意力肆純機制嵌入並中到了殘差模塊裡面。

視覺注意力機制:

視覺注意力機制是人類視覺所特有的大腦信號處理機制。人類視覺通過快速掃描全局圖像,獲得需要重點關注的目標區域,也就是一般所說的注意裂蔽咐力焦點,而後對這一區域投入更多注意力資源,以獲取更多所需要關注目標的細節信息,而抑制其他無用信息。

這是人類利用有限的注意力資源從大量信息中快速篩選出高價值信息的手段,是人類在長期進化中形成的一種生存機制,人類視覺注意力機制極大地提高了視覺信息處理的效率與准確性。

⑷ 深度學習人臉表情識別不靈敏

您好,深度學習人臉表情識別不靈敏的問題,可能是由於以下原因造成的:

1. 數據集不夠全面:深度學習模型需要在大量、多樣化的數據集上進行訓練,如果數據集不包含足夠多種類的表情,識別准確率就會下降。

2. 參數調整不當:深度學習模型中有很多的參數需要調整,比如卷積核大小、stride等等。如果這些參數的值設置不當,可能導致模型性能下降。

3. 模型過於簡單:深度學習模型的復雜程度也會影響其准確率。如消枝果模型過於簡單,可能無法捕捉到人臉表情的微妙變化。

解決這個問題的方法可以從以下幾個方面入手:

1. 擴充數據集:獲取更豐富的戚橋灶人臉表情數據集,提高模型的泛化能力。

2. 更改網路架構:選擇合適的神經網路結構,對其中的參數進行調整,提高識別效果。

3. 引入注意力機制:通過引入注意力機制,引導模型把注意力集中在關鍵區域,提高識別的准確率。

希望以上內容對您高扮有所幫助。

⑸ 注意力機制

本文大部分的內容來自於 深度學習中的注意力機制

意力機制借鑒了人類注意力的說法,比如我們在閱讀過程中,會把注意集中在重要的信息上。在訓練過程中,輸入的權重也都是不同的,注意力機制就是學習到這些權重。最開始attention機制在CV領域被提出來,但後面廣泛應用在NLP領域。

需要注意的是,注意力機制是一種通用的思想和技術,不依賴於任何模型,換句話說,注意力機制可以用於任何模型。只是我們介紹注意力機制的時候更多會用encoder-decoder框架做介紹。

Encoder-Decoder 框架可以看作是一種深度學習領域的研究模式,應用場景異常廣泛。下圖是文本處理領域里Encoder-Decoder 框架最抽象的一種表示。

在NLP領域,可以把Encoder-Decoder框架看作是:將一個句子(篇章)轉換成另一個句子(篇章)。最直觀的例子就是機器翻譯,將一種語言的表達翻譯成另一種語言。對孫磨孫於句子對<source,target>,將給定輸入句子
source,通過Encoder-Decoder框架生成目標句子target。其中,source和target都是一組單詞序列:

Encoder是對source進行編碼,轉換成中間語義 :

對於解碼器Decoder,其任務是根據中間語義C和當前已經生成的歷史信息來生成下一時刻要生成的單詞:

我們從最常見的Soft Attention模型開始介紹attention的基本思路。

在上一節介紹的Encoder-Decoder框架是沒有體現出「注意力模型」的,為什麼這么說呢?我們可以看下target的生成過程:

其中, 是Decoder的非線性變換函數。從上面式子中可以看出,在生成目標句子的單詞時,不論生成哪個單詞,它們使用的輸入句子source的語義編碼 都是一樣的,沒有任何區別。而語義編碼 又是通過對source經過Encoder編碼產生的,因此對於target中的任何一個單詞,source中任意單詞對某個目標單詞 來說影響力都是相同的,這就是為什麼說圖1中的模型沒有體現注意力的原因。

下面從一個例子入手,具體說明下注意力機制是怎麼做的。

比游慶如機器翻譯任務,輸入source是英文句子:Tom chase Jerry;輸出target想得到中文:湯姆 追逐 傑瑞。在翻譯「Jerry」這個單詞的時候,在普通Encoder-Decoder模型中,source里的每個單詞對「傑瑞」的貢獻是相同的,很明顯這樣不太合理,因為「Jerry」對於翻譯成「傑瑞」更重要。如果引入Attention模型,在生成「傑瑞」的時候,應該體現出英文單詞對於翻譯當前中文單詞不同的影響程度,比如給出類似下面一個概率分布值:

每個英文單詞的概率代表了翻譯當前單詞「傑瑞」時注意力分配模型分配給不同英文單詞的注意力大小。同理,對於target中任意一個單詞都應該有對應的source中的單詞的注意力分配概率,可以把所有的注意力概率看作 ,其中 表示source長度, 表示target長度。而且,由於注意力模型的加入,原來在生成target單詞時候的中間語義 就不再是固定的,而是會根據注意力概率變化的 ,加入了注意力模型的Encoder-Decoder框架就變成了如圖2所示。

根據圖則鏈2,生成target的過程就變成了下面形式:

因為每個 可能對應著不同的注意力分配概率分布,比如對於上面的英漢翻譯來說,其對應的信息可能如下:

其中, 表示Encoder對輸入英文單詞的某種變換函數,比如如果Encoder是用RNN模型的話,這個 函數的結果往往是某個時刻輸入 後隱層節點的狀態值;g代表Encoder根據單詞的中間表示合成整個句子中間語義表示的變換函數,一般的做法中,g函數就是對構成元素加權求和,即:

其中, 代表輸入句子Source的長度, 代表在Target輸出第 個單詞時Source輸入句子第 個單詞的注意力分配系數,而 則是Source輸入句子中第 個單詞的語義編碼。假設下標 就是上面例子所說的「湯姆」生成如下圖:

那另一個問題來了:注意力概率分布是怎麼得到的呢?為了便於說明,我們假設圖1的Encoder-Decoder框架中,Encoder和Decoder都採用RNN模型,那麼圖1變成下圖4:

那麼注意力分配概率分布值的通用計算過程如圖5:

上面就是經典的soft Attention模型的基本思想,區別只是函數 會有所不同。

從我的角度看,其實Attention機制可以看作,Target中每個單詞是對Source每個單詞的加權求和,而權重是Source中每個單詞對Target中每個單詞的重要程度。因此,Attention的本質思想會表示成下圖6:

將Source中的構成元素看作是一系列的<Key, Value>數據對,給定Target中的某個元素Query,通過計算Query和各個Key的相似性或者相關性,即權重系數;然後對Value進行加權求和,並得到最終的Attention數值。將本質思想表示成公式如下:

其中, 表示Source的長度。

深度學習中的注意力機制 中提到:

因此,Attention機制的具體計算過程實際上分成了3個階段,如圖7:

第一階段可以引入不同的函數和計算機制,根據Query和某個 ,計算兩者的相似性或者相關性,最常見的方法包括:求兩者的向量點積、求兩者的向量cosine相似性或者引入額外的神經網路來求值,如下:

第二階段引入類似SoftMax的計算方式,對第一階段的得分進行數值轉換,一方面可以進行歸一化,將原始計算分值整理成所有元素權重之和為1的概率分布;另一方面也可以通過SoftMax的內在機制更加突出重要元素的權重。即一般採用的公式如下:

第三階段的計算結果 即為 對應的權重系數,然後進行加權求和即可得到Attention數值:

通過如上三個階段的計算,就可以求出針對Query的Attention數值。

上面介紹的是soft Attention,hard Attention的區別在於soft Attention中 是概率分布,而hard Attention取值為0/1。Hard Attention在圖像上有使用,具體可見 引入attention機制 。

這里的global attention其實就是soft Attention,global attention需要考慮encoder中所有的 ;而local Attention直觀上理解是只考慮局部的 。

Self-attention是Google在transformer模型中提出的,上面介紹的都是一般情況下Attention發生在Target元素Query和Source中所有元素之間。而Self Attention,指的是Source內部元素之間或者Target內部元素之間發生的Attention機制,也可以理解為Target=Source這種特殊情況下的注意力機制。當然,具體的計算過程仍然是一樣的,只是計算對象發生了變化而已。

上面內容也有說到,一般情況下Attention本質上是Target和Source之間的一種單詞對齊機制。那麼如果是Self Attention機制,到底學的是哪些規律或者抽取了哪些特徵呢?或者說引入Self Attention有什麼增益或者好處呢?仍然以機器翻譯為例來說明,如圖8和圖9:

具體做法是點乘 和 ,然後除以 ,並經過Softmax,以此得到 的權重。也就是說Attention計算過程如下式,其中 是scaled factor:

注意力的計算一般有兩種:加性注意力(additive attention)、乘法(點積)注意力(multiplicative attention)。(這里可以和第3部分計算相似度對應)

加性注意力是最經典的注意力機制,它使用了有一個隱藏層的前饋網路(全連接)來計算注意力; 乘法注意力就是Transformer用的方式。這兩種注意力在復雜度上是相似的,但是乘法注意力在實踐中要更快速、具有高效的存儲,因為它可以使用矩陣操作更高效地實現。

Transformer原文:

Multi-Head Attention是用不同的 得到不同的Attention,最後將這些Attention拼接起來作為輸出。公式如下:

其中, ;在Transformer模型中, 。

Scaled Dot-Proct Attention和Multi-Attention如下圖所示: