注意力機制是如何實現的

注意力機制的實現可以分解為幾個核心步驟,其本質是通過動態計算權重,決定不同位置信息的重要性,再對信息進行加權融合。以下從數學原理、代碼實現到直觀解釋逐步展開:


一、核心實現步驟

以最常見的**點積注意力(Dot-Product Attention)**為例:

1. 輸入向量化
  • 假設輸入序列有 ( N ) 個詞,每個詞轉換為向量 ( \mathbf{x}i )(維度為 ( d{\text{model}} ))。
2. 生成Query、Key、Value
  • 對每個詞向量分別進行線性變換,生成三組向量:
    • Query(查詢向量)
      Q = X W Q \mathbf{Q} = \mathbf{X} \mathbf{W}^Q \ Q=XWQ?
    • Key(鍵向量)
      K = X W K \mathbf{K} = \mathbf{X} \mathbf{W}^K \ K=XWK?
    • Value(值向量)
      V = X W V \mathbf{V} = \mathbf{X} \mathbf{W}^V \ V=XWV?
    • 其中
      W Q , W K , W V \mathbf{W}^Q, \mathbf{W}^K, \mathbf{W}^V \ WQ,WK,WV?是可學習的權重矩陣。
3. 計算注意力分數
  • 通過 Query 和 Key 的點積 計算詞與詞之間的相關性分數:
    Scores = Q K T \text{Scores} = \mathbf{Q} \mathbf{K}^T Scores=QKT
    • 分數越高,表示兩個詞的相關性越強。
4. 縮放與歸一化
  • 縮放(Scale):為避免點積結果過大導致梯度消失,除以 ( \sqrt{d_k} )(( d_k ) 是 Key 的維度):
    Scaled?Scores = Q K T d k \text{Scaled Scores} = \frac{\mathbf{Q} \mathbf{K}^T}{\sqrt{d_k}} Scaled?Scores=dk? ?QKT?
  • Softmax 歸一化:將分數轉換為概率分布(和為1):
    Attention?Weights = softmax ( Scaled?Scores ) \text{Attention Weights} = \text{softmax}(\text{Scaled Scores}) Attention?Weights=softmax(Scaled?Scores)
5. 加權求和
  • 用注意力權重對 Value 加權求和,得到最終輸出:
    Output = Attention?Weights ? V \text{Output} = \text{Attention Weights} \cdot \mathbf{V} Output=Attention?Weights?V

二、數學公式整合

注意力機制的完整公式為:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{softmax}\left( \frac{\mathbf{Q} \mathbf{K}^T}{\sqrt{d_k}} \right) \mathbf{V} Attention(Q,K,V)=softmax(dk? ?QKT?)V


三、代碼實現(PyTorch示例)

import torch
import torch.nn as nn
import torch.nn.functional as Fclass DotProductAttention(nn.Module):def __init__(self, d_k):super().__init__()self.d_k = d_k  # Key的維度def forward(self, Q, K, V):# 計算點積注意力分數scores = torch.matmul(Q, K.transpose(-2, -1)) / torch.sqrt(torch.tensor(self.d_k))# Softmax歸一化attention_weights = F.softmax(scores, dim=-1)# 加權求和output = torch.matmul(attention_weights, V)return output# 示例輸入
batch_size = 2
seq_len = 5  # 序列長度
d_model = 64  # 輸入維度
d_k = d_v = 32  # Key和Value的維度# 隨機生成輸入向量
X = torch.randn(batch_size, seq_len, d_model)
# 定義權重矩陣(實際中應使用nn.Linear)
W_Q = nn.Linear(d_model, d_k)
W_K = nn.Linear(d_model, d_k)
W_V = nn.Linear(d_model, d_v)# 生成Q, K, V
Q = W_Q(X)  # shape: [batch_size, seq_len, d_k]
K = W_K(X)
V = W_V(X)# 計算注意力
attention = DotProductAttention(d_k)
output = attention(Q, K, V)  # shape: [batch_size, seq_len, d_v]

四、多頭注意力(Multi-Head Attention)

為了增強模型捕捉不同模式信息的能力,通常會將注意力機制擴展為多頭形式

1. 實現步驟
  1. 分割向量:將 ( \mathbf{Q}, \mathbf{K}, \mathbf{V} ) 按頭數(( h ))分割為 ( h ) 組子向量。
  2. 獨立計算注意力:每組子向量并行計算注意力。
  3. 拼接結果:將各頭的輸出拼接,再通過線性層融合。
2. 數學公式

MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) \mathbf{W}^O MultiHead(Q,K,V)=Concat(head1?,,headh?)WO
其中
head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(Q \mathbf{W}_i^Q, K \mathbf{W}_i^K, V \mathbf{W}_i^V) \ headi?=Attention(QWiQ?,KWiK?,VWiV?)?


五、直觀解釋

1. Query-Key-Value的比喻
  • Query(問題):當前詞想知道什么?
  • Key(標簽):其他詞能提供什么信息?
  • Value(答案):實際傳遞的信息內容。
    注意力機制相當于通過 問題標簽 的匹配程度,決定從 答案 中提取多少信息。
2. 動態權重的作用
  • 若兩個詞的 Key 和 Query 高度匹配(點積大),它們的權重會接近1,反之接近0。
  • 例如:句子 “貓追老鼠,因為它餓了” 中,處理“它”時,模型會給“貓”高權重,給“老鼠”低權重。

六、注意力機制的變體

類型特點
加性注意力使用神經網絡計算相關性分數(如Bahdanau注意力)
局部注意力僅計算局部窗口內的注意力權重,降低計算成本
稀疏注意力通過規則或隨機采樣減少計算量(如Longformer、BigBird)
軸向注意力在多維數據(如圖像)中沿特定軸計算注意力

七、總結

注意力機制通過以下步驟實現:

  1. 向量變換:生成Query、Key、Value。
  2. 相關性計算:通過點積衡量詞與詞之間的關聯。
  3. 權重歸一化:Softmax轉換為概率分布。
  4. 信息融合:加權求和得到最終輸出。

其核心優勢在于動態聚焦關鍵信息,而多頭注意力進一步增強了模型的表達能力。這種機制不僅是Transformer的基礎,也被廣泛應用于計算機視覺、語音處理等領域。

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

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

相關文章

【裁員感想】

裁員感想 今天忽然感覺很emo 因為知道公司要裁員 年中百分之10 年末百分十10 我知道這個百分20會打到自己 所以還挺不開心的 我就想起 我的一個親戚當了大學老師 我覺得真的挺好的 又有寒暑假 又不是很累 薪資也不低 又是編制 同時也覺得自己很失敗 因為對自己互聯網的工作又…

從信號處理角度理解圖像處理的濾波函數

目錄 1、預備知識 1.1 什么是LTI系統? 1.1.1 首先來看什么是線性系統,前提我們要了解什么是齊次性和疊加性。

目標檢測概述

為什么基于卷積網絡的目標檢測模型在預測后要使用非極大值抑制 基于卷積網絡的目標檢測模型可能會在目標的相鄰區域生成多個相互重疊框,每個框的預測結果都是同一個目標,引起同一目標的重復檢測。造成這一現象的原因主要有兩個, 基于卷積網絡…

【JAVA】在idea新加artifact時,點擊Build-Build Artifacts時,新加的artifact不能選中

首先保證添加artifact無問題,比如依賴都正確、無重復命令的情況等 辦法 一 File > Invalidate Caches / Restart。 重啟IDEA后,重新檢查Artifact是否可選 辦法 二 打開 Project Structure(CtrlShiftAltS)。 進入 Artifacts 選…

Paramiko 使用教程

目錄 簡介安裝 Paramiko連接到遠程服務器執行遠程命令文件傳輸示例 簡介 Paramiko 是一個基于 Python 的 SSH 客戶端庫,它提供了在網絡上安全傳輸文件和執行遠程命令的功能。本教程將介紹 Paramiko 的基本用法,包括連接到遠程服務器、執行命令、文件傳輸…

《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端

《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端 《TCP/IP網絡編程》學習筆記 | Chapter 24:制作 HTTP 服務器端HTTP 概要理解 Web 服務器端無狀態的 Stateless 協議請求消息(Request Message)的結構響應消息&#x…

【Quest開發】在虛擬世界設置具有遮擋關系的透視窗口

軟件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 僅針對urp管線 參考了YY老師這篇,可以先看他的再看這個可能更好理解一些:Unity Meta Quest MR 開發(七):使…

GPU 招投標全流程分析與總結

GPU 招投標全流程分析與總結 招投標流程概述 以下是通過代理商采購Nvidia H20-GPU 141G的招投標全流程分析: #mermaid-svg-hMPPfkCpGj8GKXfV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hMPPfkCpGj8GKXfV .er…

[C++] STL中的向量容器<vector>附加練習

目錄 講在前面(必看)八卦陣題目描述輸入格式輸出格式輸入輸出樣例數據范圍AC代碼及要點 決賽應援題目描述輸入格式輸出格式輸入輸出樣例數據范圍AC代碼及要點 講在前面(必看) 本篇為練習篇, vector講解篇在這里. 菜鳥食用前請做好心理準備(你懂的) 八卦陣 題目描述 n 名同學…

