成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ChatGPT為啥這么強:萬字長文詳解 by WolframAlpha之父

人工智能
ChatGPT 能夠自動生成類似于人類撰寫的文本,這一點非常引人注目,也是出乎意料的。那么,它是如何實現的?為什么它能夠如此出色地生成有意義的文本呢?

Wolfram語言之父Stephen Wolfram,又來給ChatGPT背書了。

上個月,他還專門寫過一篇文章,力薦自家的計算知識搜索引擎WolframAlpha,希望能跟ChatGPT來個完美結合。

大概表達的意思就是,“你計算能力不達標,那可以把我的’超能力’注入進去嘛”。

圖片

而時隔一個多月,Stephen Wolfram圍繞“ChatGPT是什么”和“為什么它能這么有效”兩個問題,再次發表萬字長文做了番深入淺出的詳解。

圖片

(為了保證閱讀體驗,以下內容將以Stephen Wolfram的第一人稱來敘述;文末有彩蛋!)

一次添加一個單詞

ChatGPT 能夠自動生成類似于人類撰寫的文本,這一點非常引人注目,也是出乎意料的。那么,它是如何實現的?為什么它能夠如此出色地生成有意義的文本呢?

在本文中,我將大致介紹 ChatGPT 內部運作的機制,并探討它為什么能夠成功地生成令人滿意的文本。

需要說明的是,我將重點關注 ChatGPT 的整體機制,雖然會提到一些技術細節,但不會做深入的探討。同時,還要強調的一點是,我所說的內容同樣適用于當前其它的“大型語言模型”(LLM),而不僅僅限于 ChatGPT。

首先需要解釋的一點是,ChatGPT 的核心任務始終是生成一個“合理的延續”,即根據已有的文本,生成一個符合人類書寫習慣的下一個合理內容。所謂“合理”,是指根據數十億個網頁、數字化書籍等人類撰寫內容的統計規律,推測接下來可能出現的內容。

例如,我們輸入了文本“AI 最好的事情是它的能力”,ChatGPT 就會在數十億頁的人類文本中查找類似文本,然后統計下一個單詞出現的概率。需要注意的是,ChatGPT 并不是直接對比文字本身,而是以某種意義上的“意思匹配”為依據。最終,ChatGPT 會生成一個可能的單詞列表,并給出每個單詞的概率排名:

圖片

值得注意的是,當ChatGPT完成像寫文章這樣的任務時,它實際上只是一遍又一遍地詢問:“在已有的文本的基礎上,下一個詞應該是什么?”——并且每次都會添加一個詞(更準確地說,如我所解釋的,它添加一個“token”,這可能只是單詞的一部分,這就是為什么它有時會“創造新詞”的原因)。

在每一步中,它都會得到一個帶有概率的單詞列表。但是,它應該選擇哪個單詞來添加到它正在寫作的文章(或任何其他東西)中呢?

有人可能認為應該選擇“排名最高”的單詞(即被分配最高“概率”的單詞)。但這就是一些神秘的事情開始悄悄發生的地方。因為由于某種原因——也許有一天我們會有一種科學式的理解——如果我們總是選擇排名最高的單詞,我們通常會得到一篇非常“平淡”的文章,從不顯示任何創造力(有時甚至逐字重復)。如果有時(隨機地)我們選擇較低排名的單詞,可能會得到一篇“更有趣”的文章。

這里存在隨機性意味著,如果我們多次使用相同的提示,很可能每次都會得到不同的文章。與voodoo理念一致,過程中會有一個特定的所謂“溫度”(temperature)參數,它決定較低排名的單詞會被使用的頻率,對于文章生成,這個“溫度”最好設置為0.8。值得強調的是,這里沒有使用“理論”;這只是已被證明在實踐中起作用的事實。例如,“溫度”概念之所以存在,是因為指數分布(來自統計物理學的熟悉分布)恰好被使用,但至少就我們所知,它們之間沒有“物理”聯系。

