簡介
注意力機制的一種非正式的說法是,神經注意力機制可以使得神經網路具備專注於其輸入(或特徵)子集的能力:選擇特定的輸入。注意力可以套用於任何類型的輸入而不管其形狀如何。在計算能力有限情況下,注意力機制(attention mechanism)是解決信息超載問題的主要手段的一種資源分配方案,將計算資源分配給更重要的任務。
注意力一般分為兩種:一種是自上而下的有意識的注意力,稱為聚焦式(focus)注意力。聚焦式注意力是指有預定目的、依賴任務的、主動有意識地聚焦於某一對象的注意力;另一種是自下而上的無意識的注意力,稱為基於顯著性(saliency-based)的注意力。基於顯著性的注意力是由外界刺激驅動的注意,不需要主動干預,也和任務無關。如果一個對象的刺激信息不同於其周圍信息,一種無意識的“贏者通吃”(winner-take-all)或者門控(gating)機制就可以把注意力轉向這個對象。不管這些注意力是有意還是無意,大部分的人腦活動都需要依賴注意力,比如記憶信息,閱讀或思考等。
在認知神經學中,注意力是一種人類不可或缺的複雜認知功能,指人可以在關注一些信息的同時忽略另一些信息的選擇能力。在日常生活中,我們通過視覺、聽覺、觸覺等方式接收大量的感覺輸入。但是我們的人腦可以在這些外界的信息轟炸中還能有條不紊地工作,是因為人腦可以有意或無意地從這些大量輸入信息中選擇小部分的有用信息來重點處理,並忽略其他信息。這種能力就叫做注意力。注意力可以體現為外部的刺激(聽覺、視覺、味覺等),也可以體現為內部的意識(思考、回憶等)。
注意力機制的變體
多頭注意力(multi-head attention)是利用多個查詢,來平行地計算從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分。 硬注意力,即基於注意力分布的所有輸入信息的期望。還有一種注意力是只關注到一個位置上,叫做硬性注意力(hardattention)。
硬性注意力有兩種實現方式,一種是選取最高機率的輸入信息。另一種硬性注意力可以通過在注意力分散式上隨機採樣的方式實現。硬性注意力的一個缺點是基於最大採樣或隨機採樣的方式來選擇信息。因此最終的損失函式與注意力分布之間的函式關係不可導,因此無法使用在
反向傳播算法進行訓練。為了使用反向傳播算法,一般使用軟性注意力來代替硬性注意力。
鍵值對注意力:更一般地,我們可以用
鍵值對(key-value pair)格式來表示輸入信息,其中“鍵”用來計算注意力分布,“值”用來生成選擇的信息。
結構化注意力:要從輸入信息中選取出和任務相關的信息,主動注意力是在所有輸入信息上的多項分布,是一種扁平(flat)結構。如果輸入信息本身具有層次(hierarchical)結構,比如文本可以分為詞、句子、段落、篇章等不同粒度的層次,我們可以使用層次化的注意力來進行更好的信息選擇[Yang et al., 2016]。此外,還可以假設注意力上下文相關的二項分布,用一種圖模型來構建更複雜的結構化注意力分布。
套用
神經機器翻譯
注意力機制最成功的套用是
機器翻譯。基於神經網路的機器翻譯模型也叫做神經機器翻譯(Neural Machine Translation,NMT)。一般的神經機器翻譯模型採用“編碼-解碼”的方式進行序列到序列的轉換。這種方式有兩個問題:一是編碼向量的容量瓶頸問題,即源語言所有的信息都需要保存在編碼向量中,才能進行有效地解碼;二是長距離依賴問題,即編碼和解碼過程中在長距離信息傳遞中的信息丟失問題。通過引入注意力機制,我們將源語言中每個位置的信息都保存下來。在解碼過程中生成每一個目標語言的單詞時,我們都通過注意力機制直接從源語言的信息中選擇相關的信息作為輔助。這樣的方式就可以有效地解決上面的兩個問題。一是無需讓所有的源語言信息都通過編碼向量進行傳遞,在解碼的每一步都可以直接訪問源語言的所有位置上的信息;二是源語言的信息可以直接傳遞到解碼過程中的每一步,縮短了信息傳遞的距離。
圖像描述生成
圖像描述生成是輸入一幅圖像,輸出這幅圖像對應的描述。圖像描述生成也是採用“編碼-解碼”的方式進行。編碼器為一個卷積網路,提取圖像的高層特徵,表示為一個編碼向量;解碼器為一個循環神經網路語言模型,初始輸入為編碼向量,生成圖像的描述文本。在圖像描述生成的任務中,同樣存在編碼容量瓶頸以及長距離依賴這兩個問題,因此也可以利用注意力機制來有效地選擇信息。在生成描述的每一個單詞時,循環神經網路的輸入除了前一個詞的信息,還有利用注意力機制來選擇一些來自於圖像的相關信息。