大道至簡(jiǎn):這一輪人工智能(AI)突破的原因其實(shí)很「簡(jiǎn)單」

0 評(píng)論 2292 瀏覽 10 收藏 24 分鐘

大道至簡(jiǎn),本文用通俗易懂的語(yǔ)言解釋了Transformer的核心原理,對(duì)于我們這種沒(méi)有基礎(chǔ)的普通人,也是能快速理解的,也能對(duì)當(dāng)前的大模型有更深入的認(rèn)識(shí)。

過(guò)去幾年中,人工智能(AI)技術(shù)的澎湃發(fā)展引領(lǐng)了一場(chǎng)前所未有的工業(yè)和科技革命。在這場(chǎng)革命的前沿,以O(shè)penAI的GPT系列為代表的大型語(yǔ)言模型(LLM)成為了研究和應(yīng)用的熱點(diǎn)。

IDC近日發(fā)布發(fā)布的《全球人工智能和生成式人工智能支出指南》顯示,2022年全球人工智能(AI)IT總投資規(guī)模為1324.9億美元,并有望在2027年增至5124.2億美元,年復(fù)合增長(zhǎng)率(CAGR)為31.1%。

而帶來(lái)這一輪人工智能科技革命的技術(shù)突破是來(lái)自2017年的一篇論文《Attention is All You Need》,在這篇論文中,首次提出了Transformer架構(gòu),這個(gè)架構(gòu)是目前大語(yǔ)言模型的核心技術(shù)基礎(chǔ)。GPT中的T就是Transformer的縮寫(xiě)。

下面,我先帶大家簡(jiǎn)明了解下這個(gè)突破性架構(gòu)的核心原理(原文:What Are Transformer Models and How Do They Work?),其實(shí)大道至簡(jiǎn),原理沒(méi)有很復(fù)雜,對(duì)于我們這種沒(méi)有基礎(chǔ)的普通人,也是能快速理解的,也能對(duì)當(dāng)前的大模型有更深入的認(rèn)識(shí)。

順便拋出一個(gè)問(wèn)題,為什么這輪技術(shù)變革不是來(lái)自Google、Meta、百度阿里這樣的「?jìng)鹘y(tǒng)」AI強(qiáng)勢(shì)公司,而是初創(chuàng)公司OpenAI引領(lǐng)的呢?

Transformer是機(jī)器學(xué)習(xí)中最令人興奮的新進(jìn)展之一。它們首次在論文《Attention is All You Need》中被介紹。Transformer可以用來(lái)寫(xiě)故事、論文、詩(shī)歌,回答問(wèn)題,進(jìn)行語(yǔ)言翻譯,與人聊天,甚至能通過(guò)一些對(duì)人類(lèi)來(lái)說(shuō)很難的考試!但它們究竟是什么呢?你會(huì)高興地發(fā)現(xiàn),Transformer模型的架構(gòu)并不復(fù)雜,它實(shí)際上是一些非常有用的組件的組合,每個(gè)組件都有其特定的功能。在這篇博客文章中,你將了解所有這些組件。

這篇文章包含了一個(gè)簡(jiǎn)單的概念性介紹。如果你想了解更多關(guān)于Transformer模型及其工作原理的詳細(xì)描述,請(qǐng)查看Jay Alammar在Cohere發(fā)布的兩篇出色的文章:

  1. The illustrated transformer 《圖解Transformer》
  2. How GPT3 works 《GPT3是如何工作的》

簡(jiǎn)單來(lái)說(shuō),Transformer都做些什么呢?

