色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

ChatGPT是怎么實現(xiàn)的

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-16 11:31 ? 次閱讀

ChatGPT 能夠自動生成類似于人類寫作的文本,這一點非常引人注目,也令人意外。但它是如何實現(xiàn)的?為什么它能夠如此出色地生成我們認為有意義的文本?我的目的是在這里概述ChatGPT內(nèi)部的運行情況,并探討它能夠如此出色地產(chǎn)生有意義文本的原因。

首先需要解釋的是,ChatGPT的基本目標是嘗試產(chǎn)生一個“合理的延續(xù)”,無論它當前所擁有的文本是什么。這里的“合理”是指“在瀏覽了數(shù)十億網(wǎng)頁等人類書寫的內(nèi)容后,人們可能會寫什么”。

那么假設我們有文本“AI的牛逼之處在于它能夠...”,我們可以想象一下掃描數(shù)十億頁人類寫作的文本(比如在網(wǎng)上和數(shù)字化的書籍中),找到所有這個文本的實例,然后看下一個單詞出現(xiàn)的頻率是多少。ChatGPT實際上是在類似地尋找在某種意義上“匹配”的內(nèi)容,以生成一個排名列表,列出可能的后續(xù)單詞和相應的“概率”。

圖片

ChatGPT寫作時的一個顯著特點是,它實際上只是一遍又一遍地問自己:“在當前文本的情況下,下一個詞應該是什么?”然后每次添加一個單詞。更準確地說,它添加的是一個“標記”,可能只是一個單詞的一部分,這就是它有時可以“創(chuàng)造新詞”的原因。

好的,在每一步中,ChatGPT都會得到一個帶有概率的單詞列表。但是它應該選擇哪個單詞來添加到正在撰寫的文章(或其他文本)中呢?也許人們認為應該選擇“排名最高”的單詞(即被分配最高“概率”的單詞)。但是這就是玄學開始的地方。因為某種原因(也許有一天我們會對此有科學式的理解),如果我們總是選擇排名最高的單詞,我們通常會得到一個非常“平淡”的文章,似乎從未“展現(xiàn)出任何創(chuàng)意”(有時甚至是逐字重復)。但是,如果有時(隨機地)選擇排名較低的單詞,我們就會得到一個“ 更有趣 ”的文章。

這里有隨機性,這意味著如果我們多次使用相同的問題提問,每次都可能得到不同的回答。同時,存在一個特定的所謂“temperature”參數(shù),它決定了低排名單詞被使用的頻率。對于文章生成來說,實踐中發(fā)現(xiàn)使用“temperature”為0.8最佳。(需要強調(diào)的是,這里沒有運用任何“理論”;這只是經(jīng)驗上被發(fā)現(xiàn)的有效方法。)

在繼續(xù)之前,我需要說明的是,出于闡述的目的,我通常不會使用ChatGPT中的完整系統(tǒng),而是使用更簡單的GPT-2系統(tǒng)。該系統(tǒng)有一個很好的特點,即其大小足夠小,可以在標準臺式計算機上運行。

例如,以下是獲取上述概率表格的步驟。首先,我們需要檢索底層的“語言模型”神經(jīng)網(wǎng)絡

圖片

稍后,我們將會深入探討這個神經(jīng)網(wǎng)絡,并講解它是如何工作的。但現(xiàn)在,我們可以把這個“網(wǎng)絡模型”視為黑匣子,應用到我們目前的文本中,并請求該模型認為應該跟隨的前五個概率最高的單詞:

圖片

這個步驟將結(jié)果轉(zhuǎn)換為一個格式明確的“數(shù)據(jù)集”:

圖片

如果反復“應用模型”,每一步都添加具有最高概率的單詞(在此代碼中指定為模型的“決策”),則會發(fā)生以下情況:

圖片

如果繼續(xù)下去會發(fā)生什么?在這種零“temperature”的情況下,輸出很快就會變得混亂而重復。

圖片

如果不總是選擇“頂部”單詞,而是有時隨機選擇“非頂部”單詞(其中“隨機性”對應于 temperature=0.8),會發(fā)生什么呢?我們再次可以構建出文本:

圖片

每次執(zhí)行時,會做出不同的隨機選擇,因此文本也會不同。以下是5個示例:

圖片

那么,如何計算下一個單詞的概率?

好的,ChatGPT總是根據(jù)概率選擇下一個單詞。但是這些概率從哪里來呢?讓我們從一個更簡單的問題開始,考慮逐個字母(而不是單詞)生成英語文本。如何確定每個字母的概率呢?

我們可以采取的最簡單的方法就是從英文文本中隨機取樣,并計算不同字母的出現(xiàn)頻率。例如,以下是在“貓”(Cat)維基百科文章中計算字母出現(xiàn)次數(shù)的結(jié)果:

圖片

這是狗(dog)維基百科文章中不同字母的出現(xiàn)次數(shù):

圖片

結(jié)果是相似的,但并非完全相同(因為“o”在“dogs”文章中更常見,畢竟它出現(xiàn)在單詞“dog”中)。不過,如果我們?nèi)拥挠⒄Z文本足夠大,最終我們可以期望得到相當一致的結(jié)果:

圖片

這是我們只是根據(jù)這些概率生成字母序列時得到的樣本:

圖片

我們可以通過將空格模擬為字母添加進可選項中,從而將這些序列分為多個“單詞”組成的序列:

圖片

我們可以通過讓“單詞長度”的分布與英語中的分布一致來更好地模擬“單詞”的生成過程:

圖片

這里我們沒有得到任何“實際單詞”,但結(jié)果看起來稍微好了一點。但是,要進一步往下,我們需要做的不僅僅是隨機選擇每個字母。

例如,我們知道如果有一個“q”,下一個字母基本上必須是“u”。

這是字母本身的出現(xiàn)概率圖示:

圖片

下面這張圖展示了英語文本中一對字母(“2-grams”)的概率分布。圖表的橫軸為可能的第一個字母,縱軸為可能的第二個字母:

圖片

我們可以看到,例如,“q”列除了“u”行之外為空(概率為零)。好的,現(xiàn)在,我們不再一個字母一個字母地生成我們的“單詞”,而是使用這些“2-gram”概率,一次生成兩個字母來生成它們。以下是結(jié)果的一個樣本 - 其中恰好包括一些真實存在的單詞:

圖片

通過足夠多的英文文本,我們不僅可以對單個字母或字母對(2-grams)的概率進行相當準確的估計,還可以對更長的字母序列進行估計。如果我們使用逐漸更長的n-gram概率生成“隨機單詞”,我們會發(fā)現(xiàn)它們逐漸變得“更真實”。

圖片

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

圖片

我們可以預料到,這樣生成的句子毫無意義。那么我們應該如何改進呢?就像處理字母時一樣,我們可以考慮不僅單個單詞的概率,而是成對或更長的n-gram單詞的概率。對于成對的情況,以下是5個例子,它們都以單詞“cat”為起點:

圖片

這看起來稍微有點合理。如果我們使用足夠長的n-gram,就有可能得到一個能夠生成具有“正確整體文章概率”的單詞序列,從而“得到一個ChatGPT”。但是問題在于,目前可用的英語文本量遠遠不足以推斷出這些概率。在網(wǎng)絡爬取的數(shù)百億單詞和數(shù)字化書籍中的數(shù)百億單詞中,對于40,000個常用單詞,可能的2-grams數(shù)量就高達16億,而3-grams的數(shù)量則達到60萬億。

因此,我們無法從現(xiàn)有的文本中估算出所有這些概率。即使是20個單詞的“文章片段”,其可能性數(shù)量也已經(jīng)超過了宇宙中的粒子數(shù)量,從某種意義上講,這些可能性永遠都不能全部寫下來。

那么我們該怎么辦呢?重要的想法是創(chuàng)建一個模型,使我們能夠估計序列應該發(fā)生的概率,即使我們在我們查看的文本語料庫中從未明確看到這些序列。而ChatGPT的核心正是一個被稱為“大型語言模型”(LLM)的模型,它已經(jīng)被構建成能夠很好地估計這些概率的模型。

什么是模型?

假設你想知道(就像加利略在16世紀晚期那樣)從比薩斜塔的每層落下的炮彈需要多長時間才能落到地面。那么,你可以在每種情況下進行測量并制作結(jié)果表。或者你可以做理論科學的本質(zhì):建立一個模型,給出一些計算答案的過程,而不是僅僅測量和記憶每種情況。

讓我們想象我們有(有些理想化的)數(shù)據(jù),了解炮彈從不同樓層掉落需要多長時間:

圖片

我們?nèi)绾斡嬎愠鰪奈覀儧]有明確數(shù)據(jù)的樓層掉落所需的時間?在這種特定情況下,我們可以使用已知的物理定律來計算。但是假設我們只有數(shù)據(jù),而不知道其背后的規(guī)律是什么。那么我們可以做出一個數(shù)學猜測,例如,也許我們應該使用一條直線作為模型:

圖片

我們可以選擇不同的直線,但這條直線平均來看最接近我們所給的數(shù)據(jù)。從這條直線中,我們可以估計任何一層的落地時間。

我們?nèi)绾沃涝谶@里嘗試使用一條直線呢?在某種程度上,我們并不確定。這只是數(shù)學上的一些簡單東西,而且我們已經(jīng)習慣了我們所測量的很多數(shù)據(jù)能夠被數(shù)學上的簡單事物很好地擬合。當然,我們也可以嘗試使用數(shù)學上更復雜的東西,例如a + bx + cx^2,在這種情況下,我們可以得到更好的擬合效果:

圖片

事情有時會變得非常糟糕。就像在這里,我們嘗試使用 a + b/x + c sin(x) 可以得到的最好結(jié)果:

圖片

永遠不存在“model-less model”。您使用的任何模型都具有某些特定的基本結(jié)構,然后有一定數(shù)量的“旋鈕可供調(diào)節(jié)”(即可以設置的參數(shù))來擬合您的數(shù)據(jù)。在ChatGPT的情況下,使用了許多這樣的“旋鈕”——實際上有1750億個。

值得注意的是,相比于3-grams的60萬億的組合可能性,ChatGPT 的這1750億個參數(shù),卻已足夠生成讓我們驚訝的文本。

如何制作能完成人類任務的模型

我們上面給出的例子涉及到制作數(shù)值數(shù)據(jù)模型,這些數(shù)據(jù)基本上來自于簡單的物理,是幾個世紀以來我們已經(jīng)知道的“簡單數(shù)學”。但是對于ChatGPT,我們必須制作一種人類大腦產(chǎn)生的語言文本模型。對于這樣的任務,我們還沒有類似于“簡單的數(shù)學”工具。那么,這個模型可能是什么樣子的呢?

在討論語言之前,我們先來談談另一個類似于人類任務:圖像識別。作為一個簡單的例子,我們考慮數(shù)字圖像識別(這是一個經(jīng)典的機器學習例子)。

圖片

首先,我們給每個數(shù)字收集一堆樣本圖像:

圖片

然后,為了找出我們輸入的圖像是否對應于特定的數(shù)字,我們可以使用樣本圖像進行像素逐個比較。但是作為人類,我們顯然比像素逐個比較樣本更擅長數(shù)字識別,因為即使數(shù)字是手寫的,或者存在各種修改和扭曲,我們?nèi)阅軌蜃R別它們。

圖片

當我們上面為數(shù)值數(shù)據(jù)建立模型時,我們能夠接收給定的數(shù)值x,然后為特定的a和b計算a+bx。那么,如果我們將這里每個像素的灰度值視為某個變量xi,是否有某個函數(shù)涉及所有這些變量,當我們對其進行求值時,可以告訴我們圖像表示的是哪個數(shù)字?事實證明,可以構造這樣的函數(shù)。但并不出人意料,它并不是特別簡單。一個典型的例子可能涉及大約五十萬次數(shù)學運算。

但最終結(jié)果是,如果我們將圖像的像素值集合輸入到此函數(shù)中,輸出將是指定圖像所代表的數(shù)字。稍后,我們將討論如何構建這樣的函數(shù)和神經(jīng)網(wǎng)絡的概念。但現(xiàn)在,讓我們將該函數(shù)視為一個黑盒子,在其中輸入手寫數(shù)字圖像(作為像素值數(shù)組),并輸出它們所對應的數(shù)字:

圖片

但是這里真正發(fā)生了什么?假設我們逐漸模糊一個數(shù)字。一段時間內(nèi),我們的函數(shù)仍然可以“識別”它,例如這里被識別為“2”。但很快它就“失去了”,開始給出“錯誤”的結(jié)果:

圖片

