深度學習:注意力機制(Attention Mechanism)

1 注意力機制概述

1.1 定義

注意力機制(Attention Mechanism)是深度學習領域中的一種重要技術,特別是在序列模型如自然語言處理(NLP)和計算機視覺中。它使模型能夠聚焦于輸入數據的重要部分,從而提高整體性能和效率。

1.2 基本原理

  • 聚焦關鍵信息: 注意力機制模仿人類的注意力過程,使模型能夠集中處理輸入數據中的關鍵信息,同時忽略不太相關的部分。

  • 權重分配: 通過為輸入數據的不同部分分配不同的權重(或注意力分數),模型能夠識別最重要的信息。

1.3 應用領域

  • 自然語言處理(NLP): 在機器翻譯、文本摘要、情感分析等任務中,注意力機制幫助模型關注文本的關鍵部分。

  • 計算機視覺: 在圖像分類、目標檢測和圖像字幕生成等任務中,注意力機制使模型能夠專注于圖像的關鍵區域。

  • 語音識別: 注意力機制幫助模型關注語音信號的重要部分,提高語音識別的準確性。

1.4 優勢

  • 提高性能: 通過集中處理重要信息,注意力機制可以提高模型的準確性和效率。

  • 提供可解釋性: 注意力權重可以用來解釋模型的決策過程,增加模型的透明度。

  • 靈活性強: 可以與多種模型結構結合,如循環神經網絡(RNN)、卷積神經網絡(CNN)和Transformer。

2 注意力機制分析

2.1 Encoder-Decoder框架

下面基于Encoder-Decoder框架對注意力機制深入分析,Encoder-Decoder框架的原理如下:

對于句子對<source,target>:

編碼器對輸入source進行編碼,轉換成中間語義向量C:

?

對于解碼器Decoder,根據中間語義向量C和當前已生成的歷史信息來生成下一時刻要生成的單詞:

?

基本的Encoder-Decoder框架沒有體現出注意力機制

把Decoder生成拆開來看:

f是非線性變換函數,在生成目標單詞時,使用的語義向量C都是一樣的,所以,source中任意單詞對某個單詞y_i來說,影響力都是相同的。

如果輸入句子比較短,對于輸出影響不是很大,但如果輸入句子很長,這時所有的語義都通過一個語義向量C來表示,單詞自身的信息會消失,很多細節信息會被丟失,最終的輸出也會受到影響,所以要引入注意力機制。

2.2 經典注意力機制

在機器翻譯中,比如輸入source為Tom chase Jerry。輸出想得到中文:湯姆 追逐 杰瑞。在翻譯Jerry這個單詞時,在普通Encoder-Decoder模型中,source里的每個單詞對“杰瑞”貢獻是相同的,但這樣明顯和實際不是很相符,在翻譯“杰瑞”的時候,我們更關注的應該是"Jerry",對于另外兩個單詞,關注的會少一些。

引入Attention模型后,在生成“杰瑞“的時候,會體現出輸入source的不同影響程度,比如:

每個概率代表了翻譯當前單詞“杰瑞”時注意力分配模型分配給不同英文單詞的注意力大小。

在注意力機制中,對于target中每個單詞都有一個對應source中單詞的注意力概率。

由于注意力模型的加入,原來在生成target單詞時候的中間語義C就不再是固定的,而是會根據注意力概率變化的C_{i},加入了注意力模型的Encoder-Decoder框架如下:

?生成target的過程就變成了如下形式:

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

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

?

?其中,L_x代表輸入句子Source的長度,a_i_j代表在Target輸出第i個單詞時,Source輸入第j個單詞的注意力分配系數;h_{ij}代表Source輸入句子中第j個單詞的語義編碼。舉例輸出湯姆如下:

2.3 注意力分布

注意力分布α就是判斷什么信息重要,什么信息不重要,分別賦予不同的權重。

如何計算α:

用X表示輸入當輸入 N 個向量 :[x1,...,xN],想要從中選出對于目標而言比較重要的信息,需要引入目標任務的表示,稱為 查詢向量(query vector),此時問題可以轉換為考察輸入的不同內容和查詢向量之間的相關度,也就是對不同內容進行打分,賦予 與當前任務比較相關的部分 更大的權重,再通過一個softmax層得到分布,也就是輸入信息的不同部分的權重。

注意力變量z∈[1, N]來表示被選擇信息的索引位置,即z=i來表示選擇了第i個輸入信息,然后計算在給定了q和X的情況下,選擇第i個輸入信息的概率αi:

其中αi構成的概率向量就稱為注意力分布(Attention Distribution)。s(xi , q)是注意力打分函數,有以下幾種形式:

其中W、U和v是可學習的網絡參數,d是輸入信息的維度

