萬字長文解釋 ChatGPT 在做什么,以及為什么它能發(fā)揮作用?(5)
ChatGPT 的訓(xùn)練
好了,現(xiàn)在我們已經(jīng)給出了 ChatGPT 建立后的工作概要。但它是如何建立的呢?其神經(jīng)網(wǎng)絡(luò)中的 1750 億個權(quán)重是如何確定的?基本上,它們是非常大規(guī)模的訓(xùn)練的結(jié)果,基于一個巨大的文本語料庫 —— 網(wǎng)絡(luò)上的、書中的等等 —— 由人類寫的。正如我們所說的,即使考慮到所有的訓(xùn)練數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)是否能夠成功地產(chǎn)生 “類似人類” 的文本,這一點也不明顯。而且,再一次,似乎需要詳細(xì)的工程來實現(xiàn)這一目標(biāo)。但 ChatGPT 的最大驚喜和發(fā)現(xiàn)是,它是可能的。實際上,一個 “只有”1750 億個權(quán)重的神經(jīng)網(wǎng)絡(luò)可以對人類所寫的文本做出一個 “合理的模型”。
在現(xiàn)代,有很多人類寫的文本是以數(shù)字形式存在的。公共網(wǎng)絡(luò)至少有幾十億人寫的網(wǎng)頁,總共可能有一萬億字的文本。如果包括非公開網(wǎng)頁,這些數(shù)字可能至少要大 100 倍。到目前為止,已經(jīng)有超過 500 萬本數(shù)字化書籍可供使用(在曾經(jīng)出版過的 1 億本左右的書籍中),又有 1000 億左右的文字。作為個人比較,我一生中發(fā)表的材料總字?jǐn)?shù)不到 300 萬字,在過去 30 年中,我寫了大約 1500 萬字的電子郵件,總共打了大約 5000 萬字,在過去幾年中,我在直播中說了 1000 多萬字。而且,是的,我將從所有這些中訓(xùn)練一個機(jī)器人)。
但是,好吧,鑒于所有這些數(shù)據(jù),我們?nèi)绾螐闹杏?xùn)練出一個神經(jīng)網(wǎng)絡(luò)呢?基本過程與我們在上面的簡單例子中討論的非常相似。你提出一批例子,然后你調(diào)整網(wǎng)絡(luò)中的權(quán)重,使網(wǎng)絡(luò)在這些例子上的誤差(“損失”)最小。從錯誤中 “反向傳播” 的主要問題是,每次你這樣做,網(wǎng)絡(luò)中的每個權(quán)重通常至少會有微小的變化,而且有大量的權(quán)重需要處理。(實際的 “反向計算” 通常只比正向計算難一個小常數(shù))。
有了現(xiàn)代的 GPU 硬件,從成千上萬的例子中并行計算出結(jié)果是很簡單的。但是,當(dāng)涉及到實際更新神經(jīng)網(wǎng)絡(luò)中的權(quán)重時,目前的方法要求我們基本上是一批一批地做。(是的,這可能是實際的大腦 —— 其計算和記憶元素的結(jié)合 —— 目前至少有一個架構(gòu)上的優(yōu)勢)。
即使在我們之前討論的看似簡單的學(xué)習(xí)數(shù)字函數(shù)的案例中,我們發(fā)現(xiàn)我們經(jīng)常不得不使用數(shù)百萬個例子來成功訓(xùn)練一個網(wǎng)絡(luò),至少從頭開始。那么,這意味著我們需要多少個例子來訓(xùn)練一個 “類人語言” 模型呢?似乎沒有任何基本的 “理論” 方法可以知道。但是在實踐中,ChatGPT 已經(jīng)成功地在幾千億字的文本上進(jìn)行了訓(xùn)練。
有些文本被多次輸入,有些只有一次。但不知何故,它從它看到的文本中 “得到了它需要的東西”。但是,考慮到需要學(xué)習(xí)的文本量,它應(yīng)該需要多大的網(wǎng)絡(luò)才能 “學(xué)好”?同樣,我們還沒有一個基本的理論方法來說明。最終 —— 我們將在下面進(jìn)一步討論 —— 人類語言大概有某種 “總的算法內(nèi)容”,以及人類通常用它說什么。但接下來的問題是,神經(jīng)網(wǎng)絡(luò)在實現(xiàn)基于該算法內(nèi)容的模型時將會有多大的效率。我們也不知道 —— 盡管 ChatGPT 的成功表明它的效率還算不錯。
最后我們可以注意到,ChatGPT 使用了幾千億個權(quán)重 —— 與它所獲得的訓(xùn)練數(shù)據(jù)的總字?jǐn)?shù)(或令牌)相比,它所做的事情是相當(dāng)?shù)?。在某些方面,也許令人驚訝的是(盡管在 ChatGPT 的小型類似物中也有經(jīng)驗觀察),似乎工作良好的 “網(wǎng)絡(luò)規(guī)?!?與 “訓(xùn)練數(shù)據(jù)的規(guī)?!?如此相似。畢竟,這肯定不是說 “在 ChatGPT 內(nèi)” 所有來自網(wǎng)絡(luò)和書籍等的文本都被 “直接存儲” 了。因為在 ChatGPT 里面的實際上是一堆數(shù)字 —— 精度略低于 10 位 —— 是對所有這些文本的總體結(jié)構(gòu)的某種分布式編碼。
換句話說,我們可以問人類語言的 “有效信息含量” 是什么,以及通常用它說什么。這里有語言實例的原始語料庫。然后是 ChatGPT 的神經(jīng)網(wǎng)絡(luò)中的表述。這個表征很可能與 “算法上最小” 的表征相去甚遠(yuǎn)(我們將在下面討論)。但它是一個很容易被神經(jīng)網(wǎng)絡(luò)使用的表征。在這種表示法中,訓(xùn)練數(shù)據(jù)的 “壓縮” 程度似乎很低;平均而言,似乎只需要不到一個神經(jīng)網(wǎng)絡(luò)的權(quán)重就可以承載一個詞的訓(xùn)練數(shù)據(jù)的 “信息內(nèi)容”。
當(dāng)我們運行 ChatGPT 來生成文本時,我們基本上不得不使用每個權(quán)重一次。因此,如果有 n 個權(quán)重,我們有 n 個計算步驟要做 —— 盡管在實踐中,許多步驟通??梢栽?GPU 中并行完成。但是,如果我們需要大約 n 個字的訓(xùn)練數(shù)據(jù)來設(shè)置這些權(quán)重,那么從我們上面所說的,我們可以得出結(jié)論,我們需要大約 n2 個計算步驟來進(jìn)行網(wǎng)絡(luò)訓(xùn)練 —— 這就是為什么,用目前的方法,人們最終需要談?wù)摂?shù)十億美元的訓(xùn)練工作。
基本訓(xùn)練之上
訓(xùn)練 ChatGPT 的大部分工作是向它 “展示” 大量來自網(wǎng)絡(luò)、書籍等的現(xiàn)有文本。但事實證明,還有一個明顯相當(dāng)重要的部分。
一旦它完成了對所展示的原始語料庫的 “原始訓(xùn)練”,ChatGPT 內(nèi)的神經(jīng)網(wǎng)絡(luò)就可以開始生成自己的文本,繼續(xù)提示等。但是,雖然這樣做的結(jié)果往往看起來很合理,但它們往往 —— 特別是對于較長的文本 —— 以往往相當(dāng)非人類的方式 “游離”。這不是人們可以輕易發(fā)現(xiàn)的,比如說,通過對文本做傳統(tǒng)的統(tǒng)計。但這是實際閱讀文本的人很容易注意到的東西。
構(gòu)建 ChatGPT 的一個關(guān)鍵想法是,在 “被動地閱讀” 網(wǎng)絡(luò)等事物之后,還有一個步驟:讓實際的人類主動與 ChatGPT 互動,看看它產(chǎn)生了什么,并在實際上給它反饋 “如何成為一個好的聊天機(jī)器人”。但神經(jīng)網(wǎng)絡(luò)如何使用這種反饋呢?第一步只是讓人類對神經(jīng)網(wǎng)絡(luò)的結(jié)果進(jìn)行評價。但隨后又建立了另一個神經(jīng)網(wǎng)絡(luò)模型,試圖預(yù)測這些評分。但現(xiàn)在這個預(yù)測模型可以在原始網(wǎng)絡(luò)上運行 —— 基本上就像一個損失函數(shù),實際上是讓該網(wǎng)絡(luò)通過人類的反饋來 “調(diào)高”。而實踐中的結(jié)果似乎對系統(tǒng)成功產(chǎn)生 “類似人類” 的輸出有很大影響。
總的來說,有趣的是,“最初訓(xùn)練的” 網(wǎng)絡(luò)似乎只需要很少的 “戳” 就能讓它向特定的方向有用地發(fā)展。人們可能會認(rèn)為,要讓網(wǎng)絡(luò)表現(xiàn)得像 “學(xué)到了新東西”,就必須運行訓(xùn)練算法,調(diào)整權(quán)重,等等。
但事實并非如此。相反,基本上只需要告訴 ChatGPT 一些東西,作為你所給的提示的一部分,然后它就可以在生成文本時成功地利用你告訴它的東西。我認(rèn)為,這一點再次成為理解 ChatGPT“真正在做什么” 以及它與人類語言和思維結(jié)構(gòu)的關(guān)系的一個重要線索。
這當(dāng)然有一些類似于人類的東西:至少在它接受了所有的預(yù)訓(xùn)練之后,你可以告訴它一些東西,而它可以 “記住它” —— 至少 “足夠長的時間” 來使用它生成一段文本。那么,在這樣的情況下發(fā)生了什么?可能是 “你可能告訴它的一切都已經(jīng)在那里了” —— 你只是把它引向正確的地方。但這似乎并不靠譜。相反,似乎更有可能的是,是的,這些元素已經(jīng)在那里了,但具體細(xì)節(jié)是由 “這些元素之間的軌跡” 這樣的東西來定義的,這就是你告訴它的東西。
事實上,就像人類一樣,如果你告訴它一些奇怪的、出乎意料的、完全不適合它所知道的框架的東西,它似乎并不能成功地 “整合” 這個。只有當(dāng)它基本上以一種相當(dāng)簡單的方式騎在它已經(jīng)擁有的框架之上時,它才能 “整合” 它。
還值得再次指出的是,對于神經(jīng)網(wǎng)絡(luò)能夠 “接收” 的東西,不可避免地存在 “算法限制”。告訴它 “淺層” 的規(guī)則,如 “這個到那個”,神經(jīng)網(wǎng)絡(luò)很可能能夠很好地表示和再現(xiàn)這些規(guī)則 —— 事實上,它從語言中 “已經(jīng)知道” 的東西會給它一個直接的模式來遵循。但是,如果試圖給它制定一個實際的 “深度” 計算規(guī)則,涉及許多潛在的不可簡化的計算步驟,它就無法工作了。(記住,在每一步,它總是在其網(wǎng)絡(luò)中 “向前輸送數(shù)據(jù)”;除了生成新的標(biāo)記外,從不循環(huán)。)
當(dāng)然,網(wǎng)絡(luò)可以學(xué)習(xí)特定的 “不可簡化的” 計算的答案。但只要有組合數(shù)的可能性,這種 “查表式” 的方法就不會奏效。因此,是的,就像人類一樣,現(xiàn)在是時候讓神經(jīng)網(wǎng)絡(luò) “伸出手來”,使用實際的計算工具了。(是的,Wolfram|Alpha 和 Wolfram 語言是唯一合適的,因為它們是為了 “談?wù)撌澜缟系氖挛铩?而建立的,就像語言模型的神經(jīng)網(wǎng)絡(luò)一樣)。
人類的語言 —— 以及產(chǎn)生語言的思維過程 —— 似乎一直代表著一種復(fù)雜性的頂峰。事實上,人類的大腦 —— “僅” 有 1000 億個左右的神經(jīng)元網(wǎng)絡(luò)(也許還有 100 萬億個連接) —— 能夠負(fù)責(zé)這項工作,似乎有些了不起。也許,人們可能會想象,大腦除了神經(jīng)元網(wǎng)絡(luò)之外還有其他東西,就像一些未被發(fā)現(xiàn)的物理學(xué)新層。但現(xiàn)在通過 ChatGPT,我們得到了一個重要的新信息:我們知道,一個純粹的人工神經(jīng)網(wǎng)絡(luò),其連接數(shù)與大腦的神經(jīng)元一樣多,能夠很好地生成人類語言,令人驚訝。
而且,是的,這仍然是一個龐大而復(fù)雜的系統(tǒng) —— 其神經(jīng)網(wǎng)絡(luò)的權(quán)重與目前世界上的文字一樣多。但在某種程度上,似乎仍然很難相信,語言的所有豐富性和它可以談?wù)摰臇|西可以被封裝在這樣一個有限的系統(tǒng)中。這其中的部分原因無疑是反映了一個無處不在的現(xiàn)象(這在第 30 條規(guī)則的例子中首次變得很明顯),即計算過程實際上可以大大放大系統(tǒng)的表面復(fù)雜性,即使其基本規(guī)則很簡單。但是,實際上,正如我們上面所討論的,ChatGPT 中所使用的那種神經(jīng)網(wǎng)絡(luò)往往是專門用來限制這種現(xiàn)象的影響以及與之相關(guān)的計算的不可重復(fù)性的,以便使其訓(xùn)練更容易進(jìn)行。
那么,像 ChatGPT 這樣的東西是如何在語言方面走得如此之遠(yuǎn)的呢?我想,基本的答案是,語言在根本層面上比它看起來要簡單得多。這意味著 ChatGPT —— 即使它的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最終是簡單的 —— 能夠成功地 “捕捉” 人類語言的本質(zhì)和背后的思維。此外,在其訓(xùn)練中,ChatGPT 以某種方式 “隱含地發(fā)現(xiàn)” 了語言(和思維)中的任何規(guī)律性,使其成為可能。
我認(rèn)為,ChatGPT 的成功為我們提供了一個基本的和重要的科學(xué)證據(jù):它表明我們可以期待有重大的新 “語言法則” —— 以及有效的 “思維法則” —— 在那里被發(fā)現(xiàn)。在 ChatGPT 中,作為一個神經(jīng)網(wǎng)絡(luò),這些規(guī)律充其量是隱含的。但是,如果我們能以某種方式使這些定律明確化,就有可能以更直接、更有效和更透明的方式完成 ChatGPT 所做的各種事情。
但是,好吧,那么這些法律可能是什么樣的?最終,它們必須給我們提供某種語言 —— 以及我們用它說的東西 —— 如何組合的處方。稍后我們將討論 “觀察 ChatGPT” 如何能夠給我們一些這方面的提示,以及我們從構(gòu)建計算語言中了解到的情況如何提示我們前進(jìn)的道路。但首先讓我們來討論兩個長期以來為人所知的相當(dāng)于 “語言法則” 的例子 —— 以及它們與 ChatGPT 的運作有何關(guān)系。
第一個是語言的語法。語言并不只是一個隨機(jī)的詞語組合。相反,對于不同種類的單詞如何放在一起,有(相當(dāng))明確的語法規(guī)則:例如,在英語中,名詞前面可以有形容詞,后面可以有動詞,但通常兩個名詞不能緊挨著。這樣的語法結(jié)構(gòu)可以(至少是近似地)被一套規(guī)則所捕獲,這些規(guī)則定義了如何將相當(dāng)于 “解析樹” 的東西放在一起:
ChatGPT 對這種規(guī)則沒有任何明確的 “知識”。但在訓(xùn)練中,它隱含地 “發(fā)現(xiàn)” 了這些規(guī)則,然后似乎很擅長遵循這些規(guī)則。那么,它是如何工作的呢?在一個 “大畫面” 的層面上,這并不清楚。但是為了得到一些啟示,看看一個更簡單的例子也許會有啟發(fā)。
考慮一種由()和()序列組成的 “語言”,其語法規(guī)定括號應(yīng)該總是平衡的,如解析樹所表示的那樣:
我們能否訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)來產(chǎn)生 “語法上正確的” 小括號序列?在神經(jīng)網(wǎng)絡(luò)中處理序列有多種方法,但讓我們使用變換器網(wǎng)絡(luò),就像 ChatGPT 那樣。給定一個簡單的變換器網(wǎng)絡(luò),我們可以開始給它提供語法正確的小括號序列作為訓(xùn)練實例。一個微妙之處(實際上也出現(xiàn)在 ChatGPT 的人類語言生成中)是,除了我們的 “內(nèi)容標(biāo)記”(這里是 “(” 和 “)”),我們還必須包括一個 “結(jié)束” 標(biāo)記,它的生成表明輸出不應(yīng)該再繼續(xù)下去(即對于 ChatGPT 來說,我們已經(jīng)到達(dá)了 “故事的終點”)。
如果我們只用一個有 8 個頭的注意塊和長度為 128 的特征向量來設(shè)置一個轉(zhuǎn)換網(wǎng)(ChatGPT 也使用長度為 128 的特征向量,但有 96 個注意塊,每個注意塊有 96 個頭),那么似乎不可能讓它學(xué)會很多小括號語言。但是,如果有 2 個注意力頭,學(xué)習(xí)過程似乎會收斂 —— 至少在給出 1000 萬個左右的例子之后(而且,正如轉(zhuǎn)化器網(wǎng)絡(luò)所常見的那樣,顯示更多的例子似乎會降低其性能)。
因此,對于這個網(wǎng)絡(luò),我們可以做 ChatGPT 的類似工作,并詢問下一個標(biāo)記應(yīng)該是什么的概率 —— 在一個括號序列中:
在第一種情況下,網(wǎng)絡(luò) “非常確定” 序列不能在這里結(jié)束 —— 這很好,因為如果它結(jié)束了,小括號就會留下不平衡。然而,在第二種情況下,它 “正確地認(rèn)識到” 序列可以在這里結(jié)束,盡管它也 “指出” 有可能 “重新開始”,放下一個 “(”,估計后面還有一個 “)”。但是,哎呀,即使它有 40 萬個左右經(jīng)過艱苦訓(xùn)練的權(quán)重,它也說有 15% 的概率將 “)” 作為下一個標(biāo)記 —— 這是不對的,因為這必然會導(dǎo)致一個不平衡的括號。
如果我們要求網(wǎng)絡(luò)為逐漸變長的()序列提供最高概率的完成度,我們會得到以下結(jié)果:
是的,在一定長度內(nèi),網(wǎng)絡(luò)做得很好。但隨后它就開始失敗了。這是在神經(jīng)網(wǎng)絡(luò)(或一般的機(jī)器學(xué)習(xí))的這種 “精確” 情況下看到的非常典型的事情。人類 “一眼就能解決” 的情況,神經(jīng)網(wǎng)絡(luò)也能解決。但是需要做一些 “更多的算法”(例如明確地計算括號是否封閉)的情況,神經(jīng)網(wǎng)絡(luò)往往在某種程度上是 “計算上太淺”,無法可靠地做到。(順便說一句,即使是目前完整的 ChatGPT 也很難正確匹配長序列中的括號)。
那么,這對像 ChatGPT 和像英語這樣的語言的語法意味著什么呢?小括號語言是 “樸素的” —— 而且更像是一個 “算法的故事”。但在英語中,能夠在局部選詞和其他提示的基礎(chǔ)上 “猜測” 什么是符合語法的,則要現(xiàn)實得多。而且,是的,神經(jīng)網(wǎng)絡(luò)在這方面要好得多 —— 盡管它可能會錯過一些 “形式上正確” 的情況,而人類也可能錯過。但主要的一點是,語言有一個整體的句法結(jié)構(gòu)這一事實 —— 以及它所暗示的所有規(guī)律性 —— 在某種意義上限制了神經(jīng)網(wǎng)絡(luò)要學(xué)習(xí)的 “程度”。一個關(guān)鍵的 “類似自然科學(xué)” 的觀察是,像 ChatGPT 中的神經(jīng)網(wǎng)絡(luò)的轉(zhuǎn)化器架構(gòu)似乎能夠成功地學(xué)習(xí)所有人類語言中似乎都存在(至少在某種程度上是近似的)的那種嵌套樹狀的句法結(jié)構(gòu)。
句法提供了對語言的一種約束。但顯然還有更多。像 “好奇的電子吃魚的藍(lán)色理論” 這樣的句子在語法上是正確的,但并不是人們通常期望說的東西,而且如果 ChatGPT 生成它,也不會被認(rèn)為是成功的 —— 因為,嗯,以其中單詞的正常含義,它基本上沒有意義。
但是,是否有一個一般的方法來判斷一個句子是否有意義?這方面沒有傳統(tǒng)的整體理論。但是,我們可以認(rèn)為 ChatGPT 在接受了來自網(wǎng)絡(luò)的數(shù)十億(可能是有意義的)句子的訓(xùn)練之后,已經(jīng)隱含地 “發(fā)展了一套理論”。
這個理論可能是什么樣的呢?好吧,有一個小小的角落,基本上兩千年來一直為人所知,那就是邏輯。當(dāng)然,在亞里士多德發(fā)現(xiàn)的 Syllogistic 形式中,邏輯基本上是一種說法,即遵循某些模式的句子是合理的,而其他的則不是。因此,例如,說 “所有的 X 都是 Y,這不是 Y,所以它不是 X” 是合理的(正如 “所有的魚都是藍(lán)色的,這不是藍(lán)色,所以它不是魚”)。就像人們可以有點異想天開地想象亞里士多德通過(“機(jī)器學(xué)習(xí)式”)大量的修辭學(xué)例子來發(fā)現(xiàn)對偶邏輯一樣,人們也可以想象在 ChatGPT 的訓(xùn)練中,它將能夠通過查看網(wǎng)絡(luò)上的大量文本等來 “發(fā)現(xiàn)對偶邏輯”。(是的,雖然我們可以期待 ChatGPT 產(chǎn)生包含 “正確推論” 的文本,比如基于對偶邏輯,但當(dāng)它涉及到更復(fù)雜的形式邏輯時,情況就完全不同了 —— 我認(rèn)為我們可以期待它在這里失敗,原因與它在小括號匹配中失敗的原因相同)。
但除了邏輯這個狹隘的例子之外,對于如何系統(tǒng)地構(gòu)建(或識別)甚至是合理的有意義的文本,又能說些什么呢?是的,有一些東西,如《瘋狂的自由》,使用非常具體的 “短語模板”。但不知何故,ChatGPT 隱含著一種更普遍的方法。也許除了 “當(dāng)你有 1750 億個神經(jīng)網(wǎng)絡(luò)權(quán)重時,它就會以某種方式發(fā)生” 之外,對如何做到這一點沒有什么可說的。但我強(qiáng)烈懷疑有一個更簡單、更有力的故事。
我們在上面討論過,在 ChatGPT 中,任何一段文本都有效地由一個數(shù)字陣列來表示,我們可以將其視為某種 “語言特征空間” 中的一個點的坐標(biāo)。因此,當(dāng) ChatGPT 繼續(xù)一個文本時,這相當(dāng)于在語言特征空間中追蹤一個軌跡。但現(xiàn)在我們可以問,是什么讓這個軌跡對應(yīng)于我們認(rèn)為有意義的文本。也許會有某種 “語義運動法則” 來定義 —— 或者至少是約束 —— 語言特征空間中的點如何移動,同時保留 “有意義”?
那么,這個語言學(xué)特征空間是什么樣子的呢?下面是一個例子,說明如果我們把這樣一個特征空間投射到二維空間,單個詞(這里是指普通名詞)是如何布局的:
我們在上面看到的另一個例子是基于代表植物和動物的詞。但這兩種情況下的重點是,“語義相似的詞” 被放在附近。
作為另一個例子,這里是對應(yīng)于不同語音部分的詞是如何布置的:
當(dāng)然,一個給定的詞一般來說并不只有 “一個意思”(或一定只對應(yīng)一個語篇)。通過觀察包含一個詞的句子在特征空間中的布局,我們通??梢?“區(qū)分” 出不同的含義 —— 就像這里的例子 “起重機(jī)”(crane, “鳥” 或 “機(jī)器”?):
好的,所以我們至少可以認(rèn)為這個特征空間是把 “意義相近的詞” 放在這個空間里的,這是合理的。但是,在這個空間里,我們可以確定什么樣的額外結(jié)構(gòu)?例如,是否存在某種 “平行運輸” 的概念,以反映空間中的 “平坦性”?掌握這個問題的一個方法是看一下類比:
而且,是的,即使當(dāng)我們投射到二維時,往往至少有一個 “平坦性的暗示”,盡管它肯定不是普遍可見的。
那么,軌跡呢?我們可以看看 ChatGPT 的提示在特征空間中的軌跡 —— 然后我們可以看看 ChatGPT 是如何延續(xù)這個軌跡的:
這里當(dāng)然沒有 “幾何學(xué)上明顯的” 運動規(guī)律。這一點也不令人驚訝;我們完全可以預(yù)料到這是一個相當(dāng)復(fù)雜的故事。而且,舉例來說,即使有一個 “語義上的運動定律” 可以找到,它最自然地以什么樣的嵌入(或者,實際上,什么樣的 “變量”)來表述,也遠(yuǎn)非明顯。
在上圖中,我們展示了 “軌跡” 中的幾個步驟 —— 在每個步驟中,我們挑選 ChatGPT 認(rèn)為最可能的詞(“零溫度” 情況)。但我們也可以問,在某一點上,哪些詞可以以什么概率 “接下來”:
在這種情況下,我們看到的是有一個高概率詞的 “扇形”,似乎在特征空間中或多或少有一個明確的方向。如果我們再往前走會怎么樣呢?下面是我們沿著軌跡 “移動” 時出現(xiàn)的連續(xù)的 “扇形”:
這是一個三維表示,總共走了 40 步:
而且,是的,這似乎是一團(tuán)糟 —— 并沒有做任何事情來特別鼓勵這樣的想法,即我們可以期望通過經(jīng)驗性地研究 “ChatGPT 在里面做什么” 來確定 “類似數(shù)學(xué)物理學(xué)的”“運動語義法則”。但也許我們只是看了 “錯誤的變量”(或錯誤的坐標(biāo)系),只要我們看了正確的變量,我們就會立即看到 ChatGPT 正在做一些 “數(shù)學(xué)·物理學(xué)的簡單” 的事情,比如遵循測地線。但是到目前為止,我們還沒有準(zhǔn)備好從它的 “內(nèi)部行為” 中 “實證解碼”ChatGPT“發(fā)現(xiàn)” 人類語言是如何 “拼湊” 的。
產(chǎn)生 “有意義的人類語言” 需要什么?在過去,我們可能會認(rèn)為這不可能是一個人的大腦。但現(xiàn)在我們知道,ChatGPT 的神經(jīng)網(wǎng)絡(luò)可以很好地完成這一任務(wù)。不過,也許這已經(jīng)是我們能走的最遠(yuǎn)的路了,沒有什么比這更簡單 —— 或者更容易被人類理解 —— 的東西會起作用。但我強(qiáng)烈懷疑的是,ChatGPT 的成功隱含地揭示了一個重要的 “科學(xué)” 事實:有意義的人類語言的結(jié)構(gòu)和簡單性實際上比我們所知道的要多得多,而且最終甚至可能有相當(dāng)簡單的規(guī)則來描述這種語言如何被組合起來。
正如我們上面提到的,句法語法給出了人類語言中對應(yīng)于不同語篇的詞語如何組合的規(guī)則。但是為了處理意義,我們需要更進(jìn)一步。而如何做到這一點的一個版本是,不僅要考慮語言的句法語法,還要考慮語義語法。
為了語法的目的,我們確定名詞和動詞等事物。但為了語義學(xué)的目的,我們需要 “更精細(xì)的等級”。因此,例如,我們可以確定 “移動” 的概念,以及 “保持獨立于位置的身份” 的 “物體” 的概念。這些 “語義概念” 中的每一個都有無盡的具體例子。但是,為了我們的語義語法的目的,我們將只是有某種一般性的規(guī)則,基本上說 “物體” 可以 “移動”。關(guān)于這一切如何運作,有很多東西可以說(其中一些我以前說過)。但我在這里只想說幾句,指出一些潛在的發(fā)展道路。
值得一提的是,即使一個句子根據(jù)語義語法是完全可以的,也不意味著它在實踐中已經(jīng)實現(xiàn)(甚至可以實現(xiàn))?!按笙笕チ嗽虑颉?無疑會 “通過” 我們的語義語法,但是它肯定沒有在我們的實際世界中實現(xiàn)(至少還沒有) —— 盡管對于一個虛構(gòu)的世界來說,這絕對是公平的游戲。
當(dāng)我們開始談?wù)?“語義語法” 時,我們很快就會問:“它的下面是什么?” 它假設(shè)的是什么 “世界模型”?句法語法實際上只是關(guān)于從詞語中構(gòu)建語言的問題。但是,語義學(xué)語法必然涉及某種 “世界模型” —— 作為 “骨架” 的東西,由實際詞語構(gòu)成的語言可以在上面分層。
直到最近,我們可能會想象,(人類)語言將是描述我們 “世界模型” 的唯一一般方式。早在幾個世紀(jì)前,就已經(jīng)開始有了對特定種類事物的形式化,特別是以數(shù)學(xué)為基礎(chǔ)。但現(xiàn)在有一種更普遍的形式化方法:計算語言。
是的,這是我四十多年來的一個大項目(現(xiàn)在體現(xiàn)在沃爾弗拉姆語言中):開發(fā)一個精確的符號表示,可以盡可能廣泛地談?wù)撌澜缟系氖挛?,以及我們關(guān)心的抽象事物。因此,例如,我們有城市、分子、圖像和神經(jīng)網(wǎng)絡(luò)的符號表示,而且我們有關(guān)于如何計算這些事物的內(nèi)在知識。
而且,經(jīng)過幾十年的工作,我們已經(jīng)用這種方式覆蓋了很多領(lǐng)域。但是在過去,我們并沒有特別處理 “日常話語”。在 “我買了兩磅蘋果” 中,我們可以輕易地表示(并對其進(jìn)行營養(yǎng)和其他計算)“兩磅蘋果”。但是我們(還沒有)對 “我買了” 有一個符號表示。
這一切都與語義語法的想法有關(guān) —— 目標(biāo)是為概念提供一個通用的符號 “構(gòu)造套件”,這將為我們提供什么可以與什么結(jié)合的規(guī)則,從而為我們可能轉(zhuǎn)化為人類語言的 “流程” 提供規(guī)則。
但是,假設(shè)我們有了這種 “符號話語語言”。我們會用它做什么呢?我們可以開始做一些事情,比如生成 “本地有意義的文本”。但最終我們可能想要更多 “全局意義” 的結(jié)果 —— 這意味著 “計算” 更多關(guān)于世界上實際存在或發(fā)生的事情(或許是在某個一致的虛構(gòu)世界)。
現(xiàn)在在 Wolfram 語言中,我們有大量的關(guān)于許多種類的事物的內(nèi)置計算知識。但對于一個完整的符號話語語言,我們必須建立關(guān)于世界上一般事物的額外 “計算”:如果一個物體從 A 地移動到 B 地,又從 B 地移動到 C 地,那么它就從 A 地移動到 C 地,等等。
給定一個符號化的話語語言,我們可以用它來做 “獨立的陳述”。但我們也可以用它來問關(guān)于世界的問題,“Wolfram|Alpha 風(fēng)格”?;蛘呶覀兛梢杂盟鼇黻愂鑫覀?“想讓它變成這樣” 的事情,大概是用一些外部的執(zhí)行機(jī)制?;蛘呶覀兛梢杂盟鼇碜鰯嘌?—— 也許是關(guān)于真實的世界,也許是關(guān)于我們正在考慮的某個特定世界,不管是虛構(gòu)的還是其他的。
人類語言從根本上說是不精確的,這不僅僅是因為它沒有 “拴” 在一個具體的計算實現(xiàn)上,而且它的意義基本上只是由其使用者之間的 “社會契約” 來定義。但是計算語言,就其性質(zhì)而言,具有某種基本的精確性 —— 因為最終它所指定的東西總是可以 “毫不含糊地在計算機(jī)上執(zhí)行”。人類語言通??梢詳[脫某種模糊性。(當(dāng)我們說 “行星” 時,它是否包括系外行星,等等。)但是在計算語言中,我們必須對我們所做的所有區(qū)分精確而清楚。
在計算語言中,利用普通人類語言來編造名字往往很方便。但它們在計算語言中的含義必然是精確的,而且可能涵蓋也可能不涵蓋典型人類語言用法中的某些特定內(nèi)涵。
我們應(yīng)該如何找出適合一般符號話語語言的基本 “本體”?嗯,這并不容易。這也許就是為什么自亞里士多德兩千多年前的原始開始以來,在這些方面做得很少。但是,今天我們對如何以計算方式思考世界了解得如此之多,這確實有幫助(而且,從我們的物理學(xué)項目和 ragiad 的想法中得到 “基本形而上學(xué)” 也無傷大雅)。
但是這一切在 ChatGPT 的背景下意味著什么?從它的訓(xùn)練來看,ChatGPT 已經(jīng)有效地 “拼湊” 了一定數(shù)量的相當(dāng)于語義語法的東西(相當(dāng)令人印象深刻)。但是它的成功讓我們有理由認(rèn)為,以計算語言的形式構(gòu)建更完整的東西將是可行的。而且,與我們迄今為止對 ChatGPT 內(nèi)部的理解不同的是,我們可以期待將計算語言設(shè)計得讓人類容易理解。
當(dāng)我們談?wù)撜Z義語法的時候,我們可以將其與對偶邏輯相類比。起初,對偶邏輯本質(zhì)上是用人類語言表達(dá)的語句規(guī)則的集合。但是(是的,兩千年后)當(dāng)形式邏輯被開發(fā)出來時,音節(jié)邏輯最初的基本構(gòu)造現(xiàn)在可以用來建造巨大的 “形式塔”,包括例如現(xiàn)代數(shù)字電路的運作。而且,我們可以預(yù)期,更一般的語義語法也會如此。起初,它可能只是能夠處理簡單的模式,例如以文本形式表達(dá)。但是,一旦它的整個計算語言框架建立起來,我們可以預(yù)期它將能夠被用來豎起 “廣義語義邏輯” 的高塔,使我們能夠以精確和正式的方式處理各種我們以前從未接觸過的東西,而只是在 “底層” 通過人類語言,以其所有的模糊性。
我們可以認(rèn)為計算語言的構(gòu)造 —— 以及語義語法 —— 代表了一種對事物的終極壓縮。因為它允許我們談?wù)撌裁词强赡艿谋举|(zhì),而不需要,例如,處理存在于普通人類語言中的所有 “轉(zhuǎn)折性的措辭”。我們可以把 ChatGPT 的巨大優(yōu)勢看作是有點類似的東西:因為它在某種意義上也已經(jīng) “鉆研” 到可以 “把語言以一種有語義的方式組合在一起”,而不關(guān)心不同的可能的措辭。
那么,如果我們把 ChatGPT 應(yīng)用于底層計算語言,會發(fā)生什么呢?計算語言可以描述什么是可能的。但仍然可以添加的是對 “什么是流行的” 的感覺 —— 例如基于對網(wǎng)絡(luò)上所有內(nèi)容的閱讀。但是,在下面,用計算語言操作意味著像 ChatGPT 這樣的東西可以立即和基本地接觸到相當(dāng)于利用潛在的不可還原的計算的終極工具。這使得它成為一個不僅可以 “生成合理文本” 的系統(tǒng),而且可以期望解決任何可以解決的問題,即這些文本是否真的對世界 —— 或者它應(yīng)該談?wù)摰臇|西做出了 “正確” 的陳述。
那么…… ChatGPT 在做什么,為什么它能發(fā)揮作用?
ChatGPT 的基本概念在某種程度上相當(dāng)簡單。從網(wǎng)絡(luò)、書籍等人類創(chuàng)造的大量文本樣本開始。然后訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)來生成 “像這樣” 的文本。特別是,讓它能夠從一個 “提示” 開始,然后繼續(xù)生成 “像它被訓(xùn)練過的那樣” 的文本。
正如我們所看到的,ChatGPT 中的實際神經(jīng)網(wǎng)絡(luò)是由非常簡單的元素組成的,盡管有數(shù)十億個元素。神經(jīng)網(wǎng)絡(luò)的基本操作也非常簡單,主要是對它所生成的每一個新詞(或詞的一部分),通過其元素 “傳遞一次輸入”(沒有任何循環(huán),等等)。
但出乎意料的是,這個過程可以產(chǎn)生成功地 “像” 網(wǎng)絡(luò)上、書本上的文字。而且,它不僅是連貫的人類語言,它還 “說了些什么”,“按照它的提示” 利用它 “讀” 到的內(nèi)容。它并不總是說 “全局有意義”(或?qū)?yīng)于正確的計算)的事情 —— 因為(例如,在沒有獲得 Wolfram|Alpha 的 “計算超能力” 的情況下),它只是根據(jù)訓(xùn)練材料中的事情 “聽起來像” 說了一些話。
ChatGPT 的具體工程使它相當(dāng)引人注目。但最終(至少在它能夠使用外部工具之前),ChatGPT“只是” 從它所積累的 “傳統(tǒng)智慧的統(tǒng)計數(shù)據(jù)” 中抽出一些 “連貫的文本線索”。但令人驚訝的是,其結(jié)果是如此的像人。正如我所討論的,這表明了一些至少在科學(xué)上非常重要的東西:人類語言(以及它背后的思維模式)在某種程度上比我們想象的更簡單,更 “像法律”。ChatGPT 已經(jīng)隱晦地發(fā)現(xiàn)了這一點。但我們有可能通過語義語法、計算語言等明確地暴露它。
ChatGPT 在生成文本方面所做的工作令人印象深刻,而且其結(jié)果通常非常像我們?nèi)祟悤a(chǎn)生的東西。那么,這是否意味著 ChatGPT 的工作方式就像一個大腦?它的底層人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最終是以大腦的理想化為模型的。而且,當(dāng)我們?nèi)祟惍a(chǎn)生語言時,似乎很有可能發(fā)生的許多方面都很相似。
當(dāng)涉及到訓(xùn)練(又稱學(xué)習(xí))時,大腦和當(dāng)前計算機(jī)的不同 “硬件”(以及,也許,一些未開發(fā)的算法想法)迫使 ChatGPT 使用一種可能與大腦相當(dāng)不同(在某些方面效率低得多)的策略。還有一點:即使與典型的算法計算不同,ChatGPT 內(nèi)部也沒有 “循環(huán)” 或 “對數(shù)據(jù)進(jìn)行重新計算”。而這不可避免地限制了它的計算能力 —— 即使與目前的計算機(jī)相比也是如此,但與大腦相比肯定是如此。
目前還不清楚如何 “解決這個問題”,并且仍然保持以合理效率訓(xùn)練系統(tǒng)的能力。但這樣做大概會讓未來的 ChatGPT 做更多 “類似大腦的事情”。當(dāng)然,有很多事情是大腦做得不好的 —— 特別是涉及到相當(dāng)于不可簡化的計算。對于這些,大腦和像 ChatGPT 這樣的東西都必須尋求 “外部工具” —— 比如 Wolfram 語言。
但就目前而言,看到 ChatGPT 已經(jīng)能夠做到的事情是令人興奮的。在某種程度上,它是基本科學(xué)事實的一個很好的例子,即大量簡單的計算元素可以做非凡和意想不到的事情。但它也為我們提供了兩千年來最好的動力,以更好地理解人類條件的核心特征,即人類語言及其背后的思維過程的基本特征和原則。
謝謝我關(guān)注神經(jīng)網(wǎng)絡(luò)的發(fā)展已經(jīng)有 43 年了,在這期間,我與許多人就神經(jīng)網(wǎng)絡(luò)進(jìn)行了交流。其中,有些是很久以前的,有些是最近的,還有一些是跨越多年的。Giulio Alessandrini, Dario Amodei, Etienne Bernard, Taliesin Beynon, Sebastian Bodenstein, Greg Brockman, Jack Cowan, Pedro Domingos, Jesse Galef, Roger Germundsson, Robert Hecht-Nielsen, Geoff Hinton, John Hopfield, Yann LeCun, Jerry Lettvin, Jerome Louradour, Marvin Minsky, Eric Mjolsness, Cayden Pierce, Tomaso Poggio, Matteo Salvarezza, Terry Sejnowski, Oliver Selfridge, Gordon Shaw, Jonas Sj?berg, Ilya Sutskever, Gerry Tesauro and Timothee Verdier. 對于這個作品的幫助,我特別要感謝朱利奧·亞歷山大里尼和布拉德·克利。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。