但是,究竟發(fā)生了什么呢?假設我們逐漸模糊一個數(shù)字。在一段時間內(nèi),我們的函數(shù)仍然可以“識別”它,比如說是“2”。但很快,它就會“失效”,并開始給出“錯誤”的結(jié)果。

但是,我們?yōu)槭裁凑J為這是“錯誤”的結(jié)果呢?在這種情況下,我們知道我們通過模糊“2”來得到所有這些圖像。但如果我們的目標是生成一個能夠模擬人類識別圖像能力的模型,那么真正需要問的問題是:如果向人類展示這些模糊的圖像,而他們并不知道這些圖像是如何產(chǎn)生的,那么人類會如何做出判斷?

如果我們的函數(shù)得到的結(jié)果通常與人類的結(jié)果一致,那么我們就擁有了一個“好的模型”。而這個非常重要的科學事實是,對于像這樣的圖像識別任務,我們現(xiàn)在基本上知道如何構造這樣的函數(shù)。

我們能否“數(shù)學證明”它們的有效性?嗯,不行。因為要做到這一點,我們必須擁有一個關于人類視覺感知的數(shù)學理論。我們拿“2”圖像并改變幾個像素。我們可能想象,即使只有幾個像素“錯位”,我們?nèi)匀粦撜J為這是一個“2”。但這該怎樣才算合理呢?這是一個關于人類視覺感知的問題。是的,對于蜜蜂或章魚,答案無疑會有所不同。

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

那么,像圖像識別這樣的任務,我們的典型模型實際上是如何工作的呢?最流行且最成功的當前方法使用神經(jīng)網(wǎng)絡。神經(jīng)網(wǎng)絡的發(fā)明可以看作是大腦如何工作的簡單理想化,而它們的形式與現(xiàn)在的使用方式非常接近。

人腦中大約有1000億個神經(jīng)元(神經(jīng)細胞),每個神經(jīng)元都能夠每秒產(chǎn)生一千次的電脈沖。這些神經(jīng)元以復雜的網(wǎng)絡連接在一起,每個神經(jīng)元都有樹狀的分支,使其能夠向成千上萬個其他神經(jīng)元傳遞電信號。在粗略的近似中,任何給定神經(jīng)元是否在某一時刻產(chǎn)生電脈沖取決于它從其他神經(jīng)元接收到的脈沖,不同的連接會以不同的“權重”進行貢獻。

當我們“看到圖像”時,光子從圖像中落在我們眼睛后面的(“光感受器”)細胞上,這些細胞會在神經(jīng)細胞中產(chǎn)生電信號。這些神經(jīng)細胞與其他神經(jīng)細胞相連接,最終信號經(jīng)過一系列神經(jīng)元層次的傳遞。在這個過程中,我們“識別”圖像,最終“形成思想”,認為我們“看到了一個2”(或許最終會像大聲說“two”這樣的動作)。

前一節(jié)中的“黑匣子”函數(shù)是這種神經(jīng)網(wǎng)絡的“數(shù)學化”版本。它恰好有11個層次(雖然只有4個“核心層”):

圖片

這個神經(jīng)網(wǎng)絡并沒有什么特別“理論推導”的地方;它只是在1998年作為一項工程構建而成,并被發(fā)現(xiàn)可以工作。(當然,這與我們可能會描述我們的大腦是通過生物進化的過程產(chǎn)生的并沒有太大的不同。)

好的,但是這樣的神經(jīng)網(wǎng)絡如何“識別事物”呢?關鍵是"吸引子"的概念。想象一下我們有手寫的1和2的圖像:

圖片

我們希望所有的1“被吸引到一個地方”,所有的2“被吸引到另一個地方”。換句話說,如果一幅圖像在某種程度上“更接近1”而不是2,我們希望它最終進入“1的位置”,反之亦然。

一個直觀的類比,假設我們有平面上的某些位置,用點表示(在現(xiàn)實中,它們可能是咖啡店的位置)。然后我們可以想象,從平面上的任何一個點開始,我們總是想到達最近的點(也就是去最近的咖啡店)。我們可以通過將平面劃分為由理想化的分隔區(qū)域來表示這一點:

圖片

所以我們可以將這看作是實現(xiàn)了一種“識別任務”,我們不是像識別給定圖像最像哪個數(shù)字那樣做某些事情, 而是直接看哪個點最接近

那么如何使神經(jīng)網(wǎng)絡“執(zhí)行識別任務”呢?讓我們考慮這個非常簡單的情況:

圖片

我們的目標是將與位置 {x,y} 相對應的“輸入”識別為最接近的三個點之一。或者換句話說,我們希望神經(jīng)網(wǎng)絡計算關于 {x,y} 的函數(shù),如下所示:

圖片

那么我們?nèi)绾斡蒙窠?jīng)網(wǎng)絡實現(xiàn)這個任務呢?神經(jīng)網(wǎng)絡是由一系列理想化的“神經(jīng)元”連接而成的,通常排列在層中。一個簡單的例子是:

圖片

每個“神經(jīng)元”實際上是建立在簡單的數(shù)值函數(shù)上的。而要“使用”網(wǎng)絡,我們只需在頂部輸入數(shù)字(如我們的坐標 x 和 y),然后讓每層神經(jīng)元“評估其函數(shù)”,并將結(jié)果向前傳遞到網(wǎng)絡的底部,最終產(chǎn)生最終結(jié)果:

圖片

在傳統(tǒng)的(受生物學啟發(fā))設置中,每個神經(jīng)元實際上都有來自前一層神經(jīng)元的某些“傳入連接”,每個連接都被分配一個特定的“權重”(可以是正數(shù)或負數(shù))。一個給定神經(jīng)元的值是由“前一個神經(jīng)元”的值乘以它們對應的權重然后相加并加上一個常數(shù),最后應用一個“閾值”(或“激活”)函數(shù)來確定的。在數(shù)學上,如果一個神經(jīng)元有輸入x = {x1,x2 ...},那么我們計算f[w.x+b],其中權重w和常數(shù)b通常對于網(wǎng)絡中的每個神經(jīng)元選擇不同;函數(shù)f通常是相同的。

計算 w.x + b 就是矩陣乘法和加法的問題。激活函數(shù) f 引入了非線性,從而產(chǎn)生非平凡的行為。常見的激活函數(shù)有很多種,這里我們將使用 Ramp(或 ReLU)函數(shù)。

圖片

我們想要神經(jīng)網(wǎng)絡執(zhí)行每個任務(或等價地,評估每個總體函數(shù))時,我們將有不同的權重選擇。(正如我們稍后將討論的那樣,這些權重通常是通過使用機器學習從我們想要的輸出示例來訓練神經(jīng)網(wǎng)絡確定的。)

最終,每個神經(jīng)網(wǎng)絡都對應于某個總體數(shù)學函數(shù),盡管它可能很混亂。對于上面的示例,它將是:

圖片

ChatGPT的神經(jīng)網(wǎng)絡也僅僅對應著這樣一個數(shù)學函數(shù),但是實際上有數(shù)十億個項式。

但是讓我們回到單個神經(jīng)元。以下是具有兩個輸入(表示坐標x和y)的神經(jīng)元在各種權重和常量選擇(以及Ramp作為激活函數(shù))下可以計算的函數(shù)示例:

圖片

那么上面那個函數(shù)的表現(xiàn)如何呢?好吧,它是這樣的:

圖片

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

讓我們看看其他一些神經(jīng)網(wǎng)絡會發(fā)生什么。在每種情況下,正如我們稍后將解釋的那樣,我們使用機器學習來找到最佳的權重選擇。然后在這里展示神經(jīng)網(wǎng)絡使用這些權重計算出的結(jié)果:

圖片

較大的神經(jīng)網(wǎng)絡通常能更好地逼近我們的目標函數(shù)。如果要判斷的目標在每個"吸引子"盆地的中心附近,我們通常可以獲得我們想要的答案。但在邊界處,神經(jīng)網(wǎng)絡“難以作出決策”,情況可能會更加混亂。

對于這種簡單的數(shù)學式“識別任務”,正確答案是明確的。但在識別手寫數(shù)字的問題上,情況并不那么明確。如果有人將“2”寫得像“7”等等,怎么辦呢?盡管如此,我們可以詢問神經(jīng)網(wǎng)絡如何區(qū)分數(shù)字,這可以提供一些線索:

圖片

我們能“數(shù)學地”說明網(wǎng)絡是如何進行區(qū)分的嗎?實際上不行。它只是“按照神經(jīng)網(wǎng)絡的方式進行操作”。但事實證明,這通常與我們?nèi)祟愃龀龅膮^(qū)分相當吻合。

讓我們看一個更復雜的例子。假設我們有貓和狗的圖像,并有一個被訓練用于區(qū)分它們的神經(jīng)網(wǎng)絡。以下是它在一些示例上的表現(xiàn):

圖片

現(xiàn)在,“正確答案”更加不明確了。那么,如果一只狗穿著貓裝呢?等等。無論輸入什么,神經(jīng)網(wǎng)絡都會生成一個答案。而且,事實證明,它以一種相當一致的方式生成答案,與人類可能做出的相符。正如我之前所說,這不是我們可以從第一原理中推導出來的事實。這只是在某些領域經(jīng)驗上被證明是正確的關鍵原因。但這也是神經(jīng)網(wǎng)絡有用的一個關鍵原因:它們以某種方式捕捉了“人類式”的做事方式。

以貓和狗的識別為例,現(xiàn)在“正確答案”更加不明確了。比如,一只穿著貓裝的狗,該怎么識別呢?無論輸入什么,神經(jīng)網(wǎng)絡都會生成一個答案。而且,事實證明,它以一種相當一致的方式生成答案,與人類可能做出的相符。正如我之前所說,這不是我們可以從第一原理中推導出來的事實。這只是在某些領域經(jīng)驗上被證明是正確的關鍵原因。但這也是神經(jīng)網(wǎng)絡有用的一個關鍵原因:它們以某種方式捕捉了“人類式”的做事方式。

假設你看到了一張貓的圖片,你會問自己“為什么這是一只貓?”你可能會說:“我看到了它尖耳朵等特征。”但很難解釋你是如何識別出這張圖片的。這只是你的大腦以某種方式弄清楚了。但對于大腦來說,(至少目前)沒有辦法“進入內(nèi)部”并查看其如何解決問題。那么對于(人工)神經(jīng)網(wǎng)絡呢?當你展示一張貓的圖片時,每個“神經(jīng)元”做的事情很容易看出來。但即使獲得基本的可視化通常也非常困難。

在上面用于“最近點”問題的最終網(wǎng)絡中有17個神經(jīng)元。在用于識別手寫數(shù)字的網(wǎng)絡中有2190個神經(jīng)元。在用于識別貓和狗的網(wǎng)絡中有60,650個神經(jīng)元。通常情況下,將60,650維空間可視化相當困難。但由于這是一個用于處理圖像的網(wǎng)絡,它的許多神經(jīng)元層被組織成像素數(shù)組的形式。因此,我們可以拿一張典型的貓的圖片為例進行說明:

圖片

那么,我們可以通過一系列派生圖像來表示第一層神經(jīng)元的狀態(tài)——其中許多我們可以輕松解釋為“沒有背景的貓”或“貓的輪廓”之類的東西:

圖片

到了第10層,很難解釋正在發(fā)生什么:

圖片

但總的來說,我們可能會說神經(jīng)網(wǎng)絡正在“挑選某些特征”(也許尖耳朵是其中之一),并使用它們來確定圖像的內(nèi)容。但這些特征是否具有像“尖耳朵”這樣的名稱?大多數(shù)情況下并不是。

我們的大腦是否也使用類似的特征?大多數(shù)情況下我們不知道。但值得注意的是,像我們在這里展示的神經(jīng)網(wǎng)絡的前幾層似乎會挑選出圖像的一些方面(如物體的邊緣),這些方面似乎類似于我們知道的大腦視覺處理的第一層所挑選的方面。

但是假設我們想要一個神經(jīng)網(wǎng)絡的“貓識別理論”。我們可以說:“看,這個特定的網(wǎng)絡可以做到”,這立即讓我們對“它有多難”的問題有了一些感覺(例如需要多少個神經(jīng)元或?qū)觼斫鉀Q這個問題)。但至少目前我們沒有辦法“給出一個敘述性描述”來解釋網(wǎng)絡正在做什么。也許這是因為它確實是計算上不可化簡的,沒有一般的方法來找出它所做的事情,除非我們明確地跟蹤每一步。或者也許只是因為我們還沒有“找到科學的方法”,并確定了允許我們總結(jié)正在發(fā)生的事情的“自然法則”。

