楊磊
編者按:隨著ChatGPT的橫空出世,全世界的AI熱情再度被激活。ChatGPT表現(xiàn)出的超強的語言生成、理解和知識推理能力都得益于自然語言處理的發(fā)展。ChatGPT的基礎模型采用Transformer框架,它是一種基于自注意力機制的深度神經(jīng)網(wǎng)絡模型,可以高效并行處理序列數(shù)據(jù)。因此,我們將分兩期來探討Transformer框架,本期將介紹Transformer的發(fā)展歷史、基本原理和未來展望,希望能給大家?guī)韱l(fā)。
Transformer的發(fā)展歷史可以追溯到2017年,谷歌公司的研究人員在發(fā)表的論文Attention Is All You Need中首次介紹了Transformer,并將其應用于機器翻譯任務。這篇論文引起了廣泛關注,因為它不僅在機器翻譯任務中表現(xiàn)出色,而且還提供了一種新的思路來處理序列數(shù)據(jù)。在此之后,許多研究人員開始探索如何改進和擴展Transformer框架。例如,有些人提出了基于Transformer的語言模型,以生成自然語言文本。還有人提出了BERT(Bidirectional Encoder Representations from Transformers)模型,它使用Transformer編碼器來預訓練深度雙向表示,從而在多個自然語言處理任務中取得了最先進的結果。ChatGPT是一個基于Transformer框架的對話生成系統(tǒng),它可以生成自然流暢的對話,并且已經(jīng)在許多任務中取得了最先進的結果。具體來說,ChatGPT使用了一個預訓練的Transformer框架,該模型已經(jīng)在大規(guī)模語料庫上進行了訓練,并學習了自然語言的結構和語義信息。在生成對話時,ChatGPT會將用戶輸入作為輸入序列,并使用Transformer框架來生成下一句話。這個過程可以不斷重復,直到生成滿意的對話才結束。與傳統(tǒng)的基于規(guī)則或模板的對話系統(tǒng)相比,ChatGPT可以更好地處理復雜的對話場景,并且可以根據(jù)上下文生成自然流暢的回復。此外,由于Transformer可以并行計算,所以ChatGPT可以實現(xiàn)快速響應,并且可以處理大量的對話請求。
從卷積神經(jīng)網(wǎng)絡(CNN)到Transformer的發(fā)展歷程
卷積神經(jīng)網(wǎng)絡是研究人員模仿人類視皮層中感受野的生理機制開發(fā)的一類前饋神經(jīng)網(wǎng)絡。相比于全連接前饋神經(jīng)網(wǎng)絡,CNN利用網(wǎng)絡內(nèi)部的卷積核對輸入信息進行卷積操作,提取出輸入信息的局部特征,再由這些局部特征推斷出輸入信息的整體特征,進而完成分類任務。由于卷積神經(jīng)網(wǎng)絡擅長處理具有空間結構特征的圖像數(shù)據(jù),并最先在圖像識別領域取得很好的識別效果,隨后研究人員嘗試將CNN網(wǎng)絡用于環(huán)境聲音分類領域,開啟了卷積神經(jīng)網(wǎng)絡在自然語言處理、聲音識別等方面的研究工作,CNN因其獨特的卷積結構在模式識別、特征處理等方面取得顯著效果,獲得研究人員的廣泛關注,并成為該領域的一個研究熱點。如圖1所示,CNN網(wǎng)絡通常由輸入層、卷積層、激活函數(shù)、池化層、全連接層和輸出層組成,其中a、b、c、d代表網(wǎng)絡中相應模塊的層數(shù)。
由于CNN按輸入層-中間層-輸出層的順序依次傳遞信息,前一層的神經(jīng)元只能將信息傳遞給后一層神經(jīng)元,各層內(nèi)部的神經(jīng)元之間及神經(jīng)元本身不會建立信息反饋,所以前饋神經(jīng)網(wǎng)絡只能處理當前時刻的輸入信息,無法和過去一段時間內(nèi)的信息相聯(lián)系,非常不適合處理時序數(shù)據(jù)。循環(huán)神經(jīng)網(wǎng)絡(RNN)通過在隱藏層增置一個內(nèi)部狀態(tài),使得神經(jīng)元的輸出信息在向下一層網(wǎng)絡傳遞的同時,也可以反饋給其本身,從而形成一個具有環(huán)路的信息傳遞路徑,它的參數(shù)學習采用隨時間反向傳播算法。如圖2所示,其中為一給定輸入序列,為隱藏層的神經(jīng)元的輸出狀態(tài)。
隨著序列長度的增加,RNN網(wǎng)絡的計算量會呈級數(shù)增長,由于它在訓練中存在梯度爆炸和消失問題,這導致網(wǎng)絡在對當前時刻的片段信息進行判斷時會忽略以往較長時刻的片段信息。為有效改善這一問題,長短時記憶網(wǎng)絡(LSTM)在RNN結構的基礎上,將一類門控機制的內(nèi)部狀態(tài)參數(shù)引入隱藏層,通過該變量選擇性地加入當前時刻的新信息和遺忘一些以往積累的舊信息,從而達到有效控制信息積累的目的。與CNN網(wǎng)絡相比,循環(huán)神經(jīng)網(wǎng)絡更符合生物神經(jīng)網(wǎng)絡的特點,它可以有效地挖掘時間序列中隱含的時間結構特征,在處理視頻、音頻、文本等序列化結構數(shù)據(jù)方面獲得很好的表現(xiàn),成為目前非常流行的一類深度學習算法。
深度學習中的注意力機制與生物的選擇性視覺機能類似,它能從大量的輸入信息中關注到少量的重要信息忽略非重要信息。注意力機制在計算能力有限的情況下可以有效地解決系統(tǒng)計算資源分配的瓶頸,提高計算機系統(tǒng)的運算效率。相比于RNN和CNN,Transformer利用自注意力機制可以更好地捕捉長距離依賴關系,并且可以并行計算,因此在許多自然語言處理任務中表現(xiàn)出色。自注意力機制是一種用于對序列數(shù)據(jù)進行加權的機制,它可以在不同位置上對輸入進行加權,從而更好地捕捉序列中的相關信息。在自注意力機制中,每個單詞的向量表示都會考慮到其他單詞的向量表示,并且每個單詞的權重是通過計算該單詞與其他單詞的相似度得出的。Transformer使用了多頭注意力機制來進一步改進自注意力機制。多頭注意力機制允許模型在不同的“頭”上執(zhí)行多個自注意力操作,從而可以同時學習多個不同的表示。具體來說,多頭注意力機制將輸入向量拆分為多個向量,然后在每個向量上執(zhí)行自注意力操作。最后,這些向量被連接起來并通過一個線性變換來生成最終的輸出。
簡述Transformer的工作原理
Transformer是一種用于序列到序列(Sequence-to-Sequence)任務的神經(jīng)網(wǎng)絡模型,如機器翻譯、語音識別和生成對話等。它是第一個完全依賴于自注意力機制來計算其輸入和輸出的表示的轉(zhuǎn)換模型。
1.Transformer的模型架構
序列到序列模型采用的是編碼器-解碼器結構,在每一個步長里,模型利用前一個步長中生成的向量和該步長的輸入,生成輸出符號。Transformer架構如圖3所示,編碼器-解碼器結構采用堆疊的多頭注意力機制加全連接層,圖3中左邊的是編碼器結構,右邊的是解碼器結構。
圖3中編碼器由6個相同的塊結構堆疊而成(N=6),每個塊結構進一步分成兩個子層,即一個多頭的自注意力機制和一個前饋網(wǎng)絡全連接層,在塊中的每一個子層之后,增加一個歸一化層(Add&Norm),每個子層的輸出均為歸一化的LayerNorm,包括詞嵌入層,模塊中所有子層的輸出的維數(shù)均為512。解碼器也由6個相同的塊結構堆疊而成(N=6),每個塊結構在編碼器兩個子層的基礎之上,增加了第三個子層,即增加了一個多頭自注意力子層。與編碼器類似,在塊中的每一個子層之后,增加一個歸一化層(Add&Norm)。在解碼器端,對解碼器堆棧中的自注意力子層進行了修改,以防止位置編碼和后續(xù)位置編碼相關,通過這種掩蔽,確保了對位置i的預測只能依賴于小于i的位置的已知輸出。
2.多頭注意力機制
Transformer模型通過查詢-鍵-值的模式使用多頭注意力,如圖4所示。假設輸入序列,輸出序列,首先將輸入序列X線性變換到三個不同空間,生成相應的查詢矩陣Q、鍵矩陣K和值矩陣V,變換過程如下:
其中,、和分別為線性變換的參數(shù)矩陣,其作用是將Q、K、V矩陣分別投影到第i個維度上,、和分別為查詢向量q、鍵向量k和值向量v的維度,為計算方便,一般設 。
其次,將每一位置的查詢向量和圖4的計算方式得到輸出向量,輸出向量代表多頭注意力。
輸出向量進一步表示為:
將輸出向量帶入softmax函數(shù),則有:
最終結果為:
其中,為評分函數(shù),代表輸出和輸入序列的位置,表示第t個輸出關注到第i個值向量的權重。
然后使用放縮因子調(diào)整評分函數(shù)的數(shù)值,使其不至過大,保證梯度下降過程的穩(wěn)定收斂。輸出序列H數(shù)學表達如下:
最后將輸出序列H經(jīng)過一定的線性變化得到代表整個輸入序列的注意力值。
其中,為可學習的參數(shù)矩陣。相比于傳統(tǒng)的注意力機制,多頭注意力可降低維度將原始的注意力層進行集成,模型可以關注到來自不同子空間下的不同位置上的信息。子空間的劃分使其表示能力更強,如圖5所示。每一個子空間的維度都變小了,所有最后使用的參數(shù)總數(shù)并沒有顯著增加。
3.位置編碼
由于Transformer模型中既沒有遞歸,也沒有卷積,如果需要獲得輸入序列精準的位置信息,必須插入位置編碼。位置編碼精準地描述了輸入序列中各個單詞的絕對和相對位置信息,即在編碼器-解碼器的底部輸入嵌入中注入“位置編碼”,位置編碼和輸入嵌入有相同的維度,所以二者可以實現(xiàn)相加運算,位置編碼方式可以有多種,在Transformer模型中采用的是頻率不同的三角函數(shù):
其中,pos代表在輸入序列中每一幀的實際位置,t為輸入序列的第t個維度,是每一幀向量的特征維度。對于位置相同維度不同的特征,正余弦函數(shù)可以用不同頻率表示;對于維度相同而位置不同的特征,正余弦函數(shù)則可以用不同相位表達。通過正余弦函數(shù)編碼位置信息,可使同一序列上任一位置的編碼信息由其他位置的編碼信息線性表示,如上頁圖6所示。
Transformer的未來展望
未來,Transformer模型的發(fā)展趨勢可能會包括以下方面:
一是更好的表征方法。隨著計算能力的提高和數(shù)據(jù)集的增加,未來Transformer模型可能會變得更大更復雜。目前已經(jīng)有許多種不同的預訓練方法,但是還有很大的改進空間。未來可能會出現(xiàn)更好的預訓練方法,可以更好地利用大規(guī)模數(shù)據(jù)集進行模型訓練。大模型可以從更多的訓練數(shù)據(jù)中受益,而小模型可以快速穩(wěn)定,但無法從更多的訓練樣本中受益。因此,大規(guī)模模型可以進一步提高其表征學習能力。
二是更廣泛的應用場景。目前,Transformer主要應用于自然語言處理領域,但未來可能會擴展到其他領域,如計算機視覺。視覺Transformer網(wǎng)絡作為一種新的視覺特征學習網(wǎng)絡,在連接范圍、權重動態(tài)性以及位置表示能力等方面與CNN網(wǎng)絡差異較大。其遠距離建模能力和動態(tài)的響應特質(zhì)使之具備了更為強大的特征學習能力,但同時也帶來了嚴重的數(shù)據(jù)依賴和算力資源依賴等問題。對視覺Transformer的效率和能力的研究仍將是未來的主要研究方向之一。此外,Transformer模型為多模態(tài)數(shù)據(jù)特征學習和多任務處理提供了一種統(tǒng)一的解決思路,基于Transformer的視覺模型有望實現(xiàn)更好的信息融合和任務融合。
三是更好的可視化和可解釋性。目前,可視化和可解釋Transformer仍然是一個未解決的問題,需要獲得空間精確的激活特定可視化的方法。隨著這方面研究的進展,我們可以更好地理解Transformer模型,也可以診斷決策過程中的錯誤行為和偏見。它還可以促進新穎架構的設計,使我們能夠避免偏見,使得Transformer模型更容易被理解和使用。