想象一下你在手機(jī)上寫(xiě)短信。每打一個(gè)詞,手機(jī)可能會(huì)推薦給你三個(gè)詞。例如,如果你輸入“Hello, how are”,手機(jī)可能會(huì)推薦“you”或者“your”作為下一個(gè)詞。當(dāng)然,如果你繼續(xù)選擇手機(jī)推薦的詞語(yǔ),你會(huì)很快發(fā)現(xiàn)這些詞語(yǔ)組成的信息毫無(wú)意義。如果你看看每組連續(xù)的三四個(gè)詞,它們可能聽(tīng)起來(lái)有點(diǎn)道理,但這些詞并沒(méi)有連貫地組成有意義的句子。這是因?yàn)槭謾C(jī)中的模型不會(huì)攜帶整個(gè)信息的上下文,它只是預(yù)測(cè)在最近的幾個(gè)詞之后,哪個(gè)詞更可能出現(xiàn)。而Transformer則不同,它們能夠追蹤正在寫(xiě)的內(nèi)容的上下文,這就是為什么它們寫(xiě)出的文本通常都是有意義的。

手機(jī)可以對(duì)短信中使用的下一個(gè)單詞給出建議,但沒(méi)有生成連貫文本的能力

我必須得說(shuō),當(dāng)我第一次發(fā)現(xiàn)Transformer是一次生成一個(gè)詞來(lái)構(gòu)建文本的時(shí)候,我簡(jiǎn)直不敢相信。首先,這不是人類(lèi)形成句子和思想的方式。我們通常先形成一個(gè)基本的思想,然后開(kāi)始細(xì)化它,添加詞匯。這也不是機(jī)器學(xué)習(xí)模型處理其他事情的方式。例如,圖像的生成就不是這樣的。大多數(shù)基于神經(jīng)網(wǎng)絡(luò)的圖形模型會(huì)先形成圖像的粗略版本,然后慢慢細(xì)化或增加細(xì)節(jié),直到完美。那么,為什么Transformer模型要一詞一詞地構(gòu)建文本呢?一個(gè)答案是,因?yàn)檫@樣做效果非常好。更令人滿意的答案是,因?yàn)門(mén)ransformer在跟蹤上下文方面實(shí)在是太厲害了,所以它選擇的下一個(gè)詞正是繼續(xù)推進(jìn)一個(gè)想法所需要的。

那么,Transformer是如何被訓(xùn)練的呢?需要大量的數(shù)據(jù),實(shí)際上是互聯(lián)網(wǎng)上的所有數(shù)據(jù)。所以,當(dāng)你在Transformer輸入句子“Hello, how are”時(shí),它就知道,基于互聯(lián)網(wǎng)上的所有文本,最好的下一個(gè)詞是“you”。如果你給它一個(gè)更復(fù)雜的命令,比如說(shuō),“write a story.”,它可能會(huì)想出來(lái)下一個(gè)合適的詞是“Once”。然后它將這個(gè)詞添加到命令中,發(fā)現(xiàn)下一個(gè)合適的詞是“upon”,依此類(lèi)推。一詞一詞地,它將繼續(xù)寫(xiě)下去,直到寫(xiě)出一個(gè)故事。

命令:Write a story.

回應(yīng):Once

下一個(gè)命令:Write a story. Once

回應(yīng):upon

下一個(gè)命令:Write a story. Once upon

回應(yīng):a

下一個(gè)命令:Write a story. Once upon a

回應(yīng):time

下一個(gè)命令:Write a story. Once upon a time

回應(yīng):there

等等。

現(xiàn)在我們知道了Transformer都做些什么,讓我們來(lái)看看它的架構(gòu)。如果你見(jiàn)過(guò)Transformer模型的架構(gòu),你可能像我第一次看到它時(shí)一樣驚嘆,它看起來(lái)相當(dāng)復(fù)雜!然而,當(dāng)你把它分解成最重要的部分時(shí),就沒(méi)那么難了。

Transformer主要有四個(gè)部分:

  1. 分詞(Tokenization)
  2. 嵌入(Embedding)
  3. 位置編碼(Positional encoding)
  4. Transformer塊(好幾個(gè)這樣的塊)
  5. Softmax

其中,第4個(gè)部分,即Transformer塊,是所有部分中最復(fù)雜的。這些塊可以被連在一起,每個(gè)塊包含兩個(gè)主要部分:注意力機(jī)制和前饋組件。

讓我們逐個(gè)學(xué)習(xí)這些部分。

一、Tokenization(分詞)