在繼續之前,我應該解釋一下,為了表達的目的,我大多數時候不會使用ChatGPT中的完整系統;相反,我通常會使用一個更簡單的GPT-2系統,它具有很好的特性,即它足夠小,可以在標準臺式計算機上運行。因此,我所展示的幾乎所有內容都將包含明確的Wolfram語言代碼,您可以立即在計算機上運行。

例如,下面這張圖展示了如何獲得上述概率表的。首先,我們必須檢索底層的 “語言模型 “神經網絡:

圖片

稍后,我們將深入了解這個神經網絡,并討論它是如何工作的。但目前為止,我們可以將這個“網絡模型”作為一個黑盒應用到我們的文本中,并根據模型認為應該遵循的概率,請求前5個單詞:

圖片

獲取結果后,會將其轉換為顯式格式化的“數據集”:

圖片

下面是重復 “應用模型 “的情況—在每一步中加入概率最高的詞(在此代碼中指定為模型中的 “決定”):

圖片

如果再繼續下去會怎樣?在這種(”零度”)情況下,很快就會出現相當混亂和重復的情況。

圖片

但如果不總是挑選 “頂級 “詞,而是有時隨機挑選 “非頂級 “詞(”隨機性 “對應 “溫度 “為0.8)呢?我們就又可以續寫文本了:

圖片

而每次這樣做,都會有不同的隨機選擇,對應的文本也會不同。例如以下這5個例子:

圖片

值得指出的是,即使在第一步,根據已有的文本,也有很多可能的“下一個詞”可供選擇(在溫度為0.8的情況下),盡管它們的概率很快就會下降(是的,在這個對數圖上的直線對應于一個 n–1 的“冪律”衰減,這是語言的一般統計特征):

圖片

那么如果我們繼續寫下去會發生什么呢?這里有一個隨機的例子。它比使用最高排名的單詞(零度)的情況要好一些,但仍然是有點奇怪:

圖片

這是使用最簡單的GPT-2模型(來自2019年)完成的。使用更新的更大的GPT-3模型結果更好。這里是使用相同的“提示”,但使用最大的GPT-3模型生成的使用最高排名單詞(零度)的文本:

圖片

接下來是一個“溫度為0.8”的隨機例子:

圖片

這些概率是從何而來?

ChatGPT總是基于概率來選擇下一個單詞。但這些概率從何而來呢?

讓我們先從一個更簡單的問題開始。當我們考慮逐字母(而非逐詞)生成英文文本,該如何確定每個字母的概率呢?

最簡單的方法是取一份英文文本樣本,然后計算其中不同字母的出現頻率。例如,這是“貓”在維基百科文章中字母的計數情況(此處省略了計數結果):

圖片

這是“狗”的情況:

圖片

結果相似,但并不完全一樣(畢竟,“o”在“dogs”文章中更常見,因為它本身就出現在“dog”這個單詞中)。然而,如果我們取足夠大的英文文本樣本,最終可以期望得到至少相當一致的結果:

圖片

下面是我們只用這些概率生成字母序列的樣本:

圖片

我們可以通過像是將空格視為帶有一定概率的字母來將其分解為“單詞”:

圖片

可以通過強制“單詞長度”的分布與英文一致,來更好地分割“單詞”:

圖片

這里我們沒有生成任何“真實的單詞”,但結果看起來稍微好了一些。然而,要進一步推進,我們需要比僅僅隨機選擇每個字母更多的工作。例如,我們知道如果出現了“q”,下一個字母基本上必須是“u”。

這是字母本身的概率圖:

圖片

這是典型英文文本中字母對(“2-grams”)的概率圖。橫軸是可能的第一個字母,縱軸是第二個字母(此處省略了概率圖):

圖片

在這里,我們可以看到,“q”列除了在“u”行上以外,其他地方都是空白(零概率)。那么,現在我們不再逐個字母地生成“單詞”,而是使用這些“2-gram”概率,一次生成兩個字母來生成它們。以下是結果的一個樣本——恰好包括一些“實際單詞”:

圖片