當我們談論使用ChatGPT生成語言時,我們將遇到同樣的問題。同樣,目前尚不清楚是否有方法“總結(jié)它在做什么”。但是,語言的豐富性和細節(jié)(以及我們對它的經(jīng)驗)可能使我們比使用圖像更進一步。

機器學習和神經(jīng)網(wǎng)絡的訓練

到目前為止,我們討論了已經(jīng)“知道”如何執(zhí)行特定任務的神經(jīng)網(wǎng)絡。但是神經(jīng)網(wǎng)絡如此有用(大腦也很可能如此),不僅可以原則上執(zhí)行各種任務,而且可以逐步地從示例中進行“訓練”以執(zhí)行這些任務。

當我們制作一個神經(jīng)網(wǎng)絡來區(qū)分貓和狗時,我們不需要有效地編寫一個程序,該程序明確地查找胡須; 相反,我們只展示了很多關于什么是貓和什么是狗的例子,然后讓網(wǎng)絡從中“機器學習”如何區(qū)分它們。

而且重要的是,訓練后的網(wǎng)絡從所顯示的特定示例中“推廣”。就像我們上面看到的那樣,網(wǎng)絡并不僅僅是識別其顯示的示例貓圖像的特定像素模式; 而是神經(jīng)網(wǎng)絡以某種方式成功地基于我們認為的某種“一般貓”的特征來區(qū)分圖像。

那么神經(jīng)網(wǎng)絡訓練的實際工作是如何進行的呢?基本上,我們一直在嘗試找到使神經(jīng)網(wǎng)絡成功復制我們給出的示例的權重。然后我們依靠神經(jīng)網(wǎng)絡以一種“合理”的方式“插值”(或“推廣”)這些示例之間。

讓我們看一個比上面的最近點問題更簡單的問題。讓我們嘗試讓神經(jīng)網(wǎng)絡學習以下函數(shù):

圖片

對于這個任務,我們需要一個只有一個輸入和一個輸出的神經(jīng)網(wǎng)絡,如下所示:

圖片

但是我們應該使用什么權重?對于每個可能的權重集合,神經(jīng)網(wǎng)絡都會計算一些函數(shù)。例如,以下是使用幾組隨機選擇的權重計算出來的結(jié)果:

圖片

可以看到,基本沒有符合我們圖形的結(jié)果,那么我們到底如何找到能符合我們圖形的權重?

基本思想是提供大量的“輸入→輸出”示例供神經(jīng)網(wǎng)絡進行“學習”,然后嘗試找到能夠重現(xiàn)這些示例的權重。下面是使用逐漸增加的示例進行訓練的結(jié)果:

圖片

到目前為止,我們一直在談論“已經(jīng)知道”如何執(zhí)行特定任務的神經(jīng)網(wǎng)絡。但神經(jīng)網(wǎng)絡如此有用的原因(在大腦中也是如此),不僅是因為它們原則上可以執(zhí)行各種任務,而且還可以從示例中逐步“訓練”以執(zhí)行這些任務。

當我們制作一個神經(jīng)網(wǎng)絡來區(qū)分貓和狗時,我們不需要編寫一個(比如)顯式查找胡須的程序,而是展示許多關于什么是貓和什么是狗的示例,然后讓網(wǎng)絡從中“機器學習”如何區(qū)分它們。

關鍵是訓練后的網(wǎng)絡從它所展示的特定示例中“泛化”。正如我們上面所看到的,神經(jīng)網(wǎng)絡不僅僅識別它所展示的示例貓圖像的特定像素模式;相反,神經(jīng)網(wǎng)絡以某種“一般的貓”的標準來區(qū)分圖像。

那么神經(jīng)網(wǎng)絡的訓練實際上是如何工作的呢?基本上,我們總是試圖找到使神經(jīng)網(wǎng)絡成功重現(xiàn)我們所給出示例的權重。然后,我們依賴神經(jīng)網(wǎng)絡以“合理的”方式在這些示例之間“插值”(或“泛化”)。

讓我們來看一個比上面最近點問題更簡單的問題。讓我們嘗試讓神經(jīng)網(wǎng)絡學習函數(shù):

圖片

好的,我們要解釋的最后一個關鍵點是如何調(diào)整權重以減小損失函數(shù)。正如我們所說,損失函數(shù)給出了我們獲得的值和真實值之間的“距離”。但是“我們獲得的值”是由當前版本的神經(jīng)網(wǎng)絡和其中的權重確定的。但是現(xiàn)在想象一下,權重是變量,比如wi。我們想找出如何調(diào)整這些變量的值以最小化依賴它們的損失。

例如,想象一下(極度簡化了實際使用的典型神經(jīng)網(wǎng)絡),我們只有兩個權重w1和w2。那么我們可能會有一個損失函數(shù),它關于w1和w2的函數(shù)如下:

圖片

數(shù)值分析提供了各種技術來在這種情況下找到最小值。但是典型的方法就是沿著從之前的 w1, w2 開始的最陡峭的路徑逐步前進:

圖片

就像水流下山一樣,這個過程只能保證最終會到達曲面的某個局部最小值(“山上的湖泊”),但不一定能夠到達最終的全局最小值。

在“權重空間”上找到最陡的下降路徑并不容易。但是,微積分可以解決這個問題。正如前面提到的那樣,我們可以將神經(jīng)網(wǎng)絡看作是計算一個依賴于其輸入和權重的數(shù)學函數(shù)。現(xiàn)在考慮對這些權重進行微分。結(jié)果表明,微積分的鏈式法則讓我們可以“展開”神經(jīng)網(wǎng)絡的逐層操作。結(jié)果是,至少在某種局部近似情況下,我們可以“反演”神經(jīng)網(wǎng)絡的操作,并逐步找到最小化與輸出相關聯(lián)的損失的權重。

上面的圖片展示了我們可能需要在僅有2個權重的不現(xiàn)實的簡單情況下進行的最小化操作。但是,實際證明,即使有更多的權重(ChatGPT使用了1750億個),仍然可以進行最小化,至少可以進行一定程度的近似。事實上,“深度學習”在2011年左右的重大突破與發(fā)現(xiàn)有關,即在某種程度上,涉及許多權重時近似最小化可能比涉及較少權重時更容易。

換句話說,有點出人意料的是,用神經(jīng)網(wǎng)絡解決更復雜的問題可能比解決更簡單的問題更容易。這種現(xiàn)象的粗略原因是,當有許多“權重變量”時,就有了高維空間,有“許多不同的方向”可以引導人到達最小值,而如果變量較少,則更容易陷入局部最小值(“山湖”),從中沒有“擺脫的方向”。

值得指出的是,在典型情況下,有許多不同的權重集合可以給出基本相同性能的神經(jīng)網(wǎng)絡。通常,在實際的神經(jīng)網(wǎng)絡訓練中,會有許多隨機選擇,導致出現(xiàn)“不同但等效的解決方案”,如下所示:

圖片

但是,每個這樣的“不同解”都會有略微不同的行為。如果我們要求在我們提供訓練示例的區(qū)域之外進行“外推”,我們可能會得到截然不同的結(jié)果:

圖片

但是哪一個是“正確”的呢?實際上沒有辦法說。它們都“與觀測數(shù)據(jù)一致”。但它們都對應于不同的“內(nèi)在”方式來“思考”如何在“盒子外面”進行操作。有些可能對我們?nèi)祟悂碚f比其他的看起來更“合理”。

神經(jīng)網(wǎng)絡訓練的實踐

在過去的十年中,神經(jīng)網(wǎng)絡的訓練藝術有了很多進展。而且,訓練確實基本上是一門藝術。有時候-尤其是回顧時-人們可以看到至少一絲“科學解釋”是為了做某事。但是大多數(shù)情況下,這些技巧和想法是通過試錯發(fā)現(xiàn)的,逐步積累了許多有關如何使用神經(jīng)網(wǎng)絡的知識。

神經(jīng)網(wǎng)絡訓練有幾個關鍵部分。首先,有一個問題,即針對特定任務應該使用什么神經(jīng)網(wǎng)絡結(jié)構。然后,關鍵問題是如何獲取用于訓練神經(jīng)網(wǎng)絡的數(shù)據(jù)。越來越多的情況是,人們不再從頭開始訓練網(wǎng)絡:新網(wǎng)絡可以直接包含另一個已經(jīng)訓練好的網(wǎng)絡,或者至少可以使用該網(wǎng)絡為自己生成更多的訓練樣例。

可能會認為,對于每種特定的任務,都需要不同的神經(jīng)網(wǎng)絡結(jié)構。但是發(fā)現(xiàn)同一種結(jié)構似乎經(jīng)常適用于看似完全不同的任務。在某種程度上,這讓人想起了通用計算的概念,但是,正如我稍后將討論的那樣,我認為這更反映了我們通常試圖讓神經(jīng)網(wǎng)絡執(zhí)行“類似人類”的任務的事實,而神經(jīng)網(wǎng)絡可以捕捉相當普遍的“類似人類過程”。

在神經(jīng)網(wǎng)絡的早期階段,人們傾向于認為應該“盡量讓神經(jīng)網(wǎng)絡做最少的事情”。例如,在將語音轉(zhuǎn)換為文本時,認為應該先分析語音,將其分解成音素等。但是發(fā)現(xiàn),對于“類似人類的任務”,通常最好只是嘗試訓練神經(jīng)網(wǎng)絡解決“端到端問題”,讓它“發(fā)現(xiàn)”必要的中間特征、編碼等。

還有一種想法是將復雜的單個組件引入到神經(jīng)網(wǎng)絡中,以讓它實際上“明確實施特定的算法思想”。但是再次發(fā)現(xiàn),這通常不值得;相反,最好只處理非常簡單的組件,并讓它們“自組織”(盡管通常以我們無法理解的方式)以實現(xiàn)等效的算法思想。

這并不是說沒有適用于神經(jīng)網(wǎng)絡的“構造性思想”。例如,在圖像處理的早期階段,具有局部連接的神經(jīng)元的2D陣列似乎非常有用。而且在“順序回顧”的連接模式下集中處理看起來也很有用-正如我們稍后將在ChatGPT中處理人類語言中看到的那樣。

但是神經(jīng)網(wǎng)絡的一個重要特征是,與計算機一樣,它們最終只是處理數(shù)據(jù)。現(xiàn)有的神經(jīng)網(wǎng)絡-以及當前的神經(jīng)網(wǎng)絡訓練方法-具體處理數(shù)字數(shù)組。但是在處理過程中,這些數(shù)組可以完全重組和重塑。例如,我們用于識別上述數(shù)字的網(wǎng)絡從2D“類似圖像”的數(shù)組開始,迅速“加厚”到許多通道,但然后“集中到”一個1D數(shù)組中,該數(shù)組最終包含表示不同可能輸出數(shù)字的元素。

圖片

但是,如何確定一個特定任務需要多大的神經(jīng)網(wǎng)絡呢?這是一種藝術。在某種程度上,關鍵是知道“任務的難度”。但對于類似于人類的任務來說,通常很難估計。是的,可能有一種系統(tǒng)化的方法可以讓計算機非常“機械化”地完成任務。但是很難知道是否存在可以讓人們以更輕松的方式實現(xiàn)“類人級別”的技巧或捷徑。可能需要列舉一個巨大的博弈樹來“機械化”地玩某個游戲;但是可能有一種更容易(“啟發(fā)式”)實現(xiàn)“類人水平游戲”的方法。

當處理微小的神經(jīng)網(wǎng)絡和簡單的任務時,有時可以明確地看到無法從這里到達目標。例如,以下是使用一些小型神經(jīng)網(wǎng)絡完成上一節(jié)任務的最佳結(jié)果:

圖片

而且我們可以看到,如果網(wǎng)絡太小,它就無法重現(xiàn)我們想要的函數(shù)。但是在某個大小以上,它沒有問題——至少如果訓練足夠長時間并且使用足夠多的示例。順便提一下,這些圖片說明了神經(jīng)網(wǎng)絡傳說中的一件事情:如果中間有一個“擠壓”,強制所有東西都通過較少的中間神經(jīng)元,通常可以用更小的網(wǎng)絡來實現(xiàn)同樣的效果。(值得一提的是,“無中間層”或所謂的“感知器”網(wǎng)絡只能學習基本上是線性的函數(shù)——但只要有一個中間層,理論上就總是可以任意好地逼近任何函數(shù),至少如果有足夠多的神經(jīng)元,盡管為了使其可行地訓練,通常需要一些正則化或規(guī)范化技巧。)

