在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ChatGPT的工作原理

AI智勝未來 ? 來源:圖靈人工智能 ? 2023-05-19 15:19 ? 次閱讀

ChatGPT 能夠自動(dòng)生成一些讀起來表面上甚至像人寫的文字的東西,這非常了不起,而且出乎意料。但它是如何做到的?為什么它能發(fā)揮作用?我在這里的目的是大致介紹一下 ChatGPT 內(nèi)部的情況,然后探討一下為什么它能很好地生成我們認(rèn)為是有意義的文本。

我首先要說明一下,我將把重點(diǎn)放在正在發(fā)生的事情的大的方向上,雖然我會(huì)提到一些工程細(xì)節(jié),但我不會(huì)深入研究它們。(我所說的實(shí)質(zhì)內(nèi)容也同樣適用于目前其他的 “大型語(yǔ)言模型” LLM 和 ChatGPT)。

首先要解釋的是,ChatGPT 從根本上說總是試圖對(duì)它目前得到的任何文本進(jìn)行 “合理的延續(xù)”,這里的 “合理” 是指 “在看到人們?cè)跀?shù)十億個(gè)網(wǎng)頁(yè)上所寫的東西之后,人們可能會(huì)期望某人寫出什么”。

因此,假設(shè)我們已經(jīng)得到了 “人工智能最好的是它能去做 ……” 的文本(“The best thing about AI is its ability to”)。想象一下,掃描數(shù)十億頁(yè)的人類書寫的文本(例如在網(wǎng)絡(luò)上和數(shù)字化書籍中),并找到這個(gè)文本的所有實(shí)例 —— 然后看到什么詞在接下來的時(shí)間里出現(xiàn)了多少。

ChatGPT 有效地做了類似的事情,除了(正如我將解釋的)它不看字面文本;它尋找在某種意義上 “意義匹配” 的東西。但最終的結(jié)果是,它產(chǎn)生了一個(gè)可能出現(xiàn)在后面的詞的排序列表,以及 “概率”。

90ce34a4-f614-11ed-90ce-dac502259ad0.png

值得注意的是,當(dāng) ChatGPT 做一些事情,比如寫一篇文章時(shí),它所做的基本上只是反復(fù)詢問 “鑒于到目前為止的文本,下一個(gè)詞應(yīng)該是什么?” —— 而且每次都增加一個(gè)詞。(更準(zhǔn)確地說,正如我將解釋的那樣,它在添加一個(gè) “標(biāo)記”,這可能只是一個(gè)詞的一部分,這就是為什么它有時(shí)可以 “編造新詞”)。

在每一步,它得到一個(gè)帶有概率的單詞列表。但是,它究竟應(yīng)該選擇哪一個(gè)來添加到它正在寫的文章(或其他什么)中呢?人們可能認(rèn)為它應(yīng)該是 “排名最高” 的詞(即被分配到最高 “概率” 的那個(gè))。

但是,這時(shí)就會(huì)有一點(diǎn)巫術(shù)開始悄悄出現(xiàn)。因?yàn)槌鲇谀撤N原因 —— 也許有一天我們會(huì)有一個(gè)科學(xué)式的理解 —— 如果我們總是挑選排名最高的詞,我們通常會(huì)得到一篇非常 “平淡” 的文章,似乎從來沒有 “顯示出任何創(chuàng)造力”(甚至有時(shí)一字不差地重復(fù))。但是,如果有時(shí)(隨機(jī)的)我們挑選排名較低的詞,我們會(huì)得到一篇 “更有趣” 的文章。

這里有隨機(jī)性的事實(shí)意味著,假如我們多次使用同一個(gè)提示,我們也很可能每次都得到不同的文章。而且,為了與巫術(shù)的想法保持一致,有一個(gè)特定的所謂 “溫度” 參數(shù)temperature parameter),它決定了以什么樣的頻率使用排名較低的詞,而對(duì)于論文的生成,事實(shí)證明,0.8 的 “溫度” 似乎是最好的。(值得強(qiáng)調(diào)的是,這里沒有使用任何 “理論”;這只是一個(gè)在實(shí)踐中被發(fā)現(xiàn)可行的問題)。例如,“溫度” 的概念之所以存在,是因?yàn)榍『檬褂昧私y(tǒng)計(jì)物理學(xué)中熟悉的指數(shù)分布,但沒有 “物理” 聯(lián)系 —— 至少到目前為止我們?nèi)绱苏J(rèn)為。)

在我們繼續(xù)之前,我應(yīng)該解釋一下,為了論述的目的,我大多不會(huì)使用 ChatGPT 中的完整系統(tǒng);相反,我通常會(huì)使用更簡(jiǎn)單的 GPT-2 系統(tǒng),它有一個(gè)很好的特點(diǎn),即它足夠小,可以在標(biāo)準(zhǔn)的臺(tái)式電腦上運(yùn)行。

因此,對(duì)于我展示的所有內(nèi)容,包括明確的沃爾弗拉姆語(yǔ)言(Wolfram Language)代碼,你可以立即在你的計(jì)算機(jī)上運(yùn)行。(點(diǎn)擊這里的任何圖片都可以復(fù)制其背后的代碼 —— 譯者注:請(qǐng)查看文末的 “原文鏈接”,在其中點(diǎn)擊圖片獲取代碼)。

例如,這里是如何獲得上述概率表的。首先,我們必須檢索底層的 “語(yǔ)言模型” 神經(jīng)網(wǎng):

90d57066-f614-11ed-90ce-dac502259ad0.png

稍后,我們將看看這個(gè)神經(jīng)網(wǎng)的內(nèi)部,并談?wù)勊侨绾喂ぷ鞯摹5F(xiàn)在我們可以把這個(gè) “網(wǎng)絡(luò)模型” 作為一個(gè)黑匣子應(yīng)用于我們迄今為止的文本,并要求按概率計(jì)算出該模型認(rèn)為應(yīng)該選擇的前五個(gè)詞:

90dd73d8-f614-11ed-90ce-dac502259ad0.png

這就把這個(gè)結(jié)果變成了一個(gè)明確的格式化的 “數(shù)據(jù)集”:

90e34dbc-f614-11ed-90ce-dac502259ad0.png

如果重復(fù) “應(yīng)用模型” —— 在每一步中加入概率最高的詞(在此代碼中被指定為模型的 “決定”),會(huì)發(fā)生什么:

90ed0b18-f614-11ed-90ce-dac502259ad0.png

如果再繼續(xù)下去會(huì)發(fā)生什么?在這種情況下(“零溫度”),很快就會(huì)出現(xiàn)相當(dāng)混亂和重復(fù)的情況:

90f313dc-f614-11ed-90ce-dac502259ad0.png

但是,如果不總是挑選 “頂級(jí)” 詞,而是有時(shí)隨機(jī)挑選 “非頂級(jí)” 詞(“隨機(jī)性” 對(duì)應(yīng) “溫度” 為 0.8)呢?人們又可以建立起文本:

90fb8b48-f614-11ed-90ce-dac502259ad0.png

而每次這樣做,都會(huì)有不同的隨機(jī)選擇,文本也會(huì)不同 —— 如這 5 個(gè)例子:

91048a0e-f614-11ed-90ce-dac502259ad0.png

值得指出的是,即使在第一步,也有很多可能的 “下一個(gè)詞” 可供選擇(溫度為 0.8),盡管它們的概率下降得很快(是的,這個(gè)對(duì)數(shù)圖上的直線對(duì)應(yīng)于 n-1 的 “冪律” 衰減,這是語(yǔ)言的一般統(tǒng)計(jì)的特點(diǎn)):

910a24c8-f614-11ed-90ce-dac502259ad0.png

那么,如果繼續(xù)下去會(huì)發(fā)生什么?這里有一個(gè)隨機(jī)的例子。它比頂層詞(零溫度)的情況要好,但頂多還是有點(diǎn)奇怪:

90f313dc-f614-11ed-90ce-dac502259ad0.png

這是用最簡(jiǎn)單的 GPT-2 模型(來自 2019 年)做的。用較新和較大的 GPT-3 模型,結(jié)果更好。這里是用同樣的 “提示” 產(chǎn)生的頂部文字(零溫度),但用最大的 GPT-3 模型:

911cda28-f614-11ed-90ce-dac502259ad0.png

這是 “溫度為 0.8” 時(shí)的一個(gè)隨機(jī)例子:

91227f46-f614-11ed-90ce-dac502259ad0.png


—1—

概率從何而來?


好吧,ChatGPT 總是根據(jù)概率來選擇下一個(gè)詞。但是這些概率從何而來?讓我們從一個(gè)更簡(jiǎn)單的問題開始。讓我們考慮一次生成一個(gè)字母(而不是單詞)的英語(yǔ)文本。我們?cè)鯓硬拍芩愠雒總€(gè)字母的概率呢?

我們可以做的一個(gè)非常簡(jiǎn)單的事情就是取一個(gè)英語(yǔ)文本的樣本,然后計(jì)算不同字母在其中出現(xiàn)的頻率。因此,舉例來說,這是計(jì)算維基百科上關(guān)于 “貓”(cat) 的文章中的字母:

9139f202-f614-11ed-90ce-dac502259ad0.png

而這對(duì) “狗”(dog) 也有同樣的作用:

9140d5f4-f614-11ed-90ce-dac502259ad0.png

結(jié)果相似,但不一樣(“o” 在 “dogs” 文章中無疑更常見,因?yàn)楫吘顾霈F(xiàn)在 “dog” 這個(gè)詞本身)。盡管如此,如果我們采取足夠大的英語(yǔ)文本樣本,我們可以期待最終得到至少是相當(dāng)一致的結(jié)果。

91477526-f614-11ed-90ce-dac502259ad0.png

下面是我們得到的一個(gè)樣本,如果我們用這些概率生成一個(gè)字母序列:

914d86be-f614-11ed-90ce-dac502259ad0.png

我們可以通過添加空格將其分解為 “單詞”,就像它們是具有一定概率的字母一樣:

9154ef9e-f614-11ed-90ce-dac502259ad0.png

我們可以通過強(qiáng)迫 “字長(zhǎng)” 的分布與英語(yǔ)中的分布相一致,在制造 “單詞” 方面做得稍微好一點(diǎn):

91599e18-f614-11ed-90ce-dac502259ad0.png

我們?cè)谶@里沒有碰巧得到任何 “實(shí)際的詞”,但結(jié)果看起來稍好一些。不過,要想更進(jìn)一步,我們需要做的不僅僅是隨機(jī)地分別挑選每個(gè)字母。例如,我們知道,如果我們有一個(gè) “q”,下一個(gè)字母基本上必須是 “u”:

這里有一個(gè)字母本身的概率圖:

915f0c7c-f614-11ed-90ce-dac502259ad0.png

這是一個(gè)顯示典型英語(yǔ)文本中成對(duì)字母(“2-grams”)概率的圖。可能的第一個(gè)字母顯示在頁(yè)面上,第二個(gè)字母顯示在頁(yè)面下:

9165ffdc-f614-11ed-90ce-dac502259ad0.png

例如,我們?cè)谶@里看到,除了 “u” 行,“q” 列是空白的(概率為零)。好了,現(xiàn)在我們不再是一次生成一個(gè)字母的 “單詞”,而是使用這些 “2-gram” 概率,一次看兩個(gè)字母來生成它們。下面是一個(gè)結(jié)果的樣本 —— 其中恰好包括一些 “實(shí)際的詞”:

916bbb84-f614-11ed-90ce-dac502259ad0.png

有了足夠多的英語(yǔ)文本,我們不僅可以對(duì)單個(gè)字母或成對(duì)字母(2-grams)的概率進(jìn)行很好的估計(jì),而且還可以對(duì)較長(zhǎng)的字母進(jìn)行估計(jì)。如果我們用逐漸變長(zhǎng)的 n-gram 概率生成 “隨機(jī)詞”,我們就會(huì)發(fā)現(xiàn)它們逐漸變得 “更現(xiàn)實(shí)”:

91709082-f614-11ed-90ce-dac502259ad0.png

但現(xiàn)在讓我們假設(shè) —— 或多或少像 ChatGPT 那樣 —— 我們處理的是整個(gè)單詞,而不是字母。英語(yǔ)中大約有 40,000 個(gè)合理的常用詞。通過查看大型英語(yǔ)文本語(yǔ)料庫(kù)(比如幾百萬本書,總共有幾千億個(gè)單詞),我們可以得到每個(gè)單詞的常見程度的估計(jì)。利用這一點(diǎn),我們可以開始生成 “句子”,其中每個(gè)詞都是獨(dú)立隨機(jī)抽取的,其出現(xiàn)的概率與語(yǔ)料庫(kù)中的相同。下面是我們得到的一個(gè)樣本:

91769b6c-f614-11ed-90ce-dac502259ad0.png

顯然,這是一派胡言。那么,我們?nèi)绾尾拍茏龅酶媚兀烤拖駥?duì)待字母一樣,我們可以開始考慮的不僅僅是單個(gè)詞的概率,還有成對(duì)的或更長(zhǎng)的詞的 n-grams 的概率。在成對(duì)的情況下,以下是我們得到的 5 個(gè)例子,所有情況都是從 “貓” 這個(gè)詞開始的:

917b46da-f614-11ed-90ce-dac502259ad0.png

它變得稍微 “看起來很合理” 了。我們可以想象,如果我們能夠使用足夠長(zhǎng)的 n-grams,我們基本上會(huì) “得到一個(gè) ChatGPT” —— 在這個(gè)意義上,我們會(huì)得到一些東西,以 “正確的總體論文概率” 生成論文長(zhǎng)度的單詞序列。但問題是:沒有足夠的英文文本可以推導(dǎo)出這些概率。

在網(wǎng)絡(luò)的抓取中,可能有幾千億個(gè)單詞;在已經(jīng)數(shù)字化的書籍中,可能有另外幾千億個(gè)單詞。但是有了 4 萬個(gè)常用詞,即使是可能的 2-grams 的數(shù)量也已經(jīng)是 16 億了,可能的 3-grams 的數(shù)量是 60 萬億。

所以我們沒有辦法從現(xiàn)有的文本中估計(jì)出所有這些的概率。而當(dāng)我們達(dá)到 20 個(gè)字的 “文章片段” 時(shí),可能性的數(shù)量比宇宙中的粒子數(shù)量還要多,所以從某種意義上說,它們永遠(yuǎn)不可能全部被寫下來。

那么我們能做什么呢?最大的想法是建立一個(gè)模型,讓我們估計(jì)序列出現(xiàn)的概率 —— 即使我們?cè)谒吹奈谋菊Z(yǔ)料庫(kù)中從未明確見過這些序列。而 ChatGPT 的核心正是一個(gè)所謂的 “大型語(yǔ)言模型”(LLM),它的建立可以很好地估計(jì)這些概率。


—2—

什么是模型?


假設(shè)你想知道(就像伽利略在 15 世紀(jì)末所做的那樣),從比薩塔的每一層落下的炮彈要多長(zhǎng)時(shí)間才能落地。那么,你可以在每一種情況下測(cè)量它,并將結(jié)果制成表格。或者你可以做理論科學(xué)的精髓:建立一個(gè)模型,給出某種計(jì)算答案的程序,而不是僅僅測(cè)量和記住每個(gè)案例。

讓我們想象一下,我們有(有點(diǎn)理想化的)數(shù)據(jù),說明炮彈從不同樓層落下需要多長(zhǎng)時(shí)間。

918e0aa4-f614-11ed-90ce-dac502259ad0.png

我們?nèi)绾斡?jì)算出它從一個(gè)我們沒有明確數(shù)據(jù)的樓層落下需要多長(zhǎng)時(shí)間?在這種特殊情況下,我們可以用已知的物理學(xué)定律來計(jì)算。但是,如果說我們所得到的只是數(shù)據(jù),而我們不知道有什么基本定律在支配它。那么我們可以做一個(gè)數(shù)學(xué)上的猜測(cè),比如說,也許我們應(yīng)該用一條直線作為模型。

9194b5d4-f614-11ed-90ce-dac502259ad0.png

我們可以選擇不同的直線。但這是平均來說最接近我們所給的數(shù)據(jù)的一條。而根據(jù)這條直線,我們可以估算出任何樓層的下降時(shí)間。

我們?cè)趺粗酪谶@里嘗試使用一條直線呢?在某種程度上我們不知道。這只是數(shù)學(xué)上簡(jiǎn)單的東西,而我們已經(jīng)習(xí)慣了這樣的事實(shí):我們測(cè)量的很多數(shù)據(jù)都被數(shù)學(xué)上簡(jiǎn)單的東西很好地?cái)M合了。我們可以嘗試一些數(shù)學(xué)上更復(fù)雜的東西 —— 比如說 a + bx + cx2,然后在這種情況下,我們做得更好:

919d5aa4-f614-11ed-90ce-dac502259ad0.png

不過,事情可能會(huì)出大問題。比如這里是我們用 a + b/c + x sin(x) 最多也就做成:

91a44062-f614-11ed-90ce-dac502259ad0.png

