Content deleted Content added
Superploro (talk | contribs) First encyclopedic version of the article |
m removed Template:Multiple issues & general fixes using AWB (9866) |
||
Line 1:
'''Inductive Programming''' (IP) is a special area of [[automatic programming]], covering research from [[artificial intelligence]] and [[programming]], which addresses [[machine learning|learning]] of typically [[declarative programming|declarative]] ([[logic programming|logic]] or [[functional programming|functional]]) and often [[recursion|recursive]] programs from incomplete specifications, such as input/output examples or constraints.
Depending on the programming language used, we have several kinds of inductive programming. [[Inductive functional programming]], which uses functional programming languages such as [[
==Definition==
Inductive programming incorporates all approaches which are concerned with learning programs or algorithms from incomplete ([[formal specification|formal]]) specifications. Possible inputs in an IP system are a set of training inputs and corresponding outputs or an output evaluation function, describing the desired behavior of the intended program, [[Tracing (software)|traces]] or action sequences which describe the process of calculating specific outputs, [[Constraint (mathematics)|constraints]] for the program to be induced concerning its time efficiency or its complexity, various kinds of background knowledge such as standard [[data type
Output of an IP system is a program in some arbitrary programming or language containing conditionals and loop or recursive control structures, or any other kind of [[Turing completeness|Turing-complete]] [[Knowledge representation and reasoning|representation]] language.
In many applications the output program must be correct with respect to the examples and partial specification, and this leads to the consideration of inductive programming as a special area inside automatic programming or [[program synthesis]],<ref>{{cite journal|first1=A.W.|last1=Biermann|title=Automatic programming|editor1-first=S.C.|editor1-last=Shapiro|publisher=Wiley|journal=Encyclopedia of artificial intelligence|pages=
In other cases, inductive programming is seen as a more general area where any declarative programming or representation language can be used and we may even have some degree of error in the examples, as in general [[machine learning]], the more specific area of [[structure mining]] or the area of symbolic artificial intelligence. A distinctive feature is the number of examples or partial specification needed. Typically, inductive programming techniques can learn from just a few examples.
The diversity of inductive programming usually comes from the applications and the languages that are used: apart from logic programming and functional programming, other programming paradigms and representation languages have been used or suggested in inductive programming, such as [[functional logic programming]], [[constraint programming]], [[probabilistic programming language|probabilistic programming]], [[abductive logic programming]], [[modal logic]], [[action language
== History ==
Research on the inductive synthesis of recursive functional programs started in the early 1970s and was brought onto firm theoretical foundations with the seminal THESIS system of Summers<ref>{{cite journal|first1=P.D.|last1=Summers|title=A methodology for LISP program construction from examples|journal=J ACM|volume=24(1)|pages=
These approaches where split into two phases: first, input-output examples are transformed into non-recursive programs (traces) using a small set of basic operators; second, regularities in the traces are searched for and used to fold them into a recursive program. The main results until the mid 1980s are surveyed by Smith.<ref>{{cite journal|first1=D.R.|last1=Smith|title=The synthesis of LISP programs from examples: a survey|editor1-first=A.W.|editor1-last=Biermann|editor2-first=G.|editor2-last=Guiho|publisher=Macmillan|journal=Automatic program construction techniques|pages=
The advent of logic programming brought a new elan but also a new direction in the early 1980s, especially due to the MIS system of Shapiro<ref>{{cite book|first1=E.Y.|last1=Shapiro|title=Algorithmic program debugging|publisher=The MIT Press|year=1983}}</ref> eventually spawning the new field of inductive logic programming (ILP).<ref>{{cite doi|10.1007/BF03037089}}</ref>
first1=J.R.|last1=Quinlan|first2=R.M.|last2=Cameron-Jones|
title=Avoiding Pitfalls When Learning Recursive Theories|
publisher=|
journal=IJCAI|
pages=
year=1993}}
</ref><ref>
Line 32:
title=Induction of logic programs: FOIL and related systems|
publisher=Springer|
volume=13(3-4)|pages=
year=1995}}
</ref><ref>
Line 40:
journal=The Journal of Logic Programming|
volume=41(2)|
pages=
year=1999}}
</ref> with ILP less and less focusing on recursive programs and leaning more and more towards a machine learning setting with applications in [[relational data mining]] and knowledge discovery.<ref>{{citation|first1=Sašo|last1=Džeroski|contribution=Inductive Logic Programming and Knowledge Discovery in Databases|pages=117–152|editor1-first=U.M.|editor1-last=Fayyad|editor2-first=G.|editor2-last=Piatetsky-Shapiro|editor3-first=P.|editor3-last=Smith|editor4-first=R.|editor4-last=Uthurusamy|title=Advances in Knowledge Discovery and Data Mining|publisher=MIT Press|year=1996}}</ref>
In parallel to work in ILP, Koza<ref>
Line 50:
publisher=MIT Press|
year=1992}}
</ref> proposed genetic programming in the early 1990s as a generate-and-test based approach to learning programs. The idea of genetic programming was further developped into the inductive programming system ADATE<ref>
{{cite journal|
first1=J.R.|last1=Olsson|
Line 56:
publisher=Elsevier|
journal=Artificial Intelligence|
volume=74(1)|pages=
year=1995}}
</ref> and the systematic-search-based system MagicHaskeller.<ref>
{{cite journal|
first1=Susumu|last1=Katayama|
title=Efficient exhaustive generation of functional programs using Monte-Carlo search with iterative deepening|
journal=PRICAI 2008: Trends in Artificial Intelligence|
pages=
year=2008}}
</ref>
The early work in [[grammar induction]] (also known as grammatical inference) is related to inductive programming, as rewriting systems or logic programs can be used to represent production rules. In fact, early works in inductive inference considered grammar induction and Lisp program inference as basically the same problem.<ref>
{{cite journal|
first1=D.|last1=Angluin|first2=Smith|last2=C.H.|
Line 73:
publisher=ACM|
journal=ACM Computing Surveys|
volume=15|pages=
year=1983}}
</ref>
{{cite journal|
first1=E.M.|last1=Gold|
Line 81:
publisher=Elsevier|
journal=Information and Control|
volume=10(5)|pages=
year=1967}}
</ref>
{{cite journal|
first1=J.R.|last1=Olsson|first2=D.M.W.|last2=Powers|
Line 89:
publisher=University of New South Wales|
journal=Proceedings of the International Conference on Cognitive Science|
pages=
year=2003}}
</ref>
In the recent years, the classical approaches have been resumed and advanced with great success. Therefore the synthesis problem has been reformulated on the background of constructor-based term rewriting systems taking into account modern techniques of functional programming, as well as moderate use of search-based strategies and usage of background knowledge as well as automatic invention of subprograms. Many new and successful applications have recently appeared beyond program synthesis, most especially in the area of data manipulation, programming by example and cognitive modelling (see below).
Other ideas have also been explored with the common characteristic of using declarative languages for the representation of hypotheses. For instance, the use of higher-order features, schemes or structured distances have been advocated for a better handling of recursive data types and structures;<ref>
{{cite journal|
first1=J.W.|last1=Lloyd|
Line 113:
journal=Computational Intelligence|
year=2014}}
</ref>
{{cite journal|
first1=R.J.|last1=Henderson|first2=S.H.|last2=Muggleton|
Line 127:
journal=arXiv preprint arXiv:1110.5667|
year=2011}}
</ref>
One powerful paradigm that has been recently used for the representation of hypotheses in inductive programming (generally in the form of [[generative model
{{cite journal|
first1=S.|last1=Muggleton|
Line 157:
journal=Cognitive Systems Research|
year=2012}}
</ref>
== Application areas ==
The [http://www.cogsys.wiai.uni-bamberg.de/aaip05/objectives.html first workshop on Approaches and Applications of Inductive Programming (AAIP) ] held in conjunction with [[ICML]] 2005 identified all applications where "learning of programs or recursive rules are called for, [...] first in the ___domain of software engineering where structural learning, software assistants and software agents can help to relieve programmers from routine tasks, give programming support for endusers, or support of novice programmers and programming tutor systems. Further areas of application are language learning, learning recursive control rules for AI-planning, learning recursive concepts in web-mining or for data-format transformations".
Since then, these and many other areas have shown to be successful application niches for inductive programming, such as [[End-user development|end-user programming]],<ref>
{{cite book|
first1=H.|last1=Lieberman|first2=F.|last2=Paternò|first3=V.|last3=Wulf|
Line 169:
publisher=Springer|
year=2006}}
</ref>
{{cite book|
first1=H.|last1=Lieberman|
Line 175:
publisher=Morgan Kaufmann|
year=2001}}
</ref> and [[programming by demonstration]],<ref>
{{cite journal|
first1=E.|last1=Cypher|first2=D.C.|last2=Halbert|
Line 183:
volume=|pages=|
year=}}
</ref>
{{cite journal|
first1=S.|last1=Gulwani|first2=W.R.|last2=Harris|first3=R.|last3=Singh|
Line 190:
journal=Communications of the ACM|
volume=55(8)|
pages=
year=2012}}
</ref><ref>{{cite web|last=Harris|first=Steven|title=Excel 2013 - Flash Fill|url=http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Excel/A_12314-Excel-2013-Flash-Fill.html|work=Experts-Exchange.com|publisher=Experts Exchange|accessdate=23 November 2013|date=1 October 2013}}</ref> in [[Microsoft Excel]].
Other areas where inductive inference has been recently applied are [[knowledge acquisition]],<ref>
{{cite journal|
first1=U.|last1=Schmid|first2=M.|last2=Hofmann|first3=E.|last3=Kitzelmann|
title=Analytical inductive programming as a cognitive rule acquisition devise|
journal=Proceedings of the Second Conference on Artificial General Intelligence|
pages=
year=2009}}
</ref>
{{cite journal|
first1=N.|last1=Crossley|first2=E.|last2=Kitzelmann|first3=M.|last3=Hofmann|first4=U.|last4=Schmid|
title=Combining analytical and evolutionary inductive programming|
journal=Proceedings of the Second Conference on Artificial General Intelligence|
pages=
year=2009}}
</ref>
{{cite journal|
first1=J.|last1=Hernandez-Orallo|
title=Constructive reinforcement learning|
journal=International Journal of Intelligent Systems|
volume=15(3)|pages=
year=2000}}
</ref><ref>
Line 220:
title=Learning and using relational theories|
journal=Advances in neural information processing systems|
pages=
year=2007}}
</ref>
{{cite journal|
first1=U.|last1=Schmid|first2=E.|last2=Kitzelmann|
Line 228:
journal=Cognitive Systems Research|
volume=12(3)|
pages=
year=2011}}
</ref><ref>
Line 237:
journal=Cognitive Systems Research|
year=2012}}
</ref>
== Software ==
Line 274:
* [http://www.inductive-programming.org/ Inductive Programming community page], hosted by the University of Bamberg.
== Further
{{Refbegin}}
* {{cite journal|first1=P.|last1=Flener|first2=U.|last2=Schmid|title=An introduction to inductive programming|publisher=Springer|journal=Artificial Intelligence Review|volume=29(1)|pages=
* {{cite journal|first1=E.|last1=Kitzelmann|title=Inductive programming: A survey of program synthesis techniques|publisher=Springer|journal=Approaches and Applications of Inductive Programming|pages=
* {{cite journal|first1=D.|last1=Partridge|title=The case for inductive programming|publisher=IEEE|journal=Computer|volume=30(1)|pages=
* {{cite journal|first1=P.|last1=Flener|first2=D.|last2=Partridge|title=Inductive Programming|publisher=Springer|journal=Automated Software Engineering|volume=8(2)|pages=
* {{cite journal|first1=M.|last1=Hofmann|first2=E.|last2=Kitzelmann|title=A unifying framework for analysis and evaluation of inductive programming systems|journal=Proceedings of the Second Conference on Artificial General Intelligence|pages=
* {{cite doi|10.1016/0743-1066(94)90035-3}}
Line 291:
* {{cite book | first1 = N. | last1 = Lavrac | first2 = S. | last2 = Dzeroski | title = Inductive Logic Programming: Techniques and Applications | publisher = Ellis Horwood | ___location = New York | year = 1994 | isbn = 0-13-457870-8 | url = http://www-ai.ijs.si/SasoDzeroski/ILPBook/ }}
* {{cite journal|first1=S.|last1=Muggleton|first2=Luc.|last2=De Raedt|first3=D.|last3=Poole|first4=I.|last4=Bratko|first5=P.|last5=Flach|first6=K.|last6=Inoue|first7=A.|last7=Srinivasan|title=ILP turns 20|publisher=Springer|journal=Machine Learning|volume=86(1)|pages=
== References ==
|