展會信息港展會大全

人工智能和編程的終章
來源:互聯(lián)網(wǎng)   發(fā)布日期:2023-10-11 17:52:31   瀏覽:4064次  

導(dǎo)讀:【CSDN 編者按】隨著人工智能以及大型語言模型的崛起,人工編程真的來到了終章了嗎?作者通過對 ChatGPT 的一些小測試,來檢驗人工智能是否真的可以取代人工編寫代碼,最后得出大型語言模型對人工智能以及計算機科學(xué)的影響。 作者 | Brian Hayes 譯者|Ric G...

【CSDN 編者按】隨著人工智能以及大型語言模型的崛起,人工編程真的來到了終章了嗎?作者通過對 ChatGPT 的一些小測試,來檢驗人工智能是否真的可以取代人工編寫代碼,最后得出大型語言模型對人工智能以及計算機科學(xué)的影響。

作者 | Brian Hayes

譯者|Ric Guan

出品 | CSDN(ID:CSDNnews)

今年早些時候,Matt Welsh 宣布編程正在步入終結(jié)。他在 ACM Communications 中寫道:

我相信 “編寫程序” 的傳統(tǒng)想法正在走向消亡,事實上,對于除非常專業(yè)的應(yīng)用程序之外的所有應(yīng)用程序,正如我們所知,大多數(shù)軟件編程都將被經(jīng)過訓(xùn)練的人工智能系統(tǒng)所取代。在一些只需要 “簡單” 程序的情況下(畢竟,并不是所有東西都需要在 GPU 集群上運行的數(shù)千億個參數(shù)的模型),這些程序本身將直接由人工智能生成,而不是手工編碼 。

幾周后,在一次演講中,威爾士擴大了他的死亡觀察范圍。走向墳?zāi)沟牟粌H僅是編程藝術(shù),還有整個計算機科學(xué)。所有計算機科學(xué)都 “注定要失敗” 。(下圖是演講的屏幕截圖。)

這些悲傷消息的傳遞者似乎并沒有悲痛欲絕。盡管 Welsh 已經(jīng)成為一名計算機科學(xué)教師和實踐者(在哈佛、谷歌、蘋果和其他地方),但他似乎渴望繼續(xù)下一步。“無論如何,寫代碼很糟糕!” 他宣稱。

我自己對后編程未來的前景并不那么樂觀。首先,我持懷疑態(tài)度。我認為我們還沒有跨過機器學(xué)會自己解決有趣的計算問題的門檻。我認為我們還沒有接近這一點,或者正朝著正確的方向前進。此外,如果事實證明我的觀點是錯誤的,我的沖動不是默許而是抵制。一方面,我不歡迎我們的新人工智能霸主。即使他們被證明是比我更好的程序員,我仍然會繼續(xù)使用我的代碼編輯器和編譯器,謝謝。“編程很糟糕?” 對我來說,它長期以來一直是我快樂和啟迪的源泉。我發(fā)現(xiàn)它也是理解世界的一個有價值的工具。在我能夠?qū)⒁粋想法簡化為代碼之前,我永遠不確定我是否理解了它。為了從這種學(xué)習(xí)經(jīng)驗中受益,我必須實際編寫程序,而不僅僅是說一些魔法詞并從阿拉丁的人工智能燈中召喚一個精靈。

大型語言模型

可編程機器可以編寫自己的程序的想法深深植根于計算歷史。Charles Babbage 早在 1836 年討論他的分析機計劃時就暗示了這種可能性。當(dāng) Fortran 于 1957 年推出時,它的正式名稱是“FORTRAN 自動編碼系統(tǒng)”。它的既定目標(biāo)是讓計算機“為自己編碼問題并生成與人類編碼員一樣好的程序(但沒有錯誤)”。

Fortran 并沒有消除編程技巧(或錯誤),但它使過程變得不那么乏味。后來的語言和其他工具帶來了進一步的改進。而全自動編程的夢想從未破滅。機器似乎比大多數(shù)人更適合編程。計算機有條不紊、受規(guī)則約束、挑剔且注重字面意思所有這些特征(無論正確與否)都與高手程序員聯(lián)系在一起。

但諷刺的是,現(xiàn)在準備承擔(dān)編程任務(wù)的人工智能系統(tǒng)卻奇怪地不像計算機。他們的性格更像Deanna Troi,而不是 Commander Data。邏輯一致性、因果推理和對細節(jié)的仔細關(guān)注并不是他們的強項。當(dāng)他們似乎在思考深刻的想法時,他們有不可思議的輝煌時刻,但他們也有可能遭遇驚人的失敗公然、厚顏無恥的理性失誤。他們讓我想起一句古老的俏皮話:人都會犯錯,而真正把事情搞砸則需要計算機。

最新的人工智能系統(tǒng)被稱為大語言模型(LLM)。與大多數(shù)其他近期人工智能發(fā)明一樣,它們建立在人工神經(jīng)網(wǎng)絡(luò)之上,這是一種受大腦結(jié)構(gòu)啟發(fā)的多層結(jié)構(gòu)。網(wǎng)絡(luò)的節(jié)點類似于生物神經(jīng)元,節(jié)點之間的連接起著突觸的作用,突觸是信號從一個神經(jīng)元傳遞到另一個神經(jīng)元的連接點。訓(xùn)練網(wǎng)絡(luò)可以調(diào)整連接的強度或權(quán)重。在語言模型中,訓(xùn)練是通過向網(wǎng)絡(luò)強制輸入大量文本來完成的。該過程完成后,連接權(quán)重會對訓(xùn)練文本的語言特征的詳細統(tǒng)計數(shù)據(jù)進行編碼。在最大的模型中,權(quán)重數(shù)量為 1000 億個或更多。

