
在過去的幾十年中,無論在硬件組織還是軟件架構上,計算機行業已經發生了翻天覆地的變化,各種軟硬件產品的性能和用戶體驗均得到了顯著提升。
但對程序員而言,軟件編碼的本質似乎並沒有什麼本質的改變:無論哪種編程語言,仍然需要程序員根據算法邏輯和實現步驟一步一步地手動敲入代碼。雖然近幾年隨著編碼工具的改進和編程語言的版本更新,對於程序員而言,這一過程已經相當方便了,但學習如何編程仍然是諸多計算機用戶不得不麵對的一道難題。
近日,微軟在論文中公布了一項最新的代碼合成係統:RobustFill。它基於深度學習技術,可以根據用戶指定的輸入輸出樣例進行特征提取,然後自動合成能夠實現相應功能的軟件代碼,大大縮減了程序員的編碼工作量。
舉例來說,假設用戶需要編碼實現如下功能:將輸入的人名信息進行規範化縮寫後輸出。具體如下圖所示,當輸入人名為 “jacob daniel devlin” 時,係統應該輸出 “Declin,J” 。基於 RobustFill,用戶隻需要提供一些簡單的輸入輸出樣例(圖中前三行黑色字體),係統就能自動合成實現這一功能的軟件代碼,並輸出正確結果(圖中後三行灰色字體)。如果用戶需要處理的人名有成千上萬個,這就能節約大量的處理時間。

RobustFill 係統生成的代碼基於 DSL(Domain Specific Language),即領域特定語言。獲知,用戶並不需要理解 DSL 的編程細節,實際上,用戶根本看不到 DSL 代碼,而隻需要關注具體的功能實現就行了。對應上述人名縮寫樣例,RobustFill 生成的 DSL 代碼如下所示:
Concat(
ToCase(
GetToken(
input,
Type=Word,
Index=-1),
Type=Proper),
Const(", "),
ToCase(
SubString(
GetToken(
input,
Type=Word,
Index=1),
Start=0,
End=1),
Type=Proper),
Const("."))
自動代碼合成的難點主要有兩個:
一是係統可以自動合成萬億級的不同的 DSL 代碼組合,如何判斷哪一種是正確結果;
二是用戶提供的輸入輸出樣例一般都是人工輸入,難免會出現一些筆誤(例如上麵人名縮寫的例子中,表格第二行,用戶把“Useato”寫成了“uesato”),係統如何避免這些筆誤的不良影響。
針對這兩個問題,此前的解決方案是微軟 Excel 軟件中的 FlashFill 係統。該係統憑借開發人員手動設置規則和啟發式搜索(Heuristic Search)的方式,為用戶輸出特定功能的代碼。但 FlashFill 係統嚴重弱化了 DSL 語言的擴展能力,並且需要開發者大量的人工輸入,同時對人工輸入的筆誤也非常敏感,因此並不是最優的解決方案。
與 FlashFill 不同,在深度學習技術的支持下,RobustFill 可以利用數據驅動的方式進行代碼合成,而無需開發者手動設置規則。此外,RobustFill 還使用了此前用於自然語言翻譯的一種名為“attentional sequence-to-sequence neural network”(注意力序列到序列神經網絡)的技術,因此才能基於用戶給定的輸入輸出樣例,自動合成代碼。RobustFill 的大體結構流程如下圖所示。

微軟用數百萬隨機生成輸入/輸出和對應的編碼來訓練該係統。由於 RobustFill 能學會 DSL 的語法,微軟認為它在真實數據上會有良好表現。了解到,總的來說,微軟 RobustFill 在真實測試中達到了 92% 的精確度。最讓人感到鼓舞的是,即便輸入/輸出樣例包含大量噪音,RobustFill 仍能夠保持高水準的精確度。
Implications for Programming
在 FlashFill DSL 這樣的強大函數語言上,成功地訓練神經架構學習編程,是神經代碼合成的一項了不起的成就。微軟表示,這同時也是邁向通用 AI 的一小步。RobustFill 解決了加入可編譯性( interpretability)的核心難題,並探索了用知識的符號表示連接分布式表達( connecting distributed representations with symbolic representations of knowledge)這一課題。
微軟最後在官方博客宣布:
“我們正在開發這些架構的擴展,用變量和控製流來學習 DSL 中的代碼,以生成更豐富的代碼類。我們相信,照這個方向走下去需要我們研究、解決代碼合成和歸納問題中的關鍵技術難關。”
microsoft
相關資訊
最新熱門應用
虛擬幣交易app
其它軟件179MB
下載
抹茶交易所官網蘋果
其它軟件30.58MB
下載
歐交易所官網版
其它軟件397.1MB
下載
uniswap交易所蘋果版
其它軟件292.97MB
下載
中安交易所2024官網
其它軟件58.84MB
下載
熱幣全球交易所app邀請碼
其它軟件175.43 MB
下載
比特幣交易網
其它軟件179MB
下載
雷盾交易所app最新版
其它軟件28.18M
下載
火比特交易平台安卓版官網
其它軟件223.89MB
下載
中安交易所官網
其它軟件58.84MB
下載