加性模型引入了可學習的參數,將查詢向量 q 和原始輸入向量 h 映射到不同的向量空間后進行計算打分,顯然相較于加性模型,點積模型具有更好的計算效率。

另外,當輸入向量的維度比較高的時候,點積模型通常有比較大的方差,從而導致Softmax函數的梯度會比較小。因此縮放點積模型通過除以一個平方根項來平滑分數數值,也相當于平滑最終的注意力分布,緩解這個問題。

最后,雙線性模型可以重塑為s(hi,q)=h^TWq=h^T(U^TV)q=(Uh)^T(Vq),即分別對查詢向量 q 和原始輸入向量 h 進行線性變換之后,再計算點積。相比點積模型,雙線性模型在計算相似度時引入了非對稱性。

形象表示打分函數:

如果Encoder-Decoder都采用RNN,框架如下:

那計算注意力分布概率值的過程如下:

h_i表示Source中單詞 j 對應的隱層節點狀態,H_i表示Target中單詞 i 的隱層節點狀態,注意力計算的是Target中單詞 i 對Source中每個單詞對齊可能性F(h_i,H_{i-1}),即打分函數。

?計算α,不只是編碼器的隱藏狀態作為輸入,解碼器的隱藏狀態也要作為輸入

可以結合下圖理解:

2.4 加權分布?

對于軟性注意力機制,就是每一個輸入按各自權重加權平均,即把每個編碼器隱狀態xi 和對應的注意力分布相乘求和

用圖像形象表示:

求和之和算出來的就是引入注意力機制的語義向量C_i,再將其輸入到解碼器中。

結合下圖理解:

?這樣Decoder的最終輸出就會有選擇性地關注應該關注的地方。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206733.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

孩子都能學會的FPGA:第二十五課——用FPGA實現頻率計

&#xff08;原創聲明&#xff1a;該文是作者的原創&#xff0c;面向對象是FPGA入門者&#xff0c;后續會有進階的高級教程。宗旨是讓每個想做FPGA的人輕松入門&#xff0c;作者不光讓大家知其然&#xff0c;還要讓大家知其所以然&#xff01;每個工程作者都搭建了全自動化的仿…

基于SpringBoot+maven+Mybatis+html慢性病報銷系統(源碼+數據庫)

一、項目簡介 本項目是一套基于SpringBootmavenMybatishtml慢性病報銷系統&#xff0c;主要針對計算機相關專業的正在做bishe的學生和需要項目實戰練習的Java學習者。 包含&#xff1a;項目源碼、數據庫腳本等&#xff0c;該項目可以直接作為bishe使用。 項目都經過嚴格調試&a…

二十一章(網絡通信)

計算機網絡實現了多臺計算機間的互聯&#xff0c;使得它們彼此之間能夠進行數據交流。網絡應用程序就是在已連接的不同計算機上運行的程序&#xff0c;這些程序借助于網絡協議&#xff0c;相互之間可以交換數據。編寫網絡應用程序前&#xff0c;首先必須明確所要使用的網絡協議…

C++_命名空間(namespace)

目錄 1、namespace的重要性 2、 namespace的定義及作用 2.1 作用域限定符 3、命名空間域與全局域的關系 4、命名空間的嵌套 5、展開命名空間的方法 5.1 特定展開 5.1 部分展開 5.2 全部展開 結語&#xff1a; 前言&#xff1a; C作為c語言的“升級版”&#xff0c;其在…

快速排序的新用法

普通快排 簡介 快速排序是一種高效的排序算法&#xff0c;利用分治的思想進行排序。它的基本原理是在待排序的n個數據中任取一個數據為分區標準&#xff0c;把所有小于該排序碼的數據移到左邊&#xff0c;把所有大于該排序碼的數據移到右邊&#xff0c;中間放所選記錄&#x…

Spring 之 @Cacheable 緩存使用教程

1、Cacheable 指定使用緩存 定義個 Controller &#xff0c;在方法上加上注解 Cacheable&#xff0c;配置要使用哪些緩存&#xff0c;比如 myMapCache 表示一級緩存是 Map&#xff0c;myRedisCache 表示二級緩存是 Redis。并配置緩存 key。 key 由 SPEL 表達式組成&#xff0c…

異常檢測 | MATLAB實現BiLSTM(雙向長短期記憶神經網絡)數據異常檢測

異常檢測 | MATLAB實現BiLSTM(雙向長短期記憶神經網絡)數據異常檢測 目錄 異常檢測 | MATLAB實現BiLSTM(雙向長短期記憶神經網絡)數據異常檢測效果一覽基本介紹模型準備模型設計參考資料效果一覽 基本介紹 訓練一個雙向 LSTM 自動編碼器來檢測機器是否正常工作。 自動編碼器接受…

