深度學習中的self-attention機制

閱讀時間約 4 分鐘

前面的篇章,我們主要都是在處理單一的輸入值,或是固定size的一維矩陣輸入值。但有時候我們會沒辦法保證輸入的大小都是固定的,像是聲音訊號、文字長度。或者輸入的值是一組vector set,像是一次有好幾組vector同時要輸入等等。

同樣的,很多時候我們沒辦法知道輸出的label的size,像是我們輸入一段文字,可能只需要透過classification辨別文字給予的評價好壞,這時候就只會有一個輸出。或者是在翻譯英文的時候,就可能是一個英文字對應到一個中文字,這時候幾組輸入可能就對應到幾組輸出。

*當輸入與輸出是一個set對一個set,那我們可以稱之為sequence-to-sequence的問題。


Q:那如果我們各別將每一組的input直接經過fully connected network計算可以得到我們的目標嗎?

A: 有些問題可以,但像是英翻中的問題,是不是就會考慮到詞性問題,考慮到他們彼此的依賴關係?這時候fully connected Network就沒辦法精準處理我們的問題。

-> 所以才需要self-attention

self-attention

self attention能夠同時接收整個sequence的資訊,就能考慮到彼此的依賴關係。

raw-image


要如何計算self Attention?

  1. 首先,我們假設有一個sequence的input: a1, a2, a3, a4。會用a來表示而不是x是因為有可能他是最初的輸入,也有可能前面hidden layer的輸出,也就是是前面已經先透過 fully connected或是self-attention的計算。
  2. 透過Dot-product的方法(較常用的方法),依序找出ai與其他aj的關聯程度,用𝛼來表示。
  3. 計算出其相關性,通過softmax(不一定需要),就會得到a'1,1, a'1,2, a'1,3, a'1,4
  4. 接著通過一個共同的向量𝑊𝑣分別與a1, a2, a3, a4相乘計算出𝒗1,𝒗2, 𝒗3, 𝒗4,最後在相乘計算出b'1,1, b'1,2, b'1,3, b'1,4,加總得到b1
  5. 那如果a1~a4哪個關聯性越大,值就會最大,那最後加總得到的b1值就會越接近該值(假設a1與a2關聯度很高,最後a2的值會與b1非常相近)。


*b1~b4的計算不需要照順序,他們可以同時平行計算。

*Wq, Wk, Wv(transformer)的參數需要透過training data尋找。

*我們也可以將a1~a4整合起來做為矩陣,W也能以矩陣表示。



Dot-product的計算方法:

需要被計算出關聯性的主角,我們先透過Wq, Wk得到qi(query)與ki(key),其他的配角計算出kj(key)。

接著,我們將qi 與所有配角的 kj相乘 ,就能得到關聯性𝛼ij

raw-image


Multi-head Self-attention

相關性本身就有許多不一樣的定義,所以我們應該要有不同q與k,做出不同的相關性 → 以此推論出會有不同的k與v,這就被稱為有多個head。但要注意的是,如果我們有多個q,那在計算時它們彼此是獨立的,不能互相使用。


Positional Encoding

但到目前為止,我們少了一個位置的資訊。但有時位置的資訊也是很重要,像是英文字的位置有可能決定他是名詞或是動詞,因此我們需要加上一個判斷位置的資訊

所以我們可以設置一個位置參數ei,加入到ai上面。(第一個位置就是e1,第二個就是e2),ei的值是可以由我們設計的。 -> 這部分是尚待研究的問題,可以參考一些論文的設計。


語音辨識的使用

通常我們在語音辨識上,每一個向量只有10ms的範圍,所以講一句話就有可能產生上千個向量,複雜度就會提高。

-> 所以在語音辨識上,我們可以採用Truncated Self-attention的方法,在看一整個句子時,只挑選某個範圍內的文字做辨識,這樣就不需要輸入所有的向量。


Self-attention VS CNN

CNN可以看做是簡化版的Self-attention,CNN是只計算receptive field一個特定小範圍,而self-attention是考慮整個範圍。

認真想想,其實圖片本身就是一組vector set,所以自然也能使用self-attention。而且self attention能夠透過attention,找到圖片中的像素與自己W參數的相關性,就好像receptive field是機器自己決定出來的(大小、範圍等等),而不像CNN是有我們自己設定的。


以上是關於今天self-attention的基礎知識~