值得理解的是,從來沒有一個(gè) “無模型的模型”。你使用的任何模型都有一些特定的基礎(chǔ)結(jié)構(gòu),然后有一組 “你可以轉(zhuǎn)動(dòng)的旋鈕”(即你可以設(shè)置的參數(shù))來適應(yīng)你的數(shù)據(jù)。而在 ChatGPT 的案例中,使用了很多這樣的 “旋鈕” —— 實(shí)際上,有 1750 億個(gè)。

但令人矚目的是,ChatGPT 的底層結(jié)構(gòu) —— “僅僅” 有這么多的參數(shù) —— 足以使一個(gè)計(jì)算下一個(gè)單詞概率的模型 “足夠好”,從而為我們提供合理的文章長(zhǎng)度的文本。


—3—

類人的任務(wù)模型


我們上面舉的例子涉及到為數(shù)字?jǐn)?shù)據(jù)建立模型,這些數(shù)據(jù)基本上來自于簡(jiǎn)單的物理學(xué) —— 幾個(gè)世紀(jì)以來我們都知道 “簡(jiǎn)單數(shù)學(xué)適用”。但是對(duì)于 ChatGPT 來說,我們必須為人類語(yǔ)言文本建立一個(gè)模型,即由人腦產(chǎn)生的那種模型。而對(duì)于這樣的東西,我們(至少現(xiàn)在)還沒有類似 “簡(jiǎn)單數(shù)學(xué)” 的東西。那么,它的模型可能是什么樣的呢?

在我們談?wù)撜Z(yǔ)言之前,讓我們先談?wù)劻硪豁?xiàng)類似人類的任務(wù):識(shí)別圖像。而作為一個(gè)簡(jiǎn)單的例子,讓我們考慮數(shù)字的圖像(是的,這是一個(gè)經(jīng)典的機(jī)器學(xué)習(xí)例子):

91b9afc4-f614-11ed-90ce-dac502259ad0.png

我們可以做的一件事是為每個(gè)數(shù)字獲取一堆樣本圖像:

91cd5556-f614-11ed-90ce-dac502259ad0.png

然后,為了找出我們輸入的圖像是否對(duì)應(yīng)于某個(gè)特定的數(shù)字,我們只需與我們擁有的樣本進(jìn)行明確的逐像素比較。但作為人類,我們似乎可以做得更好 —— 因?yàn)槲覀內(nèi)匀豢梢宰R(shí)別數(shù)字,即使它們是手寫的,并且有各種各樣的修改和扭曲。

91d2a556-f614-11ed-90ce-dac502259ad0.png

當(dāng)我們?yōu)樯厦娴臄?shù)字?jǐn)?shù)據(jù)建立一個(gè)模型時(shí),我們能夠取一個(gè)給定的數(shù)字值 x,然后為特定的 a 和 b 計(jì)算 a + bx。

因此,如果我們把這里的每個(gè)像素的灰度值當(dāng)作某個(gè)變量 xi,是否有一些所有這些變量的函數(shù),在評(píng)估時(shí)告訴我們這個(gè)圖像是什么數(shù)字?事實(shí)證明,有可能構(gòu)建這樣一個(gè)函數(shù)。不足為奇的是,這并不特別簡(jiǎn)單。一個(gè)典型的例子可能涉及 50 萬次數(shù)學(xué)運(yùn)算。

但最終的結(jié)果是,如果我們把一幅圖像的像素值集合輸入這個(gè)函數(shù),就會(huì)得出一個(gè)數(shù)字,指定我們的圖像是哪個(gè)數(shù)字。稍后,我們將討論如何構(gòu)建這樣一個(gè)函數(shù),以及神經(jīng)網(wǎng)絡(luò)的概念。但現(xiàn)在讓我們把這個(gè)函數(shù)當(dāng)作黑匣子,我們輸入例如手寫數(shù)字的圖像(作為像素值的陣列),然后我們得到這些數(shù)字對(duì)應(yīng)的數(shù)字:

91d74ed0-f614-11ed-90ce-dac502259ad0.png

但這里到底發(fā)生了什么?比方說,我們逐步模糊一個(gè)數(shù)字。有一段時(shí)間,我們的函數(shù)仍然 “識(shí)別” 它,在這里是一個(gè) “2”。但很快它就 “失去” 了,并開始給出 “錯(cuò)誤” 的結(jié)果:

91dc48b8-f614-11ed-90ce-dac502259ad0.png

但為什么我們說這是一個(gè) “錯(cuò)誤” 的結(jié)果呢?在這種情況下,我們知道我們通過模糊一個(gè) “2” 得到所有的圖像。但是,如果我們的目標(biāo)是制作一個(gè)人類識(shí)別圖像的模型,那么真正要問的問題是,如果遇到這些模糊的圖像,在不知道其來源的情況下,人類會(huì)做什么。

如果我們從我們的功能中得到的結(jié)果通常與人類會(huì)說的話一致,我們就有一個(gè) “好的模型”。而非微不足道的科學(xué)事實(shí)是,對(duì)于像這樣的圖像識(shí)別任務(wù),我們現(xiàn)在基本上知道如何構(gòu)建這樣的函數(shù)。

我們能 “從數(shù)學(xué)上證明” 它們的作用嗎?嗯,不能。因?yàn)橐龅竭@一點(diǎn),我們必須有一個(gè)關(guān)于我們?nèi)祟愓谧鍪裁吹臄?shù)學(xué)理論。以 “2” 圖像為例,改變幾個(gè)像素。我們可以想象,只有幾個(gè)像素 “不合適”,我們還是應(yīng)該認(rèn)為這個(gè)圖像是 “2”。但這應(yīng)該到什么程度呢?這是一個(gè)關(guān)于人類視覺感知的問題。而且,是的,對(duì)于蜜蜂或章魚來說,答案無疑是不同的 —— 對(duì)于假定的外星人來說,可能完全不同。


—4—

神經(jīng)網(wǎng)路


好吧,那么我們用于圖像識(shí)別等任務(wù)的典型模型究竟是如何工作的呢?目前最流行、最成功的方法是使用神經(jīng)網(wǎng)絡(luò)。在 20 世紀(jì) 40 年代,神經(jīng)網(wǎng)絡(luò)的發(fā)明形式與今天的使用非常接近,它可以被認(rèn)為是大腦似乎工作方式的簡(jiǎn)單理想化。

在人類的大腦中,有大約 1000 億個(gè)神經(jīng)元(神經(jīng)細(xì)胞),每個(gè)神經(jīng)元都能產(chǎn)生電脈沖,每秒可能有一千次。這些神經(jīng)元在一個(gè)復(fù)雜的網(wǎng)絡(luò)中連接起來,每個(gè)神經(jīng)元都有樹狀的分支,允許它將電信號(hào)傳遞給可能有成千上萬的其他神經(jīng)元。

粗略估計(jì),任何給定的神經(jīng)元是否在某一時(shí)刻產(chǎn)生電脈沖,取決于它從其他神經(jīng)元那里收到的脈沖 —— 不同的連接有不同的 “權(quán)重” 貢獻(xiàn)。

當(dāng)我們 “看到一個(gè)圖像” 時(shí),所發(fā)生的事情是,當(dāng)圖像的光子落在眼睛后面的(“光感受器”)細(xì)胞上時(shí),它們?cè)谏窠?jīng)細(xì)胞中產(chǎn)生電信號(hào)。這些神經(jīng)細(xì)胞與其他神經(jīng)細(xì)胞相連,最終信號(hào)通過一整層的神經(jīng)元。而正是在這個(gè)過程中,我們 “識(shí)別” 了圖像,最終 “形成了一個(gè)想法”,即我們 “看到了一個(gè) 2”(也許最后會(huì)做一些事情,如大聲說 “2” 這個(gè)詞)。

上一節(jié)中的 “黑盒子” 函數(shù)是這樣一個(gè)神經(jīng)網(wǎng)絡(luò)的 “數(shù)學(xué)化” 版本。它剛好有 11 層(雖然只有 4 個(gè) “核心層”)。

91f597be-f614-11ed-90ce-dac502259ad0.png

這個(gè)神經(jīng)網(wǎng)并沒有什么特別的 “理論推導(dǎo)”;它只是在 1998 年作為一項(xiàng)工程而構(gòu)建的東西,并且被發(fā)現(xiàn)是有效的。(當(dāng)然,這與我們描述我們的大腦是通過生物進(jìn)化過程產(chǎn)生的沒有什么不同)。

好吧,但是像這樣的神經(jīng)網(wǎng)絡(luò)是如何 “識(shí)別事物” 的?關(guān)鍵在于吸引器的概念。想象一下,我們有 1 和 2 的手寫圖像:

91fe4346-f614-11ed-90ce-dac502259ad0.png

我們希望所有的 1 都 “被吸引到一個(gè)地方”,而所有的 2 都 “被吸引到另一個(gè)地方”。或者,換一種方式,如果一個(gè)圖像在某種程度上 “更接近于 1”,而不是 2,我們希望它最終出現(xiàn)在 “1 的地方”,反之亦然。

作為一個(gè)直接的類比,我們假設(shè)在平面上有某些位置,用點(diǎn)表示(在現(xiàn)實(shí)生活中,它們可能是咖啡店的位置)。那么我們可以想象,從平面上的任何一點(diǎn)開始,我們總是想在最近的點(diǎn)結(jié)束(即我們總是去最近的咖啡店)。我們可以通過將平面劃分為由理想化的 “分水嶺” 分隔的區(qū)域(“吸引盆地”)來表示這一點(diǎn):

92053584-f614-11ed-90ce-dac502259ad0.png

我們可以認(rèn)為這是在執(zhí)行一種 “識(shí)別任務(wù)”,我們不是在做類似于識(shí)別給定圖像 “看起來最像” 的數(shù)字的事情 —— 而是很直接地看到給定點(diǎn)最接近哪個(gè)點(diǎn)。(我們?cè)谶@里展示的 “Voronoi 圖” 設(shè)置是在二維歐幾里得空間中分離點(diǎn);數(shù)字識(shí)別任務(wù)可以被認(rèn)為是在做非常類似的事情 —— 但卻是在一個(gè)由每張圖像中所有像素的灰度等級(jí)形成的 784 維空間中。)

那么,我們?nèi)绾问挂粋€(gè)神經(jīng)網(wǎng)絡(luò) “完成一個(gè)識(shí)別任務(wù)”?讓我們考慮這個(gè)非常簡(jiǎn)單的案例:

920df318-f614-11ed-90ce-dac502259ad0.png

我們的目標(biāo)是獲取一個(gè)對(duì)應(yīng)于 {x,y} 位置的 “輸入”,然后將其 “識(shí)別” 為它最接近的三個(gè)點(diǎn)中的任何一個(gè)。或者,換句話說,我們希望神經(jīng)網(wǎng)絡(luò)能夠計(jì)算出一個(gè)類似于 {x,y} 的函數(shù):

9214b310-f614-11ed-90ce-dac502259ad0.png

那么,我們?nèi)绾斡蒙窠?jīng)網(wǎng)絡(luò)做到這一點(diǎn)呢?歸根結(jié)底,神經(jīng)網(wǎng)是一個(gè)理想化的 “神經(jīng)元” 的連接集合 —— 通常按層排列 —— 一個(gè)簡(jiǎn)單的例子是:

921c3d10-f614-11ed-90ce-dac502259ad0.png

每個(gè) “神經(jīng)元” 都被有效地設(shè)置為評(píng)估一個(gè)簡(jiǎn)單的數(shù)字函數(shù)。為了 “使用” 這個(gè)網(wǎng)絡(luò),我們只需在頂部輸入數(shù)字(如我們的坐標(biāo) x 和 y),然后讓每一層的神經(jīng)元 “評(píng)估它們的功能”,并通過網(wǎng)絡(luò)向前輸入結(jié)果 —— 最終在底部產(chǎn)生最終的結(jié)果。

92222162-f614-11ed-90ce-dac502259ad0.png

在傳統(tǒng)的(受生物啟發(fā)的)設(shè)置中,每個(gè)神經(jīng)元實(shí)際上都有一組來自上一層神經(jīng)元的 “傳入連接”,每個(gè)連接都被賦予一定的 “權(quán)重”(可以是一個(gè)正數(shù)或負(fù)數(shù))。一個(gè)給定的神經(jīng)元的值是通過將 “前一個(gè)神經(jīng)元” 的值乘以其相應(yīng)的權(quán)重來確定的,然后將這些值相加并乘以一個(gè)常數(shù),最后應(yīng)用一個(gè) “閾值”(或 “激活”)函數(shù)。

在數(shù)學(xué)術(shù)語(yǔ)中,如果一個(gè)神經(jīng)元有輸入 x = {x1, x2 …… },那么我們計(jì)算 f[w.x + b],其中權(quán)重 w 和常數(shù) b 通常為網(wǎng)絡(luò)中的每個(gè)神經(jīng)元選擇不同;函數(shù) f 通常是相同的。

計(jì)算 w.x + b 只是一個(gè)矩陣乘法和加法的問題。激活函數(shù) “f 引入了非線性(并最終導(dǎo)致了非線性行為)。通常使用各種激活函數(shù);這里我們只使用 Ramp(或 ReLU):

922a10fc-f614-11ed-90ce-dac502259ad0.png

對(duì)于我們希望神經(jīng)網(wǎng)絡(luò)執(zhí)行的每一項(xiàng)任務(wù)(或者說,對(duì)于我們希望它評(píng)估的每一個(gè)整體函數(shù)),我們將有不同的權(quán)重選擇。(正如我們稍后要討論的那樣,這些權(quán)重通常是通過使用機(jī)器學(xué)習(xí)從我們想要的輸出實(shí)例中 “訓(xùn)練” 神經(jīng)網(wǎng)絡(luò)來確定的)。

最終,每個(gè)神經(jīng)網(wǎng)絡(luò)都對(duì)應(yīng)于一些整體的數(shù)學(xué)函數(shù) —— 盡管它可能寫得很亂。對(duì)于上面的例子,它就是:

9230e49a-f614-11ed-90ce-dac502259ad0.png

ChatGPT 的神經(jīng)網(wǎng)絡(luò)也只是對(duì)應(yīng)于這樣的一個(gè)數(shù)學(xué)函數(shù) —— 但實(shí)際上有數(shù)十億個(gè)術(shù)語(yǔ)。

但讓我們回到單個(gè)神經(jīng)元上。下面是一個(gè)有兩個(gè)輸入(代表坐標(biāo) x 和 y)的神經(jīng)元在選擇不同的權(quán)重和常數(shù)(以及 Ramp 作為激活函數(shù))后可以計(jì)算的函數(shù)的一些例子:

923dd7d6-f614-11ed-90ce-dac502259ad0.png

但是,上面那個(gè)更大的網(wǎng)絡(luò)是怎么回事?嗯,這是它的計(jì)算結(jié)果:

924716ca-f614-11ed-90ce-dac502259ad0.png

這不是很 “正確”,但它接近于我們上面展示的 “最近點(diǎn)” 函數(shù)。

讓我們看看其他一些神經(jīng)網(wǎng)絡(luò)的情況。在每一種情況下,正如我們稍后所解釋的,我們都在使用機(jī)器學(xué)習(xí)來尋找最佳的權(quán)重選擇。然后,我們?cè)谶@里展示帶有這些權(quán)重的神經(jīng)網(wǎng)絡(luò)的計(jì)算結(jié)果:

9250cc9c-f614-11ed-90ce-dac502259ad0.png

更大的網(wǎng)絡(luò)通常能更好地逼近我們的目標(biāo)函數(shù)。而在 “每個(gè)吸引子盆地的中間”,我們通常會(huì)得到我們想要的答案。但在邊界 —— 神經(jīng)網(wǎng)絡(luò) “很難下定決心” 的地方 —— 情況可能會(huì)更加混亂。

在這個(gè)簡(jiǎn)單的數(shù)學(xué)風(fēng)格的 “識(shí)別任務(wù)” 中,“正確答案” 是什么很清楚。但在識(shí)別手寫數(shù)字的問題上,就不那么清楚了。如果有人把 “2” 寫得很糟糕,看起來像 “7”,等等,怎么辦?不過,我們還是可以問,神經(jīng)網(wǎng)絡(luò)是如何區(qū)分?jǐn)?shù)字的 —— 這就給出了一個(gè)指示:

9258fcfa-f614-11ed-90ce-dac502259ad0.png

我們能 “從數(shù)學(xué)上” 說說網(wǎng)絡(luò)是如何區(qū)分的嗎?并非如此。它只是在 “做神經(jīng)網(wǎng)絡(luò)所做的事” 而已。但事實(shí)證明,這通常似乎與我們?nèi)祟愃鞯膮^(qū)分相當(dāng)吻合。

讓我們舉一個(gè)更復(fù)雜的例子。比方說,我們有貓和狗的圖像。我們有一個(gè)神經(jīng)網(wǎng)絡(luò),它被訓(xùn)練來區(qū)分它們。下面是它在一些例子中可能做的事情:

9263d918-f614-11ed-90ce-dac502259ad0.png