CleanMyMac X2024最新版本軟件實用性測評

信大多數MAC用戶都較為了解&#xff0c;Mac雖然有著許多亮點的性能&#xff0c;但是讓用戶叫苦不迭的還其硬盤空間小的特色&#xff0c;至于很多人因為文件堆積以及軟件緩存等&#xff0c;造成系統空間內存不夠使用的情況。于是清理工具就成為了大多數MAC用戶使用頻率較高的實用…

二十一章網絡通信

計算機網絡實現了多臺計算機間的互聯&#xff0c;使得它們彼此之間能夠進行數據交流。網絡應用程序就是在已連接的不同計算機上運行的程序&#xff0c;這些程序借助于網絡協議&#xff0c;相互之間可以交換數據。編寫網絡應用程序前&#xff0c;首先必須明確所要使用的網絡協議…

數據采集工具的大全【都是免費值得收藏】

數據是推動業務成功的關鍵之一。為了獲取準確、全面的信息&#xff0c;數據采集成為了許多企業和個人的必備工作。本文將專注于數據采集工具&#xff0c;探討其在全網和指定網站采集方面的優勢&#xff0c;為大家提供對比分析&#xff0c;以幫助大家找到最適合的數據采集利器。…

算法復習——6種排序方法的簡單回顧

算法復習——6種排序方法的簡單回顧 常見排序方法&#xff1a;冒泡排序、選擇排序、插入排序、堆排序、歸并排序、快速排序的簡單回顧 冒泡排序 重復“從序列右邊開始比較相鄰兩個數字的大小,再根據結果交換兩個數字的位置” 在冒泡排序中&#xff0c;第 1 輪需要比較 n - 1…

Tair(1):Tair介紹

1 介紹 ? 在Tair出現之前的很長一段時間里&#xff0c;像redis、memcache這些知名NoSql數據庫是不支持分布式的&#xff0c;在這樣的背景下&#xff0c;由淘寶網自主開發并在2010.6開源的一個高性能、高擴展、高可靠分布式緩存&#xff0c;類似map的key/value結構&#xff0c…

使用單例模式+觀察者模式實現參數配置實時更新

使用vector存儲觀察者列表 #include <iostream> #include <vector> #include <functional> #include <algorithm>// 配置參數結構體 struct MyConfigStruct {int parameter1;std::string parameter2; };class Config { public:using Observer std::f…

hive 命令行中使用 replace 和nvl2 函數報錯

1.有時候在命令行的情況下使用 replace 函數時會報錯 這個時候可以使用 translate 代替 2.有時候使用 nvl2() 函數的時候會報錯 這個時候可以用 case when 來代替

【Spring 源碼】 深入理解 Bean 定義之 BeanDefinition

&#x1f680; 作者主頁&#xff1a; 有來技術 &#x1f525; 開源項目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 倉庫主頁&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 歡迎點贊…

兩數之和問題

更好的閱讀體驗請點擊 兩數之和。 題目&#xff1a;兩數之和 ? 給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 ? 你可以假設每種輸入只會對應一個答案。但是&#xff…

MetricBeat監控Redis

目錄 一、安裝部署 二、開啟Redis監控模塊 三、編輯Redis配置文件 四、啟動Metricbeat 五、查看監控圖表 一、安裝部署 metriceat的安裝部署參考章節&#xff1a; 監控組件>Metricbeat安裝使用&#xff0c;這里不再贅述。 二、開啟Redis監控模塊 進入metricbeat安裝目錄…

【每日一題】出租車的最大盈利

文章目錄 Tag題目來源解題思路方法一&#xff1a;遞歸方法二&#xff1a;遞歸記錄數組記憶化搜索方法三&#xff1a;動態規劃&#xff08;遞推&#xff09; 寫在最后 Tag 【遞歸】【記憶化搜索】【動態規劃】【數組】【2023-12-08】 題目來源 2008. 出租車的最大盈利 解題思路…

【EI會議征稿中】2024年第四屆人工智能、自動化與高性能計算國際會議(AIAHPC 2024)

2024年第四屆人工智能、自動化與高性能計算國際會議&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四屆人工智能、自動化與高性能計算國際會議(AIAHPC 2024)將于20…

藍橋杯從零開始備戰(Python組)---基礎知識篇

第一次嘗試報名藍橋杯的Python組&#xff0c;好好備戰&#xff0c;希望省賽可以拿獎&#xff01;目前是整理了一些Python的常用函數和常用內置庫&#xff0c;后面可能會開始刷題&#xff0c;如果有比較需要記住的知識點&#xff0c;會再寫一篇刷題篇 一、輸入輸出 1.輸入字符…