通過足夠多的英語文本,我們不僅可以很好地估計單個字母或字母對(2-gram)的概率,還可以估計更長的字母組合的概率。如果我們使用逐漸變長的n-gram概率來生成“隨機單詞”,我們會發現它們逐漸變得“更加真實”。

圖片

但是現在讓我們假設——與ChatGPT一樣——我們處理的是整個單詞,而不是字母。英語中大約有40,000個常用單詞。通過查看大量的英語文本(例如幾百億個單詞的幾百萬本書),我們可以估計每個單詞的出現頻率。使用這個估計,我們可以開始生成“句子”,其中每個單詞都是獨立地隨機選擇的,其概率與它在語料庫中出現的概率相同。以下是我們得到的一個樣本:

圖片

毫不意外,這是無意義的。那么我們該怎么做才能更好地生成句子?就像處理字母一樣,我們可以開始考慮不僅單詞的概率,還可以考慮單詞對或更長的n-gram的概率。對于單詞對,以下是5個例子,所有情況都是從單詞“cat”開始:

圖片

看起來稍微“更有意義”了一點。如果我們能夠使用足夠長的n-grams,我們可能會想象基本上會“得到一個ChatGPT”——也就是說,我們會得到一些生成具有“正確的整體文章概率”的長篇文字序列的東西。但是問題在于:實際上沒有足夠多的英語文本被寫出來,以便能夠推斷出這些概率。

在網絡爬蟲中可能有數百億個單詞;在數字化的書籍中可能還有另外數百億個單詞。但是,即使是 4 萬個常用單詞,可能的 2 元組數量已經達到 16 億,而可能的 3 元組數量則高達 60 萬億。因此,我們無法通過現有的文本估計這些可能性的概率。當我們需要生成 20 個單詞的“文章片段”時,可能性的數量已經超過了宇宙中的粒子數量,所以在某種意義上,它們無法全部被寫下。

那么,我們該怎么辦呢?關鍵的想法是建立一個模型,讓我們能夠估計序列應該出現的概率,即使我們從未在我們查看的文本語料庫中明確看到過這些序列。而在ChatGPT的核心正是所謂的“大型語言模型”(LLM),它被構建出來可以很好地估計這些概率。

(由于篇幅原因,此處省略“什么是模型”、“神經網絡”、“機器學習和神經網絡的訓練”、“神經網絡訓練的實踐與知識”、“Embedding概念”等章節的編譯,感興趣讀者可自行閱讀原文)

ChatGPT的內部結構

毫無疑問,它最終是一個巨大的神經網絡,目前版本是一個擁有 1750 億個權重的 GPT-3 網絡。在許多方面,這個神經網絡與我們討論過的其它神經網絡非常相似,但它是一個專門用于處理語言的神經網絡。最顯著的特征是一個被稱為“Transformer”的神經網絡架構。

在我們上面討論的第一類神經網絡中,每個神經元在任何給定層都與前一層的每個神經元基本上相連(至少有一些權重)。但是,如果要處理具有特定已知結構的數據,這種完全連接的網絡(大概)是overkill的。因此,在處理圖像的早期階段,通常會使用所謂的卷積神經網絡(“convnets”),其中神經元實際上是布置在類似于圖像像素的網格上,并且僅與網格附近的神經元相連。

Transformer的思路是對組成文本的token序列做出至少有點類似的事情。但是,Transformer不僅定義了一個固定區域,在該區域內可以建立連接,還引入了“注意力”的概念——“注意力”的概念更多地集中在序列的某些部分而不是其他部分。也許有一天,通過訓練,直接啟動通用神經網絡并進行所有自定義都會有意義。但至少目前在實踐中,模塊化東西是至關重要的,就像Transformer一樣,也可能是我們的大腦所做的一樣。

那么 ChatGPT(或者更準確地說,它所基于的GPT-3網絡)實際上是在做什么呢?請記住,它的總體目標是基于其從訓練中看到的東西(其中包括查看了來自網絡等數十億個頁面的文本),“合理地”續寫文本。因此,在任何給定的時刻,它都有一定量的文本,并且其目標是為下一個token pick一個適當的選擇。

