|
英文專業(yè)詞匯翻譯為中文后就少了一點(diǎn)'直觀性’,所以我覺(jué)得專業(yè)詞匯直接寫英文比較好。 前言 對(duì)于人工智能(AI)中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),大多數(shù)人必定都略有耳聞,它來(lái)自神經(jīng)生物學(xué)中“神經(jīng)網(wǎng)絡(luò)”的高度抽象,輸入——傳輸——輸出。不過(guò),在AI模型中,“神經(jīng)元”并非生物學(xué)上的細(xì)胞,而是用于存儲(chǔ)和處理數(shù)據(jù)的容器;信息軸也不是電信號(hào)在突觸上的傳遞,而是一系列數(shù)學(xué)函數(shù)對(duì)目標(biāo)數(shù)值的有向變換。 在傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network, FNN)結(jié)構(gòu)中,各層神經(jīng)元之間通過(guò)有向連接相互傳遞信息,即信息流動(dòng)具有明確的方向——由前向后。每一條連接軸都對(duì)應(yīng)一個(gè)獨(dú)立的權(quán)重(weight)。同一層(layer)中的所有神經(jīng)元都會(huì)接收來(lái)自前一層的相同輸入向量,但它們之間相互獨(dú)立,分別基于各自的權(quán)重和激活函數(shù)計(jì)算輸出結(jié)果。 ![]() neural networks and deeplearning;By Michael Nielsen 卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)相比FNN的”各自獨(dú)立“稍微增加了一點(diǎn)”局部整體性“。在CNN識(shí)別圖像時(shí),會(huì)把某一局部特征(比如水平線/紋理)數(shù)值作為整體,這個(gè)局部的數(shù)值特征即為卷積核K。我們可以把卷積核K視為一個(gè)方形掃描儀,當(dāng)它在輸入圖像上滑動(dòng)時(shí),會(huì)對(duì)每個(gè)區(qū)域進(jìn)行特征匹配,探測(cè)出與自身模式相似度較高的局部結(jié)構(gòu)。但是每個(gè)卷積核只“看到”一種局部信息,識(shí)別全局需要多層卷積的堆疊(也就是多個(gè)卷積核K對(duì)不同特征進(jìn)行”掃描“)再經(jīng)歷逐層整合,網(wǎng)絡(luò)才能逐步從局部特征中抽象出更高層次的全局結(jié)構(gòu)。 ![]() 5*5矩陣的卷積核K”掃描“28*28的輸入數(shù)值矩陣(圖像的像素值) 如果說(shuō)CNN可以有效地處理空間信息,那么循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN )則可以更好地處理序列信息。 RNN對(duì)信息的處理就像人類閱讀書籍,每讀一句話都要根據(jù)先前的內(nèi)容來(lái)理解這一句的含義。也就是說(shuō)它在處理序列信息時(shí)只能按順序傳遞“隱藏狀態(tài)”(模型的短期記憶),預(yù)測(cè)下一個(gè)詞時(shí)只能依賴前一個(gè)隱藏向量。 例如,在天氣預(yù)測(cè)中,根據(jù)前幾天的氣象數(shù)據(jù)來(lái)預(yù)測(cè)第二天的天氣;在股票分析中,基于過(guò)去的波動(dòng)來(lái)預(yù)測(cè)未來(lái)走勢(shì);在生物信息學(xué)中,根據(jù)DNA序列的先前堿基預(yù)測(cè)后續(xù)堿基……凡是需要基于先前序列信息進(jìn)行預(yù)測(cè)的任務(wù),RNN都能發(fā)揮重要作用。 但是RNN 的結(jié)構(gòu)特點(diǎn)也造就了它的局限性。由于它只能順序地處理信息,所以計(jì)算效率效率較低;并且它的每一步都依賴前一步的隱藏狀態(tài),因此能“記住”的信息是有限的。當(dāng)序列過(guò)長(zhǎng)時(shí),早期的信息在層層傳遞中容易被逐漸遺忘。 ![]() Understanding LSTM Networks;Chris Olah 后來(lái),研究人員為了改善這個(gè)缺點(diǎn),將“自注意力機(jī)制”(self-attention)引入RNN中,但這只增強(qiáng)了它的“記憶力”,整體運(yùn)行效率仍然沒(méi)有改善。 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)經(jīng)過(guò)迭代更新,目前幾乎所有主流的人工智能都以 Transformer 為核心。Transformer既具有比CNN更宏觀的'整體性’,又比RNN擁有更強(qiáng)的'記憶力’(信息儲(chǔ)存能力)和并行性。 Transformer 架構(gòu)最早由 Google Brain 團(tuán)隊(duì)于 2017 年提出,也就是那篇非常著名的Attention Is All You Need。Transformer完全依賴“自注意力機(jī)制(Self-Attention)”的數(shù)學(xué)框架,使模型能夠同時(shí)關(guān)注輸入序列中的所有部分,計(jì)算效率與可擴(kuò)展性得到極大提升。 如果仍然用'讀書’打比方,Transformer 就像一個(gè)人同時(shí)把整本書攤開,它不再一行行地順序閱讀,而是在瞬間看到所有句子之間的聯(lián)系,并快速找到與某一個(gè)句子最相關(guān)的部分。而這正是Attentoin(注意力機(jī)制)所造就的強(qiáng)大優(yōu)勢(shì)。 Transformer結(jié)構(gòu) ![]() Attention Is All You Need 如果單看文章中給出的Transformer框架流程圖,相信除了作者沒(méi)人能看懂,所以我們要做的是把這些部分拆解開來(lái),當(dāng)然,今天的重點(diǎn)只是拆解Attention模塊。 左半邊部分稱為encoder(編碼器),右半邊部分稱為decoder(解碼器)。這兩部分都是由Multi-Head Attention和Feed Forward組成。我們?cè)谶@里首先要搞清楚的是:Multi-Head Attention(多頭注意力機(jī)制)是什么? Multi-Head,顧名思義,它由許多Single-Head并行組成,單個(gè)single attention的運(yùn)算流程如左圖所示。 ![]() 當(dāng)我們輸入一段文本時(shí),模型首先會(huì)把它“拆分”成許多 token(為了方便理解,可以先把一個(gè) token 理解成一個(gè)單詞)。然后Transformer 會(huì)為這些 token 創(chuàng)建一組向量,每個(gè)向量都是從 “嵌入空間(embedding space)” 中取出來(lái)的。這個(gè)“嵌入空間”由研究人員利用大量已經(jīng)標(biāo)注好的語(yǔ)料庫(kù)訓(xùn)練得到,盡可能包含了所有語(yǔ)義信息。 在這一步,token向量之間是沒(méi)有聯(lián)系的,每個(gè)向量只能編碼單詞本身的語(yǔ)義,我們把這些“嵌入向量”用E表示。 “嵌入向量”E映射到Q-K空間使彼此之間建立“聯(lián)系”,所謂建立聯(lián)系也就是“一個(gè)單詞知道自己的語(yǔ)義與文本中哪些詞相關(guān)”。 V(Value)矩陣是嵌入矩陣的轉(zhuǎn)置矩陣。它的作用是將通過(guò)注意力機(jī)制得到的“信息向量”投射回原來(lái)的向量空間(embedding space)。當(dāng)這些“信息向量”與原始的 token 向量相加后,就得到了一個(gè)融合了語(yǔ)境理解的”更新向量”。 ![]() 空間:由“張量(tensor)”——也就是多維矩陣*——所張成的數(shù)學(xué)空間。在 Transformer 中,嵌入向量 E 與 Q、K、V (矩陣)之間的關(guān)系,本質(zhì)上就是一系列矩陣與向量的乘法運(yùn)算。 雖然目前對(duì)Attention block的具體運(yùn)算細(xì)節(jié)還不清楚,但是我覺(jué)得先給出公式會(huì)讓人有一個(gè)比較模糊的宏觀了解。 注意力機(jī)制的核心計(jì)算公式如下: ![]() single-head Attention(單頭注意力) 1 Q-K space 假設(shè)我們用如下的句子作為輸入,希望通過(guò)GPT-3的Transform模型預(yù)測(cè)下文: ? a fluffy blue creature roamed the verdant forest. ? 我們把'creature’作為目標(biāo)token,它的嵌入向量記為E4(GPT-3中嵌入向量的維度????????????=12288)。 Query space(查詢空間)的矩陣記為Wq(GPT-3中查詢矩陣的維度dk=128);Wq的作用是把“語(yǔ)義向量”變成“信息需求向量”,描述形象一點(diǎn):模型會(huì)問(wèn)自己”我該關(guān)注哪些詞?”這個(gè)過(guò)程在數(shù)學(xué)上表現(xiàn)為一次矩陣向量相乘的線性變換。 E4*Wq=Q4 E4表示'creature’本身的語(yǔ)義;假設(shè)這個(gè) Wq的作用是將嵌入空間中的名詞映射到Query space,那么 Q4 就可以理解為:它在“詢問(wèn)”——我想知道這個(gè)名詞(creature)對(duì)應(yīng)的形容詞是誰(shuí)?(提出需求) “Key space(鍵空間)”的矩陣記為Wk(GPT-3中鍵矩陣的維度dk=128) Ei*Wq=Ki 每個(gè) token 的嵌入向量E經(jīng)過(guò)這個(gè)矩陣變換后,得到對(duì)應(yīng)的 K?。它可以被理解為對(duì) Query 向量提出的問(wèn)題的一種“回答”。 用數(shù)學(xué)語(yǔ)言表示,就是將所有的 K? 分別與 Q? 做點(diǎn)積;這從數(shù)學(xué)上很好理解:兩個(gè)向量A*B相當(dāng)于:向量A的長(zhǎng)度向量B在A方向的投影長(zhǎng)度,兩個(gè)向量的方向越接近(夾角越小),它們的點(diǎn)積就越大。 向量的方向蘊(yùn)含了豐富的語(yǔ)義信息,如果兩個(gè)向量的方向接近,說(shuō)明該向量代表的語(yǔ)義信息接近。換句話說(shuō),點(diǎn)積越大,說(shuō)明這個(gè)詞與目標(biāo)詞(creature)的語(yǔ)義關(guān)系越密切。 ![]() Attention in transformers, step-by-step;3Blue1Brown ![]() Wq 和 Wk 把嵌入向量 E 映射到維度相同的空間中。 以上圖為例:向量K2與向量Q4的方向相近,表示兩者關(guān)系緊密。(在這個(gè)例子里,這種關(guān)系具體表現(xiàn)為:“fluffy” 是 “creature” 的形容詞。) 對(duì)于輸入文本,模型會(huì)讓所有查詢向量 Q 與所有鍵向量 K 分別做點(diǎn)積,從而得到每個(gè)詞與其他詞之間的語(yǔ)義相關(guān)性。 ![]() 在這個(gè)例子中,QK^T得到的結(jié)果如下圖所示:向量之間相關(guān)性越緊密,點(diǎn)積結(jié)果越大;反之,點(diǎn)積結(jié)果越小。 ![]() Attention in transformers, step-by-step;3Blue1Brown 這些點(diǎn)積結(jié)果可以是負(fù)無(wú)窮~正無(wú)窮之間的任何數(shù)值,為了簡(jiǎn)化后續(xù)計(jì)算,方便生成注意力權(quán)重,需要對(duì)它們進(jìn)行方差歸一化,也就是除以√dk 。 ![]() 歸一化方差的原因:數(shù)值經(jīng)過(guò)softmax函數(shù)變換后輸出為0-1之間的概率,如果數(shù)值過(guò)大或過(guò)小,輸出就會(huì)過(guò)于極端——聚集在0,1這兩點(diǎn)。模型在”反向傳播“時(shí)幾乎得不到有效梯度,訓(xùn)練無(wú)法進(jìn)行。 2 Softmax函數(shù) 在得到歸一化后的點(diǎn)積結(jié)果后,Softmax函數(shù)將這些數(shù)值轉(zhuǎn)換為概率分布,使每個(gè)值介于 0 到 1 之間,且所有值加起來(lái)等于 1。 ![]() ![]() 先對(duì)輸入向量中的每個(gè)數(shù)取以 e 為底的指數(shù),使所有數(shù)值都變?yōu)檎龜?shù);然后將這些指數(shù)值相加,最后計(jì)算每一項(xiàng)占總和的比例。 每組概率表示模型在“關(guān)注”當(dāng)前詞時(shí)分配的注意力權(quán)重:數(shù)值越大,說(shuō)明模型認(rèn)為該詞對(duì)當(dāng)前 token 的語(yǔ)義理解越重要;數(shù)值越小,說(shuō)明它與當(dāng)前 token 的關(guān)聯(lián)較弱。 ![]() Attention in transformers, step-by-step;3Blue1Brown 3 Value space 至此,我們已經(jīng)理清了這個(gè)核心公式的左半部分。接下來(lái)的步驟,是通過(guò) Value matrix(值矩陣) 將加權(quán)后的結(jié)果重新映射回“嵌入空間”(embedding space),在原始語(yǔ)義空間中”更新”目標(biāo)向量。 ![]() 在我們的例子中,就是將與 “creature”(目標(biāo) token)有關(guān)的所有詞向量分別與 Value Matrix 相乘,得到對(duì)應(yīng)的 “值向量”。接著,模型會(huì)按照上一步計(jì)算得到的注意力權(quán)重,對(duì)這些值向量進(jìn)行加權(quán)求和,生成一個(gè)融合了上下文信息的“更新向量”。 ![]() Attention in transformers, step-by-step;3Blue1Brown ![]() value matrix與嵌入向量E相乘='value’(值向量),∑(value*weight)+'creature’的嵌入向量=被修飾后的’creature’向量 對(duì)于整個(gè)輸入文本來(lái)說(shuō),這一過(guò)程會(huì)對(duì)每個(gè) token 都執(zhí)行一次:模型將所有變化量與對(duì)應(yīng)的嵌入向量相加。這些更新后的向量會(huì)作為下一層計(jì)算的輸入,繼續(xù)被模型加工、理解。 ![]() Attention in transformers, step-by-step;3Blue1Brown 順帶一提,Value Matrix(值矩陣) 的維度為 12288 × 12288,如此高維的矩陣計(jì)算量非常龐大。為了降低復(fù)雜度,模型通常會(huì)采用“低秩分解”的方法,將它表示為兩個(gè)低維矩陣相乘的形式。 ![]() Attention in transformers, step-by-step;3Blue1Brown 如此一來(lái),嵌入向量先與右邊的矩陣相乘實(shí)現(xiàn)降維,再與左邊矩陣相乘,將結(jié)果重新映射回12288維度的嵌入空間。(矩陣乘法的結(jié)合律) ![]() 總結(jié) 上述內(nèi)容就是’single-head attention’(單頭注意力機(jī)制)的工作原理,整個(gè)過(guò)程可以概括為:橫向權(quán)重賦值+縱向權(quán)重賦值。在這其中,三個(gè)核心矩陣 Q、K、V 共同完成了輸入文本中各個(gè) token 之間的信息交互。(在我們上述的例子中就是為名詞尋找并融合對(duì)應(yīng)的形容詞的語(yǔ)義) Multi-Head Attention 多頭注意力機(jī)制(Multi-Head Attention) 相當(dāng)于多個(gè) Single-Head Attention 的并行疊加。每個(gè)“頭”(Head)都由參數(shù)各不相同的獨(dú)立的Q-K-V矩陣組成,每個(gè)頭構(gòu)成的語(yǔ)義空間關(guān)注不同的側(cè)面:有的著眼于句法結(jié)構(gòu),有的捕捉語(yǔ)義修飾,還有的專注于文本的語(yǔ)氣或風(fēng)格…… 在GPT-3模型中共有96個(gè)“頭”,也就是96個(gè)子空間。輸入的token在子空間中獨(dú)立“學(xué)習(xí)”得到各自的“更新向量”,96個(gè)子空間的“更新向量”之和+目標(biāo)token的嵌入向量得到整合了輸入文本所有語(yǔ)義、更精準(zhǔn)的嵌入向量。 MASK(掩碼) 現(xiàn)在回看這張結(jié)構(gòu)圖,右側(cè)的Decoder(解碼器)與左側(cè)的Encoder(編碼器)在結(jié)構(gòu)上略有不同:在解碼器的 Self-Attention 模塊中,多出了一層mask(掩碼)。 ![]() mask(掩碼)的作用是:避免后置詞對(duì)前置詞的干擾。 換句話說(shuō),在生成文本時(shí),模型只能“看到”已經(jīng)出現(xiàn)的詞,而不能提前窺視未來(lái)的詞。這樣才能確保模型的預(yù)測(cè)是逐詞生成的。 模型在生成第t 個(gè)詞時(shí),并不是“憑空”選擇,而是根據(jù)前面所有已生成的詞,計(jì)算出一個(gè)所有可能的詞的條件概率分布: ![]() 在實(shí)際操作中,為了讓文本更加自然,模型并不會(huì)總是選擇概率最高的詞,而是會(huì)在一定程度上采樣那些概率略低的詞。這也解釋了為什么在相同輸入的情況下,模型生成的結(jié)果可能有所不同。 mask(掩碼)具體的操作方法是在softmax之前添加一個(gè)遮罩矩陣(mask)。如果理解了前面的計(jì)算流程就很容易明白:在注意力機(jī)制中,attention block 會(huì)計(jì)算所有 Q 與 K 的點(diǎn)積(點(diǎn)積矩陣)。遮罩矩陣就是將點(diǎn)積矩陣中的左下角區(qū)域(即后置詞對(duì)應(yīng)的部分)全部替換為一個(gè)極大的負(fù)值。 這些極大負(fù)值在經(jīng)過(guò) softmax 函數(shù)變換后,輸出結(jié)果會(huì)接近于 0,相當(dāng)于在計(jì)算注意力權(quán)重時(shí)徹底屏蔽掉這些位置。 ![]() Attention in transformers, step-by-step;3Blue1Brown ![]() Attention in transformers, step-by-step;3Blue1Brown 在GPT模型中,訓(xùn)練階段和運(yùn)行階段都會(huì)使用masking,在訓(xùn)練階段,模型會(huì)被輸入完整的文本序列,通過(guò)不斷調(diào)整參數(shù)和權(quán)重,使它在每一步的輸出(預(yù)測(cè)下一個(gè)詞的概率分布)盡可能接近預(yù)期詞。 總結(jié) 在整個(gè) Transformer 結(jié)構(gòu)中,Attention block的運(yùn)算只占模型的1/3,剩下的2/3發(fā)生在Multilayer Perceptron——'MLP’(多層感知器)中。當(dāng)一個(gè)詞經(jīng)過(guò)注意力機(jī)制“吸收”了一部分上下文語(yǔ)義后,MLP 層會(huì)進(jìn)一步對(duì)它進(jìn)行非線性變換。隨著詞向量流經(jīng)越來(lái)越多的層,每一次迭代都讓它從周圍的 embedding 中獲得更豐富、更細(xì)膩的語(yǔ)義信息,不僅包括詞義和句法,還可能捕捉到文本的語(yǔ)氣、情感,甚至文藝,哲學(xué)或?qū)W術(shù)語(yǔ)境…… 總結(jié)來(lái)說(shuō),所有的神經(jīng)網(wǎng)絡(luò)模型所做的工作都是:提供一個(gè)可調(diào)節(jié)的數(shù)學(xué)模型框架,通過(guò)訓(xùn)練數(shù)據(jù)不斷優(yōu)化其中的參數(shù)(權(quán)重和偏置),讓模型能夠捕捉輸入數(shù)據(jù)的規(guī)律并進(jìn)行預(yù)測(cè)。 由于向量空間中的基本變換是線性的,而現(xiàn)實(shí)世界中的規(guī)律往往是高度非線性的。所以神經(jīng)網(wǎng)絡(luò)都是多層線性變換與非線性函數(shù)(ReLU)的疊加,經(jīng)過(guò)海量計(jì)算,逐步逼近和擬合現(xiàn)實(shí)世界復(fù)雜的非線性關(guān)系。 ![]() ReLU函數(shù) 這些矩陣中的特定數(shù)值究竟是如何形成的無(wú)法完全解釋。它們是在訓(xùn)練過(guò)程中,為了達(dá)到預(yù)期的結(jié)果而生成的——計(jì)算機(jī)為它們找到了自己的“位置”。這些數(shù)值的初始生成看似隨機(jī),但在隨機(jī)背后,或許隱藏著計(jì)算機(jī)探索出的某種底層規(guī)律,在那里,如同存在一個(gè)由運(yùn)算法則支撐的獨(dú)立世界。 這有點(diǎn)類似宇宙的演化...無(wú)數(shù)不確定的因素交織,造就了如今的世界。科學(xué)家試圖用一些規(guī)則解釋,但理論終究是不完備的,因?yàn)槟承╇S機(jī)事件的發(fā)生,永遠(yuǎn)無(wú)法被清晰說(shuō)明。 ?水平有限,歡迎指正 對(duì)于新興行業(yè)(當(dāng)然這也并不新)總有人為其附上“神秘主義”色彩,尤其當(dāng)“專業(yè)人士”擺弄出高深莫測(cè)的模樣。“神秘主義”由于未知而滋生恐懼,但是這種未知是可以被逐步消解的,因?yàn)橹灰侨祟悇?chuàng)造出的東西就不會(huì)超過(guò)人腦所能理解的范圍。 參考內(nèi)容: 1.Neural Networks and Deep Learning;Michael Nielsen; http:///index.html 2.Understanding LSTM Networks;Chris Olah; https://colah./posts/2015-08-Understanding-LSTMs/ 3.Attention Is All You Need;Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N. Gomez,?ukasz Kaiser,Illia Polosukhin.arXiv preprint arXiv:1706.03762v7 4.Attention in transformers, step-by-step;3Blue1Brown;【官方雙語(yǔ)】直觀解釋注意力機(jī)制,Transformer的核心 | 【深度學(xué)習(xí)第6章】_嗶哩嗶哩_bilibili |
|
|
來(lái)自: 天承辦公室 > 《002博弈規(guī)則》