分詞是最基本的步驟。它涵蓋了一個(gè)龐大的詞匯庫(kù),包括所有的單詞、標(biāo)點(diǎn)符號(hào)等。分詞步驟會(huì)處理每一個(gè)單詞、前綴、后綴以及標(biāo)點(diǎn)符號(hào),并將它們轉(zhuǎn)換為詞庫(kù)中已知的詞匯。

舉例來(lái)說(shuō),如果句子是“Write a story.”,那么對(duì)應(yīng)的4個(gè)token將是<write>,<a>,<story>和<.>。

二、Embedding

一旦輸入內(nèi)容被分詞后,就需要將單詞轉(zhuǎn)換成機(jī)器更容易處理的數(shù)字了。為此,我們使用embedding(嵌入)技術(shù)。Embedding是任何大型語(yǔ)言模型中最重要的部分之一;它是實(shí)現(xiàn)文本與數(shù)字轉(zhuǎn)換的橋梁。由于人類(lèi)善于處理文本而計(jì)算機(jī)善于處理數(shù)字,因此這個(gè)橋梁越強(qiáng)大,語(yǔ)言模型就越強(qiáng)大。

簡(jiǎn)而言之,文本嵌入將每個(gè)文本轉(zhuǎn)換為一個(gè)向量。如果兩個(gè)文本片段相似,則其對(duì)應(yīng)向量中的數(shù)字也相似(這意味著同一位置上的每對(duì)數(shù)字都相似)。否則,如果兩個(gè)文本片段不同,則其對(duì)應(yīng)向量中的數(shù)字也不同。

盡管嵌入是數(shù)值化的,但我喜歡從幾何角度來(lái)想象它們。試想一下存在一個(gè)非常簡(jiǎn)單的嵌入方式,可以將每個(gè)單詞映射到長(zhǎng)度為2(即包含2個(gè)數(shù)值) 的向量上。如果我們按照這兩個(gè)數(shù)值所表示坐標(biāo)定位每個(gè)單詞(比如在街道和大道上),那么所有單詞都站在一個(gè)巨大平面上。在這張平面上,相似的單詞會(huì)靠近彼此,而不同的單詞則會(huì)遠(yuǎn)離。例如,在下面這個(gè)嵌入中,“cherry”的坐標(biāo)是[6,4],與“strawberry” [5,4] 接近但與“castle” [1,2] 相距較遠(yuǎn)。

在更大的embedding情況下,每個(gè)單詞都被賦值到一個(gè)更長(zhǎng)的向量(比如長(zhǎng)度為4096),那么這些單詞不再存在于二維平面上,而是存在于一個(gè)大的4096維空間中。然而,在這個(gè)高維大空間中,我們?nèi)匀豢梢哉J(rèn)為單詞之間有近有遠(yuǎn),因此embedding概念仍然具有意義。

詞embedding可以推廣到文本embedding,包括整個(gè)句子、段落甚至更長(zhǎng)的文本都會(huì)被賦值到一個(gè)向量中。然而,在transformer的情形中,我們將使用詞嵌入,這意味著句子中的每個(gè)單詞都會(huì)被賦值到相應(yīng)的向量中。更具體地說(shuō),輸入文本中的每個(gè)token都將被定位到其對(duì)應(yīng)的embedding向量中。

例如,如果我們正在考慮的句子是“Write a story.”并且標(biāo)記是<write>,<a>,<story>和<.>。那么每個(gè)標(biāo)記都將被賦值到一個(gè)向量中,并且我們將有四個(gè)向量。

通常embedding將每個(gè)單詞(token)賦值到一個(gè)數(shù)字列表中

三、Positional encoding(位置編碼)

一旦我們獲得了與句子中每個(gè)token對(duì)應(yīng)的向量,下一步就是將它們?nèi)哭D(zhuǎn)換為一個(gè)向量進(jìn)行處理。將一堆向量轉(zhuǎn)換為一個(gè)向量最常見(jiàn)的方法是逐分量相加。

