注意力機制 attention Transformer 筆記

動手學深度學習

這里寫自定義目錄標題

  • 注意力
  • 加性注意力
  • 縮放點積注意力
  • 多頭注意力
  • 自注意力
  • 自注意力+縮放點積注意力:案例
  • Transformer

注意力

注意力匯聚的輸出為值的加權和
注意力匯聚的輸出為值的加權和

查詢的長度為q,鍵的長度為k,值的長度為v。
q ∈ 1 × q , k ∈ 1 × k , v ∈ R 1 × v {\bf{q}} \in {^{1 \times q}},{{\bf{k}}} \in {^{1 \times k}},{{\bf{v}}} \in {\mathbb{R}^{1 \times v}} q1×q,k1×k,vR1×v
n個查詢和m個鍵-值對
Q ∈ n × q , K ∈ m × k , V ∈ R m × v {\bf{Q}} \in {^{n \times q}},{\bf{K}} \in {^{m \times k}},{\bf{V}} \in {\mathbb{R}^{m \times v}} Qn×q,Km×k,VRm×v
a ( Q , K ) ∈ R n × m {\bf{a}}\left( {{\bf{Q}},{\bf{K}}} \right) \in {\mathbb{R}^{n \times m}} a(Q,K)Rn×m注意力評分函數
α ( Q , K ) = s o f t m a x ( a ( Q , K ) ) = exp ? ( a ( Q , K ) ) ∑ j = 1 m exp ? ( a ( Q , K ) ) ∈ R n × m {\boldsymbol{\alpha}} \left( {{\bf{Q}},{\bf{K}}} \right) = {\rm{softmax}}\left( {{\bf{a}}\left( {{\bf{Q}},{\bf{K}}} \right)} \right) = \frac{{\exp \left( {{\bf{a}}\left( {{\bf{Q}},{\bf{K}}} \right)} \right)}}{{\sum\limits_{j = 1}^m {\exp \left( {{\bf{a}}\left( {{\bf{Q}},{\bf{K}}} \right)} \right)} }} \in {\mathbb{R}^{n \times m}} α(Q,K)=softmax(a(Q,K))=j=1m?exp(a(Q,K))exp(a(Q,K))?Rn×m注意力權重
f ( Q , K , V ) = α ( Q , K ) ? V ∈ R n × v f({\bf{Q}},{\bf{K}},{\bf{V}}) = {\boldsymbol{\alpha}} {\left( {{\bf{Q}},{\bf{K}}} \right)^ \top }{\bf{V}} \in {\mathbb{R}^{n \times v}} f(Q,K,V)=α(Q,K)?VRn×v注意力匯聚函數

加性注意力

q ∈ R 1 × q , k ∈ R 1 × k {\bf{q}} \in {\mathbb {R}^{1 \times q}},{\bf{k}} \in {\mathbb {R}^{1 \times k}} qR1×q,kR1×k
W q ∈ R h × q , W k ∈ R h × k , w v ∈ R h × 1 {{\bf{W}}_q} \in {{\mathbb R}^{h \times q}},{{\bf{W}}_k} \in {{\mathbb R}^{h \times k}},{{\bf{w}}_v} \in {{\mathbb R}^{h \times 1}} Wq?Rh×q,Wk?Rh×k,wv?Rh×1
a ( q , k ) = w v ? t a n h ( W q q ? + W k k ? ) ∈ R a({\bf{q}},{\bf{k}}) = {\bf{w}}_v^ \top {\rm{tanh}}({{\bf{W}}_q}{{\bf{q}}^ \top } + {{\bf{W}}_k}{{\bf{k}}^ \top }) \in \mathbb {R} a(q,k)=wv??tanh(Wq?q?+Wk?k?)R注意力評分函數

縮放點積注意力