在這種情況下,模型一詞可能會產(chǎn)生誤導(dǎo)。這個詞并不是指比例模型或微型模型,如模型飛機。相反,它指的是預(yù)測模型,就像科學(xué)中常見的數(shù)學(xué)模型一樣。正如大氣模型預(yù)測明天的天氣一樣,語言模型預(yù)測句子中的下一個單詞。

最著名的大型語言模型是 ChatGPT,它于去年秋天向公眾發(fā)布,引起了極大的關(guān)注?s寫 GPT Gee Pee Tee:我的舌頭不斷地被這三個押韻的音節(jié)絆倒。其他 AI 產(chǎn)品的名字很可愛,比如Bart、Claude、Llama;我希望我能以同樣的精神重命名 GPT。我會把它稱為 Geppetto,它與輔音的模式相呼應(yīng)。GPT 代表 Generative Pre-Trained Transformer (生成式預(yù)訓(xùn)練變壓器);系統(tǒng)的聊天版本配備了對話式人機界面。ChatGPT 由 OpenAI 開發(fā),該公司成立于 2015 年,旨在將人工智能從少數(shù)富有的科技公司的控制中解放出來。OpenAI 成功地完成了這一使命,以至于它已經(jīng)成為一家富有的科技公司。

ChatGPT 因其用詞方式、能說會道、流利的英語和其他語言而既令人欽佩又令人震驚。該聊天機器人可以模仿著名作家、講笑話、寫情書、翻譯詩歌、寫垃圾郵件、“幫助”學(xué)生完成家庭作業(yè),以及編造錯誤信息以進行政治惡作劇。無論好壞,這些語言能力代表了驚人的技術(shù)進步。曾經(jīng)難以構(gòu)建一個可理解的句子的計算機突然變成了能說會道的文字大師。GPT 所說的可能是真的,也可能不是,但它幾乎總是措辭得體。

ChatGPT 發(fā)布后不久,我驚訝地發(fā)現(xiàn)它的語言掌握擴展到了編程語言。該模型的訓(xùn)練集似乎不僅包括多種自然語言,還包括來自 GitHub 等公共存儲庫的大量程序源代碼;诖速Y源,GPT 能夠根據(jù)命令編寫新程序。我發(fā)現(xiàn)這很令人驚訝,因為計算機對它們的輸入是如此挑剔和無情。盡管電腦有時存在諸如拼寫錯誤之類的小錯誤,人類閱讀者仍會努力理解一句話。但如果計算機得到的輸入,哪怕只有一個逗號或不匹配的括號,它就會嘔吐亂碼。具有潛在統(tǒng)計或概率性質(zhì)的語言模型似乎不太可能維持超過幾行所需的精度。

我在這件事上又錯了。大型語言模型的一項關(guān)鍵創(chuàng)新,即注意力機制,解決了這個問題。當(dāng)我開始自己使用 ChatGPT 進行實驗時,我很快發(fā)現(xiàn)它確實可以生成沒有粗心語法錯誤的程序。

但其他問題也隨之出現(xiàn)。

攀登單詞階梯

當(dāng)你坐下來與機器聊天時,你立即會面臨一個尷尬的問題:“我們該聊什么?” 我正在尋找一個可以公平衡量 ChatGPT 編程能力的主題。我想要一個可以通過計算手段解決的問題,但這不需要做太多算術(shù),而這被認為是大型語言模型的弱點之一。我選擇了 Lewis Carroll 150 年前發(fā)明的字謎游戲,并由 Donald E. Knuth 在 20 世紀 90 年代進行了深入分析。

在下面的文字記錄中,我這邊的每次交換都被標(biāo)記為 BR;玫瑰花結(jié)是 OpenAI 徽標(biāo),指定 ChatGPT 的響應(yīng)。

當(dāng)我看到這些句子在屏幕上展開時聊天機器人逐字逐句地打出它們,有點不穩(wěn)定,好像在停下來整理思緒我立即被系統(tǒng)的英語能力所震驚。GPT 以簡單、有力的散文形式列出了單詞梯子的所有基本特征:這是一個游戲或謎題,你通過一次更改一個字母從一個單詞到另一個單詞,梯子的每個梯級必須是一個英文單詞,目標(biāo) 就是找到從起始詞到目標(biāo)詞的最短可能序列。我自己無法更好地解釋它。最有幫助的是 COLD -> WARM 的工作示例。

給人留下語言能力印象的不僅僅是單個句子。句子按段落組織,段落串在一起形成連貫的話語。太棒了!

同樣值得注意的是機器人處理模糊和草率輸入的能力。我最初的查詢被表述為是或否問題,但 ChatGPT 正確地將其解釋為請求:“告訴我你對單詞階梯的了解。” 我的第二條指令忽略了任何印刷提示,表明 LEAD 和 GOLD 應(yīng)被理解為文字,而不是金屬。聊天機器人本來有權(quán)向我提供煉金配方,但它卻提供了缺少的引號。

然而,拋開所有這些語言和修辭的復(fù)雜性,我真正想測試的是該程序解決單詞階梯問題的能力。上面文字記錄中的兩個示例都可以在網(wǎng)絡(luò)上找到,因此它們很可能出現(xiàn)在 ChatGPT 的訓(xùn)練數(shù)據(jù)中。換句話說,大型語言模型可能只是記住了解決方案,而不是構(gòu)建它們。于是我提交了一個更艱巨的作業(yè):

乍一看,ChatGPT 似乎再次取得了勝利,解決了我確信它以前從未遇到過的難題。但仔細看看。MARSH -> MARIS 需要兩個字母替換,PARIL -> APRIL 也是如此。MARIS 和 PARIL 作為“有效詞”的地位也可能受到質(zhì)疑。我已投訴:

