為什麼軟體工程師應該學習哲學?

banq發表於2024-04-21


來自哈佛商業評論Marco Argenti文章:

我最近告訴我的大學生女兒:如果你想從事工程職業,除了傳統的工程課程外,你還應該專注於學習哲學。為什麼?因為它會改進你的程式碼。

從工程師的角度來看,這似乎有違直覺,但圍繞要解決的問題建立清晰的心智模型,並在開始研究如何解決之前瞭解原因的能力,是一項越來越重要的技能,尤其是在人工智慧時代。

編碼是人工智慧最擅長的事情之一。通常,人工智慧能寫出比人類更高質量的程式碼,而且其能力正在迅速提高。要知道,計算機語言使用的詞彙量要比人類語言有限得多。由於人工智慧模型的複雜性會隨著代表人工智慧所能理解的語言的符號宇宙的增加而呈二次曲線增加,因此更小的詞彙量意味著更快、更好的結果。

不過,這裡也有一些問題:人工智慧建立的程式碼在語法和語義上可能是正確的,但在功能上並不正確。換句話說,它可以工作得很好,但做不到你想要它做的。模型的輸出對提示語的編寫方式非常敏感。如果在提示上失誤,你的人工智慧生成的程式碼往好了說是可信的,往壞了說就是不正確和危險的。

在被稱為 "提示工程 "的新興學科中(現階段與其說是一門科學,不如說是一門藝術),使用者要學習如何手工製作簡潔、富有表現力並能有效地讓人工智慧按照他們的意願行事的提示。

目前存在著各種技術,例如 "少量提示",即在提示中預設一些例子,引導人工智慧走向正確的道路,有時還可以問答。
例如,在使用 "少量提示 "進行情感分析時:

  • 使用者可以輸入 "分析收益電話會議中的句子情感 "這樣的提示,
  • 然後輸入“前景改善:正面”或“需求放緩:負面”等具體示例,

這樣才能以幫助人工智慧理解模式和上下文,從而根據示例生成準確的情感分析。

我在幾十年的工程團隊管理中學到的最重要的技能之一就是提出正確的問題。這一點與人工智慧並無二致:大型語言模型(LLM)的輸出質量對提示的質量非常敏感:

  • 模稜兩可或格式不規範的問題會讓人工智慧試圖猜測你真正想問的問題,
  • 這反過來又會增加得到不準確甚至完全是編造的答案的機率(這種現象通常被稱為 "幻覺")。  

正因為如此,一個人要想最大限度地利用人工智慧:
  • 首先必須掌握推理、邏輯和第一性原理 思維
  • 這些都是透過哲學訓練培養出來的基礎技能。

"你會編碼嗎?"這個問題將變成 "你能透過提出正確的問題從人工智慧中獲得最佳編碼嗎?"

程式設計師與AI關係
將視角拉遠一點,人工智慧的效能取決於使用者所表達的心理模型的質量,這表明作者與讀者之間的關係,以及我們與知識之間的關係發生了根本性的轉變。

  • 在某種程度上,這與印刷術的發明有異曲同工之妙,印刷術透過大量生產書籍以及建立圖書館和大學實現了資訊民主化。在印刷術出現之前,如果你想學習數學知識,你很可能必須親自去找數學家,或者查閱手抄本,而且很可能是花大價錢購買的。
  • 印刷書籍使這一障礙大大降低,而網際網路則使這一障礙幾乎為零。
  • 然而,作者與讀者之間的知識鴻溝仍然存在。你可以獲得世界上任何紙張或書籍,但如果你不能理解它們,它們就沒有什麼用處。

使用人工智慧後,這種關係發生了變化,作者的概念也發生了變化。LLM大模型 會根據讀者的知識水平和理解能力調整內容,並根據讀者的提示進行調整。

讀者的提示是觸發人工智慧生成內容的種子,人工智慧會借鑑訓練資料中的作品,專門為該使用者建立新的文字:從某種意義上說,讀者既是消費者,也是作者。

以數學為例,如果你想了解微積分中極限的概念,你可以找到一本針對高中生或大學生的教科書,或者嘗試在網際網路上找到與你當前理解水平相匹配的資料。而人工智慧模型則可以根據你的理解水平和學習風格提供個性化的自適應教學。也許在未來,每個人都能享受到學習的黃金標準--個性化輔導。

以批判精神對待AI
生成式人工智慧改變了我們與知識之間的關係,它不僅能提供獲取知識的途徑,還能以量身定製的方式解釋知識,從而使障礙變得更加平坦。它在你的知識水平和攻克特定課題所需的知識水平之間創造了一個緩坡。  

然而,獲取量身定製的知識的能力,更重要的是獲取準確知識的能力,始於使用者,也終於使用者。隨著知識越來越容易獲取,推理變得越來越重要。

不過,這些哲學思考技能的使用並不會在你得到你認為想要的結果後就結束--工作還沒有完成。正如我們所知,人工智慧也會犯錯,而且它們特別擅長讓錯誤的輸出結果看似合理,這就使得辨別真相的能力成為另一項極其重要的技能。為了以負責任的方式與技術打交道,從而獲得我們想要的適當而準確的資訊,我們必須在整個過程中以哲學思維、健康的懷疑精神和常識為主導

曾幾何時,為了建立一個計算機程式,我必須親自動手撥動開關或在紙卡上打孔。這種建立過程與計算機擁有多少位元記憶體或暫存器的複雜性完全無關。隨著數十億個電晶體和數萬億個儲存單元的出現,我們的軟體創造過程必須提升到越來越高的水平,創造出能夠抽象出底層硬體複雜性的計算機語言,讓開發人員幾乎完全專注於演算法的質量而不是1和0。

如今,我們的計算機(即人工智慧)已經不需要在我們所說的語言和它們所能理解的語言之間進行這種中間層次的翻譯了。我們可以把羅塞塔石碑放在一邊,直接對計算機說英語。它們可能會像用 Python 和它們說話一樣聽得懂。這立刻帶來了兩個選擇:我們可以偷懶,或者提升我們的思想。

當語言不再是障礙時,我們可以充分運用人類語言的表達能力,向人工智慧傳達更高階的概念和邏輯,以最簡潔有效的方式捕捉我們的請求,這種方式是陳述式的(側重於我們想要得到的結果),而不是命令式的(側重於如何達到目標的步驟)。

  • 命令式:左轉,然後直走,然後再左轉,然後(1000 次)。
  • 陳述句:帶我回家。

我曾在社交媒體上看到有人僅用幾句巧妙的提示語就創造出了整個遊戲,而在不久前,這需要花費數月的時間來開發。

總結
這又回到了我的原點:擁有圍繞問題的清晰心智模型,能夠將問題分解為可操作的步驟,完美的第一原理思維,有時準備好(並能夠)與固執的人工智慧辯論--這些都是未來成為一名優秀工程師的技能,而且可能同樣適用於許多工作類別。

我們不想失去在必要時開啟引擎蓋,修復人工智慧可能遺漏的問題的能力,也不想失去(重要的是)稽核人工智慧所創造的東西的能力。這對人類來說將是一個真正的問題,我們不可能讓這種情況發生--至少我們還必須構建人工智慧。然而,這隻能實現部分目標。將程式碼建立的機制自動化,並專注於我們的批判性思維能力,才能讓我們創造出更多、更快、對世界產生更大影響的東西。幫助人工智慧讓我們更像人類,而不是電腦。
 

相關文章