現(xiàn)在,“正確答案” 是什么就更不清楚了。穿著貓衣的狗怎么辦?等等。無論給它什么輸入,神經(jīng)網(wǎng)絡(luò)都會(huì)產(chǎn)生一個(gè)答案。而且,事實(shí)證明,這樣做的方式與人類可能做的事情是合理一致的。

正如我在上面所說的,這不是一個(gè)我們可以 “從第一原理推導(dǎo)” 的事實(shí)。它只是根據(jù)經(jīng)驗(yàn)被發(fā)現(xiàn)是真的,至少在某些領(lǐng)域是這樣。但這是神經(jīng)網(wǎng)絡(luò)有用的一個(gè)關(guān)鍵原因:它們以某種方式捕捉了 “類似人類” 的做事方式。

給自己看一張貓的照片,然后問 “為什么那是一只貓?”。也許你會(huì)開始說 “嗯,我看到它的尖耳朵,等等”。但要解釋你是如何認(rèn)出這張圖片是一只貓的,并不是很容易。只是你的大腦不知怎么想出來的。但是對(duì)于大腦來說,沒有辦法(至少現(xiàn)在還沒有)“進(jìn)入” 它的內(nèi)部,看看它是如何想出來的。

那么對(duì)于一個(gè)(人工)神經(jīng)網(wǎng)來說呢?好吧,當(dāng)你展示一張貓的圖片時(shí),可以直接看到每個(gè) “神經(jīng)元” 的作用。但是,即使要獲得一個(gè)基本的可視化,通常也是非常困難的。

在我們用于解決上述 “最近點(diǎn)” 問題的最終網(wǎng)絡(luò)中,有 17 個(gè)神經(jīng)元。在用于識(shí)別手寫數(shù)字的網(wǎng)絡(luò)中,有 2190 個(gè)。而在我們用來識(shí)別貓和狗的網(wǎng)絡(luò)中,有 60,650 個(gè)。

通常情況下,要將相當(dāng)于 60,650 個(gè)維度的空間可視化是相當(dāng)困難的。但由于這是一個(gè)為處理圖像而設(shè)置的網(wǎng)絡(luò),它的許多神經(jīng)元層被組織成陣列,就像它所看的像素陣列一樣。

如果我們采取一個(gè)典型的貓圖像:

926ce832-f614-11ed-90ce-dac502259ad0.png

那么我們就可以用一組衍生圖像來表示第一層神經(jīng)元的狀態(tài) —— 其中許多圖像我們可以很容易地解釋為 “沒有背景的貓” 或 “貓的輪廓” 等:

927f5012-f614-11ed-90ce-dac502259ad0.png

到了第十層,就更難解釋發(fā)生了什么:

92883a4c-f614-11ed-90ce-dac502259ad0.png

但總的來說,我們可以說神經(jīng)網(wǎng)絡(luò)正在 “挑選出某些特征”(也許尖尖的耳朵也在其中),并利用這些特征來確定圖像是什么。但這些特征是我們有名字的,比如 “尖耳朵”?大多數(shù)情況下不是。

我們的大腦在使用類似的特征嗎?大多數(shù)情況下我們不知道。但值得注意的是,像我們?cè)谶@里展示的神經(jīng)網(wǎng)絡(luò)的前幾層似乎可以挑出圖像的某些方面(如物體的邊緣),這些方面似乎與我們知道的由大腦中第一層視覺處理挑出的特征相似。

但是,假設(shè)我們想要一個(gè)神經(jīng)網(wǎng)絡(luò)的 “貓識(shí)別理論”。我們可以說 “看,這個(gè)特定的網(wǎng)絡(luò)做到了” —— 這立即給了我們一些關(guān)于 “問題有多難” 的感覺(例如,可能需要多少個(gè)神經(jīng)元或?qū)樱?/p>

但至少到現(xiàn)在為止,我們還沒有辦法對(duì)網(wǎng)絡(luò)正在做的事情進(jìn)行 “敘述性描述”。也許這是因?yàn)樗谟?jì)算上確實(shí)是不可簡(jiǎn)化的,而且除了明確地追蹤每一個(gè)步驟之外,沒有一般的方法可以找到它在做什么。也可能只是因?yàn)槲覀冞€沒有 “弄清科學(xué)”,還沒有確定 “自然法則”,使我們能夠總結(jié)出正在發(fā)生的事情。

當(dāng)我們談?wù)撚?ChatGPT 生成語(yǔ)言時(shí),我們會(huì)遇到同樣的問題。而且同樣不清楚是否有辦法 “總結(jié)它在做什么”。但是語(yǔ)言的豐富性和細(xì)節(jié)(以及我們?cè)谶@方面的經(jīng)驗(yàn))可能會(huì)讓我們比圖像走得更遠(yuǎn)。


—5—

機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的訓(xùn)練


到目前為止,我們一直在談?wù)撃切?“已經(jīng)知道” 如何完成特定任務(wù)的神經(jīng)網(wǎng)絡(luò)。但是,神經(jīng)網(wǎng)絡(luò)之所以如此有用(估計(jì)也是在大腦中),是因?yàn)樗鼈儾粌H在原則上可以完成各種任務(wù),而且可以逐步 “根據(jù)實(shí)例訓(xùn)練” 來完成這些任務(wù)。

當(dāng)我們制作一個(gè)區(qū)分貓和狗的神經(jīng)網(wǎng)絡(luò)時(shí),我們實(shí)際上不需要寫一個(gè)程序來(比如說)明確地找到胡須;相反,我們只需要展示大量關(guān)于什么是貓和什么是狗的例子,然后讓網(wǎng)絡(luò)從這些例子中 “機(jī)器學(xué)習(xí)” 如何去區(qū)分它們。

重點(diǎn)是,訓(xùn)練有素的網(wǎng)絡(luò)從它所展示的特定例子中 “概括” 出來。正如我們?cè)谏厦婵吹降模@并不是簡(jiǎn)單地讓網(wǎng)絡(luò)識(shí)別它所看到的貓咪圖像的特定像素模式;而是讓神經(jīng)網(wǎng)絡(luò)以某種方式設(shè)法在我們認(rèn)為是某種 “一般貓性” 的基礎(chǔ)上區(qū)分圖像。

那么,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練究竟是如何進(jìn)行的呢?從本質(zhì)上講,我們一直在努力尋找能夠使神經(jīng)網(wǎng)絡(luò)成功重現(xiàn)我們所給的例子的權(quán)重。然后,我們依靠神經(jīng)網(wǎng)絡(luò)以 “合理” 的方式在這些例子之間進(jìn)行 “插值”(或 “概括”)。

讓我們看看一個(gè)比上面的最近點(diǎn)的問題更簡(jiǎn)單的問題。讓我們只嘗試讓一個(gè)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)函數(shù):

929ecd2a-f614-11ed-90ce-dac502259ad0.png

對(duì)于這個(gè)任務(wù),我們需要一個(gè)只有一個(gè)輸入和一個(gè)輸出的網(wǎng)絡(luò),比如:

92a695d2-f614-11ed-90ce-dac502259ad0.png

但我們應(yīng)該使用什么權(quán)重等?在每一組可能的權(quán)重下,神經(jīng)網(wǎng)絡(luò)都會(huì)計(jì)算出一些函數(shù)。例如,這里是它用幾組隨機(jī)選擇的權(quán)重所做的事情:

92abb80a-f614-11ed-90ce-dac502259ad0.png

是的,我們可以清楚地看到,在這些情況下,它甚至都沒有接近再現(xiàn)我們想要的函數(shù)。那么,我們?nèi)绾握业侥軌蛑噩F(xiàn)該功能的權(quán)重呢?

基本的想法是提供大量的 “輸入→輸出” 的例子來 “學(xué)習(xí)” —— 然后嘗試找到能重現(xiàn)這些例子的權(quán)重。下面是用逐漸增多的例子來做的結(jié)果:

92b16d9a-f614-11ed-90ce-dac502259ad0.png

在這個(gè) “訓(xùn)練” 的每個(gè)階段,網(wǎng)絡(luò)中的權(quán)重都被逐步調(diào)整 —— 我們看到,最終我們得到了一個(gè)能成功重現(xiàn)我們想要的功能的網(wǎng)絡(luò)。那么,我們是如何調(diào)整權(quán)重的呢?基本的想法是在每個(gè)階段看看我們離得到我們想要的功能 “有多遠(yuǎn)”,然后以這樣的方式更新權(quán)重,使之更接近。

為了找出 “我們有多遠(yuǎn)”,我們計(jì)算通常被稱為 “損失函數(shù)”(或有時(shí)稱為 “成本函數(shù)”)的東西。這里我們使用的是一個(gè)簡(jiǎn)單的(L2)損失函數(shù),它只是我們得到的值與真實(shí)值之間的差異的平方之和。

我們看到的是,隨著我們訓(xùn)練過程的進(jìn)展,損失函數(shù)逐漸減少(遵循一定的 “學(xué)習(xí)曲線”,不同的任務(wù)是不同的) —— 直到我們達(dá)到一個(gè)點(diǎn),網(wǎng)絡(luò)(至少是一個(gè)很好的近似值)成功再現(xiàn)了我們想要的函數(shù):

92b69252-f614-11ed-90ce-dac502259ad0.png

好了,最后要解釋的重要部分是如何調(diào)整權(quán)重以減少損失函數(shù)。正如我們所說,損失函數(shù)給我們提供了我們得到的值與真實(shí)值之間的 “距離”。但是 “我們得到的值” 在每個(gè)階段都是由當(dāng)前版本的神經(jīng)網(wǎng)絡(luò)和其中的權(quán)重決定的。但現(xiàn)在想象一下,這些權(quán)重是變量 —— 比如說 wi。我們想找出如何調(diào)整這些變量的值,以使取決于這些變量的損失最小。

例如,想象一下(對(duì)實(shí)踐中使用的典型神經(jīng)網(wǎng)絡(luò)進(jìn)行了不可思議的簡(jiǎn)化),我們只有兩個(gè)權(quán)重 w1 和 w2。那么我們可能有一個(gè)損失,作為 w1 和 w2 的函數(shù),看起來像這樣:

92be1644-f614-11ed-90ce-dac502259ad0.png

數(shù)值分析提供了各種技術(shù)來尋找這樣的情況下的最小值。但一個(gè)典型的方法是,從之前的 w1、w2 開始,逐步遵循最陡峭的下降路徑:

92c4fdf6-f614-11ed-90ce-dac502259ad0.png

就像水從山上流下來一樣,所能保證的是這個(gè)過程最終會(huì)在地表的某個(gè)局部最小值(“一個(gè)山湖”);它很可能達(dá)不到最終的全球最小值。

在 “重量景觀” 上找到最陡峭的下降路徑并不明顯,這是不可行的。但是,微積分可以幫助我們。正如我們上面提到的,我們總是可以把神經(jīng)網(wǎng)看作是在計(jì)算一個(gè)數(shù)學(xué)函數(shù) —— 它取決于它的輸入和權(quán)重。

但現(xiàn)在考慮對(duì)這些權(quán)重進(jìn)行微分。事實(shí)證明,微積分的連鎖法則實(shí)際上可以讓我們 “解開” 神經(jīng)網(wǎng)中連續(xù)幾層所做的運(yùn)算。其結(jié)果是,我們可以 —— 至少在某些局部近似中 —— “反轉(zhuǎn)” 神經(jīng)網(wǎng)的操作,并逐步找到使與輸出相關(guān)的損失最小的權(quán)重。

上圖顯示了在只有 2 個(gè)權(quán)重的不現(xiàn)實(shí)的簡(jiǎn)單情況下,我們可能需要做的最小化工作。但事實(shí)證明,即使有更多的權(quán)重(ChatGPT 使用了 1750 億個(gè)),仍有可能做到最小化,至少在某種程度上是近似的。事實(shí)上,2011 年左右發(fā)生的 “深度學(xué)習(xí)” 的重大突破與以下發(fā)現(xiàn)有關(guān):從某種意義上說,當(dāng)有很多權(quán)重參與時(shí),做(至少是近似)最小化比有相當(dāng)少的權(quán)重更容易。

換句話說 —— 有點(diǎn)反直覺 —— 用神經(jīng)網(wǎng)絡(luò)解決更復(fù)雜的問題比簡(jiǎn)單的問題更容易。其大致原因似乎是,當(dāng)一個(gè)人有很多 “權(quán)重變量” 時(shí),他有一個(gè)高維空間,有 “很多不同的方向”,可以把他引向最小值 —— 而如果變量較少,則更容易陷入一個(gè)局部最小值(“山湖”),沒有 “方向可以出去”。

值得指出的是,在典型的情況下,有許多不同的權(quán)重集合,它們都能使神經(jīng)網(wǎng)絡(luò)具有幾乎相同的性能。而在實(shí)際的神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,通常會(huì)有很多隨機(jī)的選擇,導(dǎo)致 “不同但等同的解決方案”,就像這些:

92cef9fa-f614-11ed-90ce-dac502259ad0.png

但每一個(gè)這樣的 “不同的解決方案” 至少會(huì)有輕微的不同行為。如果我們要求,比如說,在我們提供訓(xùn)練實(shí)例的區(qū)域之外進(jìn)行 “外推”,我們可以得到極大的不同結(jié)果:

92d685c6-f614-11ed-90ce-dac502259ad0.png

但是哪一個(gè)是 “正確的” 呢?真的沒有辦法說。它們都 “與觀察到的數(shù)據(jù)一致”。但它們都對(duì)應(yīng)著不同的 “先天” 方式來 “思考” 如何在 “盒子外” 做什么。對(duì)我們?nèi)祟悂碚f,有些可能比其他的看起來 “更合理”。


—6—

神經(jīng)網(wǎng)絡(luò)訓(xùn)練的實(shí)踐與理論


特別是在過去的十年里,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的藝術(shù)方面取得了許多進(jìn)展。而且,是的,這基本上是一門藝術(shù)。有時(shí),特別是在回顧中,人們至少可以看到正在做的事情有一絲 “科學(xué)解釋” 的影子。但大多數(shù)情況下,事情都是通過試驗(yàn)和錯(cuò)誤發(fā)現(xiàn)的,增加了一些想法和技巧,逐步建立了一個(gè)關(guān)于如何使用神經(jīng)網(wǎng)絡(luò)的重要傳說。

有幾個(gè)關(guān)鍵部分。首先,對(duì)于一個(gè)特定的任務(wù),應(yīng)該使用什么架構(gòu)的神經(jīng)網(wǎng)絡(luò)。然后,還有一個(gè)關(guān)鍵問題,即如何獲得訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)。而且,人們?cè)絹碓蕉嗟夭皇窃谔幚韽念^開始訓(xùn)練一個(gè)網(wǎng)絡(luò)的問題:相反,一個(gè)新的網(wǎng)絡(luò)可以直接納入另一個(gè)已經(jīng)訓(xùn)練好的網(wǎng)絡(luò),或者至少可以使用該網(wǎng)絡(luò)為自己產(chǎn)生更多的訓(xùn)練實(shí)例。

人們可能認(rèn)為,對(duì)于每一種特定的任務(wù),人們都需要一個(gè)不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。但人們發(fā)現(xiàn),即使是對(duì)于明顯不同的任務(wù),相同的架構(gòu)似乎也能發(fā)揮作用。

在某種程度上,這讓人想起了通用計(jì)算的想法(以及我的計(jì)算等價(jià)原則),但是,正如我將在后面討論的那樣,我認(rèn)為這更多地反映了這樣一個(gè)事實(shí),即我們通常試圖讓神經(jīng)網(wǎng)絡(luò)做的任務(wù)是 “類似人類” 的,而神經(jīng)網(wǎng)絡(luò)可以捕獲相當(dāng)普遍的 “類似人類的過程”。

在早期的神經(jīng)網(wǎng)絡(luò)中,人們傾向于認(rèn)為應(yīng)該 “讓神經(jīng)網(wǎng)絡(luò)盡可能地少做”。例如,在將語(yǔ)音轉(zhuǎn)換為文本時(shí),人們認(rèn)為應(yīng)該首先分析語(yǔ)音的音頻,將其分解為音素,等等。但人們發(fā)現(xiàn),至少對(duì)于 “類似人類的任務(wù)” 來說,通常更好的做法是嘗試在 “端到端問題” 上訓(xùn)練神經(jīng)網(wǎng)絡(luò),讓它自己 “發(fā)現(xiàn)” 必要的中間特征、編碼等。

還有一個(gè)想法是,我們應(yīng)該在神經(jīng)網(wǎng)絡(luò)中引入復(fù)雜的單獨(dú)組件,讓它實(shí)際上 “明確地實(shí)現(xiàn)特定的算法想法”。但是,這又一次被證明是不值得的;相反,最好只是處理非常簡(jiǎn)單的組件,讓它們 “自我組織”(盡管通常是以我們無法理解的方式)來實(shí)現(xiàn)(大概)那些算法想法的等價(jià)物。