哇!該機器人提供了油腔滑調(diào)的懺悔和道歉,但“更正”的詞梯比以往任何時候都更加瘋狂。看起來我們正在和鵝媽媽童謠中的矮胖子玩拼字游戲,并且還宣稱 “我說 APRCHI 是一個詞,他就是一個詞!” 然后分散所有的瓷磚。

這并不是一次單獨的、獨一無二的失敗。我用 ChatGPT 解決字梯的所有嘗試都偏離了軌道,盡管并不總是以同樣的方式。在一個案例中,我要求提供從 REACH 到 GRASP 的階梯。AI專家提出了這個解決方案:

REACH -> TEACH -> PEACH -> PEACE -> PACES -> PARES -> PARSE -> PARSE -> PARSE-> PARSE -> PARKS -> PARKS -> PARKS -> PARKS -> PARES -> GRASP.

還有這個:

SWORD -> SWARD -> REWARD -> REDRAW -> REDREW ->REDREW -> REDREW -> REDREW -> REDRAW -> REPAID -> REPAIR -> PEACE

現(xiàn)在我們像剛學(xué)數(shù)數(shù)的小孩子一樣胡言亂語:“一,二,三,四,三,四,四,四,七,藍,十!”

到目前為止我展示的所有結(jié)果都是用 ChatGPT 3.5 版本記錄的。我還嘗試了 3 月份推出的新改進版本 4.0。更新后的機器人散發(fā)出同樣和藹可親的自信,但我擔(dān)心它也有同樣的傾向,陷入不經(jīng)意的語無倫次:

梯子一開始很好,有四個步驟,遵循所有規(guī)則。但隨后人工智能就會走神。從 PLAGE 到 PAGES 需要四個字母替換。然后是 PASES,它不是一個單詞(據(jù)我所知),并且無論如何這里都不需要,因為序列可以直接從 PAGES 轉(zhuǎn)到 PARES。更多的愚蠢隨之而來。盡管如此,我還是很欣賞關(guān)于 PLAGE 的信息說明。

最近我也有機會嘗試 Llama 2,一個由 Meta(Facebook 人)出版的 LLM。盡管這個模型是獨立于 GPT 開發(fā)的,但它似乎有一些相同的心理怪癖,例如制定規(guī)則然后無視它們。當(dāng)我要求一個連接 REACH 和 GRASP 的階梯時,Llama 2 提出了這樣的建議:

REACH -> TEACH -> DEACH -> LEACH -> SPEECH -> SEAT ->FEET -> GRASP

預(yù)言和代碼猴子

Matt Welsh 提到了構(gòu)建在大型語言模型之上的計算系統(tǒng)的兩種操作模式。到目前為止,我們一直在我所說的預(yù)言模式下工作,在這種模式下,你提出一個問題,計算機就會返回一個答案。你提供一對單詞,系統(tǒng)會找到一個連接它們的梯子,并執(zhí)行到達那里所需的任何計算。您交付一個裝滿財務(wù)記錄的鞋盒,計算機填寫您的 1040 表格。您編譯歷史氣候數(shù)據(jù),計算機預(yù)測 2050 年的全球平均氣溫。

人工智能預(yù)言機的替代品是人工智能代碼猴子。在第二種模式下,機器不會直接回答你的問題或執(zhí)行你的計算;相反,它會創(chuàng)建一個可以在傳統(tǒng)計算機上運行的程序。您從機器人返回的不是字梯,而是生成字梯的程序,用您選擇的編程語言編寫。您無需填寫完整的納稅申報表,而是獲得報稅軟件;氣候模型代替了溫度預(yù)測。

讓我們用 ChatGPT 3.5 來嘗試一下:

您可以使用 wordLadder 功能來解決字梯謎題。這是一個用法示例:

它的輸出為:

請注意,這是一個基本演示,對于更大的字梯或更復(fù)雜的場景,可能需要額外的優(yōu)化或算法,例如廣度優(yōu)先搜索。

同樣,粗略地瀏覽一下輸出表明性能是成功的。ChatGPT 的 JavaScript 似乎和英語一樣流利。它知道 if、while 和 for 語句的語法,以及所有挑剔的標(biāo)點符號和括號規(guī)則。機器生成的程序似乎將所有這些組件組合在一起以完成指定的任務(wù)。還要注意大量的解釋性評論,這肯定是為了我們的利益,而不是為了它。同樣,描述性變量名稱(currentWord、newWord、ladder)。

ChatGPT 還主動包含了在特定示例( MARCH 到 APRIL )上運行程序的說明,并且它打印出了結(jié)果,該結(jié)果與我們之前的交流中給出的答案相匹配。該輸出是通過實際運行程序生成的嗎?ChatGPT 并沒有明確說明,但它確實聲稱,如果您按照指示運行該程序,您將得到顯示的結(jié)果(在所有荒謬的榮耀中)。

我們可以通過將程序加載到 Web 瀏覽器或其他 JavaScript 執(zhí)行環(huán)境中來測試這一說法。結(jié)論是:被抓!程序確實運行了,但沒有產(chǎn)生指定的結(jié)果。該程序的真實輸出是:MARCH -> AARCH -> APRCH -> APRIH -> APRIL。這個序列沒有那么奇怪,因為它遵循一次只改變一個字母的規(guī)則,并且所有“單詞”都恰好有五個字母。另一方面,在英語詞典中找不到任何中間“單詞”。

有一個簡單的算法可以生成序列 MARCH -> AARCH -> APRCH -> APRIH -> APRIL。只需從左到右逐步瀏覽起始單詞,更改每個位置的字母,使其與目標(biāo)單詞中相應(yīng)的字母匹配即可。遵循此規(guī)則,任何一對五個字母的單詞都可以在不超過五個步驟內(nèi)進行階梯排列。MARCH -> APRIL 只需四步,因為中間的 R 不需要改變。我無法想象有一種更簡單的方法來制作單詞階梯當(dāng)然,假設(shè)你愿意讓任何字母的混雜都算作一個單詞。