基于SpringBoot+Vue3實現的寵物領養管理平臺功能一

一、前言介紹: 1.1 項目摘要 隨著社會經濟的發展和人們生活水平的提高,越來越多的人開始關注并參與到寵物領養中。寵物已經成為許多家庭的重要成員,人們對于寵物的關愛和照顧也日益增加。然而,傳統的寵物領養流程存在諸多不便&a…

parameter和localparam的區別(verilog中)

在Verilog中,parameter 和 localparam 都用于定義常量,但是它們之間有一些重要的區 作用范圍: parameter:可以在模塊外部被修改或重定義。它可以被作為模塊的參數傳遞給其他模塊,因此具有較廣泛的作用范圍,…

鴻蒙API15 “一多開發”適配:解鎖黃金三角法則,開啟高效開發新旅程

一、引言 在萬物互聯的時代浪潮中,鴻蒙操作系統以其獨特的 “一多開發” 理念,為開發者打開了一扇通往全場景應用開發的新大門。“一多開發”,即一次開發,多端部署 ,旨在讓開發者通過一套代碼工程,就能高效…

Linux中docker容器拉取鏡像失敗解決方案

查看 /etc/systemd/system/docker.service.d/http-proxy.conf 文件(沒有則新建),查看自定義 Docker 服務的代理設置 輸入內容 [Service] Environment"HTTP_PROXYsocks5://10.211.13.214:7890" Environment"HTTPS_PROXYsocks…

半導體設備通信標準—secsgem v0.3.0版本使用說明文檔(2)之GEM(SEMI 30)

文章目錄 1、處理器1.1、事件 2、GEM 合規性2.1、狀態模型2.2、 設備加工狀態2.3、 文檔2.4、 控制 (作員啟動)2.5、 動態事件報告配置2.6、 跟蹤數據收集2.7、 報警管理2.8、 遠程控制2.9、 設備常量2.10、 工藝配方管理2.11、 物料移動2.12、 設備終端…

每日算法-鏈表(23.合并k個升序鏈表、25.k個一組翻轉鏈表)

一.合并k個升序鏈表 1.1題目描述 1.2題解思路 解法一:小根堆 我們可以先定義一個小根堆,將k個指針的頭結點如堆,每次取堆頂元素尾插到newhead中,然后再pop(),接著push堆頂原來堆頂元素的下一個節點 重點分析&#…

Java性能剖析工具箱

1. 基礎知識 1.1 Java性能調優概述 1.1.1 性能調優的重要性 性能調優是提升系統效率、降低成本和增強用戶體驗的關鍵步驟。通過優化,可以減少響應時間、降低資源消耗并提高系統的穩定性和可擴展性。 1.1.2 性能問題的常見表現 高CPU使用率:可能由熱點方法或線程阻塞引起。…

如何使用SpringApplicationRunListener在Spring Boot 應用的不同生命周期階段插入自定義邏輯

目錄 一、引言二、核心方法概述三、加載機制四、使用場景五、擴展 - 如何在測試的不同階段插入邏輯5.1 TestExecutionListener & AbstractTestExecutionListener5.1.1 主要功能5.1.2 生命周期方法 5.2 如何集成TestExecutionListener5.3 總結 一、引言 SpringApplicationR…

【NLP】 19. Tokenlisation 分詞 BPE, WordPiece, Unigram/SentencePiece

1. 翻譯系統性能評價方法 在機器翻譯系統性能評估中,通常既有人工評價也有自動評價方法: 1.1 人工評價 人工評價主要關注以下幾點: 流利度(Fluency): 判斷翻譯結果是否符合目標語言的語法和習慣。充分性…

openai發布今天發布了o3和o4-mini。

ChatGPT Plus、Pro和Team用戶已經可以使用o3、o4-mini和o4-mini-high,取代o1、o3-mini和o3-mini-high。具體特點: ChatGPT-o3 特點:o3模型使用高級推理技術,這意味著它在處理復雜問題和邏輯推理方面表現出色。但是不能聯網搜索 …

ESP-ADF外設子系統深度解析:esp_peripherals組件架構與核心設計(輸入類外設之觸摸屏 Touch)

目錄 ESP-ADF外設子系統深度解析:esp_peripherals組件架構與核心設計(輸入類外設之觸摸屏 Touch)簡介模塊概述功能定義架構位置核心特性 觸摸(Touch)外設觸摸外設概述觸摸外設API和數據結構外設層API(periph_touch.h/periph_touch…