這并不是說沒有與神經(jīng)網(wǎng)絡(luò)相關(guān)的 “結(jié)構(gòu)化思想”。因此,例如,具有局部連接的二維神經(jīng)元陣列似乎至少在處理圖像的早期階段非常有用。而擁有專注于 “回顧序列” 的連接模式似乎很有用 —— 我們將在后面看到 —— 在處理人類語(yǔ)言等事物時(shí),例如在 ChatGPT 中。

但神經(jīng)網(wǎng)絡(luò)的一個(gè)重要特點(diǎn)是,像一般的計(jì)算機(jī)一樣,它們最終只是在處理數(shù)據(jù)。而目前的神經(jīng)網(wǎng)絡(luò) —— 目前的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法 —— 是專門處理數(shù)字陣列的。但在處理過程中,這些數(shù)組可以被完全重新排列和重塑。舉個(gè)例子,我們上面用來識(shí)別數(shù)字的網(wǎng)絡(luò)從一個(gè)二維的 “圖像” 陣列開始,迅速 “增厚” 到許多通道,但隨后 “濃縮” 成一個(gè)一維陣列,最終將包含代表不同可能輸出數(shù)字的元素:

92efe7d2-f614-11ed-90ce-dac502259ad0.png

但是,好吧,如何判斷一個(gè)特定的任務(wù)需要多大的神經(jīng)網(wǎng)?這是一門藝術(shù)。在某種程度上,關(guān)鍵是要知道 “這個(gè)任務(wù)有多難”。但對(duì)于類似人類的任務(wù)來說,這通常是很難估計(jì)的。

是的,可能有一種系統(tǒng)的方法可以通過計(jì)算機(jī)非常 “機(jī)械” 地完成任務(wù)。但很難知道是否存在人們認(rèn)為的技巧或捷徑,使人們至少在 “類似人類的水平” 上更容易地完成這項(xiàng)任務(wù)。可能需要列舉一個(gè)巨大的游戲樹來 “機(jī)械地” 玩某個(gè)游戲;但可能有一個(gè)更容易(“啟發(fā)式”)的方法來實(shí)現(xiàn) “人類水平的游戲”。

當(dāng)人們?cè)谔幚砦⑿〉纳窠?jīng)網(wǎng)絡(luò)和簡(jiǎn)單的任務(wù)時(shí),有時(shí)可以明確地看到 “從這里不能到達(dá)那里”。例如,這是人們?cè)谏弦还?jié)的任務(wù)中用幾個(gè)小的神經(jīng)網(wǎng)絡(luò)似乎能做到的最好的結(jié)果:

92f58be2-f614-11ed-90ce-dac502259ad0.png

而我們的情況是,如果網(wǎng)太小,它就不能再現(xiàn)我們想要的功能。但如果超過一定的規(guī)模,它就沒有問題了 —— 至少如果一個(gè)人用足夠長(zhǎng)的時(shí)間和足夠多的例子訓(xùn)練它。順便說一下,這些圖片說明了一個(gè)神經(jīng)網(wǎng)絡(luò)的傳說:如果中間有一個(gè) “擠壓”,迫使所有東西都通過一個(gè)較小的中間神經(jīng)元數(shù)量,那么我們往往可以用一個(gè)較小的網(wǎng)絡(luò)。

(值得一提的是,“無中間層” —— 或所謂的 “感知器” —— 網(wǎng)絡(luò)只能學(xué)習(xí)本質(zhì)上的線性函數(shù) —— 但只要有一個(gè)中間層,原則上就可以任意很好地近似任何函數(shù),至少如果有足夠的神經(jīng)元,盡管為了使其可行地訓(xùn)練,通常需要某種正則化或規(guī)范化)。

好吧,讓我們假設(shè)我們已經(jīng)確定了某種神經(jīng)網(wǎng)絡(luò)架構(gòu)。現(xiàn)在有一個(gè)問題,就是如何獲得數(shù)據(jù)來訓(xùn)練網(wǎng)絡(luò)。圍繞神經(jīng)網(wǎng)絡(luò)和一般機(jī)器學(xué)習(xí)的許多實(shí)際挑戰(zhàn)都集中在獲取或準(zhǔn)備必要的訓(xùn)練數(shù)據(jù)上。在許多情況下(“監(jiān)督學(xué)習(xí)”),人們希望獲得明確的輸入和期望的輸出的例子。

因此,舉例來說,人們可能希望通過圖像中的內(nèi)容或一些其他屬性來標(biāo)記圖像。也許我們必須明確地去做 —— 通常是費(fèi)盡心機(jī)地去做標(biāo)記。但是很多時(shí)候,我們可以借助已經(jīng)完成的工作,或者將其作為某種代理。

因此,舉例來說,我們可以使用網(wǎng)絡(luò)上已經(jīng)提供的圖片的 alt 標(biāo)簽。或者,在另一個(gè)領(lǐng)域,我們可以使用為視頻創(chuàng)建的封閉式字幕。或者在語(yǔ)言翻譯訓(xùn)練中,可以使用不同語(yǔ)言的網(wǎng)頁(yè)或其他文件的平行版本。

你需要向神經(jīng)網(wǎng)絡(luò)展示多少數(shù)據(jù)來訓(xùn)練它完成一項(xiàng)特定任務(wù)?同樣,這很難從第一原理上估計(jì)。當(dāng)然,通過使用 “轉(zhuǎn)移學(xué)習(xí)” 來 “轉(zhuǎn)移” 諸如已經(jīng)在另一個(gè)網(wǎng)絡(luò)中學(xué)習(xí)過的重要特征列表的東西,可以大大降低要求。

但一般來說,神經(jīng)網(wǎng)絡(luò)需要 “看到大量的例子” 才能訓(xùn)練好。而至少對(duì)于某些任務(wù)來說,神經(jīng)網(wǎng)絡(luò)的一個(gè)重要傳說是,這些例子可能是非常重復(fù)的。事實(shí)上,向神經(jīng)網(wǎng)絡(luò)展示所有的例子是一個(gè)標(biāo)準(zhǔn)的策略,一遍又一遍。在每個(gè) “訓(xùn)練回合”(或 “epochs”)中,神經(jīng)網(wǎng)絡(luò)至少會(huì)處于一個(gè)稍微不同的狀態(tài),而以某種方式 “提醒” 它某個(gè)特定的例子對(duì)于讓它 “記住那個(gè)例子” 是很有用的。(是的,也許這類似于人類記憶中的重復(fù)的有用性)。

但往往只是反復(fù)重復(fù)同一個(gè)例子是不夠的。還需要向神經(jīng)網(wǎng)絡(luò)展示這個(gè)例子的變化。而神經(jīng)網(wǎng)絡(luò)理論的一個(gè)特點(diǎn)是,這些 “數(shù)據(jù)增強(qiáng)” 的變化不一定要復(fù)雜才有用。只要用基本的圖像處理方法稍微修改一下圖像,就可以使它們?cè)谏窠?jīng)網(wǎng)絡(luò)訓(xùn)練中基本上 “像新的一樣好”。同樣,當(dāng)人們沒有實(shí)際的視頻等來訓(xùn)練自動(dòng)駕駛汽車時(shí),人們可以繼續(xù)從模擬的視頻游戲環(huán)境中獲得數(shù)據(jù),而不需要實(shí)際的真實(shí)世界場(chǎng)景的所有細(xì)節(jié)。

像 ChatGPT 這樣的東西如何呢?嗯,它有一個(gè)很好的特點(diǎn),那就是它可以進(jìn)行 “無監(jiān)督學(xué)習(xí)”,這使得它更容易得到用于訓(xùn)練的例子。回顧一下,ChatGPT 的基本任務(wù)是找出如何繼續(xù)它所給的一段文字。因此,為了獲得 “訓(xùn)練實(shí)例”,我們所要做的就是獲得一段文本,并將其結(jié)尾遮蓋起來,然后將其作為 “訓(xùn)練的輸入” —— “輸出” 是完整的、未被遮蓋的文本。我們稍后會(huì)詳細(xì)討論這個(gè)問題,但主要的一點(diǎn)是,與學(xué)習(xí)圖片中的內(nèi)容不同,不需要 “明確的標(biāo)簽”;ChatGPT 實(shí)際上可以直接從它所得到的任何文本例子中學(xué)習(xí)。

好吧,那么神經(jīng)網(wǎng)絡(luò)的實(shí)際學(xué)習(xí)過程是怎樣的呢?歸根結(jié)底,這都是為了確定什么權(quán)重能夠最好地捕捉所給的訓(xùn)練實(shí)例。有各種詳細(xì)的選擇和 “超參數(shù)設(shè)置”(之所以被稱為超參數(shù),是因?yàn)榭梢园褭?quán)重看作是 “參數(shù)”),可以用來調(diào)整如何完成這一過程。

有不同的損失函數(shù)選擇(平方之和、絕對(duì)值之和,等等)。有不同的方法來進(jìn)行損失最小化(每一步要在權(quán)重空間中移動(dòng)多遠(yuǎn),等等)。然后還有一些問題,比如要展示多大的 “一批” 例子來獲得每一個(gè)試圖最小化的損失的連續(xù)估計(jì)。而且,是的,人們可以應(yīng)用機(jī)器學(xué)習(xí)(例如,我們?cè)?Wolfram 語(yǔ)言中所做的)來實(shí)現(xiàn)機(jī)器學(xué)習(xí)的自動(dòng)化 —— 自動(dòng)設(shè)置超參數(shù)等東西。

但最終,整個(gè)訓(xùn)練過程的特點(diǎn)是看到損失是如何逐漸減少的(如這個(gè) Wolfram Language 的小型訓(xùn)練的進(jìn)度監(jiān)視器):

92fbde34-f614-11ed-90ce-dac502259ad0.png

而人們通常看到的是,損失在一段時(shí)間內(nèi)減少,但最終在某個(gè)恒定值上趨于平緩。如果這個(gè)值足夠小,那么可以認(rèn)為訓(xùn)練是成功的;否則,這可能是一個(gè)應(yīng)該嘗試改變網(wǎng)絡(luò)結(jié)構(gòu)的信號(hào)。

能否告訴我們 “學(xué)習(xí)曲線” 要花多長(zhǎng)時(shí)間才能變平?就像許多其他事情一樣,似乎有近似的冪律縮放關(guān)系,這取決于神經(jīng)網(wǎng)絡(luò)的大小和使用的數(shù)據(jù)量。但一般的結(jié)論是,訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)是很難的,需要大量的計(jì)算努力。作為一個(gè)實(shí)際問題,這些努力的絕大部分都花在了對(duì)數(shù)字陣列的操作上,而這正是 GPU 所擅長(zhǎng)的 —— 這就是為什么神經(jīng)網(wǎng)絡(luò)訓(xùn)練通常受限于 GPU 的可用性。

在未來,是否會(huì)有從根本上更好的方法來訓(xùn)練神經(jīng)網(wǎng)絡(luò),或者一般地做神經(jīng)網(wǎng)絡(luò)的工作?我認(rèn)為,幾乎可以肯定。神經(jīng)網(wǎng)絡(luò)的基本理念是用大量簡(jiǎn)單(本質(zhì)上相同)的組件創(chuàng)建一個(gè)靈活的 “計(jì)算結(jié)構(gòu)”,并讓這個(gè) “結(jié)構(gòu)” 能夠被逐步修改,以便從實(shí)例中學(xué)習(xí)。

在目前的神經(jīng)網(wǎng)絡(luò)中,人們基本上是使用微積分的思想 —— 應(yīng)用于實(shí)數(shù) —— 來做這種增量修改。但越來越清楚的是,擁有高精度的數(shù)字并不重要;即使用目前的方法,8 位或更少的數(shù)字可能也足夠了。

像蜂窩自動(dòng)機(jī)這樣的計(jì)算系統(tǒng),基本上是在許多單獨(dú)的比特上并行操作的,如何做這種增量修改從來都不清楚,但沒有理由認(rèn)為它不可能。事實(shí)上,就像 “2012 年深度學(xué)習(xí)的突破” 一樣,這種增量修改在更復(fù)雜的情況下可能比簡(jiǎn)單的情況下更容易。

神經(jīng)網(wǎng)絡(luò) —— 也許有點(diǎn)像大腦 —— 被設(shè)定為擁有一個(gè)基本固定的神經(jīng)元網(wǎng)絡(luò),被修改的是它們之間連接的強(qiáng)度(“重量”)。(也許至少在年輕的大腦中,大量的完全新的連接也可以增長(zhǎng)。) 但是,雖然這對(duì)生物學(xué)來說可能是一個(gè)方便的設(shè)置,但并不清楚它是否是實(shí)現(xiàn)我們所需功能的最佳方式。而涉及漸進(jìn)式網(wǎng)絡(luò)重寫的東西(也許讓人想起我們的物理項(xiàng)目)最終可能會(huì)更好。

但即使在現(xiàn)有的神經(jīng)網(wǎng)絡(luò)框架內(nèi),目前也有一個(gè)關(guān)鍵的限制:現(xiàn)在的神經(jīng)網(wǎng)絡(luò)訓(xùn)練從根本上說是連續(xù)的,每一批例子的效果都被傳播回來以更新權(quán)重。事實(shí)上,就目前的計(jì)算機(jī)硬件而言 —— 即使考慮到 GPU —— 在訓(xùn)練期間,神經(jīng)網(wǎng)絡(luò)的大部分時(shí)間都是 “閑置” 的,每次只有一個(gè)部分被更新。從某種意義上說,這是因?yàn)槲覀兡壳暗挠?jì)算機(jī)往往有獨(dú)立于 CPU(或 GPU)的內(nèi)存。但在大腦中,這大概是不同的 —— 每一個(gè) “記憶元素”(即神經(jīng)元)也是一個(gè)潛在的活躍的計(jì)算元素。如果我們能夠以這種方式設(shè)置我們未來的計(jì)算機(jī)硬件,就有可能更有效地進(jìn)行訓(xùn)練。

“當(dāng)然,一個(gè)足夠大的網(wǎng)絡(luò)可以做任何事情!”

像 ChatGPT 這樣的能力似乎令人印象深刻,人們可能會(huì)想象,如果人們能夠 “繼續(xù)下去”,訓(xùn)練越來越大的神經(jīng)網(wǎng)絡(luò),那么它們最終將能夠 “做任何事情”。如果人們關(guān)注的是那些容易被人類直接思考的事物,那么很有可能是這樣的。但是,過去幾百年科學(xué)的教訓(xùn)是,有些東西可以通過形式化的過程來計(jì)算出來,但并不容易被人類的直接思維所獲得。

非瑣碎的數(shù)學(xué)就是一個(gè)大例子。但一般的情況其實(shí)是計(jì)算。而最終的問題是計(jì)算的不可還原性現(xiàn)象。有一些計(jì)算,人們可能認(rèn)為需要很多步驟才能完成,但事實(shí)上可以 “簡(jiǎn)化” 為相當(dāng)直接的東西。但計(jì)算的不可簡(jiǎn)化性的發(fā)現(xiàn)意味著這并不總是有效的。相反,有些過程 —— 可能就像下面這個(gè)過程 —— 要弄清楚發(fā)生了什么,必然需要對(duì)每個(gè)計(jì)算步驟進(jìn)行追蹤:

9303961a-f614-11ed-90ce-dac502259ad0.png

我們通常用大腦做的那些事情,大概是專門為避免計(jì)算的不可還原性而選擇的。在一個(gè)人的大腦中做數(shù)學(xué)需要特別的努力。而且,在實(shí)踐中,僅僅在一個(gè)人的大腦中 “思考” 任何非微觀程序的操作步驟,在很大程度上是不可能的。

當(dāng)然,為此我們有計(jì)算機(jī)。有了計(jì)算機(jī),我們可以很容易地做很長(zhǎng)的、計(jì)算上不可簡(jiǎn)化的事情。而關(guān)鍵的一點(diǎn)是,這些事情一般來說沒有捷徑。

是的,我們可以記住很多關(guān)于在某個(gè)特定計(jì)算系統(tǒng)中發(fā)生的具體例子。也許我們甚至可以看到一些(“計(jì)算上可還原的”)模式,使我們可以做一點(diǎn)概括。但問題是,計(jì)算上的不可還原性意味著我們永遠(yuǎn)無法保證意外不會(huì)發(fā)生 —— 只有通過明確地進(jìn)行計(jì)算,你才能知道在任何特定情況下實(shí)際發(fā)生了什么。

最后,在可學(xué)習(xí)性和計(jì)算的不可重復(fù)性之間存在著一種基本的緊張關(guān)系。學(xué)習(xí)實(shí)際上是通過利用規(guī)則性來壓縮數(shù)據(jù)。但計(jì)算上的不可復(fù)制性意味著最終對(duì)可能存在的規(guī)律性有一個(gè)限制。

作為一個(gè)實(shí)際問題,我們可以想象將一些小的計(jì)算設(shè)備 —— 如蜂窩自動(dòng)機(jī)或圖靈機(jī) —— 構(gòu)建成像神經(jīng)網(wǎng)絡(luò)這樣的可訓(xùn)練系統(tǒng)。而且,這種設(shè)備確實(shí)可以作為神經(jīng)網(wǎng)的好 “工具”,就像 Wolfram|Alpha 可以作為 ChatGPT 的好工具。但計(jì)算的不可簡(jiǎn)化性意味著我們不能指望 “進(jìn)入” 這些設(shè)備并讓它們學(xué)習(xí)。