q ∈ R 1 × d , k ∈ R 1 × d , v ∈ R 1 × v {\bf{q}} \in \mathbb{R}{^{1 \times d}},{\bf{k}} \in \mathbb{R}{^{1 \times d}},{\bf{v}} \in {{\mathbb R}^{1 \times v}} qR1×d,kR1×d,vR1×v
a ( q , k ) = 1 d q k ? ∈ R a\left( {{\bf{q}},{\bf{k}}} \right) = \frac{1}{{\sqrt d }}{\bf{q}}{{\bf{k}}^ \top } \in \mathbb{R} a(q,k)=d ?1?qk?R注意力評分函數
f ( q , k , v ) = α ( q , k ) ? v = s o f t m a x ( 1 d q k ? ) v ∈ R 1 × v f({\bf{q}},{\bf{k}},{\bf{v}}) = \alpha {\left( {{\bf{q}},{\bf{k}}} \right)^ \top }{\bf{v}} = {\rm{softmax}}\left( {\frac{1}{{\sqrt d }}{\bf{q}}{{\bf{k}}^ \top }} \right){\bf{v}} \in {{\mathbb R}^{1 \times v}} f(q,k,v)=α(q,k)?v=softmax(d ?1?qk?)vR1×v注意力匯聚函數

n個查詢和m個鍵-值對
Q ∈ R n × d , K ∈ R m × d , V ∈ R m × v \mathbf Q\in\mathbb R^{n\times d}, \mathbf K\in\mathbb R^{m\times d}, \mathbf V\in\mathbb R^{m\times v} QRn×d,KRm×d,VRm×v
a ( Q , K ) = 1 d Q K ? ∈ R n × m {\bf{a}}\left( {{\bf{Q}},{\bf{K}}} \right) = \frac{1}{{\sqrt d }}{\bf{Q}}{{\bf{K}}^ \top } \in {\mathbb{R}^{n \times m}} a(Q,K)=d ?1?QK?Rn×m注意力評分函數
f ( Q , K , V ) = α ( Q , K ) ? V = s o f t m a x ( 1 d Q K ? ) V ∈ R n × v f({\bf{Q}},{\bf{K}},{\bf{V}}) = {\boldsymbol{\alpha}} {\left( {{\bf{Q}},{\bf{K}}} \right)^ \top }{\bf{V}} ={\rm{softmax}}\left( {\frac{1}{{\sqrt d }}{\bf{Q}}{{\bf{K}}^ \top }} \right){\bf{V}} \in {\mathbb{R}^{n \times v}} f(Q,K,V)=α(Q,K)?V=softmax(d ?1?QK?)VRn×v注意力匯聚函數
Attention Is All You Need
Attention Is All You Need

多頭注意力

q ∈ R 1 × d q , k ∈ R 1 × d k , v ∈ R 1 × d v {\bf{q}} \in {{\mathbb R}^{1 \times {d_q}}},{\bf{k}} \in {{\mathbb R}^{1 \times {d_k}}},{\bf{v}} \in {{\mathbb R}^{1 \times {d_v}}} qR1×dq?,kR1×dk?,vR1×dv?
W i ( q ) ∈ R p q × d q , W i ( k ) ∈ R p k × d k , W i ( v ) ∈ R p v × d v {\bf{W}}_i^{(q)} \in {{\mathbb R}^{{p_q} \times {d_q}}},{\bf{W}}_i^{(k)} \in {{\mathbb R}^{{p_k} \times {d_k}}},{\bf{W}}_i^{(v)} \in {{\mathbb R}^{{p_v} \times {d_v}}} Wi(q)?Rpq?×dq?,Wi(k)?Rpk?×dk?,Wi(v)?Rpv?×dv?
q W i ( q ) ? ∈ R 1 × p q , k W i ( k ) ? ∈ R 1 × p k , v W i ( v ) ? ∈ R 1 × p v {\bf{qW}}{_i^{(q)\top} } \in {{\mathbb R}^{1 \times {p_q}}},{\bf{kW}}{_i^{(k)\top} } \in {{\mathbb R}^{1 \times {p_k}}},{\bf{vW}}{_i^{(v)\top} } \in {{\mathbb R}^{1 \times {p_v}}} qWi(q)??R1×pq?,kWi(k)??R1×pk?,vWi(v)??R1×pv?
h i = f ( q W i ( q ) ? , k W i ( k ) ? , v W i ( v ) ? ) ∈ R 1 × p v {{\bf{h}}_i} = f\left( {{\bf{qW}}{{_i^{(q)\top}} },{\bf{kW}}{{_i^{(k)\top}} },{\bf{vW}}{{_i^{(v)\top}} }} \right) \in {{\mathbb R}^{1 \times {p_v}}} hi?=f(qWi(q)??,kWi(k)??,vWi(v)??)R1×pv?注意力頭