ChatGPT 創(chuàng)建的程序可以使用這個快速而骯臟的例程,但它會做一些更加乏味的事情:它構(gòu)建所有可能的梯子,其第一個梯級是起始詞,并繼續(xù)擴展這些梯子,直到它偶然發(fā)現(xiàn)一個包含 目標(biāo)詞。這是一種浪費驚人的蠻力算法。起始詞的每個字母都可以以 25 種方式進行更改。因此,一個 5 個字母的單詞有 125 個可能的后繼者。當(dāng)你到達五級梯子時,就有 1.9 億種可能性。(我在這里提供的示例,例如 MARCH -> APRIL 和 REACH -> GRASP,有一個不變的字母,因此解決方案只需要四個步驟。嘗試計算完整的五步解決方案耗盡了我的耐心。)

第 4 代代碼猴子

讓我們嘗試使用 ChatGPT 4 進行相同的代碼編寫練習(xí)。給出相同的提示,新機器人的響應(yīng)方式如下:

該程序具有相同的整體結(jié)構(gòu)(一個 while 循環(huán),內(nèi)部有兩個嵌套的 for 循環(huán)),并且采用相同的算法策略(在一個位置生成與給定單詞不同的所有字符串)。但 GPT-4 版本有一個很大的新穎之處:承認單詞列表是必不可少的。通過這種改變,我們終于有希望生成一個由真實單詞組成的階梯。

盡管 GPT-4 認識到需要一個列表,但它僅提供一個占位符,即它為上面給出的 REACH -> GRASP 示例配置的 10 個單詞序列。這個單詞列表的存根沒有多大用處,甚至對于重新生成虛假的“REACH-to-GRASP”階梯也沒有什么用處。如果您嘗試這樣做,程序?qū)蟾娌淮嬖谔葑。這個結(jié)果并沒有錯,因為給定的 10 個單詞并不能形成每一步僅更改一個字母的有效路徑。

即使列表中的單詞經(jīng)過精心挑選,10 的詞匯量也是非常微不足道的。對于語言模型來說,生成更大的單詞列表似乎是一項很容易的任務(wù)。畢竟,LLM 是在龐大的文本語料庫上進行訓(xùn)練的,其中幾乎所有英語單詞都可能至少出現(xiàn)一次,而常見單詞會出現(xiàn)數(shù)百萬次。機器人不能提取這些單詞的代表性樣本嗎?答案顯然是否定的。盡管 GPT 可以說已經(jīng)“閱讀”了所有這些文本,但它并沒有以任何易于訪問的形式存儲這些單詞。(人類讀者也是如此。你能通過回顧一生的閱讀經(jīng)歷,列出你詞匯量中最常見的 10 個五字母單詞嗎?

當(dāng)我要求 ChatGPT 4 生成一個單詞列表時,它抱歉地表示反對:“我很抱歉造成混亂,但作為 OpenAI 開發(fā)的人工智能,我無法直接訪問單詞數(shù)據(jù)庫或獲取數(shù)據(jù)的能力來自外部來源……” 所以我嘗試了一些技巧,要求機器人寫一個 1000 字的故事,然后按頻率對故事的單詞進行排序。這個詭計奏效了,但樣本太小,沒有多大用處。只要堅持下去,我也許可以從 GPT 中哄出一個可以接受的列表,但我卻走了一條捷徑。畢竟我不是OpenAI開發(fā)的AI,我可以訪問外部資源。我挪用了 Knuth 為他的單詞階梯實驗而整理的 5,757 個五個字母的英語單詞列表。有了這個列表,GPT-4 編寫的程序就會找到以下九步梯形圖:

REACH -> PEACH -> PEACE -> PLACE -> PLANE ->PLANS -> GLANS -> GLASS -> GRASS -> GRASP

這個結(jié)果與 Knuth 自己的字梯程序的輸出完全匹配,該程序是他 30 年前在斯坦福大學(xué) Graphbase 上發(fā)表的。

在這一點上,我必須承認,在一點外部幫助下,ChatGPT 最終完成了我的要求。它編寫了一個可以構(gòu)造有效字梯的程序。但我還是持保留態(tài)度。盡管 GPT-4 和 Knuth 編寫的程序產(chǎn)生相同的輸出,但程序本身并不等效,甚至不相似。

Knuth 從相反的方向處理這個問題,不是從所有可能的五個字母字符串的集合開始(它們的數(shù)量還不到 1200 萬),而是從他的 5,757 個常見英語單詞的小得多的列表開始。然后,他構(gòu)建一個圖(或網(wǎng)絡(luò)),其中每個單詞都是一個節(jié)點,當(dāng)且僅當(dāng)對應(yīng)的單詞相差一個字母時,兩個節(jié)點才通過邊連接。下圖顯示了此類圖的一個片段。

在圖中,字梯是從起始節(jié)點到目標(biāo)節(jié)點的一系列邊。最佳梯子是最短的路徑,遍歷最少數(shù)量的邊。例如,從 leash 到 retch 的最佳路徑是 leash -> leach -> reach -> retch,但也有更長的路徑,例如 leash -> leach -> beach -> peach -> reach -> retch。為了尋找最短路徑,Knuth 采用了 Edsger W. Dijkstra 在 20 世紀 50 年代設(shè)計的算法。

Knuth 的單詞階梯程序需要預(yù)先投資才能將簡單的單詞列表轉(zhuǎn)換為圖表。另一方面,它避免了浪費地生成數(shù)千或數(shù)百萬個五個字母的字符串,而這些字符串不可能是后者的元素。在解決 REACH -> GRASP 問題的過程中,GPT-4 程序產(chǎn)生了 219,180 個這樣的字符串;其中只有 2,792 個(略多于 1%)是真實單詞。

如果我所描述的各種單詞階梯程序是學(xué)生提交的,那么我會給沒有單詞列表的版本打不及格的分數(shù)。帶有列表的 GPT-4 程序會通過,但出于效率和優(yōu)雅的考慮,我只會給 Knuth 程序打最高分。

為什么聊天機器人偏愛劣質(zhì)算法?您只需通過谷歌搜索“字梯程序”即可獲得線索。幾乎所有排名靠前的結(jié)果都來自 Leetcode、GeeksForGeeks 和 RosettaCode 等網(wǎng)站。這些網(wǎng)站顯然是為了迎合求職者和編程競賽的競爭對手,其解決方案要求生成每個單詞的所有 125 個單字母變體,就像 GPT 程序一樣。因為這樣的網(wǎng)站數(shù)量眾多似乎有數(shù)百個它們比其他來源更重要,例如 Knuth 的書(如果這些文本確實出現(xiàn)在訓(xùn)練集中的話)。這是否意味著我們應(yīng)該將錯誤的算法選擇歸咎于 Leetcode,而不是 GPT?相反,我想指出協(xié)議不可避免的弱點,其中最常見的答案默認是正確的答案。

每當(dāng)我想到大型語言模型正在編寫我們所有的軟件時,另一個相關(guān)的擔(dān)憂就會困擾著我。新的算法從哪里來?大學(xué)語言模型可能會在重新混合現(xiàn)有項目的元素方面發(fā)揮創(chuàng)意,但我看不出它有什么方法可以發(fā)明全新的、更好的東西。

梯子這個詞已經(jīng)夠了!

我承認我已經(jīng)太過分了,用一個特殊(且無關(guān)緊要的)問題的太多變體來折磨 ChatGPT。也許大學(xué)語言模型在其他計算任務(wù)上表現(xiàn)得更好。我嘗試過幾種,結(jié)果好壞參半。我只想討論其中之一,我發(fā)現(xiàn) ChatGPT 的努力相當(dāng)令人心酸。

使用 ChatGPT 3.5,我詢問第 100 個斐波那契數(shù)的值。請注意,我的問題是在 Oracle 模式下提出的;我要求的是這個數(shù)字,而不是一個計算它的程序。盡管如此,ChatGPT 仍自愿編寫一個斐波那契程序,然后呈現(xiàn)該程序的輸出。

該程序?qū)崿F(xiàn)的算法在數(shù)學(xué)上是正確的;它直接來自斐波那契數(shù)列的定義,斐波那契數(shù)列是從 {0, 1} 開始的序列的成員,每個后續(xù)元素都等于前兩項之和。給出的答案也是正確的:354224848179261915075 確實是第100個斐波那契數(shù)。所以有什么問題?就是中間句:“當(dāng)你運行這段代碼時,它將輸出第 100 個斐波那契數(shù)。” 這不是真的。如果運行代碼,您將得到錯誤的值 354224848179262000000。最近版本的 JavaScript 提供了 BigInt 數(shù)據(jù)類型來解決此問題,但必須顯式指定 BigInt,而 ChatGPT 程序不會這樣做。這種異,F(xiàn)象的原因在JavaScript 使用浮點運算,即使是整數(shù)值。根據(jù) IEEE 浮點標(biāo)準,在不損失精度的情況下可以表示的最大整數(shù)是 2531; 第 100 個斐波那契數(shù)大約是 268。這就是我所說的令人心酸的思:ChatGPT 給出了正確的答案,但它聲稱用來計算該答案的方法無法提供它。機器人一定是通過其他方式找到了正確的值,但具體方式并未透露。