或者換句話說,在能力和可訓(xùn)練性之間有一個(gè)最終的權(quán)衡:你越想讓一個(gè)系統(tǒng) “真正利用” 它的計(jì)算能力,它就越會(huì)顯示出計(jì)算的不可復(fù)制性,它的可訓(xùn)練性就越低。而它越是從根本上可訓(xùn)練,它就越不能做復(fù)雜的計(jì)算。

(對(duì)于目前的 ChatGPT 來說,情況實(shí)際上要極端得多,因?yàn)橛糜谏擅總€(gè)輸出符號(hào)的神經(jīng)網(wǎng)絡(luò)是一個(gè)純粹的 “前饋” 網(wǎng)絡(luò),沒有循環(huán),因此沒有能力做任何具有非復(fù)雜 “控制流” 的計(jì)算)。

當(dāng)然,人們可能會(huì)問,能夠做不可還原的計(jì)算是否真的很重要。事實(shí)上,在人類歷史的大部分時(shí)間里,這并不特別重要。但我們的現(xiàn)代技術(shù)世界是建立在至少使用數(shù)學(xué)計(jì)算的工程之上的,而且越來越多地使用更普遍的計(jì)算。如果我們看一下自然界,它充滿了不可簡(jiǎn)化的計(jì)算 —— 我們正在慢慢理解如何模仿并用于我們的技術(shù)目的。

是的,一個(gè)神經(jīng)網(wǎng)絡(luò)當(dāng)然可以注意到自然世界中的各種規(guī)律性,而我們也可能很容易通過 “無助的人類思維” 注意到這些規(guī)律性。但是,如果我們想要解決屬于數(shù)學(xué)或計(jì)算科學(xué)范疇的事情,神經(jīng)網(wǎng)絡(luò)是無法做到的 —— 除非它有效地 “作為工具” 使用一個(gè) “普通” 的計(jì)算系統(tǒng)。

但是,這一切都有一些潛在的混淆之處。在過去,有很多任務(wù) —— 包括寫文章 —— 我們認(rèn)為對(duì)計(jì)算機(jī)來說 “從根本上說太難了”。而現(xiàn)在我們看到這些任務(wù)是由 ChatGPT 等完成的,我們傾向于突然認(rèn)為計(jì)算機(jī)一定是變得更加強(qiáng)大了,特別是超越了它們已經(jīng)基本能夠做到的事情(比如逐步計(jì)算蜂窩自動(dòng)機(jī)等計(jì)算系統(tǒng)的行為)。

但這并不是正確的結(jié)論。計(jì)算上不可還原的過程仍然是計(jì)算上不可還原的,而且對(duì)計(jì)算機(jī)來說仍然是根本性的困難 —— 即使計(jì)算機(jī)可以輕易地計(jì)算它們的單個(gè)步驟。相反,我們應(yīng)該得出的結(jié)論是,我們?nèi)祟惪梢宰龅模覀儾徽J(rèn)為計(jì)算機(jī)可以做的任務(wù),比如寫文章,實(shí)際上在某種意義上比我們想象的更容易計(jì)算。

換句話說,神經(jīng)網(wǎng)絡(luò)之所以能夠成功地寫出一篇文章,是因?yàn)閷懸黄恼卤蛔C明是一個(gè)比我們想象的 “計(jì)算上更淺” 的問題。從某種意義上說,這使我們更接近于 “擁有一種理論”,即我們?nèi)祟愂侨绾巫龅较駥懳恼逻@樣的事情的,或在一般情況下處理語(yǔ)言。

如果你有一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò),那么,是的,你可能能夠做任何人類能夠輕易做到的事情。但是,你不會(huì)捕捉到自然界一般能做的事情 —— 或者我們從自然界塑造的工具能做的事情。而正是這些工具的使用 —— 無論是實(shí)用的還是概念性的 —— 使得我們?cè)诮鼛讉€(gè)世紀(jì)里能夠超越 “純粹的無助的人類思維” 所能達(dá)到的界限,并為人類的目的捕捉到物理和計(jì)算宇宙中的更多東西。


—7—

嵌入的概念


神經(jīng)網(wǎng)絡(luò) —— 至少在它們目前的設(shè)置中 —— 從根本上說是基于數(shù)字的。因此,如果我們要用它們來處理像文本這樣的東西,我們就需要一種方法來用數(shù)字表示我們的文本。

當(dāng)然,我們可以開始(基本上就像 ChatGPT 那樣)為字典中的每個(gè)詞分配一個(gè)數(shù)字。但是,有一個(gè)重要的想法 —— 例如,它是 ChatGPT 的核心 —— 超出了這個(gè)范圍。這就是 “嵌入” 的概念。我們可以把嵌入看作是一種嘗試用數(shù)字陣列來表示事物 “本質(zhì)” 的方式 —— 其特性是 “附近的事物” 由附近的數(shù)字來表示。

因此,舉例來說,我們可以把一個(gè)詞的嵌入看作是試圖在一種 “意義空間” 中排列詞語(yǔ),在這個(gè)空間中,以某種方式 “在意義上接近” 的詞語(yǔ)在嵌入中出現(xiàn)。實(shí)際使用的嵌入 —— 例如在 ChatGPT 中 —— 往往涉及大量的數(shù)字列表。但是如果我們把它投射到二維空間,我們就可以顯示出嵌入的單詞是如何排列的例子:

931eba44-f614-11ed-90ce-dac502259ad0.png

而且,是的,我們看到的東西在捕捉典型的日常印象方面做得非常好。但是,我們?cè)鯓硬拍軜?gòu)建這樣一個(gè)嵌入呢?大致的想法是查看大量的文本(這里是來自網(wǎng)絡(luò)的 50 億個(gè)詞),然后看不同的詞出現(xiàn)的 “環(huán)境” 有多相似。因此,例如,“alligator” 和 “crocodile” 經(jīng)常會(huì)在其他類似的句子中互換出現(xiàn),這意味著它們?cè)谇度胫袝?huì)被放在附近。但是 “蘿卜” 和 “老鷹” 不會(huì)出現(xiàn)在其他類似的句子中,所以它們?cè)谇度胫袝?huì)被放在很遠(yuǎn)的地方。

但是,如何使用神經(jīng)網(wǎng)絡(luò)實(shí)際實(shí)現(xiàn)這樣的東西呢?讓我們先來討論一下不是針對(duì)單詞的嵌入,而是針對(duì)圖像的嵌入。我們想找到某種方法,通過數(shù)字列表來描述圖像,使 “我們認(rèn)為相似的圖像” 被分配到相似的數(shù)字列表中。

我們?nèi)绾闻袛辔覀兪欠駪?yīng)該 “認(rèn)為圖像相似”?好吧,如果我們的圖像是,例如,手寫的數(shù)字,我們可能會(huì) “認(rèn)為兩個(gè)圖像是相似的”,如果它們是相同的數(shù)字。早些時(shí)候,我們討論了一個(gè)被訓(xùn)練來識(shí)別手寫數(shù)字的神經(jīng)網(wǎng)絡(luò)。我們可以認(rèn)為這個(gè)神經(jīng)網(wǎng)絡(luò)被設(shè)置成在其最終輸出中把圖像放入 10 個(gè)不同的倉(cāng),每個(gè)數(shù)字一個(gè)倉(cāng)。

但是,如果我們?cè)谧龀?“這是一個(gè) ‘4’” 的最終決定之前,“攔截” 神經(jīng)網(wǎng)絡(luò)內(nèi)部發(fā)生的事情呢?我們可能會(huì)想到,在神經(jīng)網(wǎng)絡(luò)中,有一些數(shù)字將圖像描述為 “大部分是 4,但有一點(diǎn)是 2” 或類似的情況。而我們的想法是挑選出這樣的數(shù)字作為嵌入的元素。

所以這里有一個(gè)概念。我們不是直接試圖描述 “什么圖像在什么其他圖像附近”,而是考慮一個(gè)定義明確的任務(wù)(在這種情況下是數(shù)字識(shí)別),我們可以獲得明確的訓(xùn)練數(shù)據(jù) —— 然后利用這樣一個(gè)事實(shí),即在做這個(gè)任務(wù)時(shí),神經(jīng)網(wǎng)絡(luò)隱含地要做出相當(dāng)于 “接近度決定” 的決定。因此,我們不需要明確地談?wù)?“圖像的接近性”,而只是談?wù)撘粋€(gè)圖像代表什么數(shù)字的具體問題,然后我們 “把它留給神經(jīng)網(wǎng)絡(luò)” 來隱含地決定這意味著什么 “圖像的接近性”。

那么,這對(duì)數(shù)字識(shí)別網(wǎng)絡(luò)來說是如何更詳細(xì)地工作的呢?我們可以認(rèn)為這個(gè)網(wǎng)絡(luò)是由 11 個(gè)連續(xù)的層組成的,我們可以用圖標(biāo)來概括它(激活函數(shù)顯示為獨(dú)立的層):

9325aa7a-f614-11ed-90ce-dac502259ad0.png

在開始時(shí),我們向第一層輸入實(shí)際的圖像,用像素值的二維陣列表示。在最后一層,我們得到了一個(gè)由 10 個(gè)值組成的數(shù)組,我們可以認(rèn)為這表示網(wǎng)絡(luò)對(duì)圖像對(duì)應(yīng)于 0 到 9 的每個(gè)數(shù)字的 “確定程度”。

輸入圖像(手寫的 4),最后一層的神經(jīng)元的值就是:

932d3b5a-f614-11ed-90ce-dac502259ad0.png

換句話說,神經(jīng)網(wǎng)絡(luò)此時(shí)已經(jīng) “非常確定” 這個(gè)圖像是 4,為了實(shí)際得到輸出 “4”,我們只需挑選出數(shù)值最大的神經(jīng)元的位置。

但是,如果我們?cè)偻翱匆徊侥兀烤W(wǎng)絡(luò)中的最后一個(gè)操作是一個(gè)所謂的 softmax,它試圖 “強(qiáng)制確定”。但在這之前,神經(jīng)元的值是:

9332b08a-f614-11ed-90ce-dac502259ad0.png

代表 “4” 的神經(jīng)元仍然有最高的數(shù)值。但在其他神經(jīng)元的數(shù)值中也有信息。我們可以期望這個(gè)數(shù)字列表在某種意義上可以用來描述圖像的 “本質(zhì)”,從而提供我們可以用作嵌入的東西。因此,例如,這里的每一個(gè) 4 都有一個(gè)稍微不同的 “簽名”(或 “特征嵌入”) —— 都與 8 的非常不同:

93398bbc-f614-11ed-90ce-dac502259ad0.png

在這里,我們基本上是用 10 個(gè)數(shù)字來描述我們的圖像特征。但通常情況下,使用比這更多的數(shù)字會(huì)更好。例如,在我們的數(shù)字識(shí)別網(wǎng)絡(luò)中,我們可以通過挖掘前一層得到一個(gè) 500 個(gè)數(shù)字的陣列。而這可能是一個(gè)合理的數(shù)組,作為 “圖像嵌入” 使用。

如果我們想對(duì)手寫數(shù)字的 “圖像空間” 進(jìn)行明確的可視化,我們需要 “降低維度”,有效地將我們得到的 500 維向量投射到,例如,三維空間:

9340e678-f614-11ed-90ce-dac502259ad0.png

我們剛剛談到為圖像創(chuàng)建一個(gè)特征(從而嵌入),有效地基于識(shí)別圖像的相似性,確定(根據(jù)我們的訓(xùn)練集)它們是否對(duì)應(yīng)于同一個(gè)手寫數(shù)字。如果我們有一個(gè)訓(xùn)練集,比如說,確定每張圖片屬于 5000 種常見類型的物體(貓、狗、椅子…… ),我們就可以更普遍地對(duì)圖片做同樣的事情。

通過這種方式,我們可以制作一個(gè)圖像嵌入,它被我們對(duì)常見物體的識(shí)別所 “錨定”,但然后根據(jù)神經(jīng)網(wǎng)絡(luò)的行為 “圍繞它進(jìn)行概括”。關(guān)鍵是,只要這種行為與我們?nèi)祟惛兄徒忉寛D像的方式相一致,這將最終成為一個(gè) “對(duì)我們來說是正確的” 的嵌入,并在實(shí)踐中做 “類似人類判斷” 的任務(wù)時(shí)有用。

好吧,那么我們?nèi)绾巫裱瑯拥姆椒▉韺ふ覇卧~的嵌入呢?關(guān)鍵是要從一個(gè)我們可以隨時(shí)進(jìn)行訓(xùn)練的關(guān)于單詞的任務(wù)開始。而標(biāo)準(zhǔn)的任務(wù)是 “單詞預(yù)測(cè)”。假設(shè)我們得到了 “the cat”。基于一個(gè)大型的文本語(yǔ)料庫(kù)(比如說,網(wǎng)絡(luò)上的文本內(nèi)容),可能 “填空” 的不同單詞的概率是多少?或者說,給定 “__ 黑 _”,不同的 “側(cè)翼詞” 的概率是多少?

我們?nèi)绾螢樯窠?jīng)網(wǎng)絡(luò)設(shè)置這個(gè)問題?歸根結(jié)底,我們必須用數(shù)字來表述一切。做到這一點(diǎn)的一個(gè)方法就是為英語(yǔ)中 5 萬個(gè)左右的常用詞中的每一個(gè)分配一個(gè)獨(dú)特的數(shù)字。因此,例如,“the” 可能是 914,而 “cat”(前面有一個(gè)空格)可能是 3542。(這些是 GPT-2 所使用的實(shí)際數(shù)字。)所以對(duì)于 “the _ cat” 問題,我們的輸入可能是{914, 3542}。輸出應(yīng)該是什么樣子的呢?好吧,它應(yīng)該是一個(gè)由 50000 個(gè)左右的數(shù)字組成的列表,有效地給出了每個(gè)可能的 “填充” 單詞的概率。

再一次,為了找到一個(gè)嵌入,我們要在神經(jīng)網(wǎng)絡(luò) “達(dá)到結(jié)論” 之前 “攔截” 它的 “內(nèi)部” —— 然后撿起在那里出現(xiàn)的數(shù)字列表,我們可以把它看作是 “每個(gè)詞的特征”。

好吧,那么這些表征是什么樣子的呢?在過去的 10 年里,已經(jīng)有一系列不同的系統(tǒng)被開發(fā)出來(word2vec, GloVe, BERT, GPT, …… ),每一個(gè)都是基于不同的神經(jīng)網(wǎng)絡(luò)方法。但最終,所有這些系統(tǒng)都是通過數(shù)百到數(shù)千個(gè)數(shù)字的列表來描述單詞的特征。

在它們的原始形式中,這些 “嵌入向量” 是相當(dāng)無信息的。例如,這里是 GPT-2 產(chǎn)生的三個(gè)特定詞的原始嵌入向量:

9346e366-f614-11ed-90ce-dac502259ad0.png

如果我們做一些事情,比如測(cè)量這些向量之間的距離,那么我們就可以發(fā)現(xiàn)像單詞的 “接近性” 這樣的東西。稍后我們將更詳細(xì)地討論我們可能認(rèn)為這種嵌入的 “認(rèn)知” 意義。但現(xiàn)在主要的一點(diǎn)是,我們有一種方法可以有效地將單詞變成 “神經(jīng)網(wǎng)絡(luò)友好” 的數(shù)字集合。

但實(shí)際上,我們可以更進(jìn)一步,不僅僅是用數(shù)字的集合來描述單詞;我們還可以對(duì)單詞的序列,或者整個(gè)文本塊進(jìn)行描述。在 ChatGPT 中,它就是這樣處理事情的。

它把目前得到的文本,生成一個(gè)嵌入矢量來表示它。然后,它的目標(biāo)是找到接下來可能出現(xiàn)的不同詞匯的概率。它將其答案表示為一個(gè)數(shù)字列表,該列表基本上給出了 50,000 個(gè)左右的可能詞匯的概率。

(嚴(yán)格地說,ChatGPT 不處理單詞,而是處理 “符號(hào)” (token)—— 方便的語(yǔ)言單位,可能是整個(gè)單詞,也可能只是 “pre” 或 “ing” 或 “ized” 這樣的片段。使用符號(hào)使 ChatGPT 更容易處理罕見的、復(fù)合的和非英語(yǔ)的詞匯,有時(shí),無論好壞,都可以發(fā)明新的詞匯。)


—8—

ChatGPT 內(nèi)部

好了,我們終于準(zhǔn)備好討論 ChatGPT 內(nèi)部的內(nèi)容了。是的,最終,它是一個(gè)巨大的神經(jīng)網(wǎng)絡(luò) —— 目前是所謂的 GPT-3 網(wǎng)絡(luò)的一個(gè)版本,有 1750 億個(gè)權(quán)重。在許多方面,這是一個(gè)非常像我們討論過的其他神經(jīng)網(wǎng)絡(luò)。但它是一個(gè)特別為處理語(yǔ)言問題而設(shè)置的神經(jīng)網(wǎng)絡(luò)。它最顯著的特征是一個(gè)叫做 “轉(zhuǎn)化器” 的神經(jīng)網(wǎng)絡(luò)架構(gòu)。