多個注意力頭連結然后線性變換
W o ∈ R p o × h p v {{\bf{W}}_o} \in {{\mathbb R}^{{p_o} \times h{p_v}}} Wo?Rpo?×hpv?
W o [ h 1 ? ? h h ? ] ∈ R p o {{\bf{W}}_o}\left[ {\begin{array}{c} {{{\bf{h}}_1^ \top}}\\ \vdots \\ {{{\bf{h}}_h^ \top}} \end{array}} \right] \in {{\mathbb R}^{{p_o}}} Wo? ?h1???hh??? ?Rpo?

p q h = p k h = p v h = p o p_q h = p_k h = p_v h = p_o pq?h=pk?h=pv?h=po?
多頭注意力:多個頭連結然后線性變換
多頭注意力:多個注意力頭連結然后線性變換

自注意力

x i ∈ R 1 × d , X = [ x 1 ? x n ] ∈ R n × d {{\bf{x}}_i} \in {{\mathbb R}^{1 \times d}},{\bf{X}} = \left[ {\begin{array}{c} {{{\bf{x}}_1}}\\ \cdots \\ {{{\bf{x}}_n}} \end{array}} \right] \in {{\mathbb R}^{n \times d}} xi?R1×d,X= ?x1??xn?? ?Rn×d
Q = X , K = X , V = X {\bf{Q}} = {\bf{X}},{\bf{K}} = {\bf{X}},{\bf{V}} = {\bf{X}} Q=X,K=X,V=X
f ( Q , K , V ) = α ( Q , K ) ? V = s o f t m a x ( 1 d Q K ? ) V ∈ R n × d f({\bf{Q}},{\bf{K}},{\bf{V}}) = {\boldsymbol{\alpha}} {\left( {{\bf{Q}},{\bf{K}}} \right)^ \top }{\bf{V}} ={\rm{softmax}}\left( {\frac{1}{{\sqrt d }}{\bf{Q}}{{\bf{K}}^ \top }} \right){\bf{V}} \in {\mathbb{R}^{n \times d}} f(Q,K,V)=α(Q,K)?V=softmax(d ?1?QK?)VRn×d
y i = f ( x i , ( x 1 , x 1 ) , … , ( x n , x n ) ) ∈ R d {{\bf{y}}_i} = f\left( {{{\bf{x}}_i},\left( {{{\bf{x}}_1},{{\bf{x}}_1}} \right), \ldots ,\left( {{{\bf{x}}_n},{{\bf{x}}_n}} \right)} \right) \in {{\mathbb R}^d} yi?=f(xi?,(x1?,x1?),,(xn?,xn?))Rd

n個查詢和m個鍵-值對
Q = t a n h ( W q X ) ∈ R n × d {\bf{Q}} = {\rm{tanh}}\left( {{{\bf{W}}_q}{\bf{X}}} \right) \in {{\mathbb R}^{n \times d}} Q=tanh(Wq?X)Rn×d
K = t a n h ( W k X ) ∈ R m × d {\bf{K}} = {\rm{tanh}}\left( {{{\bf{W}}_k}{\bf{X}}} \right) \in {{\mathbb R}^{m \times d}} K=tanh(Wk?X)Rm×d
V = t a n h ( W v X ) ∈ R m × v {\bf{V}} = {\rm{tanh}}\left( {{{\bf{W}}_v}{\bf{X}}} \right) \in {{\mathbb R}^{m \times v}} V=tanh(Wv?X)Rm×v

