一、輸入與輸出
?1. 一般情況下在簡(jiǎn)單模型中我們輸入一個(gè)向量,輸出結(jié)果可能是一個(gè)數(shù)值或者一個(gè)類別。但是在復(fù)雜的模型中我們一般會(huì)輸入一組向量,那么輸出結(jié)果可能是一組數(shù)值或一組類別。
?2. 一句話、一段語音、一張圖等都可以轉(zhuǎn)換成一組向量。
?3. 輸入一組向量,一般輸出結(jié)果有3種情況:(1) N對(duì)N;(2) N對(duì)1;(3) N對(duì)M。我們這里著重講第1種。
?注:Seq2Seq(Sequence to Sequence,序列到序列模型)是循環(huán)神經(jīng)網(wǎng)絡(luò)模型的變種,包括編碼器(Encoder)和解碼器(Decoder)兩部分。Seq2Seq模型是輸出的長度不確定時(shí)采用的模型,這種情況一般是在機(jī)器翻譯的任務(wù)中出現(xiàn),將一句中文翻譯成英文,那么這句英文的長度有可能會(huì)比中文短,也有可能會(huì)比中文長,所以輸出的長度就不確定了。
二、Self-attention
2.1 介紹
?1. 有時(shí)候我們輸入轉(zhuǎn)化后的一組向量之間會(huì)有關(guān)聯(lián)。比如 “I saw a saw-----我看見一把鋸子” 這句話,對(duì)于傳統(tǒng)的模型,可能會(huì)將第一個(gè) saw 和第二個(gè) saw 輸出相同的結(jié)果,但事實(shí)上兩個(gè) saw 是完全不一樣的意義,第一個(gè) saw 意思是"看見",而第二個(gè) saw 意思是"鋸子"。
?2. 所以出現(xiàn)了自注意力機(jī)制(Self-attention)模型來解決上述這個(gè)問題。對(duì)于輸入 Seg 中向量不確定多的情況,Self-attention會(huì)考慮所有向量。Self-attention的輸入是一組向量,輸出也是一組向量,但考慮了整個(gè) Seq 產(chǎn)生的。
?3. 當(dāng)然,Self-attention也可以使用多次。注:其實(shí)Self-attention是Transformer模型中的關(guān)鍵組件。
2.2 運(yùn)作過程
?1. Self-attention對(duì)于每一個(gè)的輸出結(jié)果都是綜合考慮了所有的輸入。我們接下來以輸入 a 1 a^1 a1 輸出 b 1 b^1 b1 為例來講解,其他的過程類似。
?2. 步驟(1):對(duì)于輸入向量
a
1
a^1
a1,Self-attention首先會(huì)判斷向量
a
1
a^1
a1 與其他向量的關(guān)聯(lián)性。對(duì)兩個(gè)向量的關(guān)聯(lián)程度,Self-attention會(huì)給出一個(gè)數(shù)值
α
α
α。
?求關(guān)聯(lián)性
α
α
α 的方法很多。比如點(diǎn)積法:將兩個(gè)向量分別乘以權(quán)重矩陣,再進(jìn)行點(diǎn)積;點(diǎn)積和相加法:將兩個(gè)向量分別乘以權(quán)重矩陣,結(jié)果進(jìn)行相加后再與權(quán)重矩陣進(jìn)行點(diǎn)積。注:我們常用下面圖片中左邊的方法。
?3. 步驟(2):計(jì)算出每個(gè)的關(guān)聯(lián)性 α α α,再用 s o f t m a x softmax softmax 函數(shù)得到 α ′ α' α′。 注:這里不一定用 s o f t m a x softmax softmax 函數(shù),也可以用其他的激活函數(shù)。
?4. 步驟(3):然后再將所有向量 v ? α v * α v?α,再求和得到 b b b。
?5. 類似的,得到 b 2 b^2 b2 也是一樣的過程。
2.3 矩陣相乘理解運(yùn)作過程
三、位置編碼
?1. 在人類的語言中,單詞的位置與順序定義了語法,也影響著語義。無法捕獲的單詞順序會(huì)導(dǎo)致我們很難理解一句話的含義,如下圖所示。
?2. 我們知道自注意力機(jī)制是Transformer模型中的關(guān)鍵組件,但是Transformer中的自注意力機(jī)制無法捕捉輸入元素序列的順序。因此我們需要一種方法將單詞的順序合并到Transformer架構(gòu)中,于是位置編碼應(yīng)運(yùn)而生。
?3. 目前,主流的位置編碼方法主要分為絕對(duì)位置編碼與相對(duì)位置編碼兩大類。其中絕對(duì)位置編碼的作用方式是告知Transformer架構(gòu)每個(gè)元素在輸入序列中的位置,類似于為輸入序列的每個(gè)元素打一個(gè) “位置標(biāo)簽” 標(biāo)明其絕對(duì)位置。而相對(duì)位置編碼則是作用于自注意力機(jī)制,告知Transformer架構(gòu)兩兩元素之間的距離。如下圖所示。
?4. 由于相對(duì)位置編碼作用于自注意力機(jī)制,所以我們這里介紹一下相對(duì)位置編碼。相對(duì)位置編碼中,一般我們會(huì)在一組輸入向量中的每個(gè)位置加一個(gè)位置向量 e e e,然后把 e e e 加到 a a a 上。
四、Truncated Self-attention
4.1 概述
?1. Truncated Self-attention(縮減的自注意力機(jī)制)只看自己和前后一個(gè)向量之間的attention。
?計(jì)算方法:只計(jì)算矩陣中藍(lán)色部分值,其余灰色的不用計(jì)算(填0)。
?問題:相當(dāng)于只關(guān)聯(lián)sequence中相鄰的token,失去了Attention的全局性,和CNN的效果就比較相似了,只有局部感受野。
?2. 例如對(duì)于長序列的語音問題,轉(zhuǎn)換成輸入向量后數(shù)量很大,這個(gè)時(shí)候我們可以只取一小段范圍。 因?yàn)橛袝r(shí)候關(guān)注一小段范圍就可以得到我們想要的輸出結(jié)果。
4.2 和CNN對(duì)比
?自注意力機(jī)制和CNN在處理圖像問題時(shí),有一些顯著的區(qū)別。
?CNN,即卷積神經(jīng)網(wǎng)絡(luò),可以看作是簡(jiǎn)化版的自注意力機(jī)制。在CNN中,每個(gè)神經(jīng)元只考慮一個(gè)感受野里的信息,而感受野的大小和范圍是人工設(shè)定的。然而,自注意力機(jī)制考慮整張圖片的信息,相當(dāng)于每個(gè)神經(jīng)元自動(dòng)學(xué)習(xí)如何確定其感受野。在自注意力機(jī)制中,感受野是通過注意力機(jī)制算法自動(dòng)學(xué)出來的。
?具體來說,自注意力機(jī)制中,模型會(huì)用attention機(jī)制去找出相關(guān)的像素;而在CNN中,每個(gè)神經(jīng)元只考慮一個(gè)固定感受野里的像素。此外,在處理大量數(shù)據(jù)時(shí),自注意力機(jī)制表現(xiàn)得更好,而在訓(xùn)練數(shù)據(jù)較少時(shí),CNN表現(xiàn)得更好。
?總的來說,自注意力機(jī)制和CNN在處理圖像問題時(shí)各有優(yōu)勢(shì)。自注意力機(jī)制能夠更好地處理大量數(shù)據(jù),而CNN在處理少量數(shù)據(jù)時(shí)表現(xiàn)較好。在實(shí)際應(yīng)用中,需要根據(jù)具體任務(wù)和數(shù)據(jù)量來選擇使用哪種模型。
4.3 和RNN對(duì)比
?自注意力機(jī)制和RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))在自然語言處理和其他序列處理任務(wù)中都有廣泛應(yīng)用,但它們之間存在一些關(guān)鍵區(qū)別。
?(1) 上下文處理:RNN在處理序列時(shí),通常按照順序逐個(gè)處理輸入元素,因此其對(duì)于上下文的處理主要依賴于之前的隱藏狀態(tài)。這意味著RNN在處理當(dāng)前元素時(shí),只能考慮到該元素之前的上下文信息。相比之下,自注意力機(jī)制能夠同時(shí)處理整個(gè)序列,直接關(guān)聯(lián)并考慮所有的上下文信息,而不僅僅局限于當(dāng)前元素之前的部分。
?(2) 并行計(jì)算:由于RNN的順序處理特性,其計(jì)算通常是順序進(jìn)行的,這限制了其并行計(jì)算的能力。而自注意力機(jī)制的計(jì)算可以并行進(jìn)行,因?yàn)樗械妮斎朐囟际峭瑫r(shí)處理的,這有助于提高計(jì)算效率。
?(3) 輸入順序:RNN對(duì)輸入序列的順序是敏感的,因?yàn)轫樞虻母淖儠?huì)影響隱藏狀態(tài)的計(jì)算。而自注意力機(jī)制本身對(duì)輸入序列的順序是不敏感的,因?yàn)槠湓谟?jì)算注意力權(quán)重時(shí)并不考慮元素的位置信息。然而,為了在需要的情況下捕捉序列的順序信息,可以在自注意力機(jī)制中引入位置編碼。
?(4) 長期依賴問題:RNN在處理長序列時(shí),可能會(huì)遇到梯度消失或梯度爆炸的問題,這使得網(wǎng)絡(luò)難以學(xué)習(xí)到長期依賴關(guān)系。雖然一些改進(jìn)的RNN變體(如LSTM和GRU)能夠在一定程度上緩解這個(gè)問題,但自注意力機(jī)制由于其全局上下文處理的能力,通常能夠更好地處理長期依賴關(guān)系。
?總的來說,自注意力機(jī)制和RNN在序列處理任務(wù)中各有優(yōu)勢(shì)。自注意力機(jī)制能夠更好地處理全局上下文和長期依賴關(guān)系,并具有并行計(jì)算的優(yōu)勢(shì);而RNN則更適合處理具有明確順序關(guān)系的序列數(shù)據(jù)。在實(shí)際應(yīng)用中,可以根據(jù)具體任務(wù)的需求選擇合適的模型或結(jié)合兩者以充分利用其優(yōu)勢(shì)。
文章來源:http://www.zghlxwxcb.cn/news/detail-817789.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-817789.html
到了這里,關(guān)于深度學(xué)習(xí)(5)---自注意力機(jī)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!