也就是說(shuō),我們單獨(dú)添加每個(gè)坐標(biāo)。例如,如果這些(長(zhǎng)度為2)向量分別是[1,2]和[3,4],則它們對(duì)應(yīng)的總和為[1+3, 2+4],即[4,6]。這種方法可以工作,但有一個(gè)小細(xì)節(jié)需要注意:加法滿足交換律,也就是說(shuō)如果你以不同順序添加相同的數(shù)字,則會(huì)得到相同的結(jié)果。

在這種情況下,“我不難過(guò)我很開(kāi)心”和“我不開(kāi)心我很難過(guò)”兩句話將得到相同的向量結(jié)果(假設(shè)它們具有相同單詞但順序不同)。

這并不好。

因此我們必須想出一些方法來(lái)給出兩個(gè)句子不同的向量表示方式。多種方法可行,在本文中我們選擇其中之一:位置編碼(Positional Encoding) 。位置編碼包括將預(yù)定義序列中的一系列向量添加到單詞嵌入(embedding) 向量上去,并確保我們獲得每個(gè)句子都有唯一表示形式且具有相似語(yǔ)義結(jié)構(gòu)、僅單詞順序不同的句子將被分配到不同的向量。在下面的示例中,“Write”、“a”、“story”和“.”所對(duì)應(yīng)的向量成為帶有位置信息標(biāo)簽“Write(1)”,“a(2)”,“story(3)”和“. (4)”的修改后向量。

位置編碼會(huì)為每個(gè)單詞添加一個(gè)位置向量,以便跟蹤單詞的位置

現(xiàn)在我們知道每個(gè)句子都有一個(gè)獨(dú)特的向量,這個(gè)向量攜帶了句子中所有單詞及其順序的信息,因此我們可以進(jìn)入下一步。

四、Transformer block

讓我們回顧一下目前為止的內(nèi)容。單詞被輸入并轉(zhuǎn)換成token(分詞),然后考慮到它們的順序(位置編碼)。這給了我們每個(gè)輸入模型的token一個(gè)向量?,F(xiàn)在,下一步是預(yù)測(cè)這個(gè)句子中的下一個(gè)單詞。這是通過(guò)一個(gè)非常大、非常復(fù)雜的神經(jīng)網(wǎng)絡(luò)來(lái)完成的,該網(wǎng)絡(luò)專(zhuān)門(mén)訓(xùn)練用于預(yù)測(cè)句子中的下一個(gè)單詞。

我們可以訓(xùn)練這樣一個(gè)大型網(wǎng)絡(luò),但是通過(guò)添加關(guān)鍵步驟:Attention(注意力)組件,我們可以極大地改進(jìn)它。在開(kāi)創(chuàng)性論文《Attention is All you Need》中引入的注意力機(jī)制是Transformer模型的關(guān)鍵成分之一,也是它們?nèi)绱擞行У脑蛑?。下面將解釋注意力機(jī)制,但現(xiàn)在先想象它作為一種向文本中每個(gè)單詞添加上下文的方式。

在前饋網(wǎng)絡(luò)的每個(gè)塊中都添加了注意力組件。因此,如果您想象一個(gè)大型前饋神經(jīng)網(wǎng)絡(luò),其目標(biāo)是預(yù)測(cè)下一個(gè)單詞,并由幾個(gè)較小的神經(jīng)網(wǎng)絡(luò)塊組成,則在每個(gè)這些塊中都添加了注意力組件。然后,Transformer的每個(gè)組件(稱(chēng)為transformer 塊)由兩個(gè)主要組件構(gòu)成:

  1. 注意力組件
  2. 前饋組件

Transformer是許多Transformer塊的串聯(lián)。

Transformer是許多Transformer塊的串聯(lián)。每個(gè)Transformer塊由一個(gè)注意力組件和一個(gè)前饋組件(神經(jīng)網(wǎng)絡(luò))組成。

Attention

Attention步驟涉及一個(gè)非常重要的問(wèn)題:上下文問(wèn)題。有時(shí),同一個(gè)單詞可以用不同的意思。這往往會(huì)讓語(yǔ)言模型感到困惑,因?yàn)閑mbedding只是將單詞賦值到向量中,而不知道他們使用的單詞定義。