自注意力+縮放點積注意力:案例

J. Xu, F. Zhong, and Y. Wang, “Learning multi-agent coordination for enhancing target coverage in directional sensor networks,” in Proc. Neural Information Processing Systems (NeurIPS), Vancouver, BC, Canada, Dec. 2020, pp. 1–16.
https://github.com/XuJing1022/HiT-MAC/blob/main/perception.py

類比多頭注意力中
d q = d k = d v = d i n {d_q} = {d_k} = {d_v} = {d_{in}} dq?=dk?=dv?=din?
p q = p k = p v = d a t t {p_q} = {p_k} = {p_v} = {d_{att}} pq?=pk?=pv?=datt?

x i ∈ R 1 × d i n , X = [ x 1 ? x n m ] ∈ R n m × d i n {{\bf{x}}_i} \in {{\mathbb R}^{1 \times d_{in}}},{\bf{X}} = \left[ {\begin{array}{c} {{{\bf{x}}_1}}\\ \cdots \\ {{{\bf{x}}_{nm}}} \end{array}} \right] \in {{\mathbb R}^{nm \times d_{in}}} xi?R1×din?,X= ?x1??xnm?? ?Rnm×din?
W ∈ R d a t t × d i n {\bf{W}} \in {{\mathbb R}^{d_{att}\times d_{in}}} WRdatt?×din?
Q = t a n h ( W q X ? ) ? ∈ R n m × d a t t {\bf{Q}} = {\rm{tanh}}\left( {{{\bf{W}}_q}{\bf{X}}^\top} \right)^\top \in {{\mathbb R}^{nm \times d_{att}}} Q=tanh(Wq?X?)?Rnm×datt?
K = t a n h ( W k X ? ) ? ∈ R n m × d a t t {\bf{K}} = {\rm{tanh}}\left( {{{\bf{W}}_k}{\bf{X}}^\top} \right)^\top \in {{\mathbb R}^{nm \times d_{att}}} K=tanh(Wk?X?)?Rnm×datt?
V = t a n h ( W v X ? ) ? ∈ R n m × d a t t {\bf{V}} = {\rm{tanh}}\left( {{{\bf{W}}_v}{\bf{X}}^\top} \right)^\top \in {{\mathbb R}^{nm \times d_{att}}} V=tanh(Wv?X?)?Rnm×datt?
f ( Q , K , V ) = α ( Q , K ) ? V = s o f t m a x ( 1 d Q K ? ) V ∈ R n m × d a t t f({\bf{Q}},{\bf{K}},{\bf{V}}) = {\boldsymbol{\alpha}} {\left( {{\bf{Q}},{\bf{K}}} \right)^ \top }{\bf{V}} ={\rm{softmax}}\left( {\frac{1}{{\sqrt d }}{\bf{Q}}{{\bf{K}}^ \top }} \right){\bf{V}} \in {{\mathbb R}^{nm \times d_{att}}} f(Q,K,V)=α(Q,K)?V=softmax(d ?1?QK?)VRnm×datt?

class AttentionLayer(torch.nn.Module):def __init__(self, feature_dim, weight_dim, device):super(AttentionLayer, self).__init__()self.in_dim = feature_dimself.device = deviceself.Q = xavier_init(nn.Linear(self.in_dim, weight_dim))self.K = xavier_init(nn.Linear(self.in_dim, weight_dim))self.V = xavier_init(nn.Linear(self.in_dim, weight_dim))self.feature_dim = weight_dimdef forward(self, x):# param x: [num_agent, num_target, in_dim]# return z: [num_agent, num_target, weight_dim]# z = softmax(Q,K)*Vq = torch.tanh(self.Q(x))  # [batch_size, sequence_len, weight_dim]k = torch.tanh(self.K(x))  # [batch_size, sequence_len, weight_dim]v = torch.tanh(self.V(x))  # [batch_size, sequence_len, weight_dim]z = torch.bmm(F.softmax(torch.bmm(q, k.permute(0, 2, 1)), dim=2), v)  # [batch_size, sequence_len, weight_dim]global_feature = z.sum(dim=1)return z, global_feature