將同樣的任務(wù)交給 ChatGPT 4.0 會讓我們踏上更加陌生的旅程。在接下來的交互中,我激活了 Code Interpreter,這是一個 ChatGPT 插件,允許系統(tǒng)測試和運行它編寫的一些代碼。顯然,機器人利用了這一功能,首先提出了一個因未知原因而失敗的程序:

這里 ChatGPT 是用 Python 編寫的,Python 是 Code Interpreter 支持的主要編程語言。編寫程序的第一次嘗試是基于斐波那契矩陣的求冪:

這是一種眾所周知且有效的方法,并且程序正確地實現(xiàn)了它。然而,由于神秘的原因,代碼解釋器無法執(zhí)行該程序。(該代碼在標(biāo)準 Python 環(huán)境中運行良好,并返回正確的答案。)

此時,機器人將轉(zhuǎn)向一個全新的方向并起飛,建議通過稱為比奈公式的數(shù)學(xué)恒等式來計算所需的斐波那契值。它已經(jīng)寫出了數(shù)學(xué)表達式,但隨后又改變了主意。它正確地預(yù)見了數(shù)值精度的問題:如果給定 5 的平方根的精確值,該公式將產(chǎn)生精確的結(jié)果,但這是不可行的。

因此,現(xiàn)在 ChatGPT 采取了另一種策略,采用與 3.5 版本相同的迭代算法。這次我們得到了正確的答案,因為 Python(與 JavaScript 不同)在處理大整數(shù)時沒有任何問題。

這次的表現(xiàn)給我留下了深刻的印象,不僅僅是正確的答案,還有系統(tǒng)勇敢的堅持。盡管ChatGPT 陷入困境,但它仍然堅持不懈,對意想不到的困難感到困惑,但拒絕放棄。“嗯,那個矩陣法應(yīng)該有效。但是,無論如何,我們還是試試比奈公式吧……哦,等等,我忘了……不管怎樣,沒必要對此這么花哨。讓我們以顯而易見的、緩慢的方式來做吧。” 我覺得這是一種非常人性化的解決問題的方法。在機器中看到這種行為很奇怪。

記錄成功和失敗的分數(shù)