好的,假設我們已經(jīng)選擇了一種神經(jīng)網(wǎng)絡結(jié)構。現(xiàn)在的問題是如何獲取用于訓練網(wǎng)絡的數(shù)據(jù)。許多關于神經(jīng)網(wǎng)絡和機器學習的實際挑戰(zhàn)都集中在獲取或準備必要的訓練數(shù)據(jù)上。在許多情況下(“監(jiān)督學習”),我們希望獲取輸入的明確示例以及預期的輸出。例如,我們可能希望標記圖像中包含的內(nèi)容或某些其他屬性。可能需要通過付出巨大的努力明確地進行打標簽。但通常情況下,發(fā)現(xiàn)可以利用已經(jīng)完成的事情作為訓練集的標簽,例如,可以使用Web上提供的alt標簽來標記圖像。或者在不同的領域中,可以使用為視頻創(chuàng)建的字幕。或者對于語言翻譯訓練,可以使用存在于不同語言中的網(wǎng)頁或其他文檔的平行版本。

需要多少數(shù)據(jù)來訓練神經(jīng)網(wǎng)絡以完成特定任務?同樣地,從基本原理上估計很困難。通過使用“轉(zhuǎn)移學習”/"預訓練"將已經(jīng)在另一個網(wǎng)絡中學習的重要特征列表“轉(zhuǎn)移進來”,可以大大減少要求。但是通常神經(jīng)網(wǎng)絡需要“看到很多例子”才能訓練得好。至少對于某些任務而言,神經(jīng)網(wǎng)絡需要的示例可以是極其重復的。實際上,一種標準的策略就是反復地向神經(jīng)網(wǎng)絡展示所有的示例。在每個“訓練輪次”中,神經(jīng)網(wǎng)絡都會處于至少稍微不同的狀態(tài),某種程度上“提醒它”特定的示例有助于它“記住那個示例”。(是的,也許這類似于人類記憶中重復的有用性。)

通常,只是反復重復相同的例子是不夠的。還需要向神經(jīng)網(wǎng)絡展示示例的變化。神經(jīng)網(wǎng)絡的特征是,這些“數(shù)據(jù)增強”變化并不需要很復雜就可以發(fā)揮作用。只需使用基本圖像處理輕微修改圖像即可使其對神經(jīng)網(wǎng)絡訓練基本“同樣有效”。同樣地,當用于自動駕駛汽車的實際視頻等數(shù)據(jù)用盡時,可以繼續(xù)在類似于模擬視頻游戲的環(huán)境中運行模擬,并獲得數(shù)據(jù),而不需要所有實際場景的細節(jié)。

ChatGPT是如何訓練的呢? 它有一個很好的特點,它可以進行“無監(jiān)督學習”,這使得訓練樣本的獲取變得更加容易。回想一下,ChatGPT的基本任務是找出如何繼續(xù)給定的一段文本。因此,要獲取它的“訓練樣本”,我們只需獲得一段文本,然后將其結(jié)尾部分遮蓋,這就成為了“訓練輸入”——“輸出”則是完整的、未被遮蓋的文本。我們稍后會詳細討論這個問題,但主要的一點是:與學習圖像內(nèi)容所需的“顯式標記”不同,ChatGPT實際上可以直接從它所得到的文本樣本中進行學習。

好的,那么神經(jīng)網(wǎng)絡中的實際學習過程呢?歸根結(jié)底,它都是要確定哪些權重能最好地捕捉到已給定的訓練示例。而有各種各樣的詳細選擇和“超參數(shù)設置”(因為權重可以被看作是“參數(shù)”)可以用來調(diào)整如何做到這一點。有不同的損失函數(shù)(平方和,絕對值和等)。有不同的損失最小化方法(每步在權重空間中移動多遠等)。然后還有諸如每次顯示多少個“批次”示例來獲得每個連續(xù)估計的損失等問題。

但最終訓練的整個過程可以通過觀察損失的逐步減少來描述:

圖片

但通常可以看到損失會一直下降一段時間,但最終會在某個常數(shù)值上趨于平穩(wěn)。如果該值足夠小,則可以認為訓練是成功的;否則,這可能表明應嘗試更改網(wǎng)絡結(jié)構。

人們能夠判斷“學習曲線”變平穩(wěn)需要多長時間嗎?像許多其他事情一樣,似乎存在依賴于所使用的神經(jīng)網(wǎng)絡大小和數(shù)據(jù)量的近似冪律縮放關系。但總的結(jié)論是訓練神經(jīng)網(wǎng)絡很難,并且需要大量的計算功率。作為實際問題,絕大部分工作量用于對數(shù)字數(shù)組進行操作,這是GPU擅長的領域。這就是為什么神經(jīng)網(wǎng)絡訓練通常受GPU的可用性限制的原因。

未來會有更基本的方法來訓練神經(jīng)網(wǎng)絡,或者說做神經(jīng)網(wǎng)絡的事情嗎?我認為幾乎肯定會有。神經(jīng)網(wǎng)絡的基本思想是利用大量簡單(本質(zhì)上相同)的組件創(chuàng)建一個靈活的“計算結(jié)構”,并讓這個“結(jié)構”能夠通過增量修改來從示例中學習。在當前的神經(jīng)網(wǎng)絡中,本質(zhì)上使用了微積分的思想 - 應用于實數(shù),以進行增量修改。但越來越清楚的是,擁有高精度數(shù)字并不重要;即使使用當前的方法,8位或更少的位數(shù)可能足夠。

神經(jīng)網(wǎng)絡——也許有點像大腦——被設置為具有基本固定的神經(jīng)元網(wǎng)絡,其中被修改的是它們之間連接的強度(“權重”)。(或許在至少年輕的大腦中,還有可能增加相當數(shù)量的全新連接)。但雖然這可能是生物學上的一個便利設置,但它顯然離實現(xiàn)我們所需的功能最好的方式還有很遠的路要走。而且可能會涉及相當于漸進網(wǎng)絡重寫的東西(也許類似于我們的物理項目),最終可能會更好。

但是,即使在現(xiàn)有神經(jīng)網(wǎng)絡的框架內(nèi),目前還存在一個關鍵限制:神經(jīng)網(wǎng)絡訓練目前是根本順序的,即每批示例的影響都被傳播回來以更新權重。實際上,即使考慮了GPU,也是這樣的計算機硬件的大部分時間都處于“閑置”狀態(tài),只有一部分在更新時才處于活動狀態(tài)。從某種意義上說,這是因為我們當前的計算機傾向于具有與CPU(或GPU)分離的內(nèi)存。但在大腦中,情況可能不同——每個“存儲單元”(即神經(jīng)元)也是一個潛在的活動計算元素。如果我們能夠這樣設計未來的計算機硬件,可能就可以更有效地進行訓練。

“大的足夠的神經(jīng)網(wǎng)絡一定可以做任何事情!”

像ChatGPT這樣的東西的能力非常令人印象深刻,以至于人們可能會想象,如果能夠不斷訓練更大的神經(jīng)網(wǎng)絡,那么它們最終將能夠“做任何事情”。如果關心的是對人類思維直接可見的事物,這種可能性是相當大的。但是過去幾百年科學的教訓是,有些可以通過形式過程得出的東西,但對人類思維不易獲得。

非平凡數(shù)學就是一個很好的例子。但是一般情況是計算。最終問題在于計算的不可約性現(xiàn)象。有些計算似乎需要很多步驟才能完成,但實際上可以“縮減”成非常直接的過程。但計算不可約性的發(fā)現(xiàn)意味著這種情況并不總是成立。相反,存在一些過程,可能像下面的過程一樣,必須基本上追蹤每個計算步驟才能弄清發(fā)生了什么:

圖片

我們通常使用大腦進行的事情可能是有選擇地避免計算不可約的。人們需要特別的努力才能在腦中進行數(shù)學運算。在實踐中,僅憑人腦“思考”非平凡程序操作的每個步驟幾乎是不可能的。

但當然,我們有計算機。使用計算機,我們可以輕松地進行長時間的計算不可約的事情。關鍵是,這些通常沒有捷徑。

是的,我們可以記住許多特定的計算系統(tǒng)示例。或許我們甚至可以看到一些(“計算可約”)模式,從而能夠進行一些泛化。但是,計算不可約意味著我們永遠不能保證不會出現(xiàn)意外情況,只有通過顯式計算才能了解每種特定情況的真實情況。

最終,學習和計算不可約之間存在根本性的張力。學習實際上是通過利用規(guī)律壓縮數(shù)據(jù)。但計算不可約意味著最終規(guī)律性存在局限性。

作為實際問題,人們可以想象將小型計算設備(如元胞自動機或圖靈機)構建到可訓練系統(tǒng)(如神經(jīng)網(wǎng)絡)中。事實上,這樣的設備可以作為神經(jīng)網(wǎng)絡的良好“工具", 但是計算不可簡約性意味著我們不能指望“深入”這些設備并使其學習。

換句話說,能力和可訓練性之間存在根本的權衡:你越想讓系統(tǒng)真正利用其計算能力,它就會越表現(xiàn)出計算不可簡約性,就越難以訓練。而它越是基本可訓練,就越難以進行復雜的計算。

(對于當前的 ChatGPT,情況實際上要更加極端,因為用于生成每個輸出令牌的神經(jīng)網(wǎng)絡是一個純“前饋”網(wǎng)絡,沒有循環(huán),因此無法使用非平凡的“控制流”進行任何計算。)

當然,人們可能會想知道是否重要能夠進行不可簡約的計算。事實上,在人類歷史的大部分時間里,這并不特別重要。但是我們現(xiàn)代的技術世界是建立在利用至少數(shù)學計算(越來越多地包括更一般的計算)的工程學上的。如果我們看看自然界,它充滿了不可簡約的計算,我們正在慢慢理解如何模擬和利用它們用于我們的技術目的。

沒錯,神經(jīng)網(wǎng)絡當然可以注意到自然世界中的那些規(guī)律,這些規(guī)律我們也可以很容易地用“非輔助人類思維”注意到。但是,如果我們想解決數(shù)學或計算科學的問題,除非神經(jīng)網(wǎng)絡有效地“使用”一個“普通”的計算系統(tǒng),否則它無法完成這些任務。

但是,所有這些都有一些潛在的混淆。過去有很多任務,包括寫作文,我們認為計算機在根本上無法完成。現(xiàn)在我們看到像ChatGPT這樣的東西完成了這些任務,我們傾向于突然認為計算機一定變得更加強大了——特別是超越了它們已經(jīng)基本能夠做到的事情(比如漸進式地計算細胞自動機等計算系統(tǒng)的行為)。

但這不是正確的結(jié)論。 計算不可化簡過程仍然是計算不可化簡的 ,對于計算機來說仍然是基本困難的,即使計算機可以輕松計算它們的各個步驟。相反,我們應該得出結(jié)論:我們?nèi)祟惸軌蜃龅降娜蝿眨ɡ鐚懽魑模覀冋J為計算機無法完成的任務,在某種意義上實際上比我們想象的更容易計算。

換句話說,神經(jīng)網(wǎng)絡之所以能夠成功地寫出一篇文章,是因為寫文章的問題在某種意義上比我們想象的更為“淺顯易懂”。從某種意義上說,這使我們更接近“擁有一個理論”,解釋我們?nèi)祟惾绾瓮瓿芍T如寫作等任務,或者如何處理語言。

如果你有一個足夠大的神經(jīng)網(wǎng)絡,那么你可能能夠做到人類能夠輕松完成的任何事情。但你不會捕捉到自然界總體上所能做到的事情——或者我們從自然界中塑造出來的工具所能做到的事情。正是這些工具——實際上的和概念上的——使我們在近幾個世紀內(nèi)超越了“純粹不受幫助的人類思維”所能接觸到的邊界,并為人類目的捕捉到更多存在于物理和計算宇宙中的東西。

嵌入層 Embeddings 概念

神經(jīng)網(wǎng)絡——至少目前的神經(jīng)網(wǎng)絡——基本上是基于數(shù)字的。因此,如果我們要使用它們來處理文本之類的內(nèi)容,我們需要一種用數(shù)字表示文本的方法。當然,我們可以(就像ChatGPT那樣)從字典中為每個單詞分配一個數(shù)字。但有一個重要的想法——例如對于ChatGPT來說非常重要——超越了這一點。這就是“嵌入”(embedding)的概念。可以將嵌入看作是通過一組數(shù)字來嘗試表示某物的“本質(zhì)”,并具有“附近的事物”由相鄰數(shù)字表示的屬性。

例如,我們可以將單詞嵌入看作是試圖在“意義空間”中排列單詞,使得在嵌入中彼此“含義相似”的單詞彼此相鄰。實際使用的嵌入(例如在ChatGPT中)通常涉及大量數(shù)字的列表。但是,如果我們將其投影到二維空間中,就可以展示單詞如何通過嵌入進行排列:

圖片

