歸納編程
編輯歸納編程(IP)是自動編程的一個特殊領域,涵蓋了來自人工智能和編程的研究,它解決了從不完整的規格,如輸入/輸出實例或約束條件,學習典型的陳述性(邏輯或功能)和經常遞歸的程序。根據所使用的編程語言,有幾種歸納編程的方式。歸納函數式編程,使用函數式編程語言,如Lisp或Haskell,特別是歸納邏輯編程,使用邏輯編程語言,如Prolog和其他邏輯表示,如描述邏輯,一直比較突出,但其他(編程)語言范式也被使用,如約束編程或概率編程。
歸納編程的定義
編輯歸納式編程包含了所有與從不完整的(正式)規范中學習程序或算法有關的方法。在IP系統中,可能的輸入是一組訓練輸入和相應的輸出或輸出評估函數,描述預期程序的預期行為,描述計算特定輸出的過程的痕跡或動作序列,關于其時間效率或其復雜性的要誘導的程序的約束,各種背景知識,如標準數據類型,要使用的預定義函數,描述預期程序的數據流的程序方案或模板,指導搜索解決方案的啟發式方法或其他偏見。IP系統的輸出是某種任意編程語言的程序,包含條件和循環或遞歸控制結構,或任何其他類型的圖靈完備表示語言。在許多應用中,輸出的程序必須對例子和部分規范是正確的,這導致了將歸納編程作為自動編程或程序合成的一個特殊領域來考慮,通常與"演繹"程序合成相反,在后者中,規范通常是完整的。在其他情況下,歸納編程被看作是一個更普遍的領域,任何陳述性編程或表示語言都可以被使用,我們甚至可以在例子中出現某種程度的錯誤,如一般的機器學習,更具體的結構挖掘領域或符號人工智能領域。一個明顯的特點是需要的例子或部分規范的數量。通常情況下,歸納編程技術可以從幾個例子中學習。歸納編程的多樣性通常來自于應用和使用的語言:除了邏輯編程和函數式編程,其他編程范式和表示語言也被用于或建議用于歸納編程,如函數邏輯編程、約束編程、概率編程、歸納邏輯編程、模態邏輯、行動語言、代理語言和許多類型的命令語言。
歸納編程的歷史
編輯關于遞歸函數式程序的歸納合成的研究開始于20世紀70年代初,并通過Summers的開創性的THESIS系統和Biermann的工作被帶入了堅實的理論基礎。這些方法被分成兩個階段:首先,使用一小套基本運算符將輸入輸出的例子轉化為非遞歸程序(traces);其次,尋找traces中的規律性,并用來將其折疊成遞歸程序。20世紀80年代中期之前的主要成果由Smith進行了調查。由于在可以合成的程序范圍方面進展有限,研究活動在接下來的十年里明顯減少。邏輯編程的出現在80年代初帶來了新的活力,但也帶來了新的方向,特別是由于夏皮羅的MIS系統最終催生了歸納邏輯編程(ILP)的新領域。普洛特金的早期作品,以及他的相對最小一般概括(rlgg),對歸納邏輯編程產生了巨大的影響。
大多數ILP工作涉及更廣泛的問題類別,因為重點不僅是遞歸邏輯程序,還包括從邏輯表征中學習符號假設的機器。然而,在學習遞歸Prolog程序方面有一些令人鼓舞的結果,例如從例子中結合適當的背景知識學習quicksort,例如用GOLEM。但是,在最初的成功之后,社區對歸納遞歸程序的有限進展感到失望,ILP越來越少地關注遞歸程序,而越來越傾向于機器學習環境,在關系型數據挖掘和知識發現方面的應用。在ILP工作的同時,Koza在20世紀90年代初提出了遺傳編程作為一種基于生成和測試的學習程序的方法。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170977/