ChatGPT的運作基于三個基本階段。首先,它獲取與目前文本對應的token序列,并找到代表它們的embedding(即一個數字數組)。然后,它以“標準神經網絡方式”對此embedding進行操作,使值在網絡中的連續層中“波動”,以產生一個新的embedding(即一個新的數字數組)。接著,它獲取該數組的最后一部分并生成一個包含約50,000個值的數組,這些值將轉化為不同且可能的下一個token的概率(是的,恰好有與英語常用詞匯相同數量的token,盡管只有大約3000個token是完整單詞,其余是片段。)

關鍵的一點是,這個pipeline的每個部分都由神經網絡實現,其權重由網絡的端到端訓練決定。換句話說,實際上,除了整體架構之外,沒有什么是“明確設計的”;一切都是從訓練數據中“學到”的。

而,在架構建立的方式上有很多細節——反映了各種各樣的經驗和神經網絡知識。雖然這絕對是一個細節問題,但我認為討論其中一些細節很有用,至少可以了解構建ChatGPT所需的內容。

首先是embedding模塊。這是GPT-2的一個示意圖,用Wolfram語言表示:

圖片

這段文字介紹了一個名為“embedding module”的模塊,它有三個主要步驟。第一步,將文本轉化為token序列,每個token都用一個單層神經網絡轉化為長度為768(對于GPT-2)或12288(對于ChatGPT的GPT-3)的embedding向量。同時,模塊中還有一個“輔助通路”(secondary pathway),用于將token的整數位置轉化為embedding向量。最后,將token值和token位置的embedding向量加在一起,生成最終的embedding向量序列。

為什么要將token值和token位置的embedding向量相加呢?似乎并沒有特別科學的解釋。只是嘗試了各種不同的方法,這種方法似乎能夠奏效。而且神經網絡的傳統也認為,只要初始設置“大致正確”,通過足夠的訓練,通常可以自動調整細節,而不需要真正“理解神經網絡是如何進行工程配置的”。

這個“embedding module”模塊的作用是將文本轉換為embedding向量序列。以字符串“hello hello hello hello hello hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye”為例,它可以將其轉化為一系列長度為768的embedding向量,其中包括從每個token的值和位置中提取的信息。

圖片

這里展示了每個tokenembedding向量的元素,橫向顯示了一系列“hello”embedding,其后是一系列“bye”的embedding。上面的第二個數組是位置embedding,其看似隨機的結構只是因為“(在這種情況下在GPT-2中)恰好被學習到了”。

好的,embedding模塊之后是Transformer的“主要部分”:一系列所謂的“注意力塊”(GPT-2為12個,ChatGPT的GPT-3為96個)。這很復雜,讓人想起典型的難以理解的大型工程系統,或者說生物系統。但是,這里是GPT-2的單個“注意力塊”的示意圖:

圖片

在每個注意力塊中,都有一組“attention heads”(GPT-2有12個,ChatGPT的GPT-3有96個),每個attention head都獨立地作用于embedding向量中不同值的塊。(是的,我們不知道將embedding向量拆分成若干部分的好處,也不知道它們的不同部分的含義;這只是已被發現可行的技術之一。)

那么,attention head的作用是什么呢?基本上,它們是一種“回顧”token序列(即已經生成的文本),并以一種有用的形式“打包”歷史信息以便于找到下一個token的方式。在上文中,我們提到過使用二元概率來基于它們的前一個token選擇單詞。Transformer中的“注意力”機制允許對更早的單詞進行“注意力”,從而可能捕捉到例如動詞引用在句子中出現在它們前面多個詞的名詞的方式。

具體而言,attention head的作用是重新組合與不同token相關的embedding向量的塊,并賦予一定的權重。因此,例如,GPT-2中第一個注意塊中的12個attention head對于上面的“hello,bye”字符串具有以下(“回顧token序列一直到開頭”的)“重新組合權重”模式:

圖片