在我們上面討論的第一個(gè)神經(jīng)網(wǎng)絡(luò)中,任何給定層的每個(gè)神經(jīng)元基本上都與前一層的每個(gè)神經(jīng)元相連(至少有一些權(quán)重)。但是,如果一個(gè)人在處理具有特殊的、已知的結(jié)構(gòu)的數(shù)據(jù)時(shí),這種全連接的網(wǎng)絡(luò)(大概)是過剩的。因此,例如,在處理圖像的早期階段,典型的做法是使用所謂的卷積神經(jīng)網(wǎng)絡(luò)(“convnets”),其中的神經(jīng)元被有效地布置在一個(gè)類似于圖像中的像素的網(wǎng)格上 —— 并且只與網(wǎng)格上附近的神經(jīng)元相連。

變換器的想法是為構(gòu)成一段文本的標(biāo)記序列做一些至少有點(diǎn)類似的事情。但是,轉(zhuǎn)化器并不只是在序列中定義一個(gè)可以有連接的固定區(qū)域,而是引入了 “注意” 的概念 —— 以及對(duì)序列的某些部分比其他部分更 “注意” 的概念。也許有一天,僅僅啟動(dòng)一個(gè)通用的神經(jīng)網(wǎng)絡(luò)并通過訓(xùn)練進(jìn)行所有的定制是有意義的。但至少到現(xiàn)在為止,將事情 “模塊化” 在實(shí)踐中似乎是至關(guān)重要的,就像變壓器那樣,可能也像我們的大腦那樣。

好吧,那么 ChatGPT(或者說,它所基于的 GPT-3 網(wǎng)絡(luò))實(shí)際上是做什么的?回想一下,它的總體目標(biāo)是以 “合理” 的方式延續(xù)文本,基于它所看到的訓(xùn)練(包括從網(wǎng)絡(luò)上查看數(shù)十億頁(yè)的文本等),所以在任何時(shí)候,它都有一定數(shù)量的文本,它的目標(biāo)是為下一個(gè)要添加的標(biāo)記提出適當(dāng)?shù)倪x擇。

它的操作分為三個(gè)基本階段:

首先,它獲取與迄今為止的文本相對(duì)應(yīng)的標(biāo)記序列,并找到代表這些標(biāo)記的嵌入(即一個(gè)數(shù)字陣列)。其次,它以 “標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)方式” 對(duì)這一嵌入進(jìn)行操作,數(shù)值 “通過” 網(wǎng)絡(luò)中的連續(xù)層,產(chǎn)生一個(gè)新的嵌入(即一個(gè)新的數(shù)字陣列)。然后,它從這個(gè)數(shù)組的最后一部分,生成一個(gè)大約 50,000 個(gè)值的數(shù)組,這些值變成了不同的可能的下一個(gè)標(biāo)記的概率。

(而且,是的,恰好使用的標(biāo)記的數(shù)量與英語(yǔ)中的常用詞的數(shù)量相同,盡管只有大約 3000 個(gè)標(biāo)記是整個(gè)單詞,其余的是片段。)關(guān)鍵的一點(diǎn)是,這個(gè)管道的每一部分都是由一個(gè)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的,其權(quán)重是由網(wǎng)絡(luò)的端到端訓(xùn)練決定的。換句話說,實(shí)際上,除了整體架構(gòu)之外,沒有任何東西是 “明確設(shè)計(jì)的”;所有東西都是從訓(xùn)練數(shù)據(jù)中 “學(xué)習(xí)” 的。

然而,在架構(gòu)的設(shè)置方式上有很多細(xì)節(jié),反映了各種經(jīng)驗(yàn)和神經(jīng)網(wǎng)絡(luò)的傳說。而且,盡管這肯定是進(jìn)入了雜草叢中,但我認(rèn)為談?wù)撈渲械囊恍┘?xì)節(jié)是有用的,尤其是為了了解建立像 ChatGPT 這樣的東西所需要的東西。

首先是嵌入模塊。下面是 GPT-2 的 Wolfram 語(yǔ)言示意圖:

9354c788-f614-11ed-90ce-dac502259ad0.png

輸入是一個(gè)由 n 個(gè)標(biāo)記組成的向量(如上一節(jié)所述,由 1 到 50,000 的整數(shù)表示)。這些標(biāo)記中的每一個(gè)都被(通過單層神經(jīng)網(wǎng)絡(luò))轉(zhuǎn)換成一個(gè)嵌入向量(GPT-2 的長(zhǎng)度為 768,ChatGPT 的 GPT-3 為 12,288)。同時(shí),還有一個(gè) “二級(jí)路徑”,它將標(biāo)記的(整數(shù))位置序列,并從這些整數(shù)中創(chuàng)建另一個(gè)嵌入向量。最后,來自令牌值和令牌位置的嵌入向量被加在一起 —— 產(chǎn)生嵌入模塊的最終嵌入向量序列。

為什么只是把令牌值和令牌位置的嵌入向量加在一起?我不認(rèn)為這有什么特別的科學(xué)依據(jù)。只是各種不同的東西都被嘗試過,而這是一個(gè)似乎有效的方法。這也是神經(jīng)網(wǎng)絡(luò)傳說的一部分,從某種意義上說,只要你的設(shè)置是 “大致正確的”,通常就可以通過做充分的訓(xùn)練來確定細(xì)節(jié),而不需要真正 “在工程層面上理解” 神經(jīng)網(wǎng)絡(luò)最終是如何配置它的。

下面是嵌入模塊所做的工作,對(duì)字符串 “hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye bye 2”:

935f520c-f614-11ed-90ce-dac502259ad0.png

每個(gè)標(biāo)記的嵌入向量的元素都顯示在頁(yè)面下方,在整個(gè)頁(yè)面上,我們首先看到的是 “hello” 的嵌入,然后是 “bye” 的嵌入。上面的第二個(gè)數(shù)組是位置嵌入 —— 其看起來有點(diǎn)隨機(jī)的結(jié)構(gòu)只是 “碰巧學(xué)到的”(在這種情況下是 GPT-2)。

好了,在嵌入模塊之后,是轉(zhuǎn)化器的 “主要事件”:一連串所謂的 “注意塊”(GPT-2 為 12 個(gè),ChatGPT 的 GPT-3 為 96 個(gè))。這一切都很復(fù)雜 —— 讓人想起典型的難以理解的大型工程系統(tǒng),或者,生物系統(tǒng)。但無論如何,這里是一個(gè)單一的 “注意塊” 的示意圖(對(duì)于 GPT-2):

93697606-f614-11ed-90ce-dac502259ad0.png

在每個(gè)這樣的注意力塊中,有一系列的 “注意力頭”(GPT-2 有 12 個(gè),ChatGPT 的 GPT-3 有 96 個(gè)) —— 每一個(gè)都是獨(dú)立操作嵌入向量中的不同數(shù)值塊的。(是的,我們不知道為什么分割嵌入向量是個(gè)好主意,或者它的不同部分有什么 “意義”;這只是 “被發(fā)現(xiàn)可行” 的事情之一)。

好吧,那么注意頭是做什么的?基本上,它們是一種在標(biāo)記序列中 “回顧” 的方式(即在迄今為止產(chǎn)生的文本中),并將過去的內(nèi)容 “打包” 成有助于尋找下一個(gè)標(biāo)記的形式。

在上面的第一節(jié)中,我們談到了使用 2-gram 概率來根據(jù)它們的直接前身來挑選單詞。變換器中的 “注意” 機(jī)制所做的是允許 “注意” 甚至更早的詞 —— 因此有可能捕捉到,比如說,動(dòng)詞可以指代在句子中出現(xiàn)在它們之前的許多詞的名詞的方式。

在更詳細(xì)的層面上,注意力頭所做的是以一定的權(quán)重重新組合與不同標(biāo)記相關(guān)的嵌入向量中的大塊。因此,例如,在第一個(gè)注意力區(qū)塊中的 12 個(gè)注意力頭(在 GPT-2 中)對(duì)上面的 “hello, bye” 字符串有如下(“l(fā)ook-back-all-the-way-beginning-the-sequence-of-tokens”)模式的 “重組權(quán)值”:

9370fe80-f614-11ed-90ce-dac502259ad0.png

在經(jīng)過注意力頭的處理后,產(chǎn)生的 “重新加權(quán)的嵌入向量”(GPT-2 的長(zhǎng)度為 768,ChatGPT 的 GPT-3 的長(zhǎng)度為 12288)被傳遞到一個(gè)標(biāo)準(zhǔn)的 “全連接” 神經(jīng)網(wǎng)層。很難掌握這個(gè)層在做什么。但這里是它使用的 768×768 權(quán)重矩陣的圖(這里是 GPT-2):

9376c0ae-f614-11ed-90ce-dac502259ad0.png

采用 64×64 的移動(dòng)平均數(shù),一些(隨機(jī)漫步式的)結(jié)構(gòu)開始出現(xiàn):

937ee626-f614-11ed-90ce-dac502259ad0.png

是什么決定了這種結(jié)構(gòu)?最終,它可能是人類語(yǔ)言特征的一些 “神經(jīng)網(wǎng)絡(luò)編碼”。但到現(xiàn)在為止,這些特征可能是什么還很不清楚。實(shí)際上,我們正在 “打開 ChatGPT 的大腦”(或至少是 GPT-2),并發(fā)現(xiàn),是的,里面很復(fù)雜,而且我們不了解它 —— 盡管最終它產(chǎn)生了可識(shí)別的人類語(yǔ)言。

好吧,在經(jīng)歷了一個(gè)注意力區(qū)塊之后,我們得到了一個(gè)新的嵌入向量 —— 然后它又被連續(xù)地傳遞到其他的注意力區(qū)塊中(GPT-2 共有 12 個(gè);GPT-3 有 96 個(gè))。每個(gè)注意力區(qū)塊都有自己特定的 “注意力” 和 “完全連接” 權(quán)重模式。這里是 GPT-2 的 “你好,再見” 輸入的注意權(quán)重序列,用于第一個(gè)注意頭(attention head):

9387f338-f614-11ed-90ce-dac502259ad0.png

這里是全連接層的(移動(dòng)平均)“矩陣”:

938cc8cc-f614-11ed-90ce-dac502259ad0.png

奇怪的是,盡管這些 “權(quán)重矩陣” 在不同的注意力塊中看起來很相似,但權(quán)重的大小分布可能有些不同(而且不總是高斯的):

93a1e7f2-f614-11ed-90ce-dac502259ad0.png

那么,在經(jīng)歷了所有這些注意力區(qū)塊之后,轉(zhuǎn)化器的凈效果是什么?從本質(zhì)上講,它是將原始的符號(hào)序列的嵌入集合轉(zhuǎn)化為最終的集合。而 ChatGPT 的具體工作方式是在這個(gè)集合中提取最后一個(gè)嵌入,并對(duì)其進(jìn)行 “解碼”,以產(chǎn)生一個(gè)關(guān)于下一個(gè)標(biāo)記應(yīng)該是什么的概率列表。

這就是 ChatGPT 的概要內(nèi)容。它可能看起來很復(fù)雜(尤其是因?yàn)樗性S多不可避免的、有點(diǎn)武斷的 “工程選擇”),但實(shí)際上,所涉及的最終元素非常簡(jiǎn)單。因?yàn)樽罱K我們要處理的只是一個(gè)由 “人工神經(jīng)元” 組成的神經(jīng)網(wǎng)絡(luò),每個(gè)神經(jīng)元都在進(jìn)行簡(jiǎn)單的操作,即接受一組數(shù)字輸入,然后將它們與某些權(quán)重相結(jié)合。

ChatGPT 的原始輸入是一個(gè)數(shù)字?jǐn)?shù)組(到目前為止符號(hào)的嵌入向量),當(dāng) ChatGPT“運(yùn)行” 以產(chǎn)生一個(gè)新的符號(hào)時(shí),所發(fā)生的只是這些數(shù)字 “通過” 神經(jīng)網(wǎng)的各層,每個(gè)神經(jīng)元 “做它的事”,并將結(jié)果傳遞給下一層的神經(jīng)元。沒有循環(huán)或 “回頭”。一切都只是通過網(wǎng)絡(luò) “前饋”。

這是一個(gè)與典型的計(jì)算系統(tǒng) —— 如圖靈機(jī) —— 非常不同的設(shè)置,在圖靈機(jī)中,結(jié)果是由相同的計(jì)算元素反復(fù) “再處理” 的。在這里,至少在生成一個(gè)特定的輸出符號(hào)時(shí),每個(gè)計(jì)算元素(即神經(jīng)元)只被使用一次。

但在某種意義上,即使在 ChatGPT 中,仍然有一個(gè)重復(fù)使用計(jì)算元素的 “外循環(huán)”。因?yàn)楫?dāng) ChatGPT 要生成一個(gè)新的標(biāo)記時(shí),它總是 “讀取”(即作為輸入)它之前的整個(gè)標(biāo)記序列,包括 ChatGPT 自己之前 “寫” 的標(biāo)記。我們可以認(rèn)為這種設(shè)置意味著 ChatGPT —— 至少在其最外層 —— 涉及到一個(gè) “反饋循環(huán)”,盡管在這個(gè)循環(huán)中,每一次迭代都明確地顯示為一個(gè)出現(xiàn)在其生成的文本中的標(biāo)記。

但讓我們回到 ChatGPT 的核心:反復(fù)用于生成每個(gè)標(biāo)記的神經(jīng)網(wǎng)絡(luò)。在某種程度上,它非常簡(jiǎn)單:一整個(gè)相同的人工神經(jīng)元的集合。網(wǎng)絡(luò)的某些部分只是由(“完全連接”)的神經(jīng)元層組成,其中某一層的每個(gè)神經(jīng)元都與前一層的每個(gè)神經(jīng)元相連(有一定的權(quán)重)。但是,特別是它的變壓器結(jié)構(gòu),ChatGPT 有更多的結(jié)構(gòu)部分,其中只有不同層的特定神經(jīng)元被連接。(當(dāng)然,人們?nèi)匀豢梢哉f,“所有的神經(jīng)元都是連接的” —— 但有些神經(jīng)元的權(quán)重為零)。

此外,ChatGPT 中的神經(jīng)網(wǎng)的某些方面并不是最自然地被認(rèn)為是由 “同質(zhì)” 層組成的。例如,正如上面的圖標(biāo)摘要所示,在一個(gè)注意力區(qū)塊中,有一些地方對(duì)傳入的數(shù)據(jù)進(jìn)行了 “多份拷貝”,然后每個(gè)拷貝經(jīng)過不同的 “處理路徑”,可能涉及不同數(shù)量的層,然后才重新組合。但是,雖然這可能是對(duì)正在發(fā)生的事情的一種方便的表述,但至少在原則上總是可以考慮 “密集地填入” 層,但只是讓一些權(quán)重為零。

如果我們看一下 ChatGPT 的最長(zhǎng)路徑,大約有 400 個(gè)(核心)層參與其中 —— 在某些方面不是一個(gè)巨大的數(shù)字。但是有數(shù)以百萬計(jì)的神經(jīng)元 —— 總共有 1750 億個(gè)連接,因此有 1750 億個(gè)權(quán)重。需要認(rèn)識(shí)到的一點(diǎn)是,每當(dāng) ChatGPT 生成一個(gè)新的令牌時(shí),它都要進(jìn)行涉及這些權(quán)重中每一個(gè)的計(jì)算。

在實(shí)現(xiàn)上,這些計(jì)算可以 “按層” 組織成高度并行的陣列操作,可以方便地在 GPU 上完成。但是,對(duì)于產(chǎn)生的每一個(gè)標(biāo)記,仍然要進(jìn)行 1750 億次計(jì)算(最后還要多一點(diǎn)) —— 因此,是的,用 ChatGPT 生成一個(gè)長(zhǎng)的文本需要一段時(shí)間,這并不令人驚訝。

但最終,最了不起的是,所有這些操作 —— 它們各自都很簡(jiǎn)單 —— 能夠以某種方式共同完成如此出色的 “類似人類” 的文本生成工作。必須再次強(qiáng)調(diào)的是,(至少到目前為止,我們知道)沒有任何 “最終的理論理由” 來解釋這樣的工作。事實(shí)上,正如我們將要討論的那樣,我認(rèn)為我們必須把這看作是一個(gè)潛在的令人驚訝的科學(xué)發(fā)現(xiàn):在像 ChatGPT 這樣的神經(jīng)網(wǎng)絡(luò)中,有可能捕捉到人類大腦在生成語(yǔ)言方面的本質(zhì)。


—9—

ChatGPT 的訓(xùn)練


