本文由 「AI前線」原創,原文連結:微軟程式歸納新技術:元程式歸納
作者|Rishabh Singh
譯者|張健欣
編輯|Natalie
最近許多關於 AI 的研究集中於擴充套件深度學習框架的能力:從簡單的分類和模式識別到更復雜的學習演算法任務領域,例如歸納程式設計。基於我們過去在神經程式合成方面的工作(用一種功能型語言來學習字元轉換),我們大部分最近的工作探索了訓練神經架構來歸納 Karel 語言程式的挑戰。Karel 是一種更具挑戰性的並且具有複雜控制流的命令語言。
具體來說,我們正在努力解決只有有限程式碼示例可用時進行程式歸納的困難。傳統上,神經程式歸納方案都是基於非常多的輸入輸出示例來獲取可接受的結果。這些例子能有大約成百上千到成千上萬個。我們研究的一部分是嘗試開發新技術,這些技術能夠以明顯更少的示例來獲取理想的結果。這些新技術,通常用術語稱為“組合調整(portfolio adaptation)”和“元程式歸納(meta program induction)”。它們基於的原理是,從相似的學習任務中遷移知識,來彌補缺少輸入 / 輸出示例的問題。
我們用大範圍資料集的基準測試比較了四種這樣的技術的效能。在測試用例中,我們使用了 Karel 程式語言,它引入了複雜的控制流,包括條件和迴圈以及一套必要的動作。這個測試用例向神經架構提供了固定數量的輸入 / 輸出示例(從 1 到 100,000 的範圍),然後讓它們從一套新的輸入集中得到正確的輸出結果(通過隱式學習來歸納相應的 Karel 程式)。下圖展示了一組 Karel 資料集的程式歸納任務,我們的元模型可以精準地只從 2 到 4 個示例學習到不錯的結果。
正如我們最近發表的論文中闡述的那樣,結果非常好(與單純使用 PLAIN 的示例驅動技術取得的 0% 的準確率相比):我們的其中一項元歸納技術從不足 10 個示例中取得了大約 40% 的準確率。
附隨的圖表說明了這 4 個模型在相同樣例數目下每一個的效能是如何變化的。可以看到,提供的示例越少時,技術越新執行效果明顯越好。我們認為,儘管結果隨著示例數目的增多而逐漸收斂,但我們更新穎的技術仍然展現出了某些優勢,因為它們比傳統的模型需要更少的計算資源和處理時間。
下面對這 4 種技術進行了總結。
- 普通程式歸納(Plain Program Induction, PLAIN) 。用有監督學習來訓練可以對單個任務進行歸納的模型,例如,讀入一個該任務的輸入示例,然後推測出相應的輸出。跨任務的知識沒有共享。
- 組合調整過的程式歸納(Portfolio-Adapted Program Induction, PLAIN+ADAPT)。用簡單的遷移學習來調整一個新任務的模型(這個模型已經在一個相關任務中訓練過)。
- 元程式歸納(Meta Program Induction, META)。用多樣本學習風格的模型來代表數目呈指數增長的任務,將與任務相關的 I/O 示例有條件地作為神經網路的輸入。這個模型無需額外的訓練就可以推廣到新的任務。
- 調整過的元程式歸納(Adapted Meta Program Induction, META+ADAPT)。對新的特定任務的 I/O 示例用每次淘汰一個的迴圈賽法訓練,使元程式歸納模型適應該任務。
這個領域的相關工作將會繼續,來優化這些模型並且開發新技術。這些新技術應該使神經網路能夠在不需要無數示例的情況下,用成熟的程式語言執行復雜的程式設計任務。
相關文章
Microsoft Research at NIPS 2017
www.microsoft.com/en-us/resea…
Neural Program Meta-Induction
www.microsoft.com/en-us/resea…
Neural Program Synthesis
www.microsoft.com/en-us/resea…
檢視英文原文:
New Meta-learning Techniques for Neural Program Induction
更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大資料」可獲得《AI前線》系列PDF迷你書和技能圖譜。