萬字長文解釋 ChatGPT 在做什么,以及為什么它能發(fā)揮作用?(4)
神經(jīng)網(wǎng)絡(luò) —— 至少在它們目前的設(shè)置中 —— 從根本上說是基于數(shù)字的。因此,如果我們要用它們來處理像文本這樣的東西,我們就需要一種方法來用數(shù)字表示我們的文本。當(dāng)然,我們可以開始(基本上就像 ChatGPT 那樣)為字典中的每個(gè)詞分配一個(gè)數(shù)字。但是,有一個(gè)重要的想法 —— 例如,它是 ChatGPT 的核心 —— 超出了這個(gè)范圍。這就是 “嵌入” 的概念。我們可以把嵌入看作是一種嘗試用數(shù)字陣列來表示事物 “本質(zhì)” 的方式 —— 其特性是 “附近的事物” 由附近的數(shù)字來表示。
因此,舉例來說,我們可以把一個(gè)詞的嵌入看作是試圖在一種 “意義空間” 中排列詞語,在這個(gè)空間中,以某種方式 “在意義上接近” 的詞語在嵌入中出現(xiàn)。實(shí)際使用的嵌入 —— 例如在 ChatGPT 中 —— 往往涉及大量的數(shù)字列表。但是如果我們把它投射到二維空間,我們就可以顯示出嵌入的單詞是如何排列的例子:
而且,是的,我們看到的東西在捕捉典型的日常印象方面做得非常好。但是,我們怎樣才能構(gòu)建這樣一個(gè)嵌入呢?大致的想法是查看大量的文本(這里是來自網(wǎng)絡(luò)的 50 億個(gè)詞),然后看不同的詞出現(xiàn)的 “環(huán)境” 有多相似。因此,例如,“鱷魚” 和 “鱷魚” 經(jīng)常會在其他類似的句子中互換出現(xiàn),這意味著它們在嵌入中會被放在附近。但是 “蘿卜” 和 “老鷹” 不會出現(xiàn)在其他類似的句子中,所以它們在嵌入中會被放在很遠(yuǎn)的地方。
但是,如何使用神經(jīng)網(wǎng)絡(luò)實(shí)際實(shí)現(xiàn)這樣的東西呢?讓我們先來討論一下不是針對單詞的嵌入,而是針對圖像的嵌入。我們想找到某種方法,通過數(shù)字列表來描述圖像,使 “我們認(rèn)為相似的圖像” 被分配到相似的數(shù)字列表中。
我們?nèi)绾闻袛辔覀兪欠駪?yīng)該 “認(rèn)為圖像相似”?好吧,如果我們的圖像是,例如,手寫的數(shù)字,我們可能會 “認(rèn)為兩個(gè)圖像是相似的”,如果它們是相同的數(shù)字。早些時(shí)候,我們討論了一個(gè)被訓(xùn)練來識別手寫數(shù)字的神經(jīng)網(wǎng)絡(luò)。我們可以認(rèn)為這個(gè)神經(jīng)網(wǎng)絡(luò)被設(shè)置成在其最終輸出中把圖像放入 10 個(gè)不同的倉,每個(gè)數(shù)字一個(gè)倉。
但是,如果我們在做出 “這是一個(gè) ‘4’” 的最終決定之前,“****” 神經(jīng)網(wǎng)絡(luò)內(nèi)部發(fā)生的事情呢?我們可能會想到,在神經(jīng)網(wǎng)絡(luò)中,有一些數(shù)字將圖像描述為 “大部分是 4,但有一點(diǎn)是 2” 或類似的情況。而我們的想法是挑選出這樣的數(shù)字作為嵌入的元素。
所以這里有一個(gè)概念。我們不是直接試圖描述 “什么圖像在什么其他圖像附近”,而是考慮一個(gè)定義明確的任務(wù)(在這種情況下是數(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ò)” 來隱含地決定這意味著什么 “圖像的接近性”。
那么,這對數(shù)字識別網(wǎng)絡(luò)來說是如何更詳細(xì)地工作的呢?我們可以認(rèn)為這個(gè)網(wǎng)絡(luò)是由 11 個(gè)連續(xù)的層組成的,我們可以用圖標(biāo)來概括它(激活函數(shù)顯示為獨(dú)立的層):
在開始時(shí),我們向第一層輸入實(shí)際的圖像,用像素值的二維陣列表示。在最后一層,我們得到了一個(gè)由 10 個(gè)值組成的數(shù)組,我們可以認(rèn)為這表示網(wǎng)絡(luò)對圖像對應(yīng)于 0 到 9 的每個(gè)數(shù)字的 “確定程度”。
輸入圖像 4,最后一層的神經(jīng)元的值就是:
換句話說,神經(jīng)網(wǎng)絡(luò)此時(shí)已經(jīng) “非常確定” 這個(gè)圖像是 4,為了實(shí)際得到輸出 “4”,我們只需挑選出數(shù)值最大的神經(jīng)元的位置。
但是,如果我們再往前看一步呢?網(wǎng)絡(luò)中的最后一個(gè)操作是一個(gè)所謂的 softmax,它試圖 “強(qiáng)制確定”。但在這之前,神經(jīng)元的值是:
代表 “4” 的神經(jīng)元仍然有最高的數(shù)值。但在其他神經(jīng)元的數(shù)值中也有信息。我們可以期望這個(gè)數(shù)字列表在某種意義上可以用來描述圖像的 “本質(zhì)”,從而提供我們可以用作嵌入的東西。因此,例如,這里的每一個(gè) 4 都有一個(gè)稍微不同的 “簽名”(或 “特征嵌入”) —— 都與 8 的非常不同:
在這里,我們基本上是用 10 個(gè)數(shù)字來描述我們的圖像特征。但通常情況下,使用比這更多的數(shù)字會更好。例如,在我們的數(shù)字識別網(wǎng)絡(luò)中,我們可以通過挖掘前一層得到一個(gè) 500 個(gè)數(shù)字的陣列。而這可能是一個(gè)合理的數(shù)組,作為 “圖像嵌入” 使用。
如果我們想對手寫數(shù)字的 “圖像空間” 進(jìn)行明確的可視化,我們需要 “降低維度”,有效地將我們得到的 500 維向量投射到,例如,三維空間:
我們剛剛談到為圖像創(chuàng)建一個(gè)特征(從而嵌入),有效地基于識別圖像的相似性,確定(根據(jù)我們的訓(xùn)練集)它們是否對應(yīng)于同一個(gè)手寫數(shù)字。如果我們有一個(gè)訓(xùn)練集,比如說,確定每張圖片屬于 5000 種常見類型的物體(貓、狗、椅子…… ),我們就可以更普遍地對圖片做同樣的事情。通過這種方式,我們可以制作一個(gè)圖像嵌入,它被我們對常見物體的識別所 “錨定”,但然后根據(jù)神經(jīng)網(wǎng)絡(luò)的行為 “圍繞它進(jìn)行概括”。關(guān)鍵是,只要這種行為與我們?nèi)祟惛兄徒忉寛D像的方式相一致,這將最終成為一個(gè) “對我們來說是正確的” 的嵌入,并在實(shí)踐中做 “類似人類判斷” 的任務(wù)時(shí)有用。
好吧,那么我們?nèi)绾巫裱瑯拥姆椒▉韺ふ覇卧~的嵌入呢?關(guān)鍵是要從一個(gè)我們可以隨時(shí)進(jìn)行訓(xùn)練的關(guān)于單詞的任務(wù)開始。而標(biāo)準(zhǔn)的任務(wù)是 “單詞預(yù)測”。假設(shè)我們得到了 “the ___ cat”?;谝粋€(gè)大型的文本語料庫(比如說,網(wǎng)絡(luò)上的文本內(nèi)容),可能 “填空” 的不同單詞的概率是多少?或者說,給定 “_____ 黑 _____”,不同的 “側(cè)翼詞” 的概率是多少?
我們?nèi)绾螢樯窠?jīng)網(wǎng)絡(luò)設(shè)置這個(gè)問題?歸根結(jié)底,我們必須用數(shù)字來表述一切。做到這一點(diǎn)的一個(gè)方法就是為英語中 5 萬個(gè)左右的常用詞中的每一個(gè)分配一個(gè)獨(dú)特的數(shù)字。因此,例如,“the” 可能是 914,而 “cat”(前面有一個(gè)空格)可能是 3542。(這些是 GPT-2 所使用的實(shí)際數(shù)字。)所以對于 “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è)特定詞的原始嵌入向量:
如果我們做一些事情,比如測量這些向量之間的距離,那么我們就可以發(fā)現(xiàn)像單詞的 “接近性” 這樣的東西。稍后我們將更詳細(xì)地討論我們可能認(rèn)為這種嵌入的 “認(rèn)知” 意義。但現(xiàn)在主要的一點(diǎn)是,我們有一種方法可以有效地將單詞變成 “神經(jīng)網(wǎng)絡(luò)友好” 的數(shù)字集合。
但實(shí)際上,我們可以更進(jìn)一步,不僅僅是用數(shù)字的集合來描述單詞;我們還可以對單詞的序列,或者整個(gè)文本塊進(jìn)行描述。在 ChatGPT 中,它就是這樣處理事情的。它把目前得到的文本,生成一個(gè)嵌入矢量來表示它。然后,它的目標(biāo)是找到接下來可能出現(xiàn)的不同詞匯的概率。它將其答案表示為一個(gè)數(shù)字列表,該列表基本上給出了 50,000 個(gè)左右的可能詞匯的概率。(嚴(yán)格地說,ChatGPT 不處理單詞,而是處理 “符號” —— 方便的語言單位,可能是整個(gè)單詞,也可能只是 “pre” 或 “ing” 或 “ized” 這樣的片段。使用代幣使 ChatGPT 更容易處理罕見的、復(fù)合的和非英語的詞匯,有時(shí),無論好壞,都可以發(fā)明新的詞匯。)
好了,我們終于準(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è)特別為處理語言問題而設(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ū)域,而是引入了 “注意” 的概念 —— 以及對序列的某些部分比其他部分更 “注意” 的概念。也許有一天,僅僅啟動一個(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ù)十億頁的文本等),所以在任何時(shí)候,它都有一定數(shù)量的文本,它的目標(biāo)是為下一個(gè)要添加的標(biāo)記提出適當(dāng)?shù)倪x擇。
它的操作分為三個(gè)基本階段。首先,它獲取與迄今為止的文本相對應(yīng)的標(biāo)記序列,并找到代表這些標(biāo)記的嵌入(即一個(gè)數(shù)字陣列)。然后,它以 “標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)方式” 對這一嵌入進(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ù)量與英語中的常用詞的數(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 語言示意圖:
輸入是一個(gè)由 n 個(gè)標(biāo)記組成的向量(如上一節(jié)所述,由 1 到 50,000 的整數(shù)表示)。這些標(biāo)記中的每一個(gè)都被(通過單層神經(jīng)網(wǎng)絡(luò))轉(zhuǎn)換成一個(gè)嵌入向量(GPT-2 的長度為 768,ChatGPT 的 GPT-3 為 12,288)。同時(shí),還有一個(gè) “二級路徑”,它將標(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ò)最終是如何配置它的。
下面是嵌入模塊所做的工作,對字符串 “hello hello bye bye bye”:
每個(gè)標(biāo)記的嵌入向量的元素都顯示在頁面下方,在整個(gè)頁面上,我們首先看到的是 “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è)單一的 “注意塊” 的示意圖(對于 GPT-2):
在每個(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ī)制所做的是允許 “注意” 甚至更早的詞 —— 因此有可能捕捉到,比如說,動詞可以指代在句子中出現(xiàn)在它們之前的許多詞的名詞的方式。
在更詳細(xì)的層面上,注意力頭所做的是以一定的權(quán)重重新組合與不同標(biāo)記相關(guān)的嵌入向量中的大塊。因此,例如,在第一個(gè)注意力區(qū)塊中的 12 個(gè)注意力頭(在 GPT-2 中)對上面的 “hello, bye” 字符串有如下(“l(fā)ook-back-all-the-way-beginning-the-sequence-of-tokens”)模式的 “重組權(quán)值”:
在經(jīng)過注意力頭的處理后,產(chǎn)生的 “重新加權(quán)的嵌入向量”(GPT-2 的長度為 768,ChatGPT 的 GPT-3 的長度為 12288)被傳遞到一個(gè)標(biāo)準(zhǔn)的 “全連接” 神經(jīng)網(wǎng)層。很難掌握這個(gè)層在做什么。但這里是它使用的 768×768 權(quán)重矩陣的圖(這里是 GPT-2):
采用 64×64 的移動平均數(shù),一些(隨機(jī)漫步式的)結(jié)構(gòu)開始出現(xiàn):
是什么決定了這種結(jié)構(gòu)?最終,它可能是人類語言特征的一些 “神經(jīng)網(wǎng)絡(luò)編碼”。但到現(xiàn)在為止,這些特征可能是什么還很不清楚。實(shí)際上,我們正在 “打開 ChatGPT 的大腦”(或至少是 GPT-2),并發(fā)現(xiàn),是的,里面很復(fù)雜,而且我們不了解它 —— 盡管最終它產(chǎn)生了可識別的人類語言。
好吧,在經(jīng)歷了一個(gè)注意力區(qū)塊之后,我們得到了一個(gè)新的嵌入向量 —— 然后它又被連續(xù)地傳遞到其他的注意力區(qū)塊中(GPT-2 共有 12 個(gè);GPT-3 有 96 個(gè))。每個(gè)注意力區(qū)塊都有自己特定的 “注意力” 和 “完全連接” 權(quán)重模式。這里是 GPT-2 的 “hell,bye” 輸入的注意權(quán)重序列,用于第一個(gè)注意頭(attention head):
這里是全連接層的(移動平均)“矩陣”:
奇怪的是,盡管這些 “權(quán)重矩陣” 在不同的注意力塊中看起來很相似,但權(quán)重的大小分布可能有些不同(而且不總是高斯的):
那么,在經(jīng)歷了所有這些注意力區(qū)塊之后,轉(zhuǎn)化器的凈效果是什么?從本質(zhì)上講,它是將原始的符號序列的嵌入集合轉(zhuǎn)化為最終的集合。而 ChatGPT 的具體工作方式是在這個(gè)集合中提取最后一個(gè)嵌入,并對其進(jìn)行 “解碼”,以產(chǎn)生一個(gè)關(guān)于下一個(gè)標(biāo)記應(yīng)該是什么的概率列表。
這就是 ChatGPT 的概要內(nèi)容。它可能看起來很復(fù)雜(尤其是因?yàn)樗性S多不可避免的、有點(diǎn)武斷的 “工程選擇”),但實(shí)際上,所涉及的最終元素非常簡單。因?yàn)樽罱K我們要處理的只是一個(gè)由 “人工神經(jīng)元” 組成的神經(jīng)網(wǎng)絡(luò),每個(gè)神經(jīng)元都在進(jìn)行簡單的操作,即接受一組數(shù)字輸入,然后將它們與某些權(quán)重相結(jié)合。
ChatGPT 的原始輸入是一個(gè)數(shù)字?jǐn)?shù)組(到目前為止符號的嵌入向量),當(dāng) ChatGPT“運(yùn)行” 以產(chǎn)生一個(gè)新的符號時(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è)特定的輸出符號時(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ò)。在某種程度上,它非常簡單:一整個(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ū)塊中,有一些地方對傳入的數(shù)據(jù)進(jìn)行了 “多份拷貝”,然后每個(gè)拷貝經(jīng)過不同的 “處理路徑”,可能涉及不同數(shù)量的層,然后才重新組合。但是,雖然這可能是對正在發(fā)生的事情的一種方便的表述,但至少在原則上總是可以考慮 “密集地填入” 層,但只是讓一些權(quán)重為零。
如果我們看一下 ChatGPT 的最長路徑,大約有 400 個(gè)(核心)層參與其中 —— 在某些方面不是一個(gè)巨大的數(shù)字。但是有數(shù)以百萬計(jì)的神經(jīng)元 —— 總共有 1750 億個(gè)連接,因此有 1750 億個(gè)權(quán)重。需要認(rèn)識到的一點(diǎn)是,每當(dāng) ChatGPT 生成一個(gè)新的令牌時(shí),它都要進(jìn)行涉及這些權(quán)重中每一個(gè)的計(jì)算。在實(shí)現(xiàn)上,這些計(jì)算可以 “按層” 組織成高度并行的陣列操作,可以方便地在 GPU 上完成。但是,對于產(chǎn)生的每一個(gè)標(biāo)記,仍然要進(jìn)行 1750 億次計(jì)算(最后還要多一點(diǎn)) —— 因此,是的,用 ChatGPT 生成一個(gè)長的文本需要一段時(shí)間,這并不令人驚訝。
但最終,最了不起的是,所有這些操作 —— 它們各自都很簡單 —— 能夠以某種方式共同完成如此出色的 “類似人類” 的文本生成工作。必須再次強(qiáng)調(diào)的是,(至少到目前為止,我們知道)沒有任何 “最終的理論理由” 來解釋這樣的工作。事實(shí)上,正如我們將要討論的那樣,我認(rèn)為我們必須把這看作是一個(gè)潛在的令人驚訝的科學(xué)發(fā)現(xiàn):在像 ChatGPT 這樣的神經(jīng)網(wǎng)絡(luò)中,有可能捕捉到人類大腦在生成語言方面的本質(zhì)。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。