我的小實驗讓我對人工智能神諭和人工智能代碼猴子即將排擠人類程序員的說法表示懷疑。我看到了一些成功,但更多的是失敗。這個慘淡的記錄是在相對簡單的計算任務(wù)上編制的,這些任務(wù)的解決方案是眾所周知的并被廣泛發(fā)布。

其他人對 LLM 代碼生成進行了更廣泛和更深入的評估。在本文末尾的參考書目中,我列出了五項此類研究。我想簡要總結(jié)一下他們報告的一些結(jié)果。

兩年前,Mark Chen 和 OpenAI 的 50 多名同事投入了大量精力來測量 Codex 的準確性,Codex 是 ChatGPT 3 的一個分支,專門用于編寫程序代碼。(Codex 自此成為驅(qū)動 GitHub Copilot(“程序員的助手”)的引擎。) 創(chuàng)建了一套包含 164 個任務(wù)的任務(wù),可以通過編寫 Python 程序來完成。這些任務(wù)主要是教科書練習(xí)、編程競賽以及有關(guān)如何在編碼工作面試中取得好成績的(數(shù)量驚人的)文獻中的類型。大多數(shù)任務(wù)只需幾行代碼即可完成。示例:計算給定單詞中的元音數(shù),確定整數(shù)是質(zhì)數(shù)還是合數(shù)。

陳教授團隊還對定義成功和失敗的標(biāo)準進行了一些思考。由于 LLM 過程是不確定的(單詞選擇基于概率),因此模型可能會在第一次嘗試時生成有缺陷的程序,但如果允許繼續(xù)嘗試,最終會得出正確的響應(yīng)。一個稱為溫度的參數(shù)控制不確定性的程度。在零溫度下,模型在每一步總是選擇最可能的單詞;隨著溫度升高,隨機性被引入,允許選擇不太可能的單詞。陳等人。通過采用三個成功基準來考慮這種變化的可能性:

pass@1:LLM 在第一次嘗試時生成正確的程序

pass@10:生成的 10 個程序中至少有一個是正確的

pass@100:生成的 100 個程序中至少有一個是正確的

Pass@1 測試是在零溫度下進行的,因此模型始終會給出最佳猜測結(jié)果。pass@10 和 pass@100 試驗是在更高的溫度下進行的,使系統(tǒng)能夠探索更廣泛的潛在解決方案。

作者在所有 164 項任務(wù)上評估了 Codex 的多個版本。對于最大、功能最強大的 Codex 版本,pass@1 率約為 29%,pass@10 率為 47%,pass@100 達到 72%?吹竭@些數(shù)字,我們應(yīng)該感到印象深刻還是感到震驚?Codex 在幾乎三分之一的時間(當(dāng)溫度設(shè)置為零時)第一次嘗試就正確,這值得慶祝嗎?或者,如果您愿意篩選 100 個提議的計劃,尋找一個正確的計劃,成功率會攀升至近四分之三?我個人的觀點是:如果您將當(dāng)前這一代 LLM 視為長期研究計劃的開創(chuàng)性努力,那么結(jié)果是令人鼓舞的。但如果你認為這項技術(shù)可以立即替代手工編碼的軟件,那就沒什么希望了。我們還遠未達到必要的可靠性水平。

其他研究也得出了大致相似的結(jié)果。Fredrico Cassano 等人。評估多個 LLM 以各種編程語言生成代碼的表現(xiàn);他們報告的 pass@1 率范圍很廣,但只有兩個超過 50%。Alessio Buscemi 在 40 項編碼任務(wù)上測試了 ChatGPT 3.5,要求使用 10 種語言編寫的程序,并將每個查詢重復(fù) 10 次。在 4,000 次試驗中,1,833 次產(chǎn)生了可以編譯和執(zhí)行的代碼。Liu Zhijie 等人。他們對 ChatGPT 的評估基于 Leetcode 網(wǎng)站上發(fā)布的問題。通過將生成的代碼提交給自動 Leetcode 評分流程來評判結(jié)果。所有問題的平均接受率范圍從 C 語言編寫的程序的 31% 到 Python 程序的 50%。Liu 等人。另一個有趣的觀察是:ChatGPT 在 2021 年 9 月(GPT 訓(xùn)練集的截止日期)之后發(fā)布的問題上得分要差得多。他們推測機器人可能會更好地解決早期的問題,因為它在訓(xùn)練期間已經(jīng)看到了解決方案。

Li Zhong 和 Zilong Wang 最近發(fā)表的一篇論文超越了程序正確性的基本問題,考慮了魯棒性和可靠性。生成的程序能否正確響應(yīng)格式錯誤的輸入或外部錯誤,例如嘗試打開不存在的文件時?即使 LLM 的提示中包含了一個展示如何正確處理此類問題的示例,Zhong 和 Wang 發(fā)現(xiàn)生成的代碼在 30% 到 50% 的情況下都無法做到這一點。

除了這些令人沮喪的結(jié)果之外,我自己還有更多的疑慮。幾乎所有測試都是通過簡短的代碼片段進行的。一個在編寫 10 行程序時遇到困難的LLM 在編寫 100 行或 1,000 行程序時可能會遇到更大的困難。此外,簡單的通過/失敗分級是對代碼質(zhì)量的非常粗略的衡量?紤]一下 Chen 小組基準測試套件中的素性測試。這是 Codex 編寫的程序之一:

這段代碼被評為正確它應(yīng)該是正確的,因為它永遠不會將質(zhì)數(shù)錯誤地分類為合數(shù),反之亦然。然而,當(dāng) n 很大時,您可能沒有耐心或壽命來等待判決。該算法嘗試將 n 除以 2 到 n1 之間的每個整數(shù)。

LLM 不符常規(guī)的實用性