Attention是一種非常有用的技術(shù),可以幫助語(yǔ)言模型理解上下文。為了理解Attention的工作原理,請(qǐng)考慮以下兩個(gè)句子:

句子1:The bank of the river句子2:Money in the bank.

正如您所看到的,單詞“bank”在兩個(gè)句子中都出現(xiàn)了,但含義不同。在第一個(gè)句子中,我們指的是河流旁邊的土地,在第二個(gè)句子中則指持有貨幣的機(jī)構(gòu)。計(jì)算機(jī)對(duì)此一無(wú)所知,因此我們需要以某種方式將這些知識(shí)注入其中。什么能幫助我們呢?好吧,似乎句子中其他單詞可以拯救我們。對(duì)于第一個(gè)句子,“the”和“of”這些單詞對(duì)我們沒(méi)有任何作用。但是,“river”這個(gè)單詞讓我們知道正在談?wù)摵恿髋赃叺耐恋亍M瑯?,在第二個(gè)句子中,“money”這個(gè)單詞讓我們明白“bank”的意思現(xiàn)在是指持有貨幣的機(jī)構(gòu)。

Attention有助于根據(jù)句子(或文本)中的其他單詞為每個(gè)單詞提供上下文

簡(jiǎn)而言之,注意力機(jī)制的作用是將句子(或文本片段)中的單詞在詞嵌入中靠近。這樣,在句子“Money in the bank”中,“bank”一詞將被移動(dòng)到“money”的附近。同樣,在句子“The bank of the river”中,“bank”一詞將被移動(dòng)到“river”的附近。這樣,兩個(gè)句子中修改后的單詞“bank”都會(huì)攜帶周?chē)鷨卧~的某些信息,為其添加上下文。

Transformer模型中使用的注意力機(jī)制實(shí)際上更加強(qiáng)大,它被稱(chēng)為多頭注意力。在多頭注意力中,使用了幾個(gè)不同的嵌入來(lái)修改向量并為其添加上下文。多頭注意力已經(jīng)幫助語(yǔ)言模型在處理和生成文本時(shí)達(dá)到了更高的效率水平。如果您想更詳細(xì)地了解注意力機(jī)制,請(qǐng)查看這篇博客文章及其相應(yīng)視頻。

五、The Softmax Layer

現(xiàn)在你已經(jīng)知道一個(gè)transformer是由許多層transformer塊組成的,每個(gè)塊都包含一個(gè)attention和一個(gè)feedforward層,你可以將它看作是一個(gè)大型神經(jīng)網(wǎng)絡(luò),用于預(yù)測(cè)句子中的下一個(gè)單詞。Transformer為所有單詞輸出分?jǐn)?shù),其中得分最高的單詞被賦予最有可能成為句子中下一個(gè)單詞的概率。

Transformer的最后一步是softmax層,它將這些分?jǐn)?shù)轉(zhuǎn)換為概率(總和為1),其中得分最高對(duì)應(yīng)著最高的概率。然后我們可以從這些概率中進(jìn)行采樣以獲取下一個(gè)單詞。在下面的例子中,transformer給“Once”賦予了0.5的最高概率,并給“Somewhere”和“There”賦予了0.3和0.2 的概率。一旦我們進(jìn)行采樣,“once”就被選定,并且那就是transformer 的輸出結(jié)果。

softmax層將分?jǐn)?shù)轉(zhuǎn)換為概率,這些概率用于選擇文本中的下一個(gè)單詞

現(xiàn)在怎么辦?

我們只需要重復(fù)這個(gè)步驟?,F(xiàn)在我們將文本“Write a story. Once”輸入模型中,很可能輸出結(jié)果是“upon”。再次重復(fù)此步驟,Transformer最終會(huì)寫(xiě)出一個(gè)故事,例如:“Once upon a time, there was a …”(“從前有一天,有一個(gè)……”)。

Summary總結(jié)

