天天看點

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

作者:人人都是産品經理
大道至簡,本文用通俗易懂的語言解釋了Transformer的核心原理,對于我們這種沒有基礎的普通人,也是能快速了解的,也能對目前的大模型有更深入的認識。
大道至簡:這一輪人工智能(AI)突破的原因其實很「簡單」

過去幾年中,人工智能(AI)技術的澎湃發展引領了一場前所未有的工業和科技革命。在這場革命的前沿,以OpenAI的GPT系列為代表的大型語言模型(LLM)成為了研究和應用的熱點。

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

而帶來這一輪人工智能科技革命的技術突破是來自2017年的一篇論文《Attention is All You Need》,在這篇論文中,首次提出了Transformer架構,這個架構是目前大語言模型的核心技術基礎。GPT中的T就是Transformer的縮寫。

下面,我先帶大家簡明了解下這個突破性架構的核心原理(原文:What Are Transformer Models and How Do They Work?),其實大道至簡,原理沒有很複雜,對于我們這種沒有基礎的普通人,也是能快速了解的,也能對目前的大模型有更深入的認識。

順便抛出一個問題,為什麼這輪技術變革不是來自Google、Meta、百度阿裡這樣的「傳統」AI強勢公司,而是初創公司OpenAI引領的呢?

Transformer是機器學習中最令人興奮的新進展之一。它們首次在論文《Attention is All You Need》中被介紹。Transformer可以用來寫故事、論文、詩歌,回答問題,進行語言翻譯,與人聊天,甚至能通過一些對人類來說很難的考試!但它們究竟是什麼呢?你會高興地發現,Transformer模型的架構并不複雜,它實際上是一些非常有用的元件的組合,每個元件都有其特定的功能。在這篇部落格文章中,你将了解所有這些元件。

這篇文章包含了一個簡單的概念性介紹。如果你想了解更多關于Transformer模型及其工作原理的較長的描述,請檢視Jay Alammar在Cohere釋出的兩篇出色的文章:

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

簡單來說,Transformer都做些什麼呢?

想象一下你在手機上寫短信。每打一個詞,手機可能會推薦給你三個詞。例如,如果你輸入“Hello, how are”,手機可能會推薦“you”或者“your”作為下一個詞。當然,如果你繼續選擇手機推薦的詞語,你會很快發現這些詞語組成的資訊毫無意義。如果你看看每組連續的三四個詞,它們可能聽起來有點道理,但這些詞并沒有連貫地組成有意義的句子。這是因為手機中的模型不會攜帶整個資訊的上下文,它隻是預測在最近的幾個詞之後,哪個詞更可能出現。而Transformer則不同,它們能夠追蹤正在寫的内容的上下文,這就是為什麼它們寫出的文本通常都是有意義的。

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

手機可以對短信中使用的下一個單詞給出建議,但沒有生成連貫文本的能力

我必須得說,當我第一次發現Transformer是一次生成一個詞來建構文本的時候,我簡直不敢相信。首先,這不是人類形成句子和思想的方式。我們通常先形成一個基本的思想,然後開始細化它,添加詞彙。這也不是機器學習模型處理其他事情的方式。例如,圖像的生成就不是這樣的。大多數基于神經網絡的圖形模型會先形成圖像的粗略版本,然後慢慢細化或增加細節,直到完美。那麼,為什麼Transformer模型要一詞一詞地建構文本呢?一個答案是,因為這樣做效果非常好。更令人滿意的答案是,因為Transformer在跟蹤上下文方面實在是太厲害了,是以它選擇的下一個詞正是繼續推進一個想法所需要的。

那麼,Transformer是如何被訓練的呢?需要大量的資料,實際上是網際網路上的所有資料。是以,當你在Transformer輸入句子“Hello, how are”時,它就知道,基于網際網路上的所有文本,最好的下一個詞是“you”。如果你給它一個更複雜的指令,比如說,“write a story.”,它可能會想出來下一個合适的詞是“Once”。然後它将這個詞添加到指令中,發現下一個合适的詞是“upon”,依此類推。一詞一詞地,它将繼續寫下去,直到寫出一個故事。

指令:Write a story.

回應:Once

下一個指令:Write a story. Once

回應:upon

下一個指令:Write a story. Once upon

回應:a

下一個指令:Write a story. Once upon a

回應:time

下一個指令:Write a story. Once upon a time

回應:there

等等。

現在我們知道了Transformer都做些什麼,讓我們來看看它的架構。如果你見過Transformer模型的架構,你可能像我第一次看到它時一樣驚歎,它看起來相當複雜!然而,當你把它分解成最重要的部分時,就沒那麼難了。

Transformer主要有四個部分:

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

其中,第4個部分,即Transformer塊,是所有部分中最複雜的。這些塊可以被連在一起,每個塊包含兩個主要部分:注意力機制和前饋元件。

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

讓我們逐個學習這些部分。

一、Tokenization(分詞)

分詞是最基本的步驟。它涵蓋了一個龐大的詞彙庫,包括所有的單詞、标點符号等。分詞步驟會處理每一個單詞、字首、字尾以及标點符号,并将它們轉換為詞庫中已知的詞彙。

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

