在討論人工智慧(AI)寫程式時,大家常常忽略了一個重要環節:偵錯。偵錯是程式設計中的關鍵技能,通常比編寫初始程式碼更具挑戰性。事實上,偵錯的難度往往是編寫程式碼的幾倍。
如果你讓一個大型語言模型(LLM)為你編寫程式碼,並且它的程式碼達到了或超過了你的能力水平,但產生了錯誤,那麼你可能會陷入困境。一項新研究指出,LLM在回答同一問題的不同實例時表現出顯著差異。這些模型在數學推理中的脆弱性,發現它們的表現隨著問題中子句數量的增加而顯著惡化。研究假設這種下降是由於目前的LLM缺乏真正的邏輯推理能力;相反,它們只是試圖複製訓練資料中觀察到的推理步驟。
研究中加入與問題相關的單一子句時,觀察到所有最先進模型的效能顯著下降(高達65%),即使新增的子句對達到目標所需的推理鏈沒有貢獻最終答案。總的來說,此研究讓人們對LLM在數學推理方面的能力和限制有了更細緻的了解。
這項研究表明,LLM缺乏真正的邏輯推理能力,而是依賴於訓練資料中觀察到的模式。關鍵部分是「在回答同一問題的不同實例時存在明顯的差異」、「隨著問題數量的增加而惡化」,以及「當前的LLM不具備真正的邏輯推理能力」。
高級開發人員喜歡LLM的原因是它們可以相對輕鬆地閱讀程式碼。LLM最適合簡單的寫程式任務,這些任務在其訓練資料中得到了很好的體現,但它們難以解決更複雜和微妙的問題。如果閱讀程式碼對你來說很難,那麼LLM可能不值得你付出努力,因為你需要自己寫程式碼才能真正理解它的作用。
邏輯思維是程式設計的基礎。史蒂夫·賈伯斯曾說過,每個人都應該學習編碼,因為它教你如何思考。程式設計就像寫下指令清單,是引導機器完成任務、將複雜動作分解為其組成部分的方式,也是一種思考的方式。
這項研究顯示,LLM無法進行這種思考。它無法將任務分解為各個組成部分,只能「嘗試複製在訓練資料中觀察到的推理步驟」。當應用於程式設計時,這意味著當你想做一些非常簡單的事情時,LLM可能會在訓練資料中找到很多相關的例子,例如正規表示式或存取資料庫,並且表現良好。然而,當你嘗試做任何更複雜的事情時,LLM往往表現不佳。
LLM不會自己思考,它只是重複在其他地方找到的信息,就像「你嘗試過這個嗎?」即使「這個」與目前正在做的事情並不真正相關,也不太可能有幫助。它不了解問題發生的原因,只是試著應用歷史上對相關問題有效的解決方案,最終可能讓你原地踏步。
LLM就像一個自動複製和貼上的系統。它會搜尋要複製和貼上的程式碼,然後對其進行編輯和組合,使其適合你的程式碼庫。如果我們這樣看待LLM,我們就能明白一些事情。LLM並不是真正的程式設計師,它只是一個非常複雜的複製和貼上工具。因此,使用它提供的程式碼會帶來一些風險。對於你可以輕鬆驗證的簡單事情,請繼續使用。但對於任何更複雜的事情,你開始冒著引入錯誤的風險,這些錯誤可能需要很長時間才能修復,反而會降低開發效率。
沒有留言:
張貼留言