Transformer

Transformer

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

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

相關文章

解析Java中的緩存機制及其實現方式

解析Java中的緩存機制及其實現方式 大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 在軟件開發中,緩存是一種常見的優化技術,用于臨時存儲數據,以提高數據訪問速度…

【WEB前端2024】3D智體編程:喬布斯3D紀念館-第54課-poplang語音編程控制機器人

【WEB前端2024】3D智體編程:喬布斯3D紀念館-第54課-poplang語音編程控制機器人 使用dtns.network德塔世界(開源的智體世界引擎),策劃和設計《喬布斯超大型的開源3D紀念館》的系列教程。dtns.network是一款主要由JavaScript編寫的…

【TORCH】神經網絡權重初始化和loss為inf

文章目錄 數據輸入范圍和權重初始化數據范圍對權重初始化的影響示例代碼輸入數據標準化 說明其他注意事項 常見初始化方法常見的權重初始化方法示例代碼說明 模型默認初始化方法,會不會導致Loss為inf示例說明初始化權重導致 Loss 為 inf避免 Loss 為 inf 的建議示例…

SQL 對一個經常有數據更新和刪除操作的表,怎樣優化以減少磁盤空間的占用?

文章目錄 一、定期清理不再需要的數據二、使用合適的數據類型三、壓縮數據四、刪除重復數據五、分區表六、索引優化七、碎片整理八、歸檔歷史數據九、監控和評估 在數據庫管理中,當面對一個經常進行數據更新和刪除操作的表時,磁盤空間的有效利用是一個重…

Pogo-DroneCANPWM模塊:可實現DroneCAN轉PWM,DroneCAN轉dshot,DroneCAN轉bdshot

關鍵詞:Ardupilot,Pixhawk,PWM,dshot,bdshot,DroneCANPWM,電調ESC,DroneCAN,UAVCAN,飛控,無人機,UAV Keywords:Ardupilot…

MSPM0G3507——OPENMV給M0傳數據(用數據包)互相通信(以循跡為例)

OPENMV端代碼 # main.py -- put your code here! import pyb, sensor, image, math, time from pyb import UART import ustruct from image import SEARCH_DS, SEARCH_EX import time import sensor, displayuart UART(3, 115200, bits8, parityNone, stop1, timeout_char10…

Scikit-learn高級教程:深入理解機器學習算法

目錄 引言Scikit-learn概述 什么是Scikit-learnScikit-learn的主要功能安裝和導入 數據預處理 數據加載數據清洗特征工程數據歸一化與標準化 監督學習算法 線性回歸邏輯回歸支持向量機決策樹與隨機森林k-近鄰算法樸素貝葉斯 無監督學習算法 K-means聚類層次聚類主成分分析&…

使用Redis進行分布式鎖時需要注意哪些問題?Redis分布式鎖的常見實現方式有哪些?

使用 Redis 進行分布式鎖時需要注意以下幾個問題: 鎖的過期時間設置:要合理設置鎖的過期時間,避免鎖因持有進程崩潰或網絡延遲等原因無法釋放,導致死鎖。原子性操作:獲取鎖和設置過期時間的操作需要保證原子性&#x…

C語言 猜測乒乓球隊比賽名單

兩個乒乓球隊進行比賽,各出三人,甲隊為A,B,C三人,乙隊為X ,Y ,Z三人,已抽簽決定比賽名單,有人向隊員打聽比賽的名單,A說他不和X比, C說他不和X&am…