舉例來說,如果句子是“Write a story.”,那麼對應的4個token将是<write>,<a>,<story>和<.>。

二、Embedding

一旦輸入内容被分詞後,就需要将單詞轉換成機器更容易處理的數字了。為此,我們使用embedding(嵌入)技術。Embedding是任何大型語言模型中最重要的部分之一;它是實作文本與數字轉換的橋梁。由于人類善于處理文本而計算機善于處理數字,是以這個橋梁越強大,語言模型就越強大。

簡而言之,文本嵌入将每個文本轉換為一個向量。如果兩個文本片段相似,則其對應向量中的數字也相似(這意味着同一位置上的每對數字都相似)。否則,如果兩個文本片段不同,則其對應向量中的數字也不同。

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

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

在更大的embedding情況下,每個單詞都被指派到一個更長的向量(比如長度為4096),那麼這些單詞不再存在于二維平面上,而是存在于一個大的4096維空間中。然而,在這個高維大空間中,我們仍然可以認為單詞之間有近有遠,是以embedding概念仍然具有意義。

詞embedding可以推廣到文本embedding,包括整個句子、段落甚至更長的文本都會被指派到一個向量中。然而,在transformer的情形中,我們将使用詞嵌入,這意味着句子中的每個單詞都會被指派到相應的向量中。更具體地說,輸入文本中的每個token都将被定位到其對應的embedding向量中。

例如,如果我們正在考慮的句子是“Write a story.”并且标記是<write>,<a>,<story>和<.>。那麼每個标記都将被指派到一個向量中,并且我們将有四個向量。

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

通常embedding将每個單詞(token)指派到一個數字清單中

三、Positional encoding(位置編碼)

一旦我們獲得了與句子中每個token對應的向量,下一步就是将它們全部轉換為一個向量進行處理。将一堆向量轉換為一個向量最常見的方法是逐分量相加。

也就是說,我們單獨添加每個坐标。例如,如果這些(長度為2)向量分别是[1,2]和[3,4],則它們對應的總和為[1+3, 2+4],即[4,6]。這種方法可以工作,但有一個小細節需要注意:加法滿足交換律,也就是說如果你以不同順序添加相同的數字,則會得到相同的結果。

在這種情況下,“我不難過我很開心”和“我不開心我很難過”兩句話将得到相同的向量結果(假設它們具有相同單詞但順序不同)。

這并不好。

是以我們必須想出一些方法來給出兩個句子不同的向量表示方式。多種方法可行,在本文中我們選擇其中之一:位置編碼(Positional Encoding) 。位置編碼包括将預定義序列中的一系列向量添加到單詞嵌入(embedding) 向量上去,并確定我們獲得每個句子都有唯一表示形式且具有相似語義結構、僅單詞順序不同的句子将被配置設定到不同的向量。在下面的示例中,“Write”、“a”、“story”和“.”所對應的向量成為帶有位置資訊标簽“Write(1)”,“a(2)”,“story(3)”和“. (4)”的修改後向量。

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

位置編碼會為每個單詞添加一個位置向量,以便跟蹤單詞的位置

現在我們知道每個句子都有一個獨特的向量,這個向量攜帶了句子中所有單詞及其順序的資訊,是以我們可以進入下一步。

四、Transformer block

讓我們回顧一下目前為止的内容。單詞被輸入并轉換成token(分詞),然後考慮到它們的順序(位置編碼)。這給了我們每個輸入模型的token一個向量。現在,下一步是預測這個句子中的下一個單詞。這是通過一個非常大、非常複雜的神經網絡來完成的,該網絡專門訓練用于預測句子中的下一個單詞。

我們可以訓練這樣一個大型網絡,但是通過添加關鍵步驟:Attention(注意力)元件,我們可以極大地改進它。在開創性論文《Attention is All you Need》中引入的注意力機制是Transformer模型的關鍵成分之一,也是它們如此有效的原因之一。下面将解釋注意力機制,但現在先想象它作為一種向文本中每個單詞添加上下文的方式。

在前饋網絡的每個塊中都添加了注意力元件。是以,如果您想象一個大型前饋神經網絡,其目标是預測下一個單詞,并由幾個較小的神經網絡塊組成,則在每個這些塊中都添加了注意力元件。然後,Transformer的每個元件(稱為transformer 塊)由兩個主要元件構成:

Transformer是許多Transformer塊的串聯。

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

Transformer是許多Transformer塊的串聯。每個Transformer塊由一個注意力元件和一個前饋元件(神經網絡)組成。

Attention

Attention步驟涉及一個非常重要的問題:上下文問題。有時,同一個單詞可以用不同的意思。這往往會讓語言模型感到困惑,因為embedding隻是将單詞指派到向量中,而不知道他們使用的單詞定義。

Attention是一種非常有用的技術,可以幫助語言模型了解上下文。為了了解Attention的工作原理,請考慮以下兩個句子:

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