對于大型語言模型來說,現(xiàn)在還處于早期階段。ChatGPT 發(fā)布不到一年;底層技術(shù)只有大約六年的歷史。雖然我非?隙ㄗ约盒Q LLM 還沒有準備好征服編碼世界,但我不能如此自信地預(yù)測他們永遠不會。這些模型肯定會改進,我們會更好地使用它們。已經(jīng)有一個新興行業(yè)提供 “即時工程” 指導(dǎo),作為充分利用每個查詢的方法。

提高 LLM 表現(xiàn)的另一種方法可能是與另一種計算系統(tǒng)形成混合體,該系統(tǒng)配備邏輯和推理工具,而不是純粹的語言分析工具。Doug Lenat 在他最近去世前夕,提議將 LLM 與 Cyc 結(jié)合起來,Cyc 是他花費四十年努力建立的一個巨大的常識數(shù)據(jù)庫。Stephen Wolfram 正在致力于將 ChatGPT 集成到 Wolfram|Alpha 中,Wolfram|Alpha 是一個精選數(shù)據(jù)和算法的在線集合。

盡管如此,一些阻礙 LLM 課程生成的障礙似乎很難克服。

語言模型通過簡單的方式發(fā)揮其魔力:在撰寫句子或段落的過程中,LLM 根據(jù)之前的單詞選擇下一個單詞。這就像在手機上寫短信一樣:你輸入“我會見你……”,軟件會建議一些替代的延續(xù):“明天”、“很快”、“稍后”。在 LLM 中,每個候選人都會被分配一個概率,該概率是根據(jù)模型訓(xùn)練集中所有文本的分析計算得出的。

一個多世紀前,俄羅斯數(shù)學(xué)家 A. A. Markov 首次探索了通過這種統(tǒng)計分析生成文本的想法。他的過程現(xiàn)在被稱為 n-gram 模型,其中 n 是在選擇序列的下一個元素時要考慮的單詞(或字符或其他符號)的數(shù)量。長期以來,我一直對 n-gram 過程著迷,盡管主要是因為它的喜劇可能性。(在 40 年前發(fā)表的一篇文章中,我將其稱為“將文學(xué)變成胡言亂語的藝術(shù)。”)

當(dāng)然,ChatGPT 和其他最近的 LLM 不僅僅是 n 元模型。他們的神經(jīng)網(wǎng)絡(luò)捕獲的語言統(tǒng)計特征遠遠超出了 n 個連續(xù)符號的序列。特別重要的是注意力機制,它能夠跟蹤任意距離處選定符號之間的依賴關(guān)系。在自然語言中,這種手段對于維持主語和動詞的一致性,或者將代詞與其所指對象相關(guān)聯(lián)非常有用。在編程語言中,注意力機制確保了多部分語法結(jié)構(gòu)的完整性,例如 if...then...else,并且它保持括號正確配對和嵌套。

ChatGPT 和其他 LLM 也受益于人類讀者監(jiān)督的強化學(xué)習(xí)。當(dāng)讀者評價模型輸出的質(zhì)量和準確性時,正面或負面的反饋有助于塑造未來的反應(yīng)。

然而,即使有了這些改進,LLM 本質(zhì)上仍然是一種根據(jù)現(xiàn)有文本中單詞出現(xiàn)的概率構(gòu)建新文本的工具。以我的思維方式,那不是思考。這是比較膚淺的東西,專注于文字而不是想法。鑒于這種粗糙的機制,我對 LLM 能夠取得如此大的成就感到既驚訝又困惑。

幾十年來,人工智能的建筑師相信真正的智能(無論是自然的還是人工的)需要一個世界的心理模型。為了理解你周圍(和你內(nèi)心)發(fā)生的事情,你需要對事物如何運作、它們?nèi)绾谓M合在一起、接下來會發(fā)生什么、因果關(guān)系有直覺。萊納特堅持認為,最重要的知識是你在開始讀書之前很久就獲得的知識。你通過跌倒來了解重力。當(dāng)你發(fā)現(xiàn)一座積木塔很容易被推倒但很難重建時,你就了解了熵。在語言開始扎根之前,你會在嬰兒期了解痛苦、恐懼、饑餓和愛。盒子里的大腦無法獲得這種體驗,因為無法直接進入物理或社會宇宙。

LLM 似乎是對這些想法的反駁。畢竟,它們是語言的模型,而不是世界的模型。他們沒有具體化身,沒有身體存在可以讓他們通過艱苦的學(xué)習(xí)來學(xué)習(xí)。他們除了言語之外什么都不懂,怎么聽起來那么聰明、那么世俗?

在這一點上人們意見不一。該技術(shù)的批評者表示,這都是虛假和幻覺。Emily Bender、Timnit Gebru 和其他人發(fā)表的一篇著名(或臭名昭著?)論文將這些模型稱為“隨機鸚鵡”。批評者說,雖然 LLM 可能會說得清楚、流利,但他不知道自己在說什么。不像孩子,孩子學(xué)習(xí)單詞和事物之間的映射看!一頭牛、一只貓、一輛汽車 LLM 只能將單詞與其他單詞聯(lián)系起來。在訓(xùn)練過程中,它觀察到雨傘經(jīng)常出現(xiàn)在與下雨相同的環(huán)境中,但它沒有被淋濕的經(jīng)歷。該模型的操作方式類似于數(shù)學(xué)中的形式主義方法,您可以在頁面上隨意移動符號,將它們從等式的一側(cè)移動到另一側(cè),而無需詢問這些符號代表什么。套用 Saul Gorn 的話:形式主義者無法理解一個理論,除非它毫無意義。

