為什麼在人工智慧經濟中軟體需求變得更容易
隨著人工智慧代理之間的互動日益增多,而非與人類互動,收集軟體需求的挑戰將減少,因為程式更具可預測性且具有明確定義的規範。這種轉變可能降低傳統需求收集的重要性,從而實現更快、更可靠的開發。
在人工智慧經濟中,軟體需求收集的難度可能會顯著降低,原因在於需求來源的變化。傳統上,軟體工程中最耗時的部分是從人類使用者那裡獲取確切需求,這往往充滿歧義和不確定性。然而,隨著越來越多的軟體系統由人工智慧代理驅動,這些代理之間的互動逐漸取代了人與系統的直接互動。由於程式本身具有明確的形式化語義,它們能夠清晰表達自己的功能需求,從而大大簡化了需求收集過程。
文章首先介紹了形式化驗證的概念,即透過數學證明系統滿足形式化要求,這被認為是防止AI系統在遞迴自我改進過程中失控的最佳保護措施之一。但自然障礙在於需要足夠詳細地寫出我們想要執行的規則,這些描述被稱為規範。隨著AI在經濟中的作用不斷增強,一方面需要仔細執行規則的計算機系統數量增加,但另一方面,編寫正確規則的工作卻變得更容易。作者先前曾論證,隨著AI的普及,設計包含僅AI之間互動的“氣泡”的經濟是有意義的,並且使用者介面的規約也會變得更容易。現在,作者進一步論證,系統需求的更廣泛挑戰也從根本上變得更容易,基本優勢在於需求中需要形式化的意圖來源。從脆弱的人類那裡獲取需求可能非常困難,但當新需求的來源主要是其他已在執行的程式時,情況就不同了。
作者回顧了軟體工程的難點。即使在AI編碼助手改變軟體工程師時間分配之前,該領域的一個公認事實是最耗時的活動是理解使用者的真實需求,即需求收集。隨著日常編碼的大量自動化,人們可能認為需求收集的核心地位只會增加。但作者認為,進一步依賴自動化後,需求收集的重要性反而會下降。文章回顧了20世紀60年代分析師與程式設計師的分工,以及瀑布模型和敏捷方法的演進。瀑布模型強調在編寫程式碼前反覆迭代需求文件,而敏捷方法則更快地構建可執行程式以獲取使用者反饋,但即使軟體專家也難以列舉複雜程式的所有相關場景,這些場景往往依賴於使用者的專業知識,而使用者又缺乏抽象和系統性的思考能力。亨利·福特的名言(可能是杜撰的)完美說明了這一挑戰:如果問顧客想要什麼,他們會說更快的馬,而不是汽車。這揭示了兩個問題:使用者難以詳細解釋模糊的目的,以及不瞭解開發可行性。
好訊息是,當請求功能的使用者通常不是人類時,這些挑戰會大大減少。更準確地說,在代理生態系統的少數部分,舊的需求收集挑戰依然存在,甚至可能更具挑戰性,但在其餘部分則可以很大程度上避免。作者解釋了為什麼比了解人的意圖更容易瞭解程式的“意圖”。人類的進化沒有讓思維易於被他人建模,而程式則必須對執行它的計算機是可解釋的,即需要無歧義的語義。此外,人類編寫和維護程式也需要理解程式碼。這些選擇壓力使得程式易於理解。現在,這些優勢在程式中體現為它們能夠請求編寫新程式碼以更好地完成工作。
這種優勢的最佳體現是經濟中只包含AI與AI互動的領域,而非與人類互動。這樣的環境可以最大化自動推理的可讀性。一個自動化工作生態系統可以朝著預先設定的規範遞迴自我改進,或者一組競爭和合作的代理可以共同進化出它們自己的規範。無論哪種方式,我們都能輕鬆獲得機器可讀的基本目標描述,並定期將其轉化為新程式的需求。作者用示意圖說明:左側是當今世界,大量AI代理需要直接與人類協調,迫使從難以表達需求的利益相關者那裡收集需求;右側是未來世界,大部分經濟由AI代理處理,它們自然形成叢集,只有少數守門人需要與人類互動。叢集內部是秩序和清晰需求的場所,絕大多數程式處於內部並受益於清晰的需求來源。
關鍵在於,我們不是事後才去描述代理生態系統的行為和期望,而是有機會從早期就將形式化規範和驗證融入其設計之中。我們的挑戰變成編寫覆蓋整個AI生態系統的規範,迫使其中的參與者以符合我們目標和價值觀的方式進化。這一需求收集挑戰至少和以往一樣困難,但作者指出,在這樣的AI氣泡內部,許多其他工程專案變得更容易框定,並且應該成為持續軟體工程工作的主體。
這種現象已經以更溫和的形式存在,例如實現新Web瀏覽器的團隊受現有技術標準的約束,網際網路標準中已經包含了大量需求。隨著更多經濟由AI代理處理,更多的上下文將類似地被標準化或至少體現在可分析的現有程式碼中。值得注意的是,當今最流行的AI軟體——深度學習,有一個明顯劣勢:個體程式(包括學習到的元素如模型權重)幾乎沒有明顯的結構,難以理解。作者認為,這應該促使我們更多地使用其他旨在可理解性和能夠用數學論證精確界定行為的方法。我們可能有一個短暫的視窗來決定是生活在一個不可解釋的學習系統世界,還是推動那些被證明滿足明確要求的系統。第二條道路不僅對防止惡意AI至關重要,而且對AI自我改進的效率也至關重要。
最後,作者具體說明了軟體工程的早期階段如何變得更便宜。假設使用者程式遵循良好實踐並擁有完善的需求文件,那麼請求新程式的程式可以簡單地複製其需求中的相關內容。而人類使用者則不會以機器可讀的形式全面釋出其人生目標。更廣泛地看,技術創新經濟可以被視為電腦科學意義上的分散式系統,不同代理在一組重疊的最佳化問題中合作與競爭。軟體參與者更可能擁有嚴格的形式化規範。這種經濟系統在某種程度上是一個不斷自我最佳化的程式。例如,一個計算特定數學函式的程式可以注意到改進自身結構的途徑,以更高效地計算該函式。未來的軟體工程專案將更多類似於這種自我最佳化,而不是我們所習慣的模式。一個擁有目標但對如何實現只有模糊概念的程式將請求編寫新的程式碼來幫助其更好地完成任務。
總之,雖然為整個AI生態系統制定頂層規範仍然困難,但內部的軟體工程任務將變得更容易,因為需求來源明確且易於自動化處理。這一轉變有望顯著降低軟體開發成本並提高可靠性。