萬(wàn)字長(zhǎng)文解釋 ChatGPT 在做什么,以及為什么它能發(fā)揮作用?(3)
到目前為止,我們一直在談?wù)撃切?“已經(jīng)知道” 如何完成特定任務(wù)的神經(jīng)網(wǎng)絡(luò)。但是,神經(jīng)網(wǎng)絡(luò)之所以如此有用(估計(jì)也是在大腦中),是因?yàn)樗鼈儾粌H在原則上可以完成各種任務(wù),而且可以逐步 “根據(jù)實(shí)例訓(xùn)練” 來(lái)完成這些任務(wù)。
當(dāng)我們制作一個(gè)區(qū)分貓和狗的神經(jīng)網(wǎng)絡(luò)時(shí),我們實(shí)際上不需要寫一個(gè)程序來(lái)(比如說(shuō))明確地找到胡須;相反,我們只需要展示大量關(guān)于什么是貓和什么是狗的例子,然后讓網(wǎng)絡(luò)從這些例子中 “機(jī)器學(xué)習(xí)” 如何去區(qū)分它們。
重點(diǎn)是,訓(xùn)練有素的網(wǎng)絡(luò)從它所展示的特定例子中 “概括” 出來(lái)。正如我們?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)的問(wèn)題更簡(jiǎn)單的問(wèn)題。讓我們只嘗試讓一個(gè)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)函數(shù):
對(duì)于這個(gè)任務(wù),我們需要一個(gè)只有一個(gè)輸入和一個(gè)輸出的網(wǎng)絡(luò),比如:
但我們應(yīng)該使用什么權(quán)重等?在每一組可能的權(quán)重下,神經(jīng)網(wǎng)絡(luò)都會(huì)計(jì)算出一些函數(shù)。例如,這里是它用幾組隨機(jī)選擇的權(quán)重所做的事情:
是的,我們可以清楚地看到,在這些情況下,它甚至都沒(méi)有接近再現(xiàn)我們想要的函數(shù)。那么,我們?nèi)绾握业侥軌蛑噩F(xiàn)該函數(shù)的權(quán)重呢?
基本的想法是提供大量的 “輸入→輸出” 的例子來(lái) “學(xué)習(xí)” —— 然后嘗試找到能重現(xiàn)這些例子的權(quán)重。下面是用逐漸增多的例子來(lái)做的結(jié)果:
在這個(gè) “訓(xùn)練” 的每個(gè)階段,網(wǎng)絡(luò)中的權(quán)重都被逐步調(diào)整 —— 我們看到,最終我們得到了一個(gè)能成功重現(xiàn)我們想要的函數(shù)的網(wǎng)絡(luò)。那么,我們是如何調(diào)整權(quán)重的呢?基本的想法是在每個(gè)階段看看我們離得到我們想要的函數(shù) “有多遠(yuǎn)”,然后以這樣的方式更新權(quán)重,使之更接近。
為了找出 “我們有多遠(yuǎn)”,我們計(jì)算通常被稱為 “損失函數(shù)”(或有時(shí)稱為 “成本函數(shù)”)的東西。這里我們使用的是一個(gè)簡(jiǎn)單的(L2)損失函數(shù),它只是我們得到的值與真實(shí)值之間的差異的平方之和。我們看到的是,隨著我們訓(xùn)練過(guò)程的進(jìn)展,損失函數(shù)逐漸減少(遵循一定的 “學(xué)習(xí)曲線”,不同的任務(wù)是不同的) —— 直到我們達(dá)到一個(gè)點(diǎn),網(wǎng)絡(luò)(至少是一個(gè)很好的近似值)成功再現(xiàn)了我們想要的函數(shù):
好了,最后要解釋的重要部分是如何調(diào)整權(quán)重以減少損失函數(shù)。正如我們所說(shuō),損失函數(shù)給我們提供了我們得到的值與真實(shí)值之間的 “距離”。但是 “我們得到的值” 在每個(gè)階段都是由當(dāng)前版本的神經(jīng)網(wǎng)絡(luò)和其中的權(quán)重決定的。但現(xiàn)在想象一下,這些權(quán)重是變量 —— 比如說(shuō) wi。我們想找出如何調(diào)整這些變量的值,以使取決于這些變量的損失最小。
例如,想象一下(對(duì)實(shí)踐中使用的典型神經(jīng)網(wǎng)絡(luò)進(jìn)行了不可思議的簡(jiǎn)化),我們只有兩個(gè)權(quán)重 w1 和 w2。那么我們可能有一個(gè)損失,作為 w1 和 w2 的函數(shù),看起來(lái)像這樣:
數(shù)值分析提供了各種技術(shù)來(lái)尋找這樣的情況下的最小值。但一個(gè)典型的方法是,從之前的 w1、w2 開(kāi)始,逐步遵循最陡峭的下降路徑:
就像水從山上流下來(lái)一樣,所能保證的是這個(gè)過(guò)程最終會(huì)在地表的某個(gè)局部最小值(“一個(gè)山湖”);它很可能達(dá)不到最終的全球最小值。
在 “重量景觀” 上找到最陡峭的下降路徑并不明顯,這是不可行的。但是,微積分可以幫助我們。正如我們上面提到的,我們總是可以把神經(jīng)網(wǎng)看作是在計(jì)算一個(gè)數(shù)學(xué)函數(shù) —— 它取決于它的輸入和權(quán)重。但現(xiàn)在考慮對(duì)這些權(quán)重進(jìn)行微分。事實(shí)證明,微積分的連鎖法則實(shí)際上可以讓我們 “解開(kāi)” 神經(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):從某種意義上說(shuō),當(dāng)有很多權(quán)重參與時(shí),做(至少是近似)最小化比有相當(dāng)少的權(quán)重更容易。
換句話說(shuō) —— 有點(diǎn)反直覺(jué) —— 用神經(jīng)網(wǎng)絡(luò)解決更復(fù)雜的問(wèn)題比簡(jiǎn)單的問(wèn)題更容易。其大致原因似乎是,當(dāng)一個(gè)人有很多 “權(quán)重變量” 時(shí),他有一個(gè)高維空間,有 “很多不同的方向”,可以把他引向最小值 —— 而如果變量較少,則更容易陷入一個(gè)局部最小值(“山湖”),沒(méi)有 “方向可以出去”。
值得指出的是,在典型的情況下,有許多不同的權(quán)重集合,它們都能使神經(jīng)網(wǎng)絡(luò)具有幾乎相同的性能。而在實(shí)際的神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,通常會(huì)有很多隨機(jī)的選擇,導(dǎo)致 “不同但等同的解決方案”,就像這些:
但每一個(gè)這樣的 “不同的解決方案” 至少會(huì)有輕微的不同行為。如果我們要求,比如說(shuō),在我們提供訓(xùn)練實(shí)例的區(qū)域之外進(jìn)行 “外推”,我們可以得到極大的不同結(jié)果:
但是哪一個(gè)是 “正確的” 呢?真的沒(méi)有辦法說(shuō)。它們都 “與觀察到的數(shù)據(jù)一致”。但它們都對(duì)應(yīng)著不同的 “先天” 方式來(lái) “思考” 如何在 “盒子外” 做什么。對(duì)我們?nèi)祟悂?lái)說(shuō),有些可能比其他的看起來(lái) “更合理”。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練的實(shí)踐與理論
特別是在過(guò)去的十年里,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的藝術(shù)方面取得了許多進(jìn)展。而且,是的,這基本上是一門藝術(shù)。有時(shí),特別是在回顧中,人們至少可以看到正在做的事情有一絲 “科學(xué)解釋” 的影子。但大多數(shù)情況下,事情都是通過(guò)試驗(yàn)和錯(cuò)誤發(fā)現(xiàn)的,增加了一些想法和技巧,逐步建立了一個(gè)關(guān)于如何使用神經(jīng)網(wǎng)絡(luò)的重要傳說(shuō)。
有幾個(gè)關(guān)鍵部分。首先,對(duì)于一個(gè)特定的任務(wù),應(yīng)該使用什么架構(gòu)的神經(jīng)網(wǎng)絡(luò)。然后,還有一個(gè)關(guān)鍵問(wèn)題,即如何獲得訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)。而且,人們?cè)絹?lái)越多地不是在處理從頭開(kāi)始訓(xùn)練一個(gè)網(wǎng)絡(luò)的問(wèn)題:相反,一個(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)普遍的 “類似人類的過(guò)程”。
在早期的神經(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ù)” 來(lái)說(shuō),通常更好的做法是嘗試在 “端到端問(wèn)題” 上訓(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)單的組件,讓它們 “自我組織”(盡管通常是以我們無(wú)法理解的方式)來(lái)實(shí)現(xiàn)(大概)那些算法想法的等價(jià)物。
這并不是說(shuō)沒(méi)有與神經(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ù)字陣列的。但在處理過(guò)程中,這些數(shù)組可以被完全重新排列和重塑。舉個(gè)例子,我們上面用來(lái)識(shí)別數(shù)字的網(wǎng)絡(luò)從一個(gè)二維的 “圖像” 陣列開(kāi)始,迅速 “增厚” 到許多通道,但隨后 “濃縮” 成一個(gè)一維陣列,最終將包含代表不同可能輸出數(shù)字的元素:
但是,好吧,如何判斷一個(gè)特定的任務(wù)需要多大的神經(jīng)網(wǎng)?這是一門藝術(shù)。在某種程度上,關(guān)鍵是要知道 “這個(gè)任務(wù)有多難”。但對(duì)于類似人類的任務(wù)來(lái)說(shuō),這通常是很難估計(jì)的。是的,可能有一種系統(tǒng)的方法可以通過(guò)計(jì)算機(jī)非常 “機(jī)械” 地完成任務(wù)。但很難知道是否存在人們認(rèn)為的技巧或捷徑,使人們至少在 “類似人類的水平” 上更容易地完成這項(xiàng)任務(wù)。可能需要列舉一個(gè)巨大的游戲樹來(lái) “機(jī)械地” 玩某個(gè)游戲;但可能有一個(gè)更容易(“啟發(fā)式”)的方法來(lái)實(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é)果:
而我們的情況是,如果網(wǎng)太小,它就不能再現(xiàn)我們想要的函數(shù)。但如果超過(guò)一定的規(guī)模,它就沒(méi)有問(wèn)題了 —— 至少如果一個(gè)人用足夠長(zhǎng)的時(shí)間和足夠多的例子訓(xùn)練它。順便說(shuō)一下,這些圖片說(shuō)明了一個(gè)神經(jīng)網(wǎng)絡(luò)的傳說(shuō):如果中間有一個(gè) “擠壓”,迫使所有東西都通過(guò)一個(gè)較小的中間神經(jīng)元數(shù)量,那么我們往往可以用一個(gè)較小的網(wǎng)絡(luò)。(值得一提的是,“無(wú)中間層” —— 或所謂的 “感知器” —— 網(wǎng)絡(luò)只能學(xué)習(xí)本質(zhì)上的線性函數(shù) —— 但只要有一個(gè)中間層,原則上就可以任意很好地近似任何函數(shù),至少如果有足夠的神經(jīng)元,盡管為了使其可行地訓(xùn)練,通常需要某種正則化或規(guī)范化)。
好吧,讓我們假設(shè)我們已經(jīng)確定了某種神經(jīng)網(wǎng)絡(luò)架構(gòu)?,F(xiàn)在有一個(gè)問(wèn)題,就是如何獲得數(shù)據(jù)來(lái)訓(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í)”),人們希望獲得明確的輸入和期望的輸出的例子。因此,舉例來(lái)說(shuō),人們可能希望通過(guò)圖像中的內(nèi)容或一些其他屬性來(lái)標(biāo)記圖像。也許我們必須明確地去做 —— 通常是費(fèi)盡心機(jī)地去做標(biāo)記。但是很多時(shí)候,我們可以借助已經(jīng)完成的工作,或者將其作為某種代理。因此,舉例來(lái)說(shuō),我們可以使用網(wǎng)絡(luò)上已經(jīng)提供的圖片的 alt 標(biāo)簽?;蛘撸诹硪粋€(gè)領(lǐng)域,我們可以使用為視頻創(chuàng)建的封閉式字幕?;蛘咴谡Z(yǔ)言翻譯訓(xùn)練中,可以使用不同語(yǔ)言的網(wǎng)頁(yè)或其他文件的平行版本。
你需要向神經(jīng)網(wǎng)絡(luò)展示多少數(shù)據(jù)來(lái)訓(xùn)練它完成一項(xiàng)特定任務(wù)?同樣,這很難從第一原理上估計(jì)。當(dāng)然,通過(guò)使用 “轉(zhuǎn)移學(xué)習(xí)” 來(lái) “轉(zhuǎn)移” 諸如已經(jīng)在另一個(gè)網(wǎng)絡(luò)中學(xué)習(xí)過(guò)的重要特征列表的東西,可以大大降低要求。但一般來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)需要 “看到大量的例子” 才能訓(xùn)練好。而至少對(duì)于某些任務(wù)來(lái)說(shuō),神經(jīng)網(wǎng)絡(luò)的一個(gè)重要傳說(shuō)是,這些例子可能是非常重復(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)人們沒(méi)有實(shí)際的視頻等來(lái)訓(xùn)練自動(dòng)駕駛汽車時(shí),人們可以繼續(xù)從模擬的視頻游戲環(huán)境中獲得數(shù)據(jù),而不需要實(shí)際的真實(shí)世界場(chǎng)景的所有細(xì)節(jié)。
像 ChatGPT 這樣的東西如何呢?嗯,它有一個(gè)很好的特點(diǎn),那就是它可以進(jìn)行 “無(wú)監(jiān)督學(xué)習(xí)”,這使得它更容易得到用于訓(xùn)練的例子?;仡櫼幌?,ChatGPT 的基本任務(wù)是找出如何繼續(xù)它所給的一段文字。因此,為了獲得 “訓(xùn)練實(shí)例”,我們所要做的就是獲得一段文本,并將其結(jié)尾遮蓋起來(lái),然后將其作為 “訓(xùn)練的輸入” —— “輸出” 是完整的、未被遮蓋的文本。我們稍后會(huì)詳細(xì)討論這個(gè)問(wèn)題,但主要的一點(diǎn)是,與學(xué)習(xí)圖片中的內(nèi)容不同,不需要 “明確的標(biāo)簽”;ChatGPT 實(shí)際上可以直接從它所得到的任何文本例子中學(xué)習(xí)。
好吧,那么神經(jīng)網(wǎng)絡(luò)的實(shí)際學(xué)習(xí)過(guò)程是怎樣的呢?歸根結(jié)底,這都是為了確定什么權(quán)重能夠最好地捕捉所給的訓(xùn)練實(shí)例。有各種詳細(xì)的選擇和 “超參數(shù)設(shè)置”(之所以被稱為超參數(shù),是因?yàn)榭梢园褭?quán)重看作是 “參數(shù)”),可以用來(lái)調(diào)整如何完成這一過(guò)程。有不同的損失函數(shù)選擇(平方之和、絕對(duì)值之和,等等)。有不同的方法來(lái)進(jìn)行損失最小化(每一步要在權(quán)重空間中移動(dòng)多遠(yuǎn),等等)。然后還有一些問(wèn)題,比如要展示多大的 “一批” 例子來(lái)獲得每一個(gè)試圖最小化的損失的連續(xù)估計(jì)。而且,是的,人們可以應(yīng)用機(jī)器學(xué)習(xí)(例如,我們?cè)?Wolfram 語(yǔ)言中所做的)來(lái)實(shí)現(xiàn)機(jī)器學(xué)習(xí)的自動(dòng)化 —— 自動(dòng)設(shè)置超參數(shù)等東西。
但最終,整個(gè)訓(xùn)練過(guò)程的特點(diǎn)是看到損失是如何逐漸減少的(如這個(gè) Wolfram Language 的小型訓(xùn)練的進(jìn)度監(jiān)視器):
而人們通??吹降氖?,損失在一段時(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í)際問(wèn)題,這些努力的絕大部分都花在了對(duì)數(shù)字陣列的操作上,而這正是 GPU 所擅長(zhǎng)的 —— 這就是為什么神經(jīng)網(wǎng)絡(luò)訓(xùn)練通常受限于 GPU 的可用性。
在未來(lái),是否會(huì)有從根本上更好的方法來(lái)訓(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ù) —— 來(lái)做這種增量修改。但越來(lái)越清楚的是,擁有高精度的數(shù)字并不重要;即使用目前的方法,8 位或更少的數(shù)字可能也足夠了。
像蜂窩自動(dòng)機(jī)這樣的計(jì)算系統(tǒng),基本上是在許多單獨(dú)的比特上并行操作的,如何做這種增量修改從來(lái)都不清楚,但沒(méi)有理由認(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é)來(lái)說(shuō)可能是一個(gè)方便的設(shè)置,但并不清楚它是否是實(shí)現(xiàn)我們所需函數(shù)的最佳方式。而涉及漸進(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)練從根本上說(shuō)是連續(xù)的,每一批例子的效果都被傳播回來(lái)以更新權(quán)重。事實(shí)上,就目前的計(jì)算機(jī)硬件而言 —— 即使考慮到 GPU —— 在訓(xùn)練期間,神經(jīng)網(wǎng)絡(luò)的大部分時(shí)間都是 “閑置” 的,每次只有一個(gè)部分被更新。從某種意義上說(shuō),這是因?yàn)槲覀兡壳暗挠?jì)算機(jī)往往有獨(dú)立于 CPU(或 GPU)的內(nèi)存。但在大腦中,這大概是不同的 —— 每一個(gè) “記憶元素”(即神經(jīng)元)也是一個(gè)潛在的活躍的計(jì)算元素。如果我們能夠以這種方式設(shè)置我們未來(lái)的計(jì)算機(jī)硬件,就有可能更有效地進(jìn)行訓(xùn)練。
“當(dāng)然,一個(gè)足夠大的網(wǎng)絡(luò)可以做任何事情!”像 ChatGPT 這樣的能力似乎令人印象深刻,人們可能會(huì)想象,如果人們能夠 “繼續(xù)下去”,訓(xùn)練越來(lái)越大的神經(jīng)網(wǎng)絡(luò),那么它們最終將能夠 “做任何事情”。如果人們關(guān)注的是那些容易被人類直接思考的事物,那么很有可能是這樣的。但是,過(guò)去幾百年科學(xué)的教訓(xùn)是,有些東西可以通過(guò)形式化的過(guò)程來(lái)計(jì)算出來(lái),但并不容易被人類的直接思維所獲得。
非瑣碎的數(shù)學(xué)就是一個(gè)大例子。但一般的情況其實(shí)是計(jì)算。而最終的問(wèn)題是計(jì)算的不可還原性現(xiàn)象。有一些計(jì)算,人們可能認(rèn)為需要很多步驟才能完成,但事實(shí)上可以 “簡(jiǎn)化” 為相當(dāng)直接的東西。但計(jì)算的不可簡(jiǎn)化性的發(fā)現(xiàn)意味著這并不總是有效的。相反,有些過(guò)程 —— 可能就像下面這個(gè)過(guò)程 —— 要弄清楚發(fā)生了什么,必然需要對(duì)每個(gè)計(jì)算步驟進(jìn)行追蹤:
我們通常用大腦做的那些事情,大概是專門為避免計(jì)算的不可還原性而選擇的。在一個(gè)人的大腦中做數(shù)學(xué)需要特別的努力。而且,在實(shí)踐中,僅僅在一個(gè)人的大腦中 “思考” 任何非微觀程序的操作步驟,在很大程度上是不可能的。
當(dāng)然,為此我們有計(jì)算機(jī)。有了計(jì)算機(jī),我們可以很容易地做很長(zhǎng)的、計(jì)算上不可簡(jiǎn)化的事情。而關(guān)鍵的一點(diǎn)是,這些事情一般來(lái)說(shuō)沒(méi)有捷徑。
是的,我們可以記住很多關(guān)于在某個(gè)特定計(jì)算系統(tǒng)中發(fā)生的具體例子。也許我們甚至可以看到一些(“計(jì)算上可還原的”)模式,使我們可以做一點(diǎn)概括。但問(wèn)題是,計(jì)算上的不可還原性意味著我們永遠(yuǎn)無(wú)法保證意外不會(huì)發(fā)生 —— 只有通過(guò)明確地進(jìn)行計(jì)算,你才能知道在任何特定情況下實(shí)際發(fā)生了什么。
最后,在可學(xué)習(xí)性和計(jì)算的不可重復(fù)性之間存在著一種基本的緊張關(guān)系。學(xué)習(xí)實(shí)際上是通過(guò)利用規(guī)則性來(lái)壓縮數(shù)據(jù)。但計(jì)算上的不可復(fù)制性意味著最終對(duì)可能存在的規(guī)律性有一個(gè)限制。
作為一個(gè)實(shí)際問(wèn)題,我們可以想象將一些小的計(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í)。
或者換句話說(shuō),在能力和可訓(xùn)練性之間有一個(gè)最終的權(quán)衡:你越想讓一個(gè)系統(tǒng) “真正利用” 它的計(jì)算能力,它就越會(huì)顯示出計(jì)算的不可復(fù)制性,它的可訓(xùn)練性就越低。而它越是從根本上可訓(xùn)練,它就越不能做復(fù)雜的計(jì)算。(對(duì)于目前的 ChatGPT 來(lái)說(shuō),情況實(shí)際上要極端得多,因?yàn)橛糜谏擅總€(gè)輸出符號(hào)的神經(jīng)網(wǎng)絡(luò)是一個(gè)純粹的 “前饋” 網(wǎng)絡(luò),沒(méi)有循環(huán),因此沒(méi)有能力做任何具有非復(fù)雜 “控制流” 的計(jì)算)。
當(dāng)然,人們可能會(huì)問(wèn),能夠做不可還原的計(jì)算是否真的很重要。事實(shí)上,在人類歷史的大部分時(shí)間里,這并不特別重要。但我們的現(xiàn)代技術(shù)世界是建立在至少使用數(shù)學(xué)計(jì)算的工程之上的,而且越來(lái)越多地使用更普遍的計(jì)算。如果我們看一下自然界,它充滿了不可簡(jiǎn)化的計(jì)算 —— 我們正在慢慢理解如何模仿并用于我們的技術(shù)目的。
是的,一個(gè)神經(jīng)網(wǎng)絡(luò)當(dāng)然可以注意到自然世界中的各種規(guī)律性,而我們也可能很容易通過(guò) “無(wú)助的人類思維” 注意到這些規(guī)律性。但是,如果我們想要解決屬于數(shù)學(xué)或計(jì)算科學(xué)范疇的事情,神經(jīng)網(wǎng)絡(luò)是無(wú)法做到的 —— 除非它有效地 “作為工具” 使用一個(gè) “普通” 的計(jì)算系統(tǒng)。
但是,這一切都有一些潛在的混淆之處。在過(guò)去,有很多任務(wù) —— 包括寫文章 —— 我們認(rèn)為對(duì)計(jì)算機(jī)來(lái)說(shuō) “從根本上說(shuō)太難了”。而現(xiàn)在我們看到這些任務(wù)是由 ChatGPT 等完成的,我們傾向于突然認(rèn)為計(jì)算機(jī)一定是變得更加強(qiáng)大了,特別是超越了它們已經(jīng)基本能夠做到的事情(比如逐步計(jì)算蜂窩自動(dòng)機(jī)等計(jì)算系統(tǒng)的行為)。
但這并不是正確的結(jié)論。計(jì)算上不可還原的過(guò)程仍然是計(jì)算上不可還原的,而且對(duì)計(jì)算機(jī)來(lái)說(shuō)仍然是根本性的困難 —— 即使計(jì)算機(jī)可以輕易地計(jì)算它們的單個(gè)步驟。相反,我們應(yīng)該得出的結(jié)論是,我們?nèi)祟惪梢宰龅?,但我們不認(rèn)為計(jì)算機(jī)可以做的任務(wù),比如寫文章,實(shí)際上在某種意義上比我們想象的更容易計(jì)算。
換句話說(shuō),神經(jīng)網(wǎng)絡(luò)之所以能夠成功地寫出一篇文章,是因?yàn)閷懸黄恼卤蛔C明是一個(gè)比我們想象的 “計(jì)算上更淺” 的問(wèn)題。從某種意義上說(shuō),這使我們更接近于 “擁有一種理論”,即我們?nèi)祟愂侨绾巫龅较駥懳恼逻@樣的事情的,或在一般情況下處理語(yǔ)言。
如果你有一個(gè)足夠大的神經(jīng)網(wǎng)絡(luò),那么,是的,你可能能夠做任何人類能夠輕易做到的事情。但是,你不會(huì)捕捉到自然界一般能做的事情 —— 或者我們從自然界塑造的工具能做的事情。而正是這些工具的使用 —— 無(wú)論是實(shí)用的還是概念性的 —— 使得我們?cè)诮鼛讉€(gè)世紀(jì)里能夠超越 “純粹的無(wú)助的人類思維” 所能達(dá)到的界限,并為人類的目的捕捉到物理和計(jì)算宇宙中的更多東西。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。