2022/03/05

AlphaCode 是工具,不是程式設計師的替代品

DeepMind 是人工智慧研究實驗室,它引入了一種深度學習模型,可以產生具有顯著效果的軟體程式碼。 該模型名為 AlphaCode,基於 Transformers,OpenAI 在其程式碼產生模型中使用的架構相同。在這複雜的編寫程式碼,AlphaCode 確實給人留下了深刻的印象。 但它肯定不等同於任何級別的程式設計師。 這是一種完全不同的軟體開發方法,如果沒有人類的思考和直覺,是無法完整的一個應用程式。

AlphaCode 可以完成非常複雜的任務,但只是類似專注於產生程式碼片段,例如執行小任務的函數或代碼塊(例如,設置 Web 服務器,從 API 系統中提取資訊)。雖然令人印象深刻,但當要應付夠大的應用程式系統時,這些任務變得微不足道。基本上,機器學習模型要能產生一個完整的程式來解決前所未有的問題,是相當困難的。

還有另一種程式產生深度學習系統被稱為 seq2seq。 Seq2seq 是將一序列值(字母、像素、數字等)作為輸入並產生另一個值序列。 這是許多自然語言任務中使用的方法,例如機器翻譯、文本生成和語音識別。

無監督和監督學習
為了創造 AlphaCode,DeepMind 的科學家結合了無監督預訓練和監督微調。 通常被稱為自我監督學習,這是在沒有足夠標記數據或數據註釋昂貴且耗時的應用程序中流行的方法。

在預訓練階段,AlphaCode 從 GitHub 提取的 715 GB 數據進行了無監督學習。 通過預測語言或程式碼片段來訓練模型。 這種方法的優點是它不需要任何類型的註釋,通過接觸大量的樣本,ML 模型在為文本和程式碼的結構逐漸變得更好。另外在製造數據集時,研究人員特別注意避免訓練、驗證和測試集之間的重複。 這確保了 ML 模型在面臨挑戰時不會產生記憶結果。

一旦 AlphaCode 被訓練,它就會針對以前從未見過的問題進行測試。當 AlphaCode 處理一個新問題時,它會生成許多解決方案。然後它使用過濾算法來選擇最好的 10 名候選結果並將其提交。如果其中至少一個是正確的,則認為問題是被解決。為了優化樣本選擇過程,使用聚類算法將解決方案分組。根據研究人員的說法,聚類過程傾向於將工作解決方案組合在一起。這使得找到通過測試的候選結果變得更加容易。

根據 DeepMind 的說法,在流行的 Codeforces 平台上的實際編程比賽中進行測試時,AlphaCode 平均排名前 54% 的參與者,考慮到撰寫程式碼的難度,這算是非常好的結果了。

人工智慧與人類
DeepMind 的 Blog 指出,AlphaCode 是第一個在程式競賽中達到具有競爭力的 AI 程式碼產生系統。然而,一些刊物將這種說法誤認為 AI 編碼與程式設計師一樣好,這是相當荒謬。兩個主要的例子是 DeepBlue 和 AlphaGo,它們是擊敗國際象棋和圍棋世界冠軍的人工智慧系統。雖然這兩個系統都是計算機科學和人工智慧的了不起的成就,但它們只擅長一項任務。他們無法在任何任務上與人類競爭。

因此,與其說 AlphaCode 與程式設計師是彼此競爭,不如我們更應該對 AlphaCode 和其他類似的 AI 系統在與程式設計師合作時能做什麼感興趣。這些工具可以對程式設計師的生產力產生巨大影響。它們甚至可能改變寫程式的方式,將人類轉向設計問題並讓人工智慧系統生程式碼。再由程式設計師利用他們的直覺將系統導向正確的解決方案。使用測試、分析和審查來改進他們的程式碼。

認識到 AlphaCode 的本質:一個程式碼產生器,可以為精心設計的問題提出良好的候選解決方案。它也不應該被認為是程式設計師的代替品。

沒有留言:

張貼留言