沒錯,我們看到這樣的嵌入在捕捉典型的日常印象方面表現(xiàn)得非常出色。但是我們?nèi)绾螛嫿ㄟ@樣的嵌入?粗略地說,這個想法是查看大量文本(這里是來自網(wǎng)絡的50億個單詞),然后看不同單詞出現(xiàn)在其中的“環(huán)境”有多相似。因此,例如,“alligator”(鱷魚)和“crocodile”(鱷魚的另一種寫法)經(jīng)常幾乎可以互換地出現(xiàn)在其他類似的句子中,這意味著它們將在嵌入中附近放置。但是,“turnip”(蘿卜)和“eagle”(老鷹)不會在其他類似的句子中出現(xiàn),因此它們將在嵌入中遠離放置。

但是,如何使用神經(jīng)網(wǎng)絡實際實現(xiàn)這樣的嵌入呢?讓我們先討論不是單詞而是圖像的嵌入。我們希望找到一種方法,通過數(shù)字列表來表征圖像,使得“我們認為相似的圖像”被分配類似的數(shù)字列表。

我們?nèi)绾闻袛嗍欠駪摗罢J為圖像相似”?好吧,如果我們的圖像是手寫數(shù)字的圖像,如果它們是相同的數(shù)字,我們可能會“認為兩個圖像相似”。早些時候我們討論過一個神經(jīng)網(wǎng)絡,它被訓練來識別手寫數(shù)字。我們可以將這個神經(jīng)網(wǎng)絡看作是設置在其最終輸出中將圖像放入10個不同的箱中的神經(jīng)網(wǎng)絡,每個箱子代表一個數(shù)字。

圖片

在開始時,我們將實際圖像饋送到第一層,由像素值的二維數(shù)組表示。最后——從最后一層我們得到一個包含10個值的數(shù)組,我們可以認為它表示網(wǎng)絡對圖像對應于數(shù)字0到9的“確定性”。

輸入圖像 :

圖片

那么最后一層神經(jīng)元的值為:

圖片

但是如果我們再往前看一步呢?網(wǎng)絡的最后一個操作是一個所謂的softmax函數(shù),它試圖"強制確定"。但在應用它之前,神經(jīng)元的值是:

圖片

表示“4”的神經(jīng)元仍然具有最高的數(shù)值。但是其他神經(jīng)元的值中也包含了信息。我們可以預期,這個數(shù)字列表可以用某種方式來描述圖像的“本質(zhì)”,從而提供我們可以用作嵌入的東西。例如,這里的每個4都有略微不同的“特征嵌入”或“特征簽名”,與8完全不同:

圖片

我們基本上是用10個數(shù)字來描述圖像特征。但使用更多的數(shù)字通常更好。例如,在我們的數(shù)字識別網(wǎng)絡中,我們可以通過接入前面的層獲得一個包含500個數(shù)字的數(shù)組。這可能是一個合理的“圖像嵌入”數(shù)組。

如果我們想要對手寫數(shù)字的“圖像空間”進行明確的可視化,我們需要通過將我們獲得的500維向量投影到三維空間中來“減少維度”。

圖片

我們剛才討論了如何創(chuàng)建一種圖像的特征化(從而得到 Embedding ),基本上是通過確定(根據(jù)我們的訓練集)它們是否對應于相同的手寫數(shù)字來確定圖像的相似性。如果我們有一個標識出每個圖像是哪個常見對象(貓、狗、椅子等)的訓練集,我們可以更普遍地為圖像做同樣的事情。通過這種方式,我們可以創(chuàng)建一個 圖像Embedding ,該Embedding通過我們對常見對象的識別進行“錨定”,但然后根據(jù)神經(jīng)網(wǎng)絡的行為“泛化”。關鍵是,只要該行為與我們?nèi)祟惛兄徒忉寛D像的方式一致,這將最終成為一種“看起來正確”的嵌入,對于執(zhí)行“類似于人類判斷”的任務實際上是有用的。

那么我們?nèi)绾巫裱瑯拥姆椒▉碚业絾卧~的Embedding呢?關鍵是從一個關于單詞的任務開始,我們可以很容易地進行訓練。標準的這樣的任務是“單詞預測”。想象一下,我們得到了“the ___ cat”。基于大量的文本語料庫(比如網(wǎng)頁的文本內(nèi)容),可能有哪些單詞“填空”呢?或者,給定“___ black ___”,不同“側(cè)翼單詞”的概率是什么?

我們?nèi)绾螢閱卧~創(chuàng)建嵌入呢?關鍵是從一個關于單詞的任務開始,這個任務可以很容易地進行訓練。標準的這種任務是“單詞預測”。想象一下,我們被給出“the ___ cat”。根據(jù)大量的文本語料庫(比如網(wǎng)絡內(nèi)容),哪些單詞“填空”最有可能呢?或者換句話說,給定“___ black ___”,不同“flanking words”的概率是多少?

我們?nèi)绾螢樯窠?jīng)網(wǎng)絡設置這個問題?最終,我們必須用數(shù)字來表達一切。一種方法是為英語中的每個大約50,000個常見單詞分配一個唯一的數(shù)字。因此,“the”可能是914,“ cat”(前面有一個空格)可能是3542。(這些是GPT-2實際使用的數(shù)字。)因此,在“the ___ cat”問題中,我們的輸入可能是{914, 3542}。輸出應該是一個由大約50,000個數(shù)字組成的列表,這些數(shù)字有效地給出了每個可能的“填充”單詞的概率。為了找到嵌入,我們要“截取”神經(jīng)網(wǎng)絡“達到結(jié)論之前”的“內(nèi)部” - 然后獲取發(fā)生在那里的數(shù)字列表,我們可以認為它們“描述每個單詞”。

那么這些特征長什么樣呢?在過去的10年中,已經(jīng)開發(fā)出了一系列不同的系統(tǒng)(例如word2vec,GloVe,BERT,GPT等),每個系統(tǒng)都基于不同的神經(jīng)網(wǎng)絡方法。但最終,它們都采用了將單詞用由幾百到幾千個數(shù)字組成的列表來描述的方法。

在它們的原始形式中,這些“Embedding向量”并不具備信息性。例如,這是 GPT-2 為三個特定單詞生成的原始嵌入向量:

圖片

=(本文由公眾號Python實用寶典翻譯)=

如果我們進行像測量這些向量之間的距離這樣的事情,那么我們可以找到單詞的“接近程度”。稍后我們將更詳細地討論這種Embedding的“認知”意義。但現(xiàn)在主要的觀點是,我們有一種有用的方式將單詞轉(zhuǎn)化為“神經(jīng)網(wǎng)絡友好”的數(shù)字集合。

但實際上我們可以進一步將單詞序列或整個文本塊用這種方式進行表征。而ChatGPT內(nèi)部也是這樣處理的。它會將其目前所擁有的文本轉(zhuǎn)化為一個嵌入向量來表示它。然后它的目標是找到可能出現(xiàn)的不同單詞的概率。它會將其答案表示為一系列數(shù)字,這些數(shù)字本質(zhì)上給出了每個可能單詞的概率,大約有50,000個左右。

(嚴格來說,ChatGPT不僅處理單詞,還會處理類似于“詞根”的東西, **后文我們把這個東西叫做=標記(token)=** 。使用標記使ChatGPT更容易處理罕見的、復合的和非英語單詞,并且有時可以創(chuàng)造新單詞,有利有弊。)

ChatGPT的原理

好的,我們終于準備好討論 ChatGPT 的內(nèi)部了。實際上,它最終是一個巨大的神經(jīng)網(wǎng)絡,目前是一個帶有 1750 億個權重的所謂 GPT-3 網(wǎng)絡版本。在許多方面,這是一個與我們討論過的其他神經(jīng)網(wǎng)絡非常相似的神經(jīng)網(wǎng)絡。但它是一個特別為處理語言而設置的神經(jīng)網(wǎng)絡,其最顯著的特征是一個名為“transformer”的神經(jīng)網(wǎng)絡架構。

在我們上面討論的第一個神經(jīng)網(wǎng)絡中,每個神經(jīng)元在任何給定層上基本上都與前一層的每個神經(jīng)元(至少以某種權重)連接。但是,如果處理具有特定已知結(jié)構的數(shù)據(jù),這種全連接的網(wǎng)絡(大概)可能是過度的。因此,例如,在處理圖像的早期階段,通常使用所謂的卷積神經(jīng)網(wǎng)絡(“convnets”),其中神經(jīng)元實際上排列在類似于圖像中的像素的網(wǎng)格上,僅與網(wǎng)格上附近的神經(jīng)元相連接。

transformer 的想法是對組成文本的標記序列做類似的事情。但是,transformer 并不僅僅是定義了一個在序列中可以存在連接的固定區(qū)域,而是引入了“注意力”的概念,并且有時“更多關注”序列的某些部分。也許有一天,只需啟動通用神經(jīng)網(wǎng)絡并通過訓練進行所有定制就會有意義。但是至少到目前為止,在實踐中將事物“模塊化”似乎至關重要,正如 transformers 所做的那樣,也可能是我們的大腦所做的那樣。

好的,那么ChatGPT(或者說它基于的GPT-3網(wǎng)絡)到底是做什么的呢?回想一下,它的總體目標是根據(jù)它從訓練數(shù)據(jù)(即來自網(wǎng)絡等的數(shù)十億頁文本)中所看到的內(nèi)容,合理地"繼續(xù)"文本。因此,在任何給定時刻,它都有一定量的文本——它的目標是選擇一個適當?shù)南乱粋€token來添加。

它分為三個基本階段。首先,它獲取與到目前為止的文本相對應的標記序列,并找到表示這些標記的embedding(即一組數(shù)字)。然后,它在這個embedding上進行操作——以“標準神經(jīng)網(wǎng)絡方式”,值會“漣漪”到網(wǎng)絡的連續(xù)層中,以生成一個新的embedding(即一個新的數(shù)字數(shù)組)。然后,它取這個數(shù)組的最后一部分,并從中生成一個大約包含50,000個值的數(shù)組,這些值會轉(zhuǎn)化為不同可能的下一個標記的概率。(是的,碰巧標記的數(shù)量與英語中常用單詞的數(shù)量大致相同,盡管只有大約3000個標記是整個單詞,其余都是片段。)

關鍵點在于,這個管道的每個部分都由神經(jīng)網(wǎng)絡實現(xiàn),其權重是通過端到端訓練網(wǎng)絡確定的。換句話說,實際上除了整體架構外,沒有任何部分是“明確設計”的;一切都是從訓練數(shù)據(jù)中“學習”的。

然而,在架構設置方面有很多細節(jié)——反映了各種經(jīng)驗和神經(jīng)網(wǎng)絡知識。雖然這肯定會很深入細節(jié),但我認為討論一些這些細節(jié)是有用的,至少可以讓人們了解構建ChatGPT這樣的東西需要哪些內(nèi)容。首先是嵌入模塊。以下是GPT-2的一個草圖表示:

圖片

輸入是一個由n個標記組成的向量(如前一節(jié)所述,表示為從1到約50,000的整數(shù))。其中每個標記通過一個單層神經(jīng)網(wǎng)絡轉(zhuǎn)換為一個嵌入向量(對于GPT-2長度為768,對于ChatGPT的GPT-3長度為12,288)。同時,還有一個“次要路徑”,它獲取標記的(整數(shù))位置序列,并從這些整數(shù)創(chuàng)建另一個嵌入向量。最后,標記值和標記位置的嵌入向量被加在一起,以生成來自嵌入模塊的最終嵌入向量序列。

為什么要將標記值和標記位置嵌入向量加在一起呢?我認為這并沒有特定的科學依據(jù)。只是嘗試了各種不同的方法,這種方法似乎是有效的。并且神經(jīng)網(wǎng)絡的傳統(tǒng)認為,在某種程度上,只要設置大致正確,通常可以通過進行足夠的訓練來精細調(diào)整細節(jié),而無需真正理解神經(jīng)網(wǎng)絡是如何配置自己的。

這是Embedding模塊對字符串"hello hello hello hello hello hello hello hello hello hello bye bye bye bye bye bye bye bye bye bye"的操作:

圖片

好的,在Embdding模塊之后是transformer的“主要事件”:所謂的“注意力塊”序列(對于GPT-2為12個,對于ChatGPT的GPT-3為96個)。這一切相當復雜,讓人想起典型的大型難以理解的工程系統(tǒng)或生物系統(tǒng)。但無論如何,這里是單個“注意力塊”的原理圖(適用于GPT-2):

圖片