經過注意力機制的處理,得到了一個“重新加權的embedding向量”(對于GPT-2長度為768,對于ChatGPT的GPT-3長度為12,288),然后通過一個標準的“全連接”神經網絡層。很難理解這一層在做什么。但是這里是它所使用的768×768權重矩陣的繪圖(這里是GPT-2):

圖片

通過64×64的移動平均,一些(隨機游走狀的)結構開始出現:

圖片

是什么決定了這種結構呢?這可能是一些關于人類語言特征的“神經網絡編碼”。但是到目前為止,這些特征可能還是未知的。實際上,我們正在“打開ChatGPT的大腦”(或至少是GPT-2),并發現,是的,里面很復雜,我們并不理解,盡管最終它產生了可識別人類語言的能力。

好的,在經過一個注意力模塊之后,我們得到了一個新的embedding向量,隨后連續通過其他注意力模塊(對于GPT-2總共有12個,對于GPT-3則有96個)。每個注意力模塊都有其自己特定的“注意力”和“全連接”權重模式。這里是針對“hello, bye”輸入的第一個attention head的注意力權重的序列(對于GPT-2):

圖片

以下是(移動平均后的)全連接層的“矩陣”:

圖片

有趣的是,即使在不同的注意力塊中,這些“權重矩陣”看起來非常相似,權重大小的分布也可能有所不同(并且并不總是高斯分布):

圖片

那么,經過所有這些注意力塊后,Transformer的凈效應是什么?本質上,它將token序列的原始embedding集合轉換為最終集合。而ChatGPT的特定工作方式是選擇該集合中的最后一個embedding,并對其進行“解碼”,以產生下一個token的概率列表。

因此,這就是ChatGPT內部的概述。它可能看起來很復雜(其中許多選擇都是不可避免的、有些任意的“工程選擇”),但實際上,最終涉及的元素非常簡單。因為最終我們處理的只是由“人造神經元”構成的神經網絡,每個神經元都執行將一組數字輸入與某些權重組合的簡單操作。

ChatGPT的原始輸入是數字數組(到目前為止token的embedding向量),當ChatGPT“運行”以生成新的token時,這些數字只是通過神經網絡的層“傳播”,每個神經元“做自己的事情”并將結果傳遞給下一層的神經元。沒有循環或“回溯”。所有東西都只是通過網絡“前饋”。

這與典型的計算系統(如圖靈機)完全不同,后者通過相同的計算元素重復“重新處理”結果。在這里——至少在生成給定輸出token方面——每個計算元素(即神經元)只使用一次。

但在ChatGPT中仍然存在某種意義上的“外部循環”,即使是在計算元素中也會重復使用。因為當ChatGPT要生成新token時,它總是“讀取”(即將其作為輸入)在它之前出現的整個token序列,包括ChatGPT自己先前“編寫”的token。我們可以將這個設置視為意味著ChatGPT在其最外層至少涉及一個“反饋循環”,盡管每次迭代都明確可見為在其生成的文本中出現的token。

讓我們回到ChatGPT的核心:用于生成每個token的神經網絡。從某個層面上說,它非常簡單:一個由相同人工神經元構成的集合。網絡的一些部分僅由(“完全連接”)神經元層組成,在該層上的每個神經元都連接到前一層上的每個神經元(具有某些權重)。但特別是在其Transformer架構中,ChatGPT具有更多結構化的部分,其中僅特定層上的特定神經元相連。(當然,人們仍然可以說“所有神經元都連接”-但有些神經元的權重為零)。

此外,ChatGPT中的神經網絡的一些方面并不是最自然的“同質”層。例如,在一個注意力塊中,有一些地方會對傳入的數據進行“多份拷貝”,然后每一份都經過不同的“處理路徑”,可能涉及不同數量的層,直到后來才重新組合。雖然這可能是一種方便的表示方式,但至少在原則上,總是可以考慮“densely filling in”層,只是讓一些權重為零。

