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