譯者丨張雨佳
作者認(rèn)為神經(jīng)網(wǎng)絡(luò)在許多方面取代了傳統(tǒng)的編碼方式,這種轉(zhuǎn)變帶來(lái)的影響比大家想象的要深。因?yàn)樯窠?jīng)網(wǎng)絡(luò)已經(jīng)不僅僅是一種簡(jiǎn)單的分類方法,而是一種全新的編程范式。
你可以同意或否認(rèn)他的觀點(diǎn),但不可否認(rèn)的是,深度學(xué)習(xí)已經(jīng)有了一定程度的發(fā)展。直至去年 GPT-3 的出現(xiàn),讓我們看到了另一種編程范式??萍疾┛妥髡?GwernBranwen 將這種可能改變游戲規(guī)則的編程方式叫做“Prompt programming”(提示符編程),我們從此進(jìn)入了軟件 3.0 時(shí)代。
2020 年 OpenAI 提出了 GPT-3 模型,它表現(xiàn)出來(lái)的高性能震驚了人工智能領(lǐng)域。GPT-3 可以按照英文指令編寫代碼或吉他樂(lè)譜,也可以用它進(jìn)行對(duì)話、寫詩(shī)或者思考未來(lái)和生活的意義。而且未經(jīng)訓(xùn)練過(guò)的 GPT-3 就可以完成這些任務(wù),它是一個(gè)多任務(wù)元學(xué)習(xí)模型。
GPT-3 的創(chuàng)新之處在于,當(dāng)我們用自然語(yǔ)言書寫一個(gè)帶有任務(wù)的文本(提示符)時(shí),GPT-3 就能自動(dòng)“理解”要完成哪些任務(wù)。
例如,提示符是:“我愛你→Te quiero(西班牙語(yǔ))。我有很多工作→Tengomucho trabajo。GPT-3是有史以來(lái)最好的人工智能系統(tǒng)→_____”,GPT-3 就能知道需要完成英語(yǔ)-西班牙語(yǔ)的翻譯。
Gwern 認(rèn)為,可以將提示符理解為一種新的編程范式:“因?yàn)閇提示符]采用了另一種方式去使用[深度學(xué)習(xí)]模型,所以最好將其看成一種新的編程方式。利用提示符“程序”可以對(duì) GPT-3 進(jìn)行編程,以完成新的任務(wù)。”
每當(dāng)讓系統(tǒng)執(zhí)行任務(wù)時(shí),我們都會(huì)創(chuàng)建一個(gè)特定的 GPT-3 版本。用特定任務(wù)“編程”得到的 GPT-3,可以完成其他 GPT-3 版本不能完成的任務(wù)。
但是如果編程效果較差,GPT-3 執(zhí)行任務(wù)的能力也會(huì)隨著變差。因此一些人認(rèn)為 GPT-3 缺乏邏輯和常識(shí)推理能力,但 Gwern 認(rèn)為 GPT-3 的失敗應(yīng)該歸因于糟糕的提示符。為了顯示科學(xué)的嚴(yán)謹(jǐn)性,Gwern 對(duì)多個(gè)不同的提示符反復(fù)進(jìn)行測(cè)試,發(fā)現(xiàn)好的提示符可以對(duì) GPT-3 進(jìn)行充分“編程”以執(zhí)行任務(wù),證明 GPT-3 并不是缺乏邏輯和常識(shí)推理能力的。
同時(shí),Gwern 認(rèn)為良好的提示符是發(fā)揮 GPT-3 真正潛力的關(guān)鍵。與其他編程形式一樣,我們可以通過(guò)大量的實(shí)踐對(duì)提示符進(jìn)行改進(jìn)和標(biāo)準(zhǔn)化。而且人們?cè)谙到y(tǒng)中發(fā)現(xiàn)的局限性,往往是因?yàn)槿祟惾狈υ摬糠值哪芰Α?/span>
如果我們想讓系統(tǒng)完成特定的行為,就得先學(xué)會(huì)與它溝通。
比如你想用 Python 或 C 語(yǔ)言進(jìn)行編程,就需要提前知道語(yǔ)法規(guī)則,否則編寫的任何程序都會(huì)無(wú)法運(yùn)行。但你并不能將這推卸給電腦,并認(rèn)為電腦不具備完成這項(xiàng)任務(wù)的能力。
以下是將提示符作為編程范式的兩個(gè)原因:
第一:提示符允許用戶從系統(tǒng)中生成具體的符合自己要求的行為,這與編碼的定義類似。即給定一個(gè)輸入,然后程序按照一組特定指令執(zhí)行以完成具體功能。
第二:提示符有好有壞,所以我們應(yīng)該多次實(shí)驗(yàn)以確定最佳方法并對(duì)其標(biāo)準(zhǔn)化。在傳統(tǒng)編碼中,我們必須學(xué)習(xí)語(yǔ)言語(yǔ)法、變量操作、函數(shù)等等。對(duì)于神經(jīng)網(wǎng)絡(luò),我們必須學(xué)會(huì)去除數(shù)據(jù)集中的偏差和噪聲。提示符與上面兩種方法類似。
如果將提示符編程理解為軟件 3.0,那么該如何對(duì)待傳統(tǒng)的編碼方式(軟件 1.0)和神經(jīng)網(wǎng)絡(luò)(軟件 2.0)呢?
提示符是否可以取代這些編程范式?
程序員是否需要將提示符作為一項(xiàng)新的必備技能添加到技能庫(kù)中?
提示符會(huì)改變我們與機(jī)器的溝通方式嗎?
去年,F(xiàn)rederik Bussler 在《Towards Data Sciencearguing(數(shù)據(jù)科學(xué))》上寫了一篇很受歡迎的文章,認(rèn)為 GPT-3 可能會(huì)推進(jìn)編碼方式的發(fā)展,達(dá)到我們可理解(以及無(wú)代碼和 autoML)編碼的盡頭。
GPT-3 具有生成良好代碼的能力,但它能完成的功能很大程度上取決于使用的提示符是否能傳達(dá)人們的意圖。并且使用 GPT-3 也不會(huì)影響編程的簡(jiǎn)單性,不然就無(wú)異于大材小用了。
神經(jīng)網(wǎng)絡(luò)也是如此。
Karpathy 認(rèn)為軟件 2.0 可以取代軟件 1.0 中的一部分,比如有些問(wèn)題很難用明確的程序完成和解決,但如果采用收集數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的方法,可能就很容易解決這些困難問(wèn)題。不過(guò)對(duì)于某些問(wèn)題來(lái)說(shuō),傳統(tǒng)編碼仍然是首選的最優(yōu)方法。
軟件 3.0 可以覆蓋的任務(wù)范圍并不會(huì) 100% 包含軟件 1.0 或 2.0 的范圍。
因此雖然每種范式的能力范圍會(huì)有重疊,但它們各自都會(huì)有比其他范式表現(xiàn)得更好更有效的領(lǐng)域,從而找到一種穩(wěn)定的和諧。因此,這些軟件范式間并不是相互競(jìng)爭(zhēng)關(guān)系,而是試圖找到一種完美的共生關(guān)系。
這些范式都是實(shí)現(xiàn)真正人工智能的重要組成部分。人類也是由生物軟件組成的,某種程度上可以與這些范例相對(duì)應(yīng)。
“[軟件 2.0]的未來(lái)毫無(wú)疑問(wèn)是光明的,因?yàn)楫?dāng)我們開發(fā) AGI 時(shí),必然會(huì)使用軟件2.0進(jìn)行編寫。”
——Andrej Karpathy
我不同意 Karpathy 的預(yù)測(cè)。我認(rèn)為 AGI(人工通用智能)將會(huì)是三種編程范式(或者其他尚未發(fā)現(xiàn)的范式)的組合。想要理解其中的原因,最好的方法是與真正的智能體——人類,進(jìn)行類比。
軟件1.0
在二十一世紀(jì) 10 年代神經(jīng)網(wǎng)絡(luò)廣泛興起之前,所有的代碼都需要手動(dòng)編寫。所以想要讓系統(tǒng)完成特定的行為,就必須明確每種情況下系統(tǒng)需要遵循的指令。傳統(tǒng)編碼的程序完全按照編寫的代碼運(yùn)行,不是黑盒,也不會(huì)進(jìn)行學(xué)習(xí)。
這也是進(jìn)化論在創(chuàng)造遺傳編碼時(shí)所考慮的東西。
我們出生時(shí)并不像一張白紙,而是有一套由基因決定的、根植于大腦中的模版。我們將這稱為生物軟件 1.0?;驔Q定了我們有兩只眼睛、兩條胳膊和兩條腿,包括金發(fā)和棕綠色的眼睛。
軟件2.0
Karpathy 說(shuō),軟件 2.0 包括數(shù)據(jù)集的管理和神經(jīng)網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì)。
我們需要指定程序的結(jié)構(gòu)并提供程序的輸入數(shù)據(jù),但不用定義具體內(nèi)容。神經(jīng)網(wǎng)絡(luò)可以通過(guò)訓(xùn)練,“編寫”自己內(nèi)部的“程序權(quán)重”來(lái)自主學(xué)習(xí)需要完成的任務(wù)。
生物軟件 2.0 則是成長(zhǎng)過(guò)程中的經(jīng)歷和感悟。
人們生來(lái)就是一個(gè)半空的結(jié)構(gòu),等待著各種物質(zhì)和社會(huì)信息的灌輸?;驎?huì)硬性要求我們有兩只手臂,但我們是學(xué)習(xí)西班牙語(yǔ)還是英語(yǔ),什么時(shí)候?qū)W會(huì)走路,如何更好地掌握世界的運(yùn)作方式。這些都不是由基因決定,而是取決于環(huán)境和我們與世界的接觸,類似于通過(guò)數(shù)據(jù)集來(lái)優(yōu)化程序。
軟件 3.0
通過(guò)提示符可以生成特定的 GPT-3。某種意義上,特定的提示符 GPT-3 可以完成其他系統(tǒng)沒有學(xué)習(xí)到的任務(wù)。每個(gè)特定的 GPT-3 都有學(xué)習(xí)任務(wù)的潛力,但只在有激勵(lì)時(shí)才會(huì)發(fā)生。
生物軟件 3.0 則是作為成年人所經(jīng)歷的具體學(xué)習(xí):學(xué)習(xí)的東西、讀的書,從事的工作,掌握的能力和技能。因此,所有人都有類似的潛力去學(xué)習(xí)這些技能,但每個(gè)人都只選擇了一部分技能和知識(shí)進(jìn)行學(xué)習(xí)。這些選擇會(huì)改變我們的大腦,就像提示符改變了 GPT-3 的能力一樣。
值得一提的是,以上對(duì)生物軟件的類比雖然能說(shuō)明問(wèn)題,但同時(shí)也簡(jiǎn)化了問(wèn)題。生物軟件實(shí)際上在各個(gè)層面上都起作用。我們的基因取決于環(huán)境,選擇學(xué)習(xí)工程學(xué)或醫(yī)學(xué)取決于我們是否有與生俱來(lái)的天賦。所以通過(guò)這個(gè)類比,只是想讓大家意識(shí)到要想實(shí)現(xiàn) AGI 需要更多樣的軟件范式。
AGI 可能需要傳統(tǒng)編碼來(lái)定義基礎(chǔ)的、不可改變的結(jié)構(gòu)元素。通過(guò)神經(jīng)網(wǎng)絡(luò)(或其他深度學(xué)習(xí)框架)學(xué)習(xí)外部和內(nèi)部數(shù)據(jù)。最后還要通過(guò)提示符進(jìn)行交互,以掌握特定知識(shí)。
正如 Karpathy 所說(shuō),只通過(guò)軟件 2.0 是無(wú)法構(gòu)建 AGI 的,它需要從每種范例中獲取不同的東西。未來(lái)的 AGI 將擁有人工基因組來(lái)感知世界,成為一個(gè)元學(xué)習(xí)者(meta-learner)。人們則是利用身體進(jìn)行實(shí)賤,與世界交互。發(fā)展型機(jī)器人則試圖通過(guò)結(jié)合人工智能、機(jī)器人技術(shù)和認(rèn)知科學(xué)來(lái)實(shí)現(xiàn)更好的性能。
*聲明:該篇文章只代表作者觀點(diǎn)。