兩百五十年前,瑞士制表師 Pierre Jacquet-Droz 制造了一臺可以用羽毛筆書寫的機械自動機。這個發(fā)條裝置有數(shù)百個凸輪和齒輪,裝扮成一個坐在凳子上的小男孩。激活后,男孩將筆浸入墨水中,寫下一條簡短的信息最著名的是笛卡爾警句“我思故我在”。多么滑稽!但即使在 18 世紀,也沒有人相信涂鴉娃娃真的會思考。LLM 懷疑論者會將 ChatGPT 歸入同一類別。

OpenAI 首席科學(xué)家 Ilya Sutskever 在與 Nvidia 的 Jensen Huang 的對話中有力地闡述了這一點:

“當(dāng)我們訓(xùn)練一個大型神經(jīng)網(wǎng)絡(luò)來準確預(yù)測來自互聯(lián)網(wǎng)的許多不同文本中的下一個單詞時,我們正在做的是我們正在學(xué)習(xí)一個世界模型......從表面上看,我們只是在學(xué)習(xí)統(tǒng)計相關(guān)性文本,但事實證明,為了學(xué)習(xí)文本中的統(tǒng)計相關(guān)性,并很好地壓縮它們,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的是生成文本的過程的某種表示。這段文字實際上是對世界的投影。那里有一個世界,它在這段文字上有一個投影。因此,神經(jīng)網(wǎng)絡(luò)正在學(xué)習(xí)越來越多的世界、人、人類條件、他們的希望、夢想和動機、他們的相互作用和我們所處的情境,并且神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)一個壓縮的、抽象的 ,可用的表示。”

我要告訴你這些對比鮮明的 LLM 心態(tài)理論中哪一個是正確的嗎?我不是。這兩種選擇都不吸引我。如果 Bender 等人是對的,那么我們必須面對這樣一個事實:一個沒有推理或感覺能力、沒有物質(zhì)宇宙或社會互動經(jīng)驗、沒有自我意識的小玩意兒,寫大學(xué)論文、創(chuàng)作說唱歌曲、 給失戀者提供建議。知識、邏輯、情感都毫無價值;油嘴滑舌就是全部。這是一個顛覆性的主張。如果 ChatGPT 能用這種無意識的表演來愚弄我們,也許我們也是騙子,他們的聲音和憤怒毫無意義。

另一方面,如果 Sutskever 是對的,那么我們所珍視的人類經(jīng)驗的大部分內(nèi)容隨著我們的成長和生活而慢慢演變的人格意識可以通過互聯(lián)網(wǎng)閱讀這些文字就了解到。如果真是這樣,那我其實就不用忍受初中那種難以言表的痛苦了, 我不必犯下所有那些導(dǎo)致如此心痛和困難的愚蠢錯誤;沒有必要因與世界的碰撞而傷害我的自尊。我本可以在舒適的扶手椅上閱讀所有這些內(nèi)容;僅僅言語就能使我達到一種頭腦清醒的成熟狀態(tài),而不會在塑造靈魂的山谷中經(jīng)歷所有的絆腳石和痛苦。

LLM 的批評者和捍衛(wèi)者都傾向于關(guān)注機器和人類對話伙伴之間的自然語言通信ChatGPT 的聊天部分。在試圖弄清楚神經(jīng)網(wǎng)絡(luò)內(nèi)部發(fā)生了什么時,更多地關(guān)注 LLM 作為程序員的角色可能會有所幫助,其中對話的雙方都是計算機。我可以提供三個論據(jù)來支持這一建議。首先,人們太容易被愚弄。我們會體諒、填補空白、默默地糾正錯誤、提供缺失的上下文,并且通常會竭盡全力去理解某句話的含義,即使它毫無意義。相比之下,計算機是嚴厲的法官,不能容忍胡說八道。

其次,如果我們正在尋找機器內(nèi)部心理模型的證據(jù),值得注意的是數(shù)字計算機的模型應(yīng)該比整個宇宙的模型更簡單。因為計算機是我們根據(jù)自己的規(guī)格設(shè)計和構(gòu)建的人工制品,所以關(guān)于它的工作原理并沒有太多爭議。相比之下,宇宙的心智模型則遍布地圖上。其中一些是從大爆炸開始,然后是宇宙膨脹;有些是由神靈和惡魔統(tǒng)治的;有些以東方與西方、絕地與西斯、紅與藍、我們與他們之間的史詩般的戰(zhàn)斗為特色。我們應(yīng)該期望在 GPT 的權(quán)重矩陣中找到哪些模型?他們可能都在那里,隨意地混合在一起。

第三,編程語言具有一種不尋常的語言屬性,將它們與計算機內(nèi)部的操作緊密地聯(lián)系在一起。英國哲學(xué)家 J. L. Austin 提請人們注意一類特殊的詞語,他將其稱為述行詞。這些詞語不僅僅是宣告、描述或請求;當(dāng)他們說出這些話時,他們實際上會做一些事情。奧斯汀的典型例子是“我愿意”這句話,如果在正確的背景下說出這句話,就會改變你的婚姻狀況。在自然語言中,表演詞非常罕見,但在計算機程序中卻很常見。在正確的上下文中編寫 x = x + 1 實際上會導(dǎo)致 x 的值遞增。當(dāng)您測試概念模型是否與現(xiàn)實相符時,言語和行動之間的直接聯(lián)系可能會有所幫助。

關(guān)于大型語言模型對計算機科學(xué)的地位和影響,我仍然有兩種看法(或者可能不止兩種。。人工智能愛好者可能是對的。這些模型可能會接管編程以及許多其他類型的工作和學(xué)習(xí)。或者它們可能會失敗,就像其他有前途的人工智能創(chuàng)新一樣。我認為我們不用等太久就能得到答案。

贊助本站

人工智能實驗室
相關(guān)內(nèi)容
AiLab云推薦
推薦內(nèi)容
展開

熱門欄目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權(quán)所有    關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 公司動態(tài) | 免責(zé)聲明 | 隱私條款 | 工作機會 | 展會港