在每個這樣的注意力塊中,都有一組“注意力頭”(對于GPT-2來說是12個,對于ChatGPT的GPT-3來說是96個),每個頭獨立地操作嵌入向量中不同的值塊。(是的,我們不知道將嵌入向量拆分為若干部分的好處,或者不同部分的含義是什么;這只是那些“被發(fā)現(xiàn)有效”的東西之一。)

那么這些注意力頭具體做什么呢?基本上它們是一種“回顧”標記序列的方式(即回顧到迄今為止已生成的文本),并將“過去的信息”以一種對查找下一個標記有用的方式打包起來。在上面的第一部分中,我們談到了使用二元概率來選擇基于其直接前驅(qū)的單詞。Transformer中的“注意力”機制允許“注意力”甚至回到更早的單詞,從而可能捕捉動詞可以引用在句子中出現(xiàn)在它們前面的名詞的方式,等等。

更詳細地說,注意力頭所做的是重新組合與不同標記相關聯(lián)的嵌入向量的塊,并賦予一定的權重。因此,例如,在第一個注意力塊(GPT-2中)中的12個注意力頭中,對于上述“hello,bye”字符串,具有以下(“回顧到標記序列開頭”)“重新組合權重”的模式:

圖片

在通過注意力頭處理后,結(jié)果的“重新加權嵌入向量”(GPT-2的長度為768,ChatGPT的GPT-3的長度為12,288)被傳遞到一個標準的“全連接”神經(jīng)網(wǎng)絡層。很難掌握這個層正在做什么。但是這里有一個使用它的768×768權重矩陣的繪圖(這里是針對GPT-2):

圖片

通過64×64移動平均處理,一些(隨機游走的)結(jié)構開始出現(xiàn):

圖片

什么決定了這個結(jié)構?最終,這可能是人類語言特征的“神經(jīng)網(wǎng)絡編碼”。但是,就目前而言,這些特征可能是相當未知的。實際上,我們正在“打開ChatGPT的大腦”(或者至少是GPT-2),發(fā)現(xiàn)了一些繁瑣的內(nèi)容,而我們并不理解,即使最終它產(chǎn)生了可識別的人類語言。

好的,在經(jīng)過一個注意力塊之后,我們得到了一個新的嵌入向量,然后連續(xù)地通過附加的注意塊進行傳遞(GPT-2總共有12個;GPT-3有96個)。每個注意塊都有自己特定的“關注”和“完全連接”權重模式。這是GPT-2的第一個注意頭的“hello,bye”輸入序列的注意權重序列:

圖片

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

圖片

有趣的是,即使在不同的attention block中,這些“權重矩陣”看起來相似,權重大小的分布也可能有所不同(而且并不總是高斯分布)。

圖片

那么,經(jīng)過所有這些注意力塊之后,轉(zhuǎn)換器的凈效應是什么呢?實質(zhì)上,它將標記序列的原始嵌入集合轉(zhuǎn)換為最終集合。ChatGPT 的特定工作方式是選擇此集合中的最后一個嵌入,并“解碼”它以產(chǎn)生下一個標記應該是什么的概率列表。

這就是 ChatGPT 內(nèi)部的概述。它可能看起來很復雜(尤其是因為它有許多不可避免的有點隨意的“工程選擇”),但實際上所涉及的最終元素非常簡單。因為最終我們所處理的只是一個由“人造神經(jīng)元”構成的神經(jīng)網(wǎng)絡,每個神經(jīng)元都執(zhí)行將一組數(shù)字輸入與某些權重結(jié)合的簡單操作。

ChatGPT的原始輸入是一個數(shù)字數(shù)組,即迄今為止標記的嵌入(Embedding)向量 。當ChatGPT“運行”以產(chǎn)生新的標記時,這些數(shù)字會“漣漪”通過神經(jīng)網(wǎng)絡的層,每個神經(jīng)元“執(zhí)行其任務”并將結(jié)果傳遞給下一層的神經(jīng)元。沒有循環(huán)或“回溯”。一切都只是通過網(wǎng)絡“前饋”。

這與典型的計算系統(tǒng)(如圖靈機)非常不同,在這種系統(tǒng)中,結(jié)果會被同一計算元素重復“重新處理”。在這里,至少在生成給定輸出標記方面,每個計算元素(即神經(jīng)元)僅使用一次。

但從某種程度上來說,即使在ChatGPT中,仍然存在一種在計算元素之間重復使用的“外部循環(huán)”。因為當ChatGPT準備生成一個新的標記時,它總是“讀取”(即將其作為輸入)在其之前出現(xiàn)的所有標記序列,包括ChatGPT自己先前“寫入”的標記。我們可以認為這種設置意味著ChatGPT至少在其最外層級別上涉及一個“反饋循環(huán)”,盡管每次迭代都明確可見為在其生成的文本中出現(xiàn)的標記。

但讓我們回到ChatGPT的核心:被重復使用以生成每個標記的神經(jīng)網(wǎng)絡。在某種程度上,它非常簡單:是一整個相同人工神經(jīng)元的集合。網(wǎng)絡的某些部分只包含(“全連接”)神經(jīng)元層,其中每個給定層上的神經(jīng)元都與前一層上的每個神經(jīng)元連接(具有一定的權重)。但特別是在其Transformer體系結(jié)構中,ChatGPT具有更多結(jié)構的部分,其中僅在不同層上的特定神經(jīng)元相連接。(當然,仍然可以說“所有神經(jīng)元都相連”——但有些只有零權重。)

此外,ChatGPT中的神經(jīng)網(wǎng)絡還有一些方面不太容易被認為只包含“同質(zhì)”的層。例如,正如上面的標志性摘要所示,在attention block中,會有“復制多個副本”的地方,每個副本都會經(jīng)過不同的“處理路徑”,可能涉及不同數(shù)量的層,并在稍后重新組合。但雖然這可能是對正在發(fā)生的事情的一種方便的表示,但在原則上總是可以認為是“密集填充”層,只是有一些權重為零。

如果觀察ChatGPT中最長的路徑,涉及大約400個(核心)層-在某些方面并不是很多。但有數(shù)百萬個神經(jīng)元,共計1750億個連接,因此有1750億個權重。一個要意識到的事情是,每次ChatGPT生成一個新的標記時,都必須進行涉及到每個權重的計算。在實現(xiàn)上,這些計算可以通過高度并行的數(shù)組操作“按層”有序地組織在GPU上完成。但對于每個生成的標記,仍然必須執(zhí)行1750億個計算(最后還要多一點)-因此,毫不奇怪,使用ChatGPT生成一篇長文本可能需要一段時間。

但最終,值得注意的是,所有這些操作,盡管它們各自都很簡單,但總能一起完成如此出色的“類人”文本生成工作。必須再次強調(diào)的是,(至少就我們目前所知),沒有“最終的理論原因”說明為什么類似于ChatGPT的神經(jīng)網(wǎng)絡應該能夠工作。實際上,正如我們將要討論的,我認為我們必須將其視為一項潛在驚人的科學發(fā)現(xiàn):在像ChatGPT這樣的神經(jīng)網(wǎng)絡中,某種程度上可以捕捉到人類大腦在生成語言方面所能做到的本質(zhì)。

ChatGPT的訓練

好的,現(xiàn)在我們概述了ChatGPT被訓練完成后的工作方式。但是它是如何訓練的呢?所有那1750億個神經(jīng)網(wǎng)絡權重是如何確定的?基本上,它們是通過基于人類撰寫的大量文本語料庫(網(wǎng)絡、書籍等)進行的大規(guī)模訓練得出的結(jié)果。正如我們所說,即使給定所有這些訓練數(shù)據(jù),神經(jīng)網(wǎng)絡能夠成功地產(chǎn)生“類似人類”的文本也并不明顯。并且,再次強調(diào),似乎需要詳細的工程細節(jié)才能實現(xiàn)這一點。但是,ChatGPT的驚喜和發(fā)現(xiàn)是,這是可能的。實際上,“只有”1750億個權重的神經(jīng)網(wǎng)絡可以對人類寫作的文本進行“合理的建模”。

ChatGPT訓練的基本過程就像我們在上面簡單的例子中討論的那樣。你提供一批例子,然后調(diào)整網(wǎng)絡中的權重以最小化網(wǎng)絡在這些例子上的誤差("損失")。關于“反向傳播”的主要昂貴之處在于,每次執(zhí)行此操作時,網(wǎng)絡中的每個權重通常都會至少微調(diào)一點,而要處理的權重數(shù)量就是非常龐大的。(實際的“反向計算”通常只比前向計算復雜一個小常數(shù)因子。)

通過現(xiàn)代 GPU 硬件,可以輕松并行計算數(shù)千個示例的結(jié)果。但是,當涉及到實際更新神經(jīng)網(wǎng)絡中的權重時,當前的方法需要基本上批量更新。(是的,這可能是實際大腦目前至少在體系結(jié)構上具有優(yōu)勢的地方,因為它們具有結(jié)合計算和存儲元件。)

在我們之前討論過的學習數(shù)值函數(shù)的看似簡單的情況下,我們發(fā)現(xiàn)我們通常需要使用數(shù)百萬個示例來成功訓練網(wǎng)絡,至少是從頭開始。那么,為了訓練一個“類人語言”的模型,我們需要多少個示例呢?似乎沒有任何根本的“理論”方法可以知道。但實際上,ChatGPT是在數(shù)千億個單詞的文本上成功訓練的。

有些文本被多次輸入,有些文本只被輸入了一次。但是不知何故,它從它看到的文本中“得到了它所需要的”。但是,考慮到這么多文本要學習,它需要多大的網(wǎng)絡才能“學得好”呢?同樣,我們還沒有一個根本的理論方法來回答這個問題。最終——正如我們將在下面進一步討論的——人類語言及其通常使用的算法內(nèi)容可能具有某種“總算法內(nèi)容”。但是下一個問題是,神經(jīng)網(wǎng)絡在實現(xiàn)基于該算法內(nèi)容的模型時有多高效。同樣,我們不知道——盡管ChatGPT的成功表明它是相當有效的。

最終我們可以注意到,ChatGPT使用了幾百億個權重來完成它的任務,這個數(shù)量與它所接收的訓練數(shù)據(jù)的單詞(或標記)總數(shù)相當。在某些方面,這可能是令人驚訝的(盡管在ChatGPT的較小模型中也觀察到了這一點),即“能夠良好運行的網(wǎng)絡規(guī)模”與“訓練數(shù)據(jù)規(guī)模”是如此相似。畢竟,在ChatGPT內(nèi)部并不是所有來自Web和圖書等內(nèi)容的文本都被“直接存儲”。因為ChatGPT內(nèi)部實際上包含了一堆數(shù)字——精度不到10個數(shù)字——它們是所有這些文本的聚合結(jié)構的某種分布式編碼。

換句話說,我們可以問一下人類語言的“有效信息內(nèi)容”是什么,以及通常使用它來表達什么。有原始的語言樣本語料庫,還有ChatGPT神經(jīng)網(wǎng)絡中的表示。這個表示很可能遠不是“算法上最小化”的表示方式(正如我們將在下面討論的那樣)。但它是一個神經(jīng)網(wǎng)絡可以方便使用的表示方式。在這個表示中,訓練數(shù)據(jù)似乎在最后很少被“壓縮”;平均而言,基本上只需要不到一個神經(jīng)網(wǎng)絡權重來承載一個單詞的“信息內(nèi)容”。

當我們運行ChatGPT生成文本時,我們基本上需要使用每個權重一次。因此,如果有n個權重,我們需要做約n個計算步驟,盡管在實踐中,許多計算可以在GPU中并行完成。但是,如果我們需要約n個單詞的訓練數(shù)據(jù)來設置這些權重,那么根據(jù)上面的說法,我們可以得出結(jié)論:我們需要約n^2個計算步驟來訓練網(wǎng)絡——這就是為什么用現(xiàn)有方法需要數(shù)十億美元來進行訓練的原因。

超越基本的訓練

在訓練ChatGPT中,大部分的工作量都花費在“向它展示”來自網(wǎng)絡、書籍等大量的現(xiàn)有文本上。但事實證明,還有另一個看起來相當重要的部分。

完成原始文本語料庫的訓練后,ChatGPT即可從提示信息中生成自己的文本。盡管在許多情況下結(jié)果似乎合理,但特別是在生成較長的文本時,往往會出現(xiàn)偏離人類思維方式的情況。這種問題不是通過對文本進行傳統(tǒng)的統(tǒng)計分析可以輕松檢測到的,但讀者卻很容易注意到這一點。

