iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
AI/ ML & Data

深度學習的學習之旅:從理論到實作系列 第 27

[Day 27] Attention 機制與 Self-Attention 機制的比較與應用

  • 分享至 

  • xImage
  •  

前言

昨天提到了Transformer,也說了他是基於Self-Attention 機制,今天就來談談這個技術又是什麼。
在自然語言處理(NLP)及其他序列資料處理領域中,Attention 機制 和 Self-Attention 機制 是兩個重要的概念,為神經網路架構帶來了顯著的性能提升。特別是隨著 Transformer 的興起,Self-Attention 更是成為處理長距離依賴性問題的核心技術。今天就來看看這兩種機制的原理,並比較它們在應用上的差異。

Attention 機制

Attention 機制 最早被提出來解決機器翻譯中的編碼器-解碼器架構的瓶頸問題。在傳統的遞迴神經網路(RNN)中,編碼器需要將整個輸入序列壓縮為一個固定維度的上下文向量(Context Vector),解碼器在生成輸出時依賴於這個向量。然而,當輸入序列過長時,這種做法會導致關鍵訊息丟失,尤其是長距離依賴的部分無法被有效捕捉。

  • Attention 機制提供了解決方案:

    • 在解碼每個輸出時,模型不再只依賴單一的上下文向量,而是根據當前的解碼狀態,對輸入序列中所有位置進行加權計算。具體來說,Attention 機制會計算當前輸出步驟的**查詢(Query)與輸入序列中每個位置的鍵(Key)之間的相似度,然後根據相似度來對每個位置的值(Value)**進行加權,最終生成當前步驟的輸出。
  • Attention 機制的關鍵步驟:

    1. 計算查詢(Query)與所有鍵(Key)之間的相似度。
    2. 根據相似度加權輸入序列的值(Value)。
    3. 使用加權總和來生成輸出。

這個過程能夠根據需要在輸入序列的不同部分之間動態分配「注意力」,因此它被稱為 Attention。在機器翻譯等任務中,這讓解碼器能夠有效關注到輸入序列中與當前生成的詞最相關的部分。

Self-Attention 機制

Self-Attention 機制(自注意力機制)是 Attention 機制的一個特殊變形,廣泛應用於 Transformer 模型中。與 Attention 機制不同,Self-Attention 的作用對象是同一個序列中的不同位置,而不是處理兩個不同序列之間的關係。它的目的是讓序列中的每個位置能夠「關注」到序列中的其他位置,進而捕捉序列內部的長距離依賴性。

在 Self-Attention 機制中,序列中的每個元素同樣被轉換為查詢(Query)、鍵(Key)和值(Value),但這次它們全部來自同一個序列。通過計算每個元素與序列中所有其他元素的相似度,模型可以對整個序列進行加權和總結,從而生成每個位置的最終表示。

  • Self-Attention 機制的計算步驟:
    1. 為序列中的每個元素生成查詢(Query)、鍵(Key)和值(Value)。
    2. 計算每個元素的查詢與序列中其他元素的鍵之間的相似度。
    3. 根據相似度加權每個元素的值。
    4. 將加權總和作為當前元素的最終表示。

這種機制特別適合捕捉序列中元素之間的關聯性,無論這些元素之間的距離多遠。這使得 Self-Attention 成為處理長距離依賴性問題的有效工具。

Attention 機制與 Self-Attention 機制的比較

比較項目 Attention 機制 Self-Attention 機制
處理對象 兩個不同的序列(如輸入序列與輸出序列) 同一個序列中的不同位置
應用場景 編碼器-解碼器結構,如機器翻譯和對話生成 單一序列的內部關聯,如語言模型、文本分類等
關注範圍 根據查詢,動態調整對輸入序列不同位置的關注 每個位置對整個序列進行自我關注,捕捉序列內部的長距依賴性
平行計算 取決於使用的模型架構(如 RNN 無法平行,但可結合 Attention) 可完全平行計算,特別適合於 Transformer 這類架構
長距離依賴性 依賴 Attention 機制的設計來解決長距離依賴問題 自然處理長距依賴,因為每個位置都可以關注到其他所有位置
使用的模型 常見於有編碼器和解碼器的模型,如 Seq2Seq 廣泛應用於 Transformer 等模型

LSTM vs Transformer 的比較

比較項目 LSTM Transformer
核心技術 門控機制(遺忘門、輸入門、輸出門) 自注意力機制(Self-Attention)
長距依賴性 可以通過記憶單元保留長期依賴訊息,但隨著序列加長,效果仍會衰減 自注意力機制能自然捕捉長距離依賴,不受序列長度的影響
計算效率 由於遞迴結構,無法進行平行運算,效率相對較低 平行處理,適合大規模長序列數據的處理
模型結構 基於 RNN 的遞迴結構 基於注意力的非遞迴結構
訓練難度 更容易面臨梯度消失或梯度爆炸問題 訓練速度更快,無序列順序依賴,適合大規模數據集

實際應用中的差異

  • Attention 機制:

    • 主要應用於編碼器-解碼器結構中,如機器翻譯、摘要生成等任務。在這些任務中,Attention 使解碼器能夠動態關注輸入序列的不同部分,有效解決了傳統 RNN 在處理長序列時的困難。
  • Self-Attention 機制:

    • 廣泛應用於 Transformer 模型中,用於捕捉單一序列中的長距離依賴性。Self-Attention 的平行計算能力使得 Transformer 在處理大型數據集和長序列時比傳統模型更高效,這也是為什麼 Transformer 逐漸取代 RNN 成為 NLP 領域的主流架構。

結論

今天介紹了兩個類似的機制,Attention 機制 和 Self-Attention 機制在解決序列資料處理中的依賴性問題上都發揮了至關重要的作用。明天會進行最後一個實作,希望大家可以繼續收看~


上一篇
[Day 26] Transformer:自然語言處理的關鍵技術
下一篇
[Day 28] 利用機器學習打造 SMS 垃圾郵件分類器
系列文
深度學習的學習之旅:從理論到實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言