5.16
知識(shí)分子
The Intellectual
圖源:Pixabay
撰文 |張?zhí)烊?/strong>
最近,人們對(duì)AI談得最多的是deepseek(簡(jiǎn)稱DS)。這匹來(lái)自中國(guó)本土的黑馬,闖入全球視野,一度擾亂美國(guó)股市,在AI領(lǐng)域掀起了一場(chǎng)軒然大波。
不過(guò),正如DS創(chuàng)始人梁文鋒所言,DS的成功是因?yàn)檎驹诹司奕说募缟?,這個(gè)巨人,可以有不同的理解,最靠近的當(dāng)然是Meta的開(kāi)源代碼(例如PyTorch和LLaMA)。說(shuō)遠(yuǎn)一些,這個(gè)巨人是多年來(lái)科學(xué)家們推動(dòng)發(fā)展的各種AI技術(shù)。然而最準(zhǔn)確的說(shuō)法,應(yīng)該是兩年之前OpenAI發(fā)布的聊天機(jī)器人ChatGPT,它是DS框架的技術(shù)基礎(chǔ)。
ChatGPT的名字中,Chat的意思就是對(duì)話,這個(gè)詞在AI中涉及的領(lǐng)域是NLP(自然語(yǔ)言處理);后面三個(gè)字母的意思:G生成型(generative)、P預(yù)訓(xùn)練(pre-training)、T變形金剛(Transformer)。其中最重要的是“變形金剛”,而變形金剛的關(guān)鍵是“注意力機(jī)制”(Attention)。下面簡(jiǎn)單介紹一下幾個(gè)名詞。
01
變形金剛
英語(yǔ)單詞Transformer,可以指變壓器或變換器。另外也可以翻譯成變形金剛,那是一種孩子們喜歡的玩具,可以變換成各種角色,包括人類和機(jī)械。而這兒的transformer是谷歌大腦2017年推出的語(yǔ)言模型。如今,無(wú)論是自然語(yǔ)言的理解,還是視覺(jué)處理,都用變形金剛統(tǒng)一起來(lái),用到哪兒都靈光,名副其實(shí)的變形金剛!所以,我們就用這個(gè)名字。
變形金剛最早是為了NLP[1]的機(jī)器翻譯而開(kāi)發(fā)的,NLP一般有兩種目的:生成某種語(yǔ)言(比如按題作文),或者語(yǔ)言間的轉(zhuǎn)換(比如翻譯)。這兩種情況,輸入輸出都是一串序列,此種神經(jīng)網(wǎng)絡(luò)模型稱為“序列建?!?。變形金剛的目的就是序列建模,它的結(jié)構(gòu)可以分為“編碼器”和“解碼器”兩大部分(圖1)。序列建模是AI研究中的一項(xiàng)關(guān)鍵技術(shù),它能夠?qū)π蛄袛?shù)據(jù)中的每個(gè)元素進(jìn)行建模和預(yù)測(cè),在NLP中發(fā)揮著重要作用。
圖1:Transformer模型及其中的注意力機(jī)制
圖1右圖顯示了“編碼器”和“解碼器”的內(nèi)部結(jié)構(gòu)框圖。它們都包含了多頭注意力層(Multi-Head Attention)、前向傳播層(Feed Foward)和殘差歸一化層(Add&Norm)。
神經(jīng)網(wǎng)絡(luò)模型的發(fā)展,從1958年早期感知機(jī)的“機(jī)器”模型,到后來(lái)的算法模型,經(jīng)歷了漫長(zhǎng)的過(guò)程。變形金剛的序列建模能力,超越了之前的循壞神經(jīng)網(wǎng)絡(luò)RNN,和卷積神經(jīng)網(wǎng)絡(luò)CNN,近幾年,成為了新的序列建模大殺器,廣泛應(yīng)用于機(jī)器翻譯、閱讀理解和實(shí)體識(shí)別等任務(wù)中。
與變形金剛(Transformer)相關(guān)的論文,是Google機(jī)器翻譯團(tuán)隊(duì),在行業(yè)頂級(jí)會(huì)議NIPS上發(fā)表的。論文的題目是《Attention is all you need(你所需要的,就是注意力)》[2],一語(yǔ)道明了變形金剛的重點(diǎn)是“注意力”。圖1右的Transformer模型中,紅色曲線指出的,是3個(gè)主要的注意力機(jī)制框圖。
因此,ChatGPT大獲成功,憑借的是強(qiáng)調(diào)“注意力機(jī)制”的變形金剛;介紹注意力機(jī)制之前,首先簡(jiǎn)要介紹NLP的幾個(gè)基本概念。例如,什么是“詞向量”,什么是詞崁入?有那些語(yǔ)言模型?
02
自然語(yǔ)言處理
實(shí)現(xiàn)人工智能有兩個(gè)主要的方面,一是圖像識(shí)別,二是理解人類的語(yǔ)言和文字,后者被稱為自然語(yǔ)言處理,縮寫成NLP(Natural Language Processing)。
2.1
什么是NLP?
自然語(yǔ)言處理,就是利用計(jì)算機(jī)為工具對(duì)人類自然語(yǔ)言的信息進(jìn)行各種類型處理和加工的技術(shù)。NLP以文字為處理對(duì)象。
最早的計(jì)算機(jī)被發(fā)明出來(lái),是作為理科生進(jìn)行復(fù)雜計(jì)算的工具。而語(yǔ)言和文字是文科生玩的東西,如何將這兩者聯(lián)系起來(lái)呢?為了要讓機(jī)器處理語(yǔ)言,首先需要建立語(yǔ)言的數(shù)學(xué)模型。稱之為語(yǔ)言模型。ChatGPT就是一個(gè)語(yǔ)言模型。
語(yǔ)言模型最直接的任務(wù)就是處理一段輸入的文字,不同的目的應(yīng)該有不同的模型,才能得到不同的輸出。例如,假設(shè)輸入一段中文:“彼得想了解機(jī)器學(xué)習(xí)”,模型可能有不同的輸出:
1,如果是中文到英文的機(jī)器翻譯模型,輸出可能是:“Peter wants to learn about machine learning”;
2,如果是聊天機(jī)器人,輸出可能是:“他需要幫助嗎?“;
3,如果是書(shū)店的推薦模型,輸出可能是一系列書(shū)名:“《機(jī)器學(xué)習(xí)簡(jiǎn)介》、《機(jī)器學(xué)習(xí)入門》“;
4,如果是情感分析,輸出可能是:“好“……
語(yǔ)言模型都有兩大部分:編碼器和解碼器,分別處理輸入和輸出。
此外,對(duì)語(yǔ)言模型比較重要的一點(diǎn)是:它的輸出不見(jiàn)得是固定的、一一對(duì)應(yīng)的,這從我們平時(shí)人類的語(yǔ)言習(xí)慣很容易理解。對(duì)同樣的輸入,不同的人有不同的回答,在不同環(huán)境下的同一個(gè)人,也會(huì)有不同的回答。也就是說(shuō),語(yǔ)言模型是一個(gè)概率模型。
2001年,本吉奧等人將概率統(tǒng)計(jì)方法引入神經(jīng)網(wǎng)絡(luò),并使用前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)言建模,提出了第一個(gè)神經(jīng)網(wǎng)絡(luò)的語(yǔ)言概率模型,可以預(yù)測(cè)下一個(gè)單詞可能的概率分布,為神經(jīng)網(wǎng)絡(luò)在NLP領(lǐng)域的應(yīng)用奠定了基礎(chǔ)。
2.2
詞向量(Word Vectors)
語(yǔ)言模型中的編碼器,首先就需要給語(yǔ)言中的單詞編碼。世界上的語(yǔ)言各種各樣,它們也有其共性,都是由一個(gè)一個(gè)小部分(基本單元)組成的,有的基本單元是“詞“,有的是”字“,有的可能是詞的一部分,例如詞根。我們給基本單元取個(gè)名字,叫”token“。例如,以后在解釋語(yǔ)言處理過(guò)程時(shí),我們就將中文中的“字”作為一個(gè)”token“,而將英文中的一個(gè)“word”,算一個(gè)”token“。
計(jì)算機(jī)只認(rèn)數(shù)字,不識(shí)”token“。所以首先得將”token“用某種數(shù)學(xué)對(duì)象表示,學(xué)者們選中了“矢量”
最早期對(duì)詞向量的設(shè)想,自然地聯(lián)想到了“字典”。所以,最早給詞匯編碼采用的方法叫做Onehotencoding(獨(dú)熱編碼),若有個(gè)字典或字庫(kù)里有N個(gè)單字,則每個(gè)單字可以被一個(gè)N維的獨(dú)熱向量代表。下面用具體例子說(shuō)明這種方法。
例如,假設(shè)常用的英文單詞大約1000個(gè)(實(shí)際上,英語(yǔ)有約1300萬(wàn)個(gè)單詞),按照首個(gè)字母順序排列起來(lái),詞典成為一個(gè)1000個(gè)詞的長(zhǎng)串序列。每個(gè)常用詞在這個(gè)序列中都有一個(gè)位置。例如,假設(shè)“Apple”是第1個(gè),“are” 是第2個(gè),“bear” 是第3個(gè),“cat” 第4個(gè),“delicious” 第5個(gè)……等等。那么,這5個(gè)words,就分別可以被編碼成5個(gè)1000維的獨(dú)熱矢量,每一個(gè)獨(dú)熱矢量對(duì)應(yīng)于1000維空間的1個(gè)點(diǎn):
“apple“: (10 0 0 0…………………..0)
“are” : (01 0 0 0…………………..0)
“bear” : (00 1 0 0 0…………..…..0)
“cat” : (00 0 1 0 0 0……………..0)
“delicious” : (00 0 0 1 0 0 0…………..0)
獨(dú)熱編碼概念簡(jiǎn)單,不過(guò),你很快就能發(fā)現(xiàn)這不是一個(gè)好的編碼方法。它至少有如下幾個(gè)缺點(diǎn)。
一是每個(gè)詞向量都是獨(dú)立的,互相無(wú)關(guān),詞和詞之間沒(méi)有關(guān)聯(lián),沒(méi)有相似度。實(shí)際上,詞和詞之間關(guān)聯(lián)程度不一樣。既然我們將單詞表示成矢量,而空間中的矢量互相是有關(guān)聯(lián)的。有的靠的近,有的離得遠(yuǎn)。這種“遠(yuǎn)近”距離也許可以用來(lái)描述它們之間的相似度。比如說(shuō),bear和cat都是動(dòng)物,相互比較靠近,而apple是植物,離他們更遠(yuǎn)一點(diǎn)。
二是這種編碼法中,每個(gè)詞向量只有一個(gè)分量是1,其它全是0,這種表示方法太不經(jīng)濟(jì),浪費(fèi)很多空間。在1000維空間中,非常稀疏地散發(fā)著1000個(gè)點(diǎn)。這也使得空間維度太大,不利計(jì)算。
圖2:詞向量
目前NLP中使用比較多的是約書(shū)亞·本吉奧等人2000年在一系列論文中提出的技術(shù),后來(lái)經(jīng)過(guò)多次改進(jìn),如今被統(tǒng)稱為“詞嵌入”(Word embedding)。它是指把一個(gè)維數(shù)為所有詞的數(shù)量的高維空間嵌入到一個(gè)維數(shù)低得多的連續(xù)向量空間中,每個(gè)單詞或詞組被映射為實(shí)數(shù)域上的向量。例如,圖2左圖中的1000維詞向量,被嵌入到一個(gè)2維空間(圖2右圖)中之后,將同類的詞匯分類放到靠近的2維點(diǎn),例如右上方靠近的3個(gè)點(diǎn)分別代表3個(gè)哺乳動(dòng)物。
詞嵌入中這個(gè)“維數(shù)低得多的向量空間”,到底是多少維呢?應(yīng)該是取決于應(yīng)用。直觀來(lái)說(shuō),每一個(gè)維度可以編碼一些意思,例如語(yǔ)義空間可以編碼時(shí)態(tài)、單復(fù)數(shù)和性別等等。那么,我們利用“詞嵌入”的目的是:希望找到一個(gè)N維的空間,足夠而有效地編碼我們所有的單詞。
當(dāng)然,詞嵌入的具體實(shí)現(xiàn)方法很復(fù)雜,維數(shù)可以比1000小,但比2大多了,在此不表。
2.3
NLP和神經(jīng)網(wǎng)絡(luò)
在變形金剛之前的NLP,是用循環(huán)神經(jīng)網(wǎng)絡(luò)RNN、遞歸神經(jīng)網(wǎng)絡(luò)、雙向和深度RNN、或基于RNN改進(jìn)的LSTM等實(shí)現(xiàn)的??梢允褂蒙鲜龅耐环N網(wǎng)絡(luò)結(jié)構(gòu),復(fù)制并連接的鏈?zhǔn)浇Y(jié)構(gòu)來(lái)進(jìn)行自然語(yǔ)言處理,每一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)將自身提取的信息傳遞給下一個(gè)繼承者。見(jiàn)圖3。
圖3:RNN鏈接受上下文單詞,預(yù)測(cè)目標(biāo)單詞
語(yǔ)言模型的目的就是通過(guò)句子中每個(gè)單詞的概率,給這個(gè)句子一個(gè)概率值P。即通過(guò)計(jì)算機(jī)系統(tǒng)對(duì)人輸入問(wèn)題的理解,利用自動(dòng)推理等手段,自動(dòng)求解答案并做出相應(yīng)的回答。
循環(huán)神經(jīng)網(wǎng)絡(luò)RNN是在時(shí)間維度展開(kāi),處理序列結(jié)構(gòu)信息。遞歸神經(jīng)網(wǎng)絡(luò)在空間維度展開(kāi),處理樹(shù)結(jié)構(gòu)、圖結(jié)構(gòu)等復(fù)雜結(jié)構(gòu)信息。
LSTM等模型和transformer的最大區(qū)別是:LSTM等的訓(xùn)練是迭代的,是一個(gè)一個(gè)字的來(lái),當(dāng)前這個(gè)字過(guò)完LSTM單元,才可以進(jìn)行下一個(gè)字的輸入。但transformer使用了注意力機(jī)制,可以并行計(jì)算,所有字同時(shí)訓(xùn)練,大大提高了效率。并行計(jì)算中,使用了位置嵌入(positional encoding)來(lái)標(biāo)識(shí)這些字的先后順序。那么,什么是“注意力機(jī)制”?
03
“注意力機(jī)制”
3.1
什么是注意力機(jī)制?
神經(jīng)網(wǎng)絡(luò)的思想最早是來(lái)源于生物學(xué)的神經(jīng)網(wǎng)絡(luò),但是,現(xiàn)代的深度學(xué)習(xí)卻早已脫離了對(duì)大腦的模仿。不過(guò),人們?cè)贏I研究中碰到困難時(shí),總免不了要去對(duì)比一下生物大腦的運(yùn)行機(jī)制。這也是“注意力機(jī)制”這個(gè)概念的來(lái)源。
注意力機(jī)制是人類大腦的一種天生的能力。我們?類在處理信息時(shí),顯然會(huì)過(guò)濾掉不太關(guān)注的信息,著重于感興趣的信息,于是,認(rèn)知專家們將這種處理信息的機(jī)制稱為注意?機(jī)制。
例如,我們?cè)诳从H友的照片時(shí),先是快速掃過(guò),然后通常更注意去識(shí)別其中的人臉,將更多的注意力放在照片呈現(xiàn)的人物、時(shí)間、和地點(diǎn)上。當(dāng)我們閱讀一篇新的文章時(shí),注意力首先放在標(biāo)題上,然后是開(kāi)頭的一段話,還有小標(biāo)題等等。
人類的大腦經(jīng)過(guò)長(zhǎng)期的進(jìn)化,類似于機(jī)器學(xué)習(xí)中應(yīng)用了最優(yōu)化的學(xué)習(xí)方法,形成了效率頗高的結(jié)構(gòu)。試想,如果人腦對(duì)每個(gè)局部信息都不放過(guò),那么必然耗費(fèi)很多精力,把人累死。同樣地,在人工智能的深度學(xué)習(xí)網(wǎng)絡(luò)中,引進(jìn)注意?機(jī)制,才能簡(jiǎn)化網(wǎng)絡(luò)模型,以使用最少的計(jì)算量,有效地達(dá)到目的。大腦回路的結(jié)構(gòu)方式,肯定影響著大腦的計(jì)算能力。但是,到目前為止,除了在一些非常簡(jiǎn)單的生物體中,我們?nèi)匀粵](méi)有看到任何大腦的具體結(jié)構(gòu)。不過(guò),研究AI的專家們,有自己的辦法來(lái)實(shí)現(xiàn)他們的目標(biāo),例如循環(huán)神經(jīng)網(wǎng)絡(luò),長(zhǎng)短期記憶,都解決了部分問(wèn)題。
當(dāng)科學(xué)家們利用循環(huán)神經(jīng)網(wǎng)絡(luò),處理NLP任務(wù)時(shí),長(zhǎng)距離“記憶”能力一直是個(gè)瓶頸,而現(xiàn)在引入的“注意力機(jī)制”,有效地緩解了這一難題。此外,從節(jié)約算力的角度考慮,也有必要用“注意力機(jī)制”,從大量信息中,篩選出少量重要信息,并聚焦到這些重要信息上,忽略大多不重要的信息。
3.2
注意力機(jī)制的種類
注意力機(jī)制可以按照不同的需要來(lái)分類,這兒我們只解釋與Transformer相關(guān)的幾種結(jié)構(gòu)。
1,硬注意力機(jī)制:選擇輸入序列某一個(gè)位置上的信息,直接舍棄掉不相關(guān)項(xiàng)。換言之,決定哪些區(qū)域被關(guān)注,哪些區(qū)域不被關(guān)注,是一個(gè)“是”或“不是”的問(wèn)題,某信息或“刪”,或“留”,取其一。例如,將圖像裁剪,文章一段全部刪去,屬于此類。
2,軟注意力機(jī)制,即通常所說(shuō)的“注意力機(jī)制”:選擇輸入序列中的所有信息,但用0到1之間的概率值,來(lái)表示關(guān)注程度的高低。也就是說(shuō),不丟棄任何信息,只是給他們賦予不同的權(quán)重,表達(dá)不同的影響力。
3,“軟”vs“硬”:硬注意力機(jī)制,只考慮是和不是,就像2進(jìn)制的離散變量;優(yōu)勢(shì)在于會(huì)節(jié)省一定的時(shí)間和計(jì)算成本,但是有可能會(huì)丟失重要信息。離散變量不可微分,很難通過(guò)反向傳播的方法參與訓(xùn)練。而軟注意力機(jī)制,因?yàn)閷?duì)每部分信息都考慮,所以計(jì)算量比較大。但概率是連續(xù)變量,因此軟注意力是一個(gè)可微過(guò)程,可以通過(guò)前向和后向反饋學(xué)習(xí)的訓(xùn)練過(guò)程得到。變形金剛中使用的是“軟注意力機(jī)制”,見(jiàn)圖4a。圖中輸入是Q、K、V,分別代表Query(查詢)、Key(關(guān)鍵)、Value(數(shù)值)。
4,自注意力機(jī)制:如果圖4a中的Q、K、V都從一個(gè)輸入X產(chǎn)生出來(lái),便是“自注意力機(jī)制”(圖4b)。它的意思是:對(duì)每個(gè)輸入賦予的權(quán)重取決于輸入數(shù)據(jù)之間的關(guān)系,即通過(guò)輸入項(xiàng)內(nèi)部之間的相互博弈決定每個(gè)輸入項(xiàng)的權(quán)重。因?yàn)榭紤]的是輸入數(shù)據(jù)中每個(gè)輸入項(xiàng)互相之間的關(guān)聯(lián),因此,對(duì)輸入數(shù)據(jù)而言,即考慮“自己”與“自己”的關(guān)聯(lián),故稱“自”注意力機(jī)制。自注意力機(jī)制在計(jì)算時(shí),具有并行計(jì)算的優(yōu)勢(shì)。使輸入序列中的每個(gè)元素能夠關(guān)注并加權(quán)整個(gè)序列中的其他元素,生成新的輸出表示,不依賴外部信息或歷史狀態(tài)。自注意力通過(guò)計(jì)算每個(gè)元素對(duì)其他所有元素的注意力權(quán)值,然后應(yīng)用這些權(quán)值于對(duì)應(yīng)元素本身,得到一個(gè)加權(quán)平均的輸出表示。
圖4:各種注意力機(jī)制
5,注意力機(jī)制與自注意力機(jī)制的區(qū)別:注意力機(jī)制的權(quán)重參數(shù)是一個(gè)全局可學(xué)習(xí)參數(shù),對(duì)于模型來(lái)說(shuō)是固定的;而自注意力機(jī)制的權(quán)重參數(shù)是由輸入決定的,即使是同一個(gè)模型,對(duì)于不同的輸入也會(huì)有不同的權(quán)重參數(shù)。注意力機(jī)制的輸出與輸入的序列長(zhǎng)度可以不同;而自注意力機(jī)制的的輸出輸入序列長(zhǎng)度是相同的。注意力機(jī)制在一個(gè)模型中通常只使用一次,作為編碼器和解碼器之間的連接部分;而自注意力機(jī)制在同一個(gè)模型中可以使用很多次,作為網(wǎng)絡(luò)結(jié)構(gòu)的一部分。注意力機(jī)制將一個(gè)序列映射為另一個(gè)序列;而自注意力機(jī)制捕捉單個(gè)序列內(nèi)部的關(guān)系。
6,交叉注意力機(jī)制:考慮兩個(gè)輸入序列(X1、X2)內(nèi)部變量之間的關(guān)聯(lián),見(jiàn)圖4c。
7,遮罩(Masked)注意力機(jī)制:在計(jì)算通道中,加入一個(gè)遮罩,遮擋住當(dāng)前元素看不見(jiàn)(關(guān)聯(lián)不到)的部分,見(jiàn)圖4d。
8,多頭自注意力機(jī)制:由多個(gè)平行的自注意力機(jī)制層組成。每個(gè)“頭”都獨(dú)立地學(xué)習(xí)不同的注意力權(quán)重,最后綜合合并這些“頭”的輸出結(jié)果,產(chǎn)生最終的輸出表示。多頭機(jī)制能夠同時(shí)捕捉輸入序列在不同子空間中的信息,從而增強(qiáng)模型的表達(dá)能力,見(jiàn)圖4e。
3.3
注意力機(jī)制如何工作?
最基本的注意力機(jī)制如圖5a所示,它的輸入是Q、K、V,分別代表Query(查詢)、Key(關(guān)鍵)、Value(數(shù)值)。具體而言,Q、K、V都可以用矩陣表示。計(jì)算的步驟如下:算出Q和K的點(diǎn)積,得到他們的相似度,經(jīng)過(guò)softmax函數(shù)作用歸一化之后,得到相互影響的概率A,然后,將A作用到V上,最后得到的V‘即為注意力。
圖5:注意力機(jī)制的計(jì)算
乍一看上面的敘述有點(diǎn)莫名其妙,這幾個(gè)Q、K、V是何方神圣?從哪里鉆出來(lái)的?
首先,我們舉一個(gè)自注意力機(jī)制的例子,用一個(gè)通俗的比喻解釋一下。自注意力機(jī)制中的Q、K、V,都是由輸入的詞向量產(chǎn)生出來(lái)的。比如,老師去圖書(shū)館想給班上學(xué)生找“貓、狗、兔子”等的書(shū),老師可能會(huì)與管理員交談,說(shuō):“請(qǐng)幫忙找關(guān)于養(yǎng)貓狗兔的書(shū)”。那么,老師的查詢之一可能是,Query:養(yǎng)貓書(shū)、管理員給老師幾個(gè)書(shū)名Key:《貓》、《如何養(yǎng)貓》……,還從圖書(shū)館的計(jì)算機(jī)資料庫(kù)中得到相關(guān)信息Value:這幾本書(shū)的作者、出版社、分類編號(hào)等等。
上面例子中,輸入的序列詞向量是老師說(shuō)的那句話的編碼矩陣,即圖4b中的輸入X。然后,從如下計(jì)算得到矩陣Q、K、V:
Q=X Wq,
K=X Wk,
V=X Wv。
這兒的Wq、Wk、Wv是將在訓(xùn)練中確定的網(wǎng)絡(luò)參數(shù)。
圖5是注意力機(jī)制計(jì)算過(guò)程的示意圖。右下角的方框里,是注意力機(jī)制的計(jì)算公式。公式中有一個(gè)乘積項(xiàng):QKT,意思是Q和K的內(nèi)積。兩個(gè)向量的內(nèi)積,等于它們的模相乘,再乘以它們之間夾角的cosine函數(shù),因此可以描述兩個(gè)向量接近的程度。內(nèi)積越大,表示越接近。計(jì)算公式括號(hào)內(nèi)的分母:Dk開(kāi)方,代表注意力機(jī)制框圖中的“Scale”(進(jìn)行縮放)部分。這兒Dk是KT的維數(shù),除上維數(shù)開(kāi)方的目的是穩(wěn)定學(xué)習(xí)過(guò)程,防止維度太大時(shí)“梯度消失”的問(wèn)題。然后,點(diǎn)積加縮放后的結(jié)果,經(jīng)softmax歸一化后得到相互影響概率A。最后,再將結(jié)果A乘以V,得到輸出V',這個(gè)輸出矢量描述了輸入矢量X中各個(gè)token之間的自注意力。
綜上所述,從自注意力機(jī)制,可以得到輸入詞序列中詞與詞之間的關(guān)聯(lián)概率。比如說(shuō),假設(shè)輸入的文字是:“他是學(xué)校足球隊(duì)的主力所以沒(méi)有去上英語(yǔ)課”,訓(xùn)練后可以得到每個(gè)字之間相關(guān)情況的一種概率分布。但是,字之間的相關(guān)情況是很復(fù)雜的,有可能這次訓(xùn)練得到一種概率分布(“他”和“球”有最大概率),下次得到另外一種完全不同的概率分布(“他”和“課”有最大概率)。為了解決這種問(wèn)題,就采取多算幾次的辦法,被稱為“多頭注意力機(jī)制”。就是將輸入矢量分成了幾個(gè)子空間的矢量,一個(gè)子空間叫一個(gè)“頭”。
也可以使用上面所舉老師去圖書(shū)館找書(shū)的例子,除了“貓“和”書(shū)“關(guān)聯(lián)之外,狗、兔子……等都可能和”書(shū)“關(guān)聯(lián)起來(lái),也可以使用“多頭注意力機(jī)制”來(lái)探索。
參考資料:
[1]NLPhttps://en.wikipedia.org/wiki/Natural_language_processing
[2]Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia. Attention Is All You Need. 2017-12-05. arXiv:1706.03762
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.