avatar-img
1會員
37內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
dab戴伯的沙龍 的其他內容
卷積神經網路(CNN)是一種專門用於影像相關應用的神經網路。本文介紹了CNN在影像辨識中的應用,包括圖片的組成、Receptive Field、Parameter Sharing、以及Pooling等技術。通過本文,讀者將瞭解CNN在影像辨識領域的優勢和運作原理。
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
本文將介紹batch的定義與其在機器學習中的作用,以及不同batch size 的影響。同時也會講解Momentum動量在機器學習中的重要性。透過本文,您將清楚地瞭解batch、batch size和Momentum動量的概念以及其對機器學習的影響。
之前有提到有時我們在微分之後會得到gradient = 0的值,就以為我們已經找到最小值,但其實它只是local minima。 那這一節主要想跟大家分享我們要怎麼區分是不是Local Minima。
卷積神經網路(CNN)是一種專門用於影像相關應用的神經網路。本文介紹了CNN在影像辨識中的應用,包括圖片的組成、Receptive Field、Parameter Sharing、以及Pooling等技術。通過本文,讀者將瞭解CNN在影像辨識領域的優勢和運作原理。
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
本文將介紹batch的定義與其在機器學習中的作用,以及不同batch size 的影響。同時也會講解Momentum動量在機器學習中的重要性。透過本文,您將清楚地瞭解batch、batch size和Momentum動量的概念以及其對機器學習的影響。
之前有提到有時我們在微分之後會得到gradient = 0的值,就以為我們已經找到最小值,但其實它只是local minima。 那這一節主要想跟大家分享我們要怎麼區分是不是Local Minima。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Bidirectional Encoder Representations from Transformers (BERT) 只有 Encoder Layer,沒有 D
機器其實不是像人類這樣一的單字對應一個單字去翻譯, 而是使用「編碼器 Encoder」與「解碼器 Decoder」來做語言之間的翻譯。 其中編碼器的任務,是「閱讀 Read」與「處理 Process」完整的文本, 而解碼器的任務,則是「產生 Produced」翻譯過後的文本。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 仔細看 AI說書 - 從0開始 - 66 中,Decoder 的 Multi-Head Attention 框框,會發現有一條線空接,其實它是有意義的,之所以空接,是因
前言 在閱讀《強化式學習:打造最強 AlphaZero 通用演算法》時,對一些看似基本,但是重要且會影響到之後實作的項目概念有點疑惑,覺得應該查清楚,所以搞懂後記錄下來,寫下這篇文章(應該說是筆記?)。 正文 下面這段程式碼: model = Sequential() model.add
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 到 AI說書 - 從0開始 - 63 為止,我們已經介紹完 Multi-Head Attention ,接著我們來談 Add & Norm 兩元件的功能: Add
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 52 中,我們已經解析完 Attention 機制如何運作的,以下延伸至 Multi-Head Attention: Head 1
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 既然要談論 Transformer 的 Attention 機制,我們必須要談論以下主題: Transformer 架構 自注意力機制 編碼與解碼 Embedd
為了將輸入文本轉換成深度學習模型可以使用的嵌入向量, 我們需要先將「輸入文本 Input Text」轉為「符元化文本 Tokenized Text」。 而實際上「符元化文本 Tokenized Text」與「嵌入向量 Embedding Vector」之間, 還有一個步驟稱為「符元
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧我們在AI說書 - 從0開始 - 4中說Transformer的精髓就是考慮「字與字之間的配對關係」,我們稱其為Attention Layer,再搭配我們在機器學習
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Bidirectional Encoder Representations from Transformers (BERT) 只有 Encoder Layer,沒有 D
機器其實不是像人類這樣一的單字對應一個單字去翻譯, 而是使用「編碼器 Encoder」與「解碼器 Decoder」來做語言之間的翻譯。 其中編碼器的任務,是「閱讀 Read」與「處理 Process」完整的文本, 而解碼器的任務,則是「產生 Produced」翻譯過後的文本。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 仔細看 AI說書 - 從0開始 - 66 中,Decoder 的 Multi-Head Attention 框框,會發現有一條線空接,其實它是有意義的,之所以空接,是因
前言 在閱讀《強化式學習:打造最強 AlphaZero 通用演算法》時,對一些看似基本,但是重要且會影響到之後實作的項目概念有點疑惑,覺得應該查清楚,所以搞懂後記錄下來,寫下這篇文章(應該說是筆記?)。 正文 下面這段程式碼: model = Sequential() model.add
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 到 AI說書 - 從0開始 - 63 為止,我們已經介紹完 Multi-Head Attention ,接著我們來談 Add & Norm 兩元件的功能: Add
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 52 中,我們已經解析完 Attention 機制如何運作的,以下延伸至 Multi-Head Attention: Head 1
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 既然要談論 Transformer 的 Attention 機制,我們必須要談論以下主題: Transformer 架構 自注意力機制 編碼與解碼 Embedd
為了將輸入文本轉換成深度學習模型可以使用的嵌入向量, 我們需要先將「輸入文本 Input Text」轉為「符元化文本 Tokenized Text」。 而實際上「符元化文本 Tokenized Text」與「嵌入向量 Embedding Vector」之間, 還有一個步驟稱為「符元
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧我們在AI說書 - 從0開始 - 4中說Transformer的精髓就是考慮「字與字之間的配對關係」,我們稱其為Attention Layer,再搭配我們在機器學習