ChatGPT的構建中的一個關鍵思想是,在“被動閱讀”像網(wǎng)絡這樣的事物之后,有另一步是讓實際人類與ChatGPT進行積極互動,查看它所生成的內(nèi)容,并實際上對其進行反饋,告訴它“如何成為一個好的聊天機器人”。但神經(jīng)網(wǎng)絡如何利用這個反饋呢?第一步是讓人類對神經(jīng)網(wǎng)絡生成的結(jié)果進行評分。然后建立另一個神經(jīng)網(wǎng)絡模型來嘗試預測這些評分。但現(xiàn)在可以在原始網(wǎng)絡上運行這個預測模型,實際上就像一個損失函數(shù),從而允許該網(wǎng)絡通過人類反饋進行“調(diào)整”。實踐中的結(jié)果似乎對于ChatGPT在生成“類人”輸出方面的成功有很大影響。

總的來說,有趣的是,“原始訓練”網(wǎng)絡似乎需要很少的“干預”即可使其有條不紊地朝著特定方向發(fā)展。人們可能認為,為了使網(wǎng)絡表現(xiàn)得好像“學到了新東西”,需要進行訓練算法、調(diào)整權重等操作。但事實并非如此。相反,基本上只需要告訴ChatGPT一次東西 - 作為您提供的提示的一部分 - 然后它就可以成功地在生成文本時利用您告訴它的內(nèi)容。再次說明,這種方法的成功是我認為了解ChatGPT“真正做什么”以及它與人類語言和思維結(jié)構之間的關系的重要線索。

這其中肯定有某種類人的特點:至少在進行了所有這些預訓練后,您只需告訴它一次東西,它就可以“記住” - 至少“足夠長時間”以使用它生成一段文本。在這種情況下發(fā)生了什么?可能是“您可能告訴它的所有內(nèi)容已經(jīng)在某個地方了”,而您只是在引導它到正確的位置。但是這似乎不可行。相反,更可能的是,是的,這些元素已經(jīng)在那里了,但具體細節(jié)是由類似于“這些元素之間的軌跡”的東西定義的,而這就是您在告訴它某些東西時所介紹的內(nèi)容。

ChatGPT與人類一樣,如果你告訴它一些奇怪和出乎意料的東西,完全不符合它所知道的框架,它似乎無法成功地“整合”它。只有當它基本上在已有的框架之上以相當簡單的方式進行運行時,它才能夠“整合”它。

再次指出的值得注意的是,神經(jīng)網(wǎng)絡的“捕捉”能力不可避免地有“算法限制”。告訴它形式為“這個東西對應那個”的“淺層規(guī)則”,神經(jīng)網(wǎng)絡很可能可以很好地表示和復制這些規(guī)則,事實上,它從語言中“已知的”將給它一個立即遵循的模式。但是,如果試圖為涉及許多潛在的計算不可約簡步驟的實際“深度”計算提供規(guī)則,它就行不通了。(請記住,在每一步中,它始終只是在其網(wǎng)絡中“向前傳遞數(shù)據(jù)”,除了通過生成新的標記之外,從未循環(huán)。)

當然,網(wǎng)絡可以學習特定的“不可約”計算的答案。但是,一旦存在組合數(shù)量的可能性,就不可能使用這種“表格查找式”的方法。因此,就像人類一樣,現(xiàn)在神經(jīng)網(wǎng)絡需要“伸手”并使用實際的計算工具。

是什么讓ChatGPT真正地工作起來

人類語言——以及產(chǎn)生語言的思維過程——一直被認為是復雜程度的巔峰。確實,人類的大腦只有“僅僅”1000億左右的神經(jīng)元(和可能達到100萬億的連接),就能夠完成這項任務,這似乎相當不可思議。或許,人類大腦不僅僅是由神經(jīng)元組成——也許還有一些尚未被發(fā)現(xiàn)的新物理層面。但現(xiàn)在我們有了 ChatGPT,這為我們提供了一個重要的新信息:我們知道了一個擁有與人類神經(jīng)元數(shù)目相近的連接數(shù)的純?nèi)斯ど窠?jīng)網(wǎng)絡可以出乎意料地成功生成人類語言。

是的,這仍然是一個龐大而復雜的系統(tǒng)——其神經(jīng)網(wǎng)絡權重數(shù)目大約與目前世界上可用文本中的單詞數(shù)目相當。但在某種程度上,似乎仍然難以相信所有語言的豐富性和它所能談論的事物都可以被包含在這樣一個有限的系統(tǒng)中。這背后的部分原因毫無疑問是 ubiquitous 現(xiàn)象,即即使基礎規(guī)則很簡單,計算過程也能在實際中大大放大系統(tǒng)的表象復雜性。但實際上,正如我們上面討論的那樣,ChatGPT 中使用的神經(jīng)網(wǎng)絡類型通常是有針對性的構造,以限制這種現(xiàn)象的影響,以及與之相關的計算不可約簡性,以便使其訓練更易于理解。

那么,這些規(guī)律會是什么樣子呢?它們最終必須給我們提供一些關于語言及其表達方式的指導。稍后我們將討論如何“深入了解ChatGPT”可能會為我們提供一些線索,以及從構建計算語言所知道的內(nèi)容如何為我們指明一條前進的道路。但首先,讓我們討論兩個長期以來已知的“語言規(guī)律”的例子,以及它們與ChatGPT的操作方式的關系。

第一個例子是語言的語法。語言不僅僅是隨意組合的單詞。相反,對于不同種類的單詞,有(相當)明確的語法規(guī)則:例如,在英語中,名詞可以由形容詞前置并由動詞后置,但通常兩個名詞不能緊挨在一起。這樣的語法結(jié)構可以(至少近似地)通過定義如何組合“解析樹”的規(guī)則來捕捉到:

圖片

ChatGPT 沒有任何明確的對這些規(guī)則的“知識”。但不知何故,在其訓練中,它隱式地“發(fā)現(xiàn)”了它們,然后似乎擅長遵循它們。那么這是如何工作的呢?在“大局”層面上,這還不清楚。但是,為了獲得一些洞見,也許看一個更簡單的例子會有幫助。

考慮一個由序列構成的“語言”,其語法規(guī)定括號始終應該是平衡的,如下面所示的解析樹所代表的那樣:

圖片

我們能訓練一個神經(jīng)網(wǎng)絡生成“符合語法”的括號序列嗎?神經(jīng)網(wǎng)絡中處理序列的方法有很多種,但我們可以使用轉(zhuǎn)換器網(wǎng)絡(transformer nets),就像ChatGPT一樣。我們可以將規(guī)范的括號序列作為訓練樣本來訓練一個簡單的轉(zhuǎn)換器網(wǎng)絡。一個微妙之處(實際上也出現(xiàn)在ChatGPT生成人類語言的過程中)是,除了我們的“內(nèi)容標記”(這里是“(”和“)”)之外,我們還必須包含一個“結(jié)束”標記,以表示輸出不應繼續(xù)下去(即對于ChatGPT,已經(jīng)到達“故事的結(jié)尾”)。

如果我們只設置一個具有8個頭和長度為128的特征向量的注意力塊的轉(zhuǎn)換器網(wǎng)絡(ChatGPT也使用長度為128的特征向量,但具有96個注意力塊,每個塊具有96個頭),那么似乎不可能使其學習到關于括號語言的很多知識。但是當我們使用2個注意力塊時,學習過程似乎會收斂——至少在提供了大約1000萬個樣本之后會如此(并且,像轉(zhuǎn)換器網(wǎng)絡一樣,提供更多的樣本只會降低其性能)。

因此,我們可以用這個網(wǎng)絡做類似于ChatGPT的事情,并詢問下一個標記應該是什么的概率——在括號序列中:

圖片

在第一個案例中,神經(jīng)網(wǎng)絡“相當確定”這個序列不能在這里結(jié)束,這很好,因為如果它結(jié)束了,括號就會不平衡。然而,在第二個案例中,它“正確地識別”到序列可以在這里結(jié)束,盡管它還指出“可以重新開始”,放下一個“(”,接著是“)”。但是,糟糕的是,即使是用它訓練了約400,000個繁瑣的權重,它也說有15%的概率將“)”作為下一個標記,這是不正確的,因為那必然會導致不平衡的括號。

如果我們詢問網(wǎng)絡逐漸增加( 的序列的最高概率完成情況,我們將得到以下結(jié)果:

圖片

這就意味著像ChatGPT和英語這樣的語言的語法有什么含義呢?括號語言很“簡單”,更像是一種“算法故事”。但在英語中,基于單詞和其他提示的局部選擇,我們很有可能“猜測”什么在語法上是匹配的。是的,神經(jīng)網(wǎng)絡在這方面表現(xiàn)得更好,盡管它也可能會漏掉一些“形式上正確”的情況,但這可能與人類的漏洞相似。

但主要觀點是,語言的整體語法結(jié)構——及其所涉及的規(guī)則性——在某種程度上限制了神經(jīng)網(wǎng)絡需要學習的“范圍”。而關鍵的“自然科學式”的觀察是,像ChatGPT中的神經(jīng)網(wǎng)絡這樣的 Transformer 體系結(jié)構似乎成功地學習了類似于嵌套樹形的句法結(jié)構,這種結(jié)構似乎在所有人類語言中都存在(至少近似如此)。

語法提供了一種對語言的限制,但顯然還有其他的限制。像“nquisitive electrons eat blue theories for fish”(探究性電子吃藍色理論以換取魚) 這樣的句子在語法上是正確的,但并不是我們通常會說的,如果ChatGPT生成了這樣的句子,也不會被認為是成功的——因為,嗯,就是用其中的單詞的正常含義而言,它基本上是沒有意義的。

但是有沒有一種通用的方法來判斷一個句子是否有意義呢?傳統(tǒng)上沒有一個總體的理論。但可以認為,在被訓練了數(shù)十億個(可能有意義的)句子后, ChatGPT在隱含地“發(fā)展了一個理論”

這個理論會是什么樣子呢?有一個微小的角落基本上已經(jīng)被知道了兩千年,那就是邏輯。尤其是在亞里士多德發(fā)現(xiàn)的三段論形式中,邏輯基本上是一種說法,即遵循某些模式的句子是合理的,而其他句子則不是。因此,例如,“所有X都是Y。這個不是Y,所以它不是X”是合理的(如“所有的魚都是藍色的。這個不是藍色的,所以它不是一條魚。”)。就像可以有些任性地想象亞里士多德通過大量的修辭例子(“機器學習式”)發(fā)現(xiàn)三段論邏輯一樣,人們也可以想象在 ChatGPT 的訓練中,它將能夠通過查看網(wǎng)絡上的大量文本等來“發(fā)現(xiàn)三段論邏輯”。(是的,雖然可以因此期望 ChatGPT 產(chǎn)生包含基于三段論邏輯等的“正確推理”的文本,但當涉及到更復雜的形式邏輯時,情況就大不相同了—— 我認為人們可以期望它因與括號匹配相同的原因而失敗 。)

但除了邏輯的狹窄例子之外,還有什么可以系統(tǒng)地構建(或識別)即使是合理的有意義文本的方法呢?是的,有像 Mad Libs 這樣使用非常具體的“短語模板”的東西。但不知何故,ChatGPT 無形中有了一個更普遍的方法來做到這一點。也許除了“當你有 1750 億個神經(jīng)網(wǎng)絡權重時,它就會發(fā)生”之外,我們無法說出它如何做到。但我強烈懷疑,這背后存在一個更簡單、更有力的故事。

意義空間和語義動力學

我們上面討論了在ChatGPT內(nèi)部,任何一段文本實際上都由一組數(shù)字表示,我們可以將其視為某種“語言特征空間”中的點的坐標。因此,當ChatGPT繼續(xù)一段文本時,這相當于在語言特征空間中跟蹤軌跡。但現(xiàn)在我們可以問,是什么讓這條軌跡對應于我們認為有意義的文本?也許可能存在某種“語義運動規(guī)律”,定義或者至少限制了語言特征空間中的點如何移動,同時保持“有意義性”?

那么這個語言特征空間是什么樣的?以下是一個示例,展示了單個單詞(這里是普通名詞)在我們將這樣的特征空間投影到二維平面時的分布情況:

圖片

以下是不同詞類的單詞在特征空間中的布局方式:

圖片

當然,通常來說,一個詞并不只有“一個意思”(也不一定只對應一種詞性)。通過查看包含一個單詞的句子在特征空間中的排布,我們通常可以“區(qū)分”不同的含義,就像這里的“crane”一詞(是指鳥還是機器)的例子一樣:

圖片

好的,我們可以將這個特征空間想象為將“語義相似的詞”放置在附近的空間。但是,我們能夠在這個空間中識別出什么樣的額外結(jié)構呢?例如,是否有一種“平行傳送”的概念,反映了空間的“平坦性”?研究類比問題可能有助于理解這一點:

圖片

那么,軌跡呢?我們可以觀察ChatGPT在特征空間中跟隨的提示軌跡,然后再看看它如何繼續(xù)下去:

圖片

這里顯然沒有什么“幾何明顯”的運動規(guī)律。這一點并不令人驚訝;我們完全期望這將是一個相當復雜的故事。例如,即使存在“語義運動定律”,什么樣的嵌入(或者實際上是什么“變量”)最自然也遠非顯而易見。

在上面的圖片中,我們展示了“軌跡”的幾個步驟,其中每個步驟我們選擇了ChatGPT認為最有可能的單詞(“temperature=0”情況)。但我們還可以問,在給定點時下一個可能出現(xiàn)的單詞是什么,以及它們的概率是多少:

圖片

在這個案例中,我們可以看到一個在特征空間中有著相對明確方向的高概率詞匯的“扇形”分布。如果我們繼續(xù)下去會發(fā)生什么呢?下面是隨著軌跡的“移動”而出現(xiàn)的連續(xù)的“扇形”:

圖片

這里是一個總共有40步的三維展示:

圖片

上面這個表現(xiàn)看起來有些混亂,沒有特別鼓勵這種想法,即通過實證研究“ChatGPT內(nèi)部的運作”來確定“數(shù)學物理一樣的”“語義運動定律”。但也許我們只是在看“錯誤的變量”(或錯誤的坐標系),如果我們只看正確的變量,我們就會立即看到ChatGPT正在做一些“數(shù)學物理簡單”的事情,比如遵循測地線。但是,目前為止,我們還沒有準備好從其“內(nèi)部行為”“實證解碼”ChatGPT已經(jīng)“發(fā)現(xiàn)”的有關人類語言“組裝”的內(nèi)容。

總結(jié)

ChatGPT的基本概念在某種程度上相當簡單。從網(wǎng)絡、書籍等來源中獲取大量人類創(chuàng)造的文本樣本,然后訓練神經(jīng)網(wǎng)絡生成“類似”的文本。特別地,使它能夠從“提示”開始,然后繼續(xù)生成“與它所受過的訓練相似”的文本。

正如我們所見,ChatGPT中的實際神經(jīng)網(wǎng)絡由非常簡單的元素組成。神經(jīng)網(wǎng)絡的基本操作也非常簡單,本質(zhì)上是對每個新單詞(或單詞的一部分)生成文本時,對其已生成的文本產(chǎn)生的輸入“通過其元素”(沒有任何循環(huán)等)進行一次傳遞。

但是,這個過程的卓越而意想不到的一點是,它可以產(chǎn)生成功“類似”網(wǎng)絡、書籍等中存在的文本。它不僅是連貫的人類語言,而且“說出”了“遵循提示”的事情,利用它所“讀取”的內(nèi)容。它并不總是說出“全局上有意義”的話(或與正確的計算相符),它只是根據(jù)它訓練材料中的內(nèi)容“聽起來對”的話。

ChatGPT的具體工程設計使其相當令人信服。但是,至少在它可以使用外部工具之前,它“僅僅”是從其積累的“傳統(tǒng)智慧的統(tǒng)計數(shù)據(jù)”中提取出一些“連貫的文本線索”。但是,其結(jié)果與人類產(chǎn)生的非常相似,這很令人驚奇。正如我所討論的,這表明某些東西至少在科學上非常重要:人類語言(及其背后的思維模式)在其結(jié)構上比我們想象的更簡單、更“法則化”。ChatGPT已經(jīng)隱式地發(fā)現(xiàn)了這一點。但我們可以通過語義語法、計算語言等,可能會明確地暴露它。

ChatGPT在生成文本方面所做的工作非常令人印象深刻,其結(jié)果通常與我們?nèi)祟惍a(chǎn)生的非常相似。那么,這是否意味著ChatGPT像大腦一樣工作?其基本的人工神經(jīng)網(wǎng)絡結(jié)構最終是以大腦的理想化模型為基礎建模的。而且很可能當我們?nèi)祟惿烧Z言時,許多方面的情況非常相似。