好了,現(xiàn)在我們已經(jīng)給出了 ChatGPT 建立后的工作概要。但它是如何建立的呢?其神經(jīng)網(wǎng)絡(luò)中的 1750 億個(gè)權(quán)重是如何確定的?基本上,它們是非常大規(guī)模的訓(xùn)練的結(jié)果,基于一個(gè)巨大的文本語(yǔ)料庫(kù) —— 網(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)頁(yè),總共可能有一萬億字的文本。如果包括非公開網(wǎng)頁(yè),這些數(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òu)念^開始。那么,這意味著我們需要多少個(gè)例子來訓(xùn)練一個(gè) “類人語(yǔ)言” 模型呢?似乎沒有任何基本的 “理論” 方法可以知道。但是在實(shí)踐中,ChatGPT 已經(jīng)成功地在幾千億字的文本上進(jìn)行了訓(xùn)練。

有些文本被多次輸入,有些只有一次。但不知何故,它從它看到的文本中 “得到了它需要的東西”。但是,考慮到需要學(xué)習(xí)的文本量,它應(yīng)該需要多大的網(wǎng)絡(luò)才能 “學(xué)好”?同樣,我們還沒有一個(gè)基本的理論方法來說明。

最終 —— 我們將在下面進(jìn)一步討論 —— 人類語(yǔ)言大概有某種 “總的算法內(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ù)摹T谀承┓矫妫苍S令人驚訝的是(盡管在 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)的某種分布式編碼。

換句話說,我們可以問人類語(yǔ)言的 “有效信息含量” 是什么,以及通常用它說什么。這里有語(yǔ)言實(shí)例的原始語(yǔ)料庫(kù)。然后是 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)練工作。


—10—

基本訓(xùn)練之上


訓(xùn)練 ChatGPT 的大部分工作是向它 “展示” 大量來自網(wǎng)絡(luò)、書籍等的現(xiàn)有文本。但事實(shí)證明,還有一個(gè)明顯相當(dāng)重要的部分。

一旦它完成了對(duì)所展示的原始語(yǔ)料庫(kù)的 “原始訓(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 “真正在做什么” 以及它與人類語(yǔ)言和思維結(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í)上,它從語(yǔ)言中 “已經(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ǔ)言是唯一合適的,因?yàn)樗鼈兪菫榱?“談?wù)撌澜缟系氖挛铩?而建立的,就像語(yǔ)言模型的神經(jīng)網(wǎng)絡(luò)一樣)。


—11—

是什么真正讓 ChatGPT 工作?


人類的語(yǔ)言 —— 以及產(chǎn)生語(yǔ)言的思維過程 —— 似乎一直代表著一種復(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)元一樣多,能夠很好地生成人類語(yǔ)言,令人驚訝。

而且,是的,這仍然是一個(gè)龐大而復(fù)雜的系統(tǒng) —— 其神經(jīng)網(wǎng)絡(luò)的權(quán)重與目前世界上的文字一樣多。但在某種程度上,似乎仍然很難相信,語(yǔ)言的所有豐富性和它可以談?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 這樣的東西是如何在語(yǔ)言方面走得如此之遠(yuǎn)的呢?我想,基本的答案是,語(yǔ)言在根本層面上比它看起來要簡(jiǎn)單得多。這意味著 ChatGPT —— 即使它的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最終是簡(jiǎn)單的 —— 能夠成功地 “捕捉” 人類語(yǔ)言的本質(zhì)和背后的思維。此外,在其訓(xùn)練中,ChatGPT 以某種方式 “隱含地發(fā)現(xiàn)” 了語(yǔ)言(和思維)中的任何規(guī)律性,使其成為可能。

我認(rèn)為,ChatGPT 的成功為我們提供了一個(gè)基本的和重要的科學(xué)證據(jù):它表明我們可以期待有重大的新 “語(yǔ)言法則” —— 以及有效的 “思維法則” —— 在那里被發(fā)現(xiàn)。在 ChatGPT 中,作為一個(gè)神經(jīng)網(wǎng)絡(luò),這些規(guī)律充其量是隱含的。但是,如果我們能以某種方式使這些定律明確化,就有可能以更直接、更有效和更透明的方式完成 ChatGPT 所做的各種事情。

但是,好吧,那么這些法律可能是什么樣的?最終,它們必須給我們提供某種語(yǔ)言 —— 以及我們用它說的東西 —— 如何組合的處方。稍后我們將討論 “觀察 ChatGPT” 如何能夠給我們一些這方面的提示,以及我們從構(gòu)建計(jì)算語(yǔ)言中了解到的情況如何提示我們前進(jìn)的道路。但首先讓我們來討論兩個(gè)長(zhǎng)期以來為人所知的相當(dāng)于 “語(yǔ)言法則” 的例子 —— 以及它們與 ChatGPT 的運(yùn)作有何關(guān)系。

第一個(gè)是語(yǔ)言的語(yǔ)法。語(yǔ)言并不只是一個(gè)隨機(jī)的詞語(yǔ)組合。相反,對(duì)于不同種類的單詞如何放在一起,有(相當(dāng))明確的語(yǔ)法規(guī)則:例如,在英語(yǔ)中,名詞前面可以有形容詞,后面可以有動(dòng)詞,但通常兩個(gè)名詞不能緊挨著。這樣的語(yǔ)法結(jié)構(gòu)可以(至少是近似地)被一套規(guī)則所捕獲,這些規(guī)則定義了如何將相當(dāng)于 “解析樹” 的東西放在一起:

93d7b6fc-f614-11ed-90ce-dac502259ad0.png

ChatGPT 對(duì)這種規(guī)則沒有任何明確的 “知識(shí)”。但在訓(xùn)練中,它隱含地 “發(fā)現(xiàn)” 了這些規(guī)則,然后似乎很擅長(zhǎng)遵循這些規(guī)則。那么,它是如何工作的呢?在一個(gè) “大畫面” 的層面上,這并不清楚。但是為了得到一些啟示,看看一個(gè)更簡(jiǎn)單的例子也許會(huì)有啟發(fā)。

考慮一種由()和()序列組成的 “語(yǔ)言”,其語(yǔ)法規(guī)定括號(hào)應(yīng)該總是平衡的,如解析樹所表示的那樣:

93dfde90-f614-11ed-90ce-dac502259ad0.png

我們能否訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來產(chǎn)生 “語(yǔ)法上正確的” 小括號(hào)序列?在神經(jīng)網(wǎng)絡(luò)中處理序列有多種方法,但讓我們使用變換器網(wǎng)絡(luò),就像 ChatGPT 那樣。給定一個(gè)簡(jiǎn)單的變換器網(wǎng)絡(luò),我們可以開始給它提供語(yǔ)法正確的小括號(hào)序列作為訓(xùn)練實(shí)例。

一個(gè)微妙之處(實(shí)際上也出現(xiàn)在 ChatGPT 的人類語(yǔ)言生成中)是,除了我們的 “內(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)語(yǔ)言。但是,如果有 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)序列中:

93e691c2-f614-11ed-90ce-dac502259ad0.png

在第一種情況下,網(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é)果:

93ed1cd6-f614-11ed-90ce-dac502259ad0.png

是的,在一定長(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 和像英語(yǔ)這樣的語(yǔ)言的語(yǔ)法意味著什么呢?小括號(hào)語(yǔ)言是 “樸素的” —— 而且更像是一個(gè) “算法的故事”。但在英語(yǔ)中,能夠在局部選詞和其他提示的基礎(chǔ)上 “猜測(cè)” 什么是符合語(yǔ)法的,則要現(xiàn)實(shí)得多。

而且,是的,神經(jīng)網(wǎng)絡(luò)在這方面要好得多 —— 盡管它可能會(huì)錯(cuò)過一些 “形式上正確” 的情況,而人類也可能錯(cuò)過。但主要的一點(diǎn)是,語(yǔ)言有一個(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í)所有人類語(yǔ)言中似乎都存在(至少在某種程度上是近似的)的那種嵌套樹狀的句法結(jié)構(gòu)。

句法提供了對(duì)語(yǔ)言的一種約束。但顯然還有更多。像 “好奇的電子吃魚的藍(lán)色理論” 這樣的句子在語(yǔ)法上是正確的,但并不是人們通常期望說的東西,而且如果 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í)別)甚至是合理的有意義的文本,又能說些什么呢?是的,有一些東西,如《瘋狂的自由》,使用非常具體的 “短語(yǔ)模板”。但不知何故,ChatGPT 隱含著一種更普遍的方法。也許除了 “當(dāng)你有 1750 億個(gè)神經(jīng)網(wǎng)絡(luò)權(quán)重時(shí),它就會(huì)以某種方式發(fā)生” 之外,對(duì)如何做到這一點(diǎn)沒有什么可說的。但我強(qiáng)烈懷疑有一個(gè)更簡(jiǎn)單、更有力的故事。


—12—

意義空間和語(yǔ)義運(yùn)動(dòng)法則


我們?cè)谏厦嬗懻撨^,在 ChatGPT 中,任何一段文本都有效地由一個(gè)數(shù)字陣列來表示,我們可以將其視為某種 “語(yǔ)言特征空間” 中的一個(gè)點(diǎn)的坐標(biāo)。因此,當(dāng) ChatGPT 繼續(xù)一個(gè)文本時(shí),這相當(dāng)于在語(yǔ)言特征空間中追蹤一個(gè)軌跡。但現(xiàn)在我們可以問,是什么讓這個(gè)軌跡對(duì)應(yīng)于我們認(rèn)為有意義的文本。也許會(huì)有某種 “語(yǔ)義運(yùn)動(dòng)法則” 來定義 —— 或者至少是約束 —— 語(yǔ)言特征空間中的點(diǎn)如何移動(dòng),同時(shí)保留 “有意義”?

那么,這個(gè)語(yǔ)言學(xué)特征空間是什么樣子的呢?下面是一個(gè)例子,說明如果我們把這樣一個(gè)特征空間投射到二維空間,單個(gè)詞(這里是指普通名詞)是如何布局的:

93fe7206-f614-11ed-90ce-dac502259ad0.png

我們?cè)谏厦婵吹降牧硪粋€(gè)例子是基于代表植物和動(dòng)物的詞。但這兩種情況下的重點(diǎn)是,“語(yǔ)義相似的詞” 被放在附近。

作為另一個(gè)例子,這里是對(duì)應(yīng)于不同語(yǔ)音部分的詞是如何布置的:

94060e4e-f614-11ed-90ce-dac502259ad0.png

當(dāng)然,一個(gè)給定的詞一般來說并不只有 “一個(gè)意思”(或一定只對(duì)應(yīng)一個(gè)語(yǔ)篇)。通過觀察包含一個(gè)詞的句子在特征空間中的布局,我們通常可以 “區(qū)分” 出不同的含義 —— 就像這里的例子 “起重機(jī)”(crane, “鳥” 或 “機(jī)器”?):

940fc9de-f614-11ed-90ce-dac502259ad0.png

好的,所以我們至少可以認(rèn)為這個(gè)特征空間是把 “意義相近的詞” 放在這個(gè)空間里的,這是合理的。但是,在這個(gè)空間里,我們可以確定什么樣的額外結(jié)構(gòu)?例如,是否存在某種 “平行運(yùn)輸” 的概念,以反映空間中的 “平坦性”?掌握這個(gè)問題的一個(gè)方法是看一下類比:

9417c53a-f614-11ed-90ce-dac502259ad0.png

而且,是的,即使當(dāng)我們投射到二維時(shí),往往至少有一個(gè) “平坦性的暗示”,盡管它肯定不是普遍可見的。

那么,軌跡呢?我們可以看看 ChatGPT 的提示在特征空間中的軌跡 —— 然后我們可以看看 ChatGPT 是如何延續(xù)這個(gè)軌跡的:

941f3a7c-f614-11ed-90ce-dac502259ad0.png

這里當(dāng)然沒有 “幾何學(xué)上明顯的” 運(yùn)動(dòng)規(guī)律。這一點(diǎn)也不令人驚訝;我們完全可以預(yù)料到這是一個(gè)相當(dāng)復(fù)雜的故事。而且,舉例來說,即使有一個(gè) “語(yǔ)義上的運(yùn)動(dòng)定律” 可以找到,它最自然地以什么樣的嵌入(或者,實(shí)際上,什么樣的 “變量”)來表述,也遠(yuǎn)非明顯。

在上圖中,我們展示了 “軌跡” 中的幾個(gè)步驟 —— 在每個(gè)步驟中,我們挑選 ChatGPT 認(rèn)為最可能的詞(“零溫度” 情況)。但我們也可以問,在某一點(diǎn)上,哪些詞可以以什么概率 “接下來”:

9425f196-f614-11ed-90ce-dac502259ad0.png

在這種情況下,我們看到的是有一個(gè)高概率詞的 “扇形”,似乎在特征空間中或多或少有一個(gè)明確的方向。如果我們?cè)偻白邥?huì)怎么樣呢?下面是我們沿著軌跡 “移動(dòng)” 時(shí)出現(xiàn)的連續(xù)的 “扇形”:

942b17e8-f614-11ed-90ce-dac502259ad0.png

這是一個(gè)三維表示,總共走了 40 步:

943502b2-f614-11ed-90ce-dac502259ad0.png

而且,是的,這似乎是一團(tuán)糟 —— 并沒有做任何事情來特別鼓勵(lì)這樣的想法,即我們可以期望通過經(jīng)驗(yàn)性地研究 “ChatGPT 在里面做什么” 來確定 “類似數(shù)學(xué)物理學(xué)的”“運(yùn)動(dòng)語(yǔ)義法則”。但也許我們只是看了 “錯(cuò)誤的變量”(或錯(cuò)誤的坐標(biāo)系),只要我們看了正確的變量,我們就會(huì)立即看到 ChatGPT 正在做一些 “數(shù)學(xué)·物理學(xué)的簡(jiǎn)單” 的事情,比如遵循測(cè)地線。但是到目前為止,我們還沒有準(zhǔn)備好從它的 “內(nèi)部行為” 中 “實(shí)證解碼”ChatGPT“發(fā)現(xiàn)” 人類語(yǔ)言是如何 “拼湊” 的。


—13—

語(yǔ)義語(yǔ)法和計(jì)算語(yǔ)言的力量


產(chǎn)生 “有意義的人類語(yǔ)言” 需要什么?在過去,我們可能會(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í):有意義的人類語(yǔ)言的結(jié)構(gòu)和簡(jiǎn)單性實(shí)際上比我們所知道的要多得多,而且最終甚至可能有相當(dāng)簡(jiǎn)單的規(guī)則來描述這種語(yǔ)言如何被組合起來。

正如我們上面提到的,句法語(yǔ)法給出了人類語(yǔ)言中對(duì)應(yīng)于不同語(yǔ)篇的詞語(yǔ)如何組合的規(guī)則。但是為了處理意義,我們需要更進(jìn)一步。而如何做到這一點(diǎn)的一個(gè)版本是,不僅要考慮語(yǔ)言的句法語(yǔ)法,還要考慮語(yǔ)義語(yǔ)法。

為了語(yǔ)法的目的,我們確定名詞和動(dòng)詞等事物。但為了語(yǔ)義學(xué)的目的,我們需要 “更精細(xì)的等級(jí)”。因此,例如,我們可以確定 “移動(dòng)” 的概念,以及 “保持獨(dú)立于位置的身份” 的 “物體” 的概念。這些 “語(yǔ)義概念” 中的每一個(gè)都有無盡的具體例子。

但是,為了我們的語(yǔ)義語(yǔ)法的目的,我們將只是有某種一般性的規(guī)則,基本上說 “物體” 可以 “移動(dòng)”。關(guān)于這一切如何運(yùn)作,有很多東西可以說(其中一些我以前說過)。但我在這里只想說幾句,指出一些潛在的發(fā)展道路。

值得一提的是,即使一個(gè)句子根據(jù)語(yǔ)義語(yǔ)法是完全可以的,也不意味著它在實(shí)踐中已經(jīng)實(shí)現(xiàn)(甚至可以實(shí)現(xiàn))。“大象去了月球” 無疑會(huì) “通過” 我們的語(yǔ)義語(yǔ)法,但是它肯定沒有在我們的實(shí)際世界中實(shí)現(xiàn)(至少還沒有) —— 盡管對(duì)于一個(gè)虛構(gòu)的世界來說,這絕對(duì)是公平的游戲。

當(dāng)我們開始談?wù)?“語(yǔ)義語(yǔ)法” 時(shí),我們很快就會(huì)問:“它的下面是什么?” 它假設(shè)的是什么 “世界模型”?句法語(yǔ)法實(shí)際上只是關(guān)于從詞語(yǔ)中構(gòu)建語(yǔ)言的問題。但是,語(yǔ)義學(xué)語(yǔ)法必然涉及某種 “世界模型” —— 作為 “骨架” 的東西,由實(shí)際詞語(yǔ)構(gòu)成的語(yǔ)言可以在上面分層。

直到最近,我們可能會(huì)想象,(人類)語(yǔ)言將是描述我們 “世界模型” 的唯一一般方式。早在幾個(gè)世紀(jì)前,就已經(jīng)開始有了對(duì)特定種類事物的形式化,特別是以數(shù)學(xué)為基礎(chǔ)。但現(xiàn)在有一種更普遍的形式化方法:計(jì)算語(yǔ)言。