如果你看一下ChatGPT的最長路徑,大約有400層(核心層)——在某些方面并不是一個龐大的數字。但是有數百萬個神經元,總共有1750億個連接,因此有1750億個權重。需要意識到的一件事是,每次ChatGPT生成一個新token時,它都必須進行涉及每個權重的計算。在實現上,這些計算可以被組織成高度并行的數組操作,可以方便地在GPU上完成。但是對于產生的每個token,仍然需要進行1750億次計算(最后還要多一點)——所以,是的,用ChatGPT生成一長段文本需要一段時間也就不足為奇了。

但最終我們還需要值得注意的是,所有這些操作都能以某種方式共同完成如此“類似人類”的生成文本的工作。必須再次強調的是,(至少就我們所知)沒有“終極理論原因”可以解釋為什么像這樣的任何東西應該起作用。實際上,正如我們將要討論的那樣,我認為我們必須將其視為一項-潛在令人驚訝的-科學發現:在像ChatGPT這樣的神經網絡中,有可能捕捉到人類大腦在生成語言方面所能夠做到的本質。

(由于原文篇幅過長,感興趣的小伙伴可以戳文末鏈接閱讀全文)

One More Thing

或許在打開這篇文章的時候,有些小伙伴已經注意到了一些細微變化:

圖片

沒錯,這篇文章核心內容的編輯,正是ChatGPT!

以及,它自己談了談對Stephen Wolfram這篇文章的看法:

圖片

參考鏈接:

[1] ??https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/???
[2] ???https://twitter.com/stephen_wolfram/status/1625611360967983104???
[3] ???https://writings.stephenwolfram.com/2023/01/wolframalpha-as-the-way-to-bring-computational-knowledge-superpowers-to-chatgpt/??

責任編輯:武曉燕 來源: 量子位
相關推薦

2022-09-06 08:02:40

死鎖順序鎖輪詢鎖

2022-12-25 13:53:02

ChatGPT

2021-10-18 11:58:56

負載均衡虛擬機

2022-09-14 09:01:55

shell可視化

2021-01-19 05:49:44

DNS協議

2020-07-09 07:54:35

ThreadPoolE線程池

2022-10-10 08:35:17

kafka工作機制消息發送

2022-07-19 16:03:14

KubernetesLinux

2024-03-07 18:11:39

Golang采集鏈接

2020-07-15 08:57:40

HTTPSTCP協議

2020-11-16 10:47:14

FreeRTOS應用嵌入式

2021-08-26 05:02:50

分布式設計

2024-01-05 08:30:26

自動駕駛算法

2024-01-11 09:53:31

面試C++

2022-07-15 16:31:49

Postman測試

2022-09-08 10:14:29

人臉識別算法

2023-06-12 08:49:12

RocketMQ消費邏輯

2024-05-10 12:59:58

PyTorch人工智能

2025-05-08 07:19:01

2023-10-19 13:47:58

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 羞羞视频在线网站观看 | 国产成人精品久久 | 国产精品精品久久久 | 亚洲激情av | 欧美日韩一区在线播放 | 日韩在线视频观看 | 国产乱码高清区二区三区在线 | 国产精品久久久亚洲 | 中文字幕国产精品 | 久久精品视频在线观看 | 国色天香成人网 | 日日夜夜精品免费视频 | 91视频精选 | 欧美成ee人免费视频 | 精品中文字幕在线观看 | 欧美 日韩 在线播放 | 亚洲视频免费在线观看 | 亚洲欧美一区二区三区1000 | 成人免费黄色 | 午夜影院免费体验区 | 国产电影一区二区在线观看 | 一级日韩 | 91精品国产综合久久婷婷香蕉 | 亚洲一区中文字幕 | www.久久99| 夜夜爽99久久国产综合精品女不卡 | 亚洲国产精品一区二区久久 | 91国内在线观看 | 国产1区2区3区 | 成人精品久久 | 成在线人视频免费视频 | 亚洲欧美精品国产一级在线 | 国产一级视频 | 成人在线中文字幕 | 国产福利在线播放麻豆 | 99婷婷 | 视频一区二区在线观看 | 亚洲高清视频一区二区 | 91资源在线观看 | 一区日韩 | 精品视频免费 |