但是,值得注意的是,盡管 ChatGPT 在生成文本方面表現(xiàn)出人類的能力,但其實現(xiàn)方式與大腦有所不同。與人類的大腦和當前計算機的“硬件”有所不同,ChatGPT 不得不采用一種可能非常不同(在某些方面更少效率)的策略進行訓練(也就是學習)。此外,還有一點:與典型算法計算中的情況不同,ChatGPT 沒有內(nèi)部的“循環(huán)”或“重新計算數(shù)據(jù)”。這必然限制了它的計算能力,甚至對于當前的計算機也是如此,但對于大腦來說,更是如此。

但就目前而言,看到 ChatGPT 已經(jīng)能夠做到的事情令人興奮。從某種程度上說,它是基本科學事實的一個很好的例子,即大量的簡單計算元素可以做出引人注目和出乎意料的事情。但它也提供了我們在兩千年里最好的推動力,去更好地理解人類語言以及其背后的思維過程的基本特征和原則。

總之,ChatGPT 是一種極其強大的自然語言生成系統(tǒng),它的訓練過程基于大量的人類語言文本樣本,并采用了深度學習技術。盡管其基本結(jié)構與人類大腦的工作方式有所不同,但它已經(jīng)展示了大量簡單計算元素的組合可以產(chǎn)生出令人驚訝的結(jié)果。這為我們深入理解人類語言和思維模式的本質(zhì)提供了有力的推動。

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

    關注

    42

    文章

    4771

    瀏覽量

    100714
  • 語言模型
    +關注

    關注

    0

    文章

    520

    瀏覽量

    10268
  • ChatGPT
    +關注

    關注

    29

    文章

    1558

    瀏覽量

    7595
收藏 人收藏

    評論

    相關推薦

    利用ChatGPT通過Shell腳本來實現(xiàn)日志分析

    ChatGPT自出道以來,其出色的代碼能力被眾多程序員追捧,今天浩道就運維工作中常見的日志分析場景,利用ChatGPT讓它通過Shell腳本來實現(xiàn)日志分析
    的頭像 發(fā)表于 04-07 09:09 ?3148次閱讀

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

    。”(FPGA禮貌地表示感謝,并掛斷電話) 接下來我將開始一步一步實現(xiàn)。編寫一個用FPGA訪問ChatGPT4的程序代碼是一個復雜的過程,涉及到硬件描述語言(如VHDL或Verilog)的編程、網(wǎng)絡通信
    發(fā)表于 02-14 21:58

    在FPGA設計中是否可以應用ChatGPT生成想要的程序呢

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

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

    和情緒的選項 實時視頻捕捉,在與ChatGPT 交互時無需發(fā)送照片 有能力在會議和視頻通話中提供協(xié)助 發(fā)布會為其潛在影響提供了清晰的愿景。隨著企業(yè)駕馭不斷變化的技術領域,擁抱ChatGPT-4o對于實現(xiàn)持續(xù)增長和創(chuàng)新至關重要。
    發(fā)表于 05-27 15:43

    chatGPT幫我寫硬件代碼,是懂行的,好助手!#chatgpt #物聯(lián)網(wǎng)開發(fā) #python開發(fā)板

    ChatGPT
    蘇州煜瑛微電子科技有限公司
    發(fā)布于 :2023年02月17日 15:27:42

    ChatGPT對話語音識別

    ChatGPT
    YS YYDS
    發(fā)布于 :2023年05月30日 22:13:10

    科技大廠競逐AIGC,中國的ChatGPT在哪?

    。 圖源:OpenAI官網(wǎng) 中國AI水平與ChatGPT有多大的差距?中國如何訓練出這樣的GPT大模型?難點又在哪里? ChatGPT是AIGC的一種實現(xiàn)。在AIGC的大模型建設和應用層面,國內(nèi)
    發(fā)表于 03-03 14:28

    如何讓ChatGPT實現(xiàn)MIMO波束賦形

    不一定。很多它并不了解的知識,ChatGPT會拼湊出看似合理的答案,對初學者要引起充分的警惕。比如我問它某個西北菜怎么烹飪,它回答的頭頭是道、步驟清晰、邏輯性好,但做的方法并不對
    的頭像 發(fā)表于 02-03 16:41 ?870次閱讀

    ChatGPT實現(xiàn)原理

    ChatGPT實現(xiàn)原理 用自然語言與計算機進行通信,ChatGPT實現(xiàn)了,那么ChatGPT實現(xiàn)
    的頭像 發(fā)表于 02-13 17:32 ?10.5w次閱讀
    <b class='flag-5'>ChatGPT</b><b class='flag-5'>實現(xiàn)</b>原理

    ChatGPT了的七個開源項目

    就推出了很多。估計,現(xiàn)在還有不少同學苦于不知道該如何體驗chatGPT。   chatGPT火了,圍繞chatGPT盡心二次擴展的開源項目最近也涌現(xiàn)出很多,今天就來給大家介紹幾個最近發(fā)現(xiàn)的不錯的開源項目!   這是一
    發(fā)表于 02-15 09:26 ?3次下載
    <b class='flag-5'>ChatGPT</b>了的七個開源項目

    如何讓ChatGPT實現(xiàn)MIMO波束賦形和寫一封會議邀請信?

    ChatGPT的對話過程中,必須寫出便于理解、消除歧義的Prompts(提示,即你的指令或問題),它才可以理解你的意思,做出正確的應答。下面我們用兩個例子,向大家展示好的Prompts會讓它變得有多強。
    的頭像 發(fā)表于 02-22 09:59 ?631次閱讀

    微軟發(fā)布Visual ChatGPT:視覺模型加持ChatGPT實現(xiàn)絲滑聊天

    系統(tǒng)原則的提示符,“Visual ChatGPT是一個可以處理廣泛語言和視覺任務的助手,xxxxxx”。在這個prompt的部分,以下內(nèi)容被強調(diào):Visual ChatGPT的角色,可以訪問且需要
    的頭像 發(fā)表于 03-16 10:35 ?1384次閱讀

    基于ChatGPT實現(xiàn)微信機器人

    掃碼登錄過后,就能像開頭文中截圖那樣跟機器人聊天啦。不過你要注意,我們的賬戶里只有5美元體驗金,而這個API 的調(diào)用是要消耗金錢的,所以大家用來自己玩玩,體驗體驗就好,不然一會兒把體驗金耗完就沒得玩了。Wechatbot 的項目地址在這里https://github.com/qingconglaixueit/wechatbot,感興趣的也可以去研究研究。
    的頭像 發(fā)表于 03-30 10:34 ?2502次閱讀

    人工智能技術的風險與應對措施

    進入智能化、信息化時代,以人工智能技術為基礎的新一代信息科技不斷向認知智能階段邁進,特別是2022年11月美國人工智能Open AI公司研究發(fā)布的聊天機器人程序ChatGPT實現(xiàn)了人工智能從感知
    發(fā)表于 08-04 11:34 ?1508次閱讀

    人工智能技術的風險與應對措施

    進入智能化、信息化時代,以人工智能技術為基礎的新一代信息科技不斷向認知智能階段邁進,特別是2022年11月美國人工智能OpenAI公司研究發(fā)布的聊天機器人程序ChatGPT實現(xiàn)了人工智能從感知理解
    的頭像 發(fā)表于 08-06 08:09 ?2163次閱讀
    人工智能技術的風險與應對措施
    主站蜘蛛池模板: 久久国产精品免费网站| 涩涩涩涩爱网站| 亚洲色大成网站www久久九九| free俄罗斯性xxxxhd派对| 国产在线精品视频免费观看| 青青久在线| 24小时日本在线| 京香在线观看| 试看2分钟AA片| yellow在线观看免费高清的日本 | 超碰97人人做人人爱亚洲尤物| 久久合| 亚洲AV 日韩 国产 有码| 成年女人免费影院播放| 免费99精品国产人妻自在线| 亚洲精品久久久久一区二区三 | 精品成人在线视频| 午夜福利免费0948视频| 超碰视频97av| 欧美性情video sexo视频| 自拍 偷拍 亚洲 经典| 精品久久电影网| 亚洲福利区| 国产精品一国产AV麻豆| 特黄特黄aaaa级毛片免费看| 超碰在线视频caoporn| 欧美另类videosbest| 97欧美精品大香伊蕉在人线| 久久re6热在线视频| 亚洲精品永久免费| 国产揄拍国产精品| 午夜免费国产体验区免费的| 国产盗摄一区二区三区| 日本大尺码喷液过程视频| cctv网站| 欧美日韩一二区旡码高清在线 | 成人国产精品玖玖热色欲| 女人把腿张开叫男人桶免费视频| 18日本人XXXXXX18| 啦啦啦 中国 日本 高清 在线| 中文字幕亚洲无线码在线|