是的,這是我四十多年來的一個(gè)大項(xiàng)目(現(xiàn)在體現(xiàn)在沃爾弗拉姆語(yǔ)言中):開發(fā)一個(gè)精確的符號(hào)表示,可以盡可能廣泛地談?wù)撌澜缟系氖挛铮约拔覀冴P(guān)心的抽象事物。因此,例如,我們有城市、分子、圖像和神經(jīng)網(wǎng)絡(luò)的符號(hào)表示,而且我們有關(guān)于如何計(jì)算這些事物的內(nèi)在知識(shí)。

而且,經(jīng)過幾十年的工作,我們已經(jīng)用這種方式覆蓋了很多領(lǐng)域。但是在過去,我們并沒有特別處理 “日常話語(yǔ)”。在 “我買了兩磅蘋果” 中,我們可以輕易地表示(并對(duì)其進(jìn)行營(yíng)養(yǎng)和其他計(jì)算)“兩磅蘋果”。但是我們(還沒有)對(duì) “我買了” 有一個(gè)符號(hào)表示。

這一切都與語(yǔ)義語(yǔ)法的想法有關(guān) —— 目標(biāo)是為概念提供一個(gè)通用的符號(hào) “構(gòu)造套件”,這將為我們提供什么可以與什么結(jié)合的規(guī)則,從而為我們可能轉(zhuǎn)化為人類語(yǔ)言的 “流程” 提供規(guī)則。

但是,假設(shè)我們有了這種 “符號(hào)話語(yǔ)語(yǔ)言”。我們會(huì)用它做什么呢?我們可以開始做一些事情,比如生成 “本地有意義的文本”。但最終我們可能想要更多 “全局意義” 的結(jié)果 —— 這意味著 “計(jì)算” 更多關(guān)于世界上實(shí)際存在或發(fā)生的事情(或許是在某個(gè)一致的虛構(gòu)世界)。

現(xiàn)在在 Wolfram 語(yǔ)言中,我們有大量的關(guān)于許多種類的事物的內(nèi)置計(jì)算知識(shí)。但對(duì)于一個(gè)完整的符號(hào)話語(yǔ)語(yǔ)言,我們必須建立關(guān)于世界上一般事物的額外 “計(jì)算”:如果一個(gè)物體從 A 地移動(dòng)到 B 地,又從 B 地移動(dòng)到 C 地,那么它就從 A 地移動(dòng)到 C 地,等等。

給定一個(gè)符號(hào)化的話語(yǔ)語(yǔ)言,我們可以用它來做 “獨(dú)立的陳述”。但我們也可以用它來問關(guān)于世界的問題,“Wolfram|Alpha 風(fēng)格”。或者我們可以用它來陳述我們 “想讓它變成這樣” 的事情,大概是用一些外部的執(zhí)行機(jī)制。或者我們可以用它來做斷言 —— 也許是關(guān)于真實(shí)的世界,也許是關(guān)于我們正在考慮的某個(gè)特定世界,不管是虛構(gòu)的還是其他的。

人類語(yǔ)言從根本上說是不精確的,這不僅僅是因?yàn)樗鼪]有 “拴” 在一個(gè)具體的計(jì)算實(shí)現(xiàn)上,而且它的意義基本上只是由其使用者之間的 “社會(huì)契約” 來定義。但是計(jì)算語(yǔ)言,就其性質(zhì)而言,具有某種基本的精確性 —— 因?yàn)樽罱K它所指定的東西總是可以 “毫不含糊地在計(jì)算機(jī)上執(zhí)行”。

人類語(yǔ)言通常可以擺脫某種模糊性。(當(dāng)我們說 “行星” 時(shí),它是否包括系外行星,等等。)但是在計(jì)算語(yǔ)言中,我們必須對(duì)我們所做的所有區(qū)分精確而清楚。

在計(jì)算語(yǔ)言中,利用普通人類語(yǔ)言來編造名字往往很方便。但它們?cè)谟?jì)算語(yǔ)言中的含義必然是精確的,而且可能涵蓋也可能不涵蓋典型人類語(yǔ)言用法中的某些特定內(nèi)涵。

我們應(yīng)該如何找出適合一般符號(hào)話語(yǔ)語(yǔ)言的基本 “本體”?嗯,這并不容易。這也許就是為什么自亞里士多德兩千多年前的原始開始以來,在這些方面做得很少。但是,今天我們對(duì)如何以計(jì)算方式思考世界了解得如此之多,這確實(shí)有幫助(而且,從我們的物理學(xué)項(xiàng)目和 ragiad 的想法中得到 “基本形而上學(xué)” 也無傷大雅)。

但是這一切在 ChatGPT 的背景下意味著什么?從它的訓(xùn)練來看,ChatGPT 已經(jīng)有效地 “拼湊” 了一定數(shù)量的相當(dāng)于語(yǔ)義語(yǔ)法的東西(相當(dāng)令人印象深刻)。但是它的成功讓我們有理由認(rèn)為,以計(jì)算語(yǔ)言的形式構(gòu)建更完整的東西將是可行的。而且,與我們迄今為止對(duì) ChatGPT 內(nèi)部的理解不同的是,我們可以期待將計(jì)算語(yǔ)言設(shè)計(jì)得讓人類容易理解。

當(dāng)我們談?wù)撜Z(yǔ)義語(yǔ)法的時(shí)候,我們可以將其與對(duì)偶邏輯相類比。起初,對(duì)偶邏輯本質(zhì)上是用人類語(yǔ)言表達(dá)的語(yǔ)句規(guī)則的集合。但是(是的,兩千年后)當(dāng)形式邏輯被開發(fā)出來時(shí),音節(jié)邏輯最初的基本構(gòu)造現(xiàn)在可以用來建造巨大的 “形式塔”,包括例如現(xiàn)代數(shù)字電路的運(yùn)作。而且,我們可以預(yù)期,更一般的語(yǔ)義語(yǔ)法也會(huì)如此。

起初,它可能只是能夠處理簡(jiǎn)單的模式,例如以文本形式表達(dá)。但是,一旦它的整個(gè)計(jì)算語(yǔ)言框架建立起來,我們可以預(yù)期它將能夠被用來豎起 “廣義語(yǔ)義邏輯” 的高塔,使我們能夠以精確和正式的方式處理各種我們以前從未接觸過的東西,而只是在 “底層” 通過人類語(yǔ)言,以其所有的模糊性。

我們可以認(rèn)為計(jì)算語(yǔ)言的構(gòu)造 —— 以及語(yǔ)義語(yǔ)法 —— 代表了一種對(duì)事物的終極壓縮。因?yàn)樗试S我們談?wù)撌裁词强赡艿谋举|(zhì),而不需要,例如,處理存在于普通人類語(yǔ)言中的所有 “轉(zhuǎn)折性的措辭”。我們可以把 ChatGPT 的巨大優(yōu)勢(shì)看作是有點(diǎn)類似的東西:因?yàn)樗谀撤N意義上也已經(jīng) “鉆研” 到可以 “把語(yǔ)言以一種有語(yǔ)義的方式組合在一起”,而不關(guān)心不同的可能的措辭。

那么,如果我們把 ChatGPT 應(yīng)用于底層計(jì)算語(yǔ)言,會(huì)發(fā)生什么呢?計(jì)算語(yǔ)言可以描述什么是可能的。但仍然可以添加的是對(duì) “什么是流行的” 的感覺 —— 例如基于對(duì)網(wǎng)絡(luò)上所有內(nèi)容的閱讀。

但是,在下面,用計(jì)算語(yǔ)言操作意味著像 ChatGPT 這樣的東西可以立即和基本地接觸到相當(dāng)于利用潛在的不可還原的計(jì)算的終極工具。這使得它成為一個(gè)不僅可以 “生成合理文本” 的系統(tǒng),而且可以期望解決任何可以解決的問題,即這些文本是否真的對(duì)世界 —— 或者它應(yīng)該談?wù)摰臇|西做出了 “正確” 的陳述。


—14—

那么ChatGPT 在做什么,

為什么它能發(fā)揮作用?


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ò)上、書本上的文字。而且,它不僅是連貫的人類語(yǔ)言,它還 “說了些什么”,“按照它的提示” 利用它 “讀” 到的內(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é)上非常重要的東西:人類語(yǔ)言(以及它背后的思維模式)在某種程度上比我們想象的更簡(jiǎn)單,更 “像法律”。ChatGPT 已經(jīng)隱晦地發(fā)現(xiàn)了這一點(diǎn)。但我們有可能通過語(yǔ)義語(yǔ)法、計(jì)算語(yǔ)言等明確地暴露它。

ChatGPT 在生成文本方面所做的工作令人印象深刻,而且其結(jié)果通常非常像我們?nèi)祟悤?huì)產(chǎn)生的東西。那么,這是否意味著 ChatGPT 的工作方式就像一個(gè)大腦?它的底層人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)最終是以大腦的理想化為模型的。而且,當(dāng)我們?nèi)祟惍a(chǎn)生語(yǔ)言時(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 語(yǔ)言。

但就目前而言,看到 ChatGPT 已經(jīng)能夠做到的事情是令人興奮的。在某種程度上,它是基本科學(xué)事實(shí)的一個(gè)很好的例子,即大量簡(jiǎn)單的計(jì)算元素可以做非凡和意想不到的事情。但它也為我們提供了兩千年來最好的動(dòng)力,以更好地理解人類條件的核心特征,即人類語(yǔ)言及其背后的思維過程的基本特征和原則。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人工智能
    +關(guān)注

    關(guān)注

    1791

    文章

    47294

    瀏覽量

    238578
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3247

    瀏覽量

    48855
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1562

    瀏覽量

    7695

原文標(biāo)題:ChatGPT的工作原理,這篇文章說清楚了

文章出處:【微信號(hào):AI智勝未來,微信公眾號(hào):AI智勝未來】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    母線工作原理

    電子發(fā)燒友網(wǎng)站提供《母線工作原理.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 11:08 ?0次下載
    母線<b class='flag-5'>工作原理</b>

    ChatGPT 與人工智能的未來發(fā)展

    模型的出現(xiàn),標(biāo)志著人工智能在理解和生成人類語(yǔ)言方面取得了重大突破。 1. ChatGPT工作原理 ChatGPT基于一種稱為“變換器”(Transformer)的架構(gòu),這種架構(gòu)最初是為了處理序列數(shù)據(jù)而設(shè)計(jì)的,如文本或語(yǔ)音。變換
    的頭像 發(fā)表于 10-25 16:30 ?513次閱讀

    輔助電源的工作原理

     輔助電源的工作原理主要涉及在主電源發(fā)生故障或不穩(wěn)定時(shí),自動(dòng)切換到備用電源,以保證設(shè)備的持續(xù)供電。以下是關(guān)于輔助電源工作原理的詳細(xì)解釋:
    的頭像 發(fā)表于 10-21 14:56 ?431次閱讀

    鋅銀電池的工作原理

    鋅銀電池的工作原理主要基于鋅和銀兩種金屬之間的氧化還原反應(yīng)。以下是鋅銀電池工作原理的詳細(xì)解釋:
    的頭像 發(fā)表于 10-03 14:59 ?1367次閱讀

    光線示波器的工作原理

    光線示波器的工作原理主要基于電、磁、光和機(jī)械系統(tǒng)的綜合作用,其詳細(xì)過程如下:
    的頭像 發(fā)表于 09-21 16:09 ?658次閱讀

    串行接口的工作原理和結(jié)構(gòu)

    串行接口(Serial Interface)的工作原理和結(jié)構(gòu)是理解其在計(jì)算機(jī)與外部設(shè)備之間數(shù)據(jù)傳輸方式的重要基礎(chǔ)。以下將詳細(xì)闡述串行接口的工作原理及其典型結(jié)構(gòu)。
    的頭像 發(fā)表于 08-25 17:01 ?1732次閱讀

    VCO的工作原理是什么

    VCO(Voltage-Controlled Oscillator,電壓控制振蕩器)的工作原理是基于電子器件的非線性特性,通過改變輸入電壓來調(diào)整輸出信號(hào)的頻率。以下是對(duì)VCO工作原理的詳細(xì)闡述,包括其電路結(jié)構(gòu)、工作機(jī)制、性能參數(shù)
    的頭像 發(fā)表于 08-20 17:16 ?1923次閱讀

    用launch pad燒錄chatgpt_demo項(xiàng)目會(huì)有api key報(bào)錯(cuò)的原因?

    我用launch pad燒錄chatgpt_demo項(xiàng)目問題會(huì)有api key報(bào)錯(cuò);請(qǐng)問用launch pad要如何設(shè)置api key和調(diào)試?還是只能通過idf?
    發(fā)表于 06-27 07:59

    使用espbox lite進(jìn)行chatgpt_demo的燒錄報(bào)錯(cuò)是什么原因?

    我使用espbox lite進(jìn)行chatgpt_demo的燒錄 我的idf是v5.1release版本的,espbox是master版本的 在編譯時(shí)似乎沒有什么問題 在燒錄時(shí)報(bào)錯(cuò) 請(qǐng)問這是什么原因
    發(fā)表于 06-11 08:45

    OpenAI 深夜拋出王炸 “ChatGPT- 4o”, “她” 來了

    當(dāng)?shù)貢r(shí)間5月13日OpenAI推出ChatGPT-4o,代表了人工智能向前邁出的一大步。在GPT-4turbo的強(qiáng)大基礎(chǔ)上,這種迭代擁有顯著的改進(jìn)。在發(fā)布會(huì)的演示中,OpenAI展示該模型的高級(jí)
    發(fā)表于 05-27 15:43

    霍爾開關(guān)的工作原理及應(yīng)用

    霍爾開關(guān)的工作原理及應(yīng)用
    的頭像 發(fā)表于 04-09 10:29 ?3235次閱讀
    霍爾開關(guān)的<b class='flag-5'>工作原理</b>及應(yīng)用

    在FPGA設(shè)計(jì)中是否可以應(yīng)用ChatGPT生成想要的程序呢

    當(dāng)下AI人工智能崛起,很多開發(fā)領(lǐng)域都可看到ChatGPT的身影,F(xiàn)PGA設(shè)計(jì)中,是否也可以用ChatGPT輔助設(shè)計(jì)呢?
    發(fā)表于 03-28 23:41

    IGBT器件的結(jié)構(gòu)和工作原理

    IGBT器件的結(jié)構(gòu)和工作原理
    的頭像 發(fā)表于 02-21 09:41 ?1813次閱讀
    IGBT器件的結(jié)構(gòu)和<b class='flag-5'>工作原理</b>

    【國(guó)產(chǎn)FPGA+OMAPL138開發(fā)板體驗(yàn)】(原創(chuàng))6.FPGA連接ChatGPT 4

    的復(fù)雜系統(tǒng),然后將其映射到FPGA上運(yùn)行。FPGA通常與CPU、GPU等并行處理單元一起工作,通過網(wǎng)絡(luò)接口與后端服務(wù)器通信。然而,如果編寫一個(gè)FPGA配置以模擬與ChatGPT4 API通信的過程
    發(fā)表于 02-14 21:58

    ev電機(jī)的工作原理是什么

    作為電動(dòng)汽車的核心部件,電動(dòng)機(jī)(EV電機(jī))的工作原理是實(shí)現(xiàn)車輛驅(qū)動(dòng)力的轉(zhuǎn)換,將電能轉(zhuǎn)變?yōu)闄C(jī)械能。EV電機(jī)的工作原理主要包括電磁感應(yīng)定理、電磁場(chǎng)、電流控制等方面。下面將從原理、結(jié)構(gòu)和工作過程三個(gè)方面來
    的頭像 發(fā)表于 01-08 10:04 ?1562次閱讀
    主站蜘蛛池模板: 8天堂资源在线| 天天狠天天干| 九九黄色网| 日日干夜夜草| 免费观看老外特级毛片| 国产精品影视| tueb69xxxxxhd日本| 亚洲福利视频一区二区三区| 男人j进人女人j 的视频| 99热久久久久久久免费观看| 亚洲成在人线中文字幕| 生活片一级性| 久久综合狠狠综合久久| 国产成人黄网址在线视频| 亚洲第一视频| 国产精品国产午夜免费福利看| 欧美精品黑人性xxxx| 啪啪调教所29下拉式免费阅读| 在线播放亚洲视频| 色老头免费视频| 伊人久久大香线蕉综合亚洲| 亚洲精品亚洲人成人网| 色你懂的| 韩国三级hd| 天天色天天| 欧美色穴| 曰本三级香港三级人妇99视频| 色色就色色| 国产精品一一在线观看| 爽死你个放荡粗暴小淫视频| aa视频在线观看| 激情五月激情综合色区| 色多多在线视频| 国产免费黄视频| 欧美黄色免费网站| 中文字幕精品一区二区三区视频| bl 高h文| 美女免费视频是黄的| 天天做天天爽| h国产在线| 特级淫片aaaa毛片aa视频|