在這篇文章中,您已經(jīng)學(xué)習(xí)了transformers的工作原理。它們由幾個(gè)塊組成,每個(gè)塊都有自己的功能,共同工作以理解文本并生成下一個(gè)單詞。這些塊如下:

  • Tokenizer:將單詞轉(zhuǎn)換為token。
  • Embedding:將token轉(zhuǎn)換為數(shù)字(向量)。
  • Positional encoding:在文本中添加單詞順序。
  • Transformer block:猜測(cè)下一個(gè)單詞。它由注意力塊和前饋塊組成。
  • Attention:為文本添加上下文信息。
  • Feedforward:是Transformer神經(jīng)網(wǎng)絡(luò)中的一個(gè)模塊,用于猜測(cè)下一個(gè)單詞。
  • Softmax函數(shù): 將得分轉(zhuǎn)換為概率以便采樣出下一個(gè)單詞。

重復(fù)執(zhí)行這些步驟就可以寫(xiě)出您所看到的transformers創(chuàng)建的驚人文本。

Post Training(后期訓(xùn)練)

現(xiàn)在你已經(jīng)知道了Transformer是如何工作的,但我們還有一些工作要做。

想象一下:你扮演Transformer,“阿爾及利亞的首都是什么?” 我們希望它回答“阿爾及爾”,然后繼續(xù)進(jìn)行。然而,這個(gè)Transformer是在整個(gè)互聯(lián)網(wǎng)上訓(xùn)練出來(lái)的?;ヂ?lián)網(wǎng)很大,并不一定是最好的問(wèn)題/答案庫(kù)。例如,許多頁(yè)面會(huì)列出長(zhǎng)長(zhǎng)的問(wèn)題列表而沒(méi)有答案。

在這種情況下,“阿爾及利亞的首都是什么?”之后的下一個(gè)句子可能會(huì)是另一個(gè)問(wèn)題,比如“阿爾及利亞人口數(shù)量?”,或者“布基納法索首都在哪里?”。Transformer不像人類(lèi)那樣思考他們的回應(yīng),它只是模仿它看到過(guò)(或提供過(guò))數(shù)據(jù)集中所見(jiàn)到內(nèi)容。

那么我們?cè)撛鯓邮筎ransformer回答問(wèn)題呢?

答案就在于后期訓(xùn)練。

就像您教導(dǎo)一個(gè)人完成某些任務(wù)一樣,您可以讓Transformer執(zhí)行任務(wù)。一旦將Transformer訓(xùn)練成整個(gè)互聯(lián)網(wǎng)上使用時(shí),則需要再次對(duì)其進(jìn)行大量數(shù)據(jù)集培訓(xùn)以涉及各種問(wèn)題和相應(yīng)答案。Transformer(就像人類(lèi)一樣)對(duì)他們最后學(xué)到的事情有偏見(jiàn),因此后期訓(xùn)練已被證明是幫助Transformer成功完成所要求任務(wù)的非常有用的步驟。

后期訓(xùn)練還可以幫助處理許多其他任務(wù)。例如,可以使用大量對(duì)話數(shù)據(jù)集來(lái)進(jìn)行Transformer的后期培訓(xùn),以使其作為聊天機(jī)器人表現(xiàn)良好,或者幫助我們編寫(xiě)故事、詩(shī)歌甚至代碼。了解更多

如上所述,這是一個(gè)概念性的介紹,讓您了解transformers如何生成文本。如果您想要深入了解transformer背后的數(shù)學(xué)原理,請(qǐng)觀看以下視頻(YouTube)。寫(xiě)在最后

正如你所看到的,Transformer的架構(gòu)并不復(fù)雜。它們是由幾個(gè)塊連接而成,每個(gè)塊都有自己的功能。它們之所以能夠工作得如此出色,主要原因在于它們具有大量參數(shù),可以捕捉上下文中許多方面的信息。我們很期待看到您使用Transformer模型構(gòu)建什么!

最后,你知道為什么這輪技術(shù)變革不是來(lái)自人工智能強(qiáng)大的Google或者Facebook,而是來(lái)自像OpenAI這樣的初創(chuàng)公司呢?

本文由人人都是產(chǎn)品經(jīng)理作者【南村小付】,微信公眾號(hào):【南村小付】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于 CC0 協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!