正如您所看到的,單詞“bank”在兩個句子中都出現了,但含義不同。在第一個句子中,我們指的是河流旁邊的土地,在第二個句子中則指持有貨币的機構。計算機對此一無所知,是以我們需要以某種方式将這些知識注入其中。什麼能幫助我們呢?好吧,似乎句子中其他單詞可以拯救我們。對于第一個句子,“the”和“of”這些單詞對我們沒有任何作用。但是,“river”這個單詞讓我們知道正在談論河流旁邊的土地。同樣,在第二個句子中,“money”這個單詞讓我們明白“bank”的意思現在是指持有貨币的機構。

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

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

簡而言之,注意力機制的作用是将句子(或文本片段)中的單詞在詞嵌入中靠近。這樣,在句子“Money in the bank”中,“bank”一詞将被移動到“money”的附近。同樣,在句子“The bank of the river”中,“bank”一詞将被移動到“river”的附近。這樣,兩個句子中修改後的單詞“bank”都會攜帶周圍單詞的某些資訊,為其添加上下文。

Transformer模型中使用的注意力機制實際上更加強大,它被稱為多頭注意力。在多頭注意力中,使用了幾個不同的嵌入來修改向量并為其添加上下文。多頭注意力已經幫助語言模型在處理和生成文本時達到了更高的效率水準。如果您想更詳細地了解注意力機制,請檢視這篇部落格文章及其相應視訊。

五、The Softmax Layer

現在你已經知道一個transformer是由許多層transformer塊組成的,每個塊都包含一個attention和一個feedforward層,你可以将它看作是一個大型神經網絡,用于預測句子中的下一個單詞。Transformer為所有單詞輸出分數,其中得分最高的單詞被賦予最有可能成為句子中下一個單詞的機率。

Transformer的最後一步是softmax層,它将這些分數轉換為機率(總和為1),其中得分最高對應着最高的機率。然後我們可以從這些機率中進行采樣以擷取下一個單詞。在下面的例子中,transformer給“Once”賦予了0.5的最高機率,并給“Somewhere”和“There”賦予了0.3和0.2 的機率。一旦我們進行采樣,“once”就被標明,并且那就是transformer 的輸出結果。

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

softmax層将分數轉換為機率,這些機率用于選擇文本中的下一個單詞

現在怎麼辦?

我們隻需要重複這個步驟。現在我們将文本“Write a story. Once”輸入模型中,很可能輸出結果是“upon”。再次重複此步驟,Transformer最終會寫出一個故事,例如:“Once upon a time, there was a …”(“從前有一天,有一個……”)。

Summary總結

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

  • Tokenizer:将單詞轉換為token。
  • Embedding:将token轉換為數字(向量)。
  • Positional encoding:在文本中添加單詞順序。
  • Transformer block:猜測下一個單詞。它由注意力塊和前饋塊組成。
  • Attention:為文本添加上下文資訊。
  • Feedforward:是Transformer神經網絡中的一個子產品,用于猜測下一個單詞。
  • Softmax函數: 将得分轉換為機率以便采樣出下一個單詞。

重複執行這些步驟就可以寫出您所看到的transformers建立的驚人文本。

Post Training(後期訓練)

現在你已經知道了Transformer是如何工作的,但我們還有一些工作要做。

想象一下:你扮演Transformer,“阿爾及利亞的首都是什麼?” 我們希望它回答“阿爾及爾”,然後繼續進行。然而,這個Transformer是在整個網際網路上訓練出來的。網際網路很大,并不一定是最好的問題/答案庫。例如,許多頁面會列出長長的問題清單而沒有答案。

在這種情況下,“阿爾及利亞的首都是什麼?”之後的下一個句子可能會是另一個問題,比如“阿爾及利亞人口數量?”,或者“布基納法索首都在哪裡?”。Transformer不像人類那樣思考他們的回應,它隻是模仿它看到過(或提供過)資料集中所見到内容。

那麼我們該怎樣使Transformer回答問題呢?

答案就在于後期訓練。

就像您教導一個人完成某些任務一樣,您可以讓Transformer執行任務。一旦将Transformer訓練成整個網際網路上使用時,則需要再次對其進行大量資料集教育訓練以涉及各種問題和相應答案。Transformer(就像人類一樣)對他們最後學到的事情有偏見,是以後期訓練已被證明是幫助Transformer成功完成所要求任務的非常有用的步驟。

後期訓練還可以幫助處理許多其他任務。例如,可以使用大量對話資料集來進行Transformer的後期教育訓練,以使其作為聊天機器人表現良好,或者幫助我們編寫故事、詩歌甚至代碼。了解更多

如上所述,這是一個概念性的介紹,讓您了解transformers如何生成文本。如果您想要深入了解transformer背後的數學原理,請觀看以下視訊(YouTube)。寫在最後

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

最後,你知道為什麼這輪技術變革不是來自人工智能強大的Google或者Facebook,而是來自像OpenAI這樣的初創公司呢?

本文由人人都是産品經理作者【南村小付】,微信公衆号:【南村小付】,原創/授權 釋出于人人都是産品經理,未經許可,禁止轉載。

題圖來自Unsplash,基于 CC0 協定。

繼續閱讀