計算機網絡性能指標概述:速率、帶寬、時延等

在計算機網絡中,性能指標是衡量網絡效率和質量的重要參數。本文將綜合三篇關于計算機網絡性能指標的文章,詳細介紹速率、帶寬、吞吐量、時延、時延帶寬積、往返時延(RTT) 和利用率的概念及其在網絡中的應用。 1. 速率(…

開源六軸協作機械臂myCobot280實現交互式乘法!讓學習充滿樂趣

本文經作者Fumitaka Kimizuka 授權我們翻譯和轉載。 原文鏈接:myCobotに「頷き」「首振り」「首傾げ」をしてもらう 🤖 - みかづきブログ?カスタム 引言 Fumitaka Kimizuka 創造了一個乘法表系統,幫助他的女兒享受學習乘法表的樂趣。她可以…

大語言模型基礎

大語言基礎 GPT : Improving Language Understanding by Generative Pre-Training 提出背景 從原始文本中有效學習的能力對于減輕自然語言處理中對監督學習的依賴至關重要。很多深度學習方法需要大量人工標注的數據,限制了它們在很多領域的應用,收集更…

cs231n作業2 雙層神經網絡

雙層神經網絡 我們選用ReLU函數和softmax函數: 步驟: 1、LOSS損失函數(前向傳播)與梯度(后向傳播)計算 Forward: 計算score,再根據score計算loss Backward:分別對W2、b2、W1、b1求…

學懂C#編程:WPF應用開發系列——WPF之ComboBox控件的詳細用法

WPF(Windows Presentation Foundation)中的ComboBox控件是一個下拉列表控件,允許用戶從一組預定義的選項中選擇一個選項。以下是ComboBox控件的詳細用法,并附帶示例說明。 ComboBox的基本用法 1. XAML定義: 在XAML中…

multisim中關于74ls192n和DSWPK開關仿真圖分析(減法計數器)

🏆本文收錄于「Bug調優」專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&&…

直播預告 | VMware大規模遷移實戰,HyperMotion助力業務高效遷移

2006年核高基專項啟動,2022年國家79號文件要求2027年央國企100%完成信創改造……國家一系列信創改造政策的推動,讓服務器虛擬化軟件巨頭VMware在中國的市場份額迅速縮水。 加之VMware永久授權的取消和部分軟件組件銷售策略的變更,導致VMware…

開發一個HTTP模塊

開發一個HTTP模塊 HTTP模塊的數據結構ngx_module_t模塊的數據結構ngx_http_module_t數據結構ngx_command_s 數據結構 定義一個HTTP模塊處理用戶請求返回值獲取URI和參數方法名URIURL協議版本 獲取HTTP頭獲取HTTP包體 發送響應發送HTTP頭發送內存中的字符串作為包體返回一個Hell…

什么時候考慮將mysql數據遷移到ES?

文章目錄 對ES的一些疑問問題1:ES相比mysql本身有哪些優勢?問題2:哪些場景適合用ES而不是mysql?問題3:mysql逐行掃描,根據過濾條件檢查記錄中對應字段是否滿足要求屬于正排索引,根據二叉樹索引檢索記錄的方式屬于正排索引還是倒排…

SpringBoot整合DataX數據同步(自動生成job文件)

SpringBoot整合Datax數據同步 文章目錄 SpringBoot整合Datax數據同步1.簡介設計理念 DataX3.0框架設計DataX3.0核心架構核心模塊介紹DataX調度流程 2.DataX3.0插件體系3.數據同步1.編寫job的json文件2.進入bin目錄下,執行文件 4.SpringBoot整合DataX生成Job文件并執…

生產力工具|VS Code安裝及使用指南

一、VS Code介紹 (一)軟件介紹 Visual Studio Code(簡稱VS Code)是由Microsoft開發的免費開源代碼編輯器,適用于Windows、macOS和Linux操作系統。它支持多種編程語言,如JavaScript、Python、C等&#xff0…