注意力的概念在神經機器翻譯的seq2seq模型中廣為人知。編碼器傳遞到解碼器的資訊量有限,限制了模型的效能。然而,注意力的引入可以克服這個瓶頸,使模型能夠更好地處理長句子和複雜語義。
簡單來說,模型在解碼階段會利用編碼器的所有隱藏狀態,並將最終隱藏狀態作為初始隱藏狀態饋送到解碼器。這樣做的好處是,模型能夠在解碼過程中利用更多的信息,並且能夠「注意」輸入序列中最相關的部分,從而在生成輸出序列的不同部分時做出更準確的預測。
雖然注意力機制在不同的體系結構和實作細節上有所不同,但它們也有一些共同點。例如,考慮一個場景,我們想要使用具有某種體系結構的神經網路進行預測。在這種情況下,我們會得到一個包含一些編碼資訊的向量。我們可以利用這個向量來預測,例如將其輸入到全連接層,然後再經過softmax層等處理。雖然具體的處理步驟可能會有所不同,但這個基本的思路在不同的體系結構中是相似的。
然而,事實證明它的預測結果並不令人滿意。原因可能有很多,以下是一個可能的想法:
1.使用的這個向量不包含對實現良好預測有用的所有資訊。
通常,做出良好預測所需的資訊會分佈在許多向量中,例如在NLP任務的情況下,有一個被標記編碼的向量序列。儘管已經考慮了所有分佈式信息,但隨著它在神經網路中更深入地流動,一些信息將不可避免地丟失。
2.有用的不僅是這些向量中包含的各個資訊片段,還有它們與目前向量之間的關係。
目前向量可能需要與其他向量互動和通信,並幫助確定要傳遞哪些訊息。因此,需要一種更聰明的方法來組合所有擁有的潛在有用的向量,並讓模型學習要注意什麼,以便做出更好的預測。
考慮到這兩點後,假設現在有這麼一個向量以及其他符合條件的向量,這些向量對於做出預測很重要,而處理這些資訊的方法,即是注意力的一般框架。
在這個框架中接受查詢並讓它與鍵一一互動:
1、查詢和每個鍵之間的特定交互,它可以是內積或加法或連接的組合以及饋送到小型神經網路等。使用從反向傳播訓練的具有相同參數的相同操作來處理查詢每個不同的鍵。此外,要求這些操作後的最終輸出是單一值。這些輸出值稱為能量。在查詢和所有關鍵向量上重複這個過程後,將得到一系列的能量。
2、使用softmax層對所有能量進行歸一化。
3、對值向量進行加權求和,權重為歸一化能量。這會產生一個上下文向量,其維度與一個值向量相同,其中包含以智慧方式組合的所有元素的資訊。
4、可以一起使用上下文向量和查詢向量來進行預測,例如,將它們連接起來,根據需要提供給神經網絡,然後是softmax層。
以上即為注意力的一般框架的流程,以下就來看看這個框架是如何應用在不同任務中的。
情緒分析類型的任務是一種分類任務,輸入是一段文本,輸出是對應於其中一種可能情感的標籤。在將文字輸入神經網路之前,需要對其進行清理、格式化、標記化並轉換為基於詞彙表的一系列索引。雖然這不是seq2seq而是seq2one,但注意機制仍然適用並有助於提高效能。
普通的單向或雙向基於LSTM的網路可用於執行此任務。在這種情況下,只有最後一層的最終隱藏狀態(單向)或兩個最終隱藏狀態(雙向,一個來自前向,一個來自後向)用於透過傳遞給分類頭進行預測,例如全連接層和softmax。僅由最終隱藏狀態攜帶的有限資訊為模型的性能設定了瓶頸。
日期翻譯是字元級seq2seq任務的一個例子。此任務的目標是將人類可讀的日期作為輸入,例如“2022年12月27日”,並輸出表示與輸入相同日期的機器可讀日期,例如“2022-12-27”。
#基於注意力的模型在解碼器中的LSTM單元之前有一個注意力塊。在每個循環步驟中,注意區塊的輸出上下文向量和最後一步的輸出被連接起來,然後饋送到LSTM單元。注意力的另一種實現是在LSTM單元和輸出上下文向量之後將注意力塊與當前步驟的輸出向量連接起來,然後再饋送到全連接層以預測下一個標記。這裡的注意力塊遵循通用框架,鍵和值向量是同一組向量,即編碼器最後一層的隱藏狀態,查詢和每個鍵之間的交互是一個小型神經網路。
在解碼階段,單向LSTM一次預測一個標記,因此每個步驟的輸入有兩種選擇:從上一步輸出的當前步驟預測的標記或基本事實。這裡可以定義一個超參數,以控制訓練期間使用的輸入標記中有多少百分比是基本事實,並且可以對其進行實驗以優化模型性能。
以上是NLP中的注意力機制在自然語言處理上的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!