Learning Based Programming
Learning Based Programming is a programming paradigm that extends conventional programming to support writing programs in which some of the definitions are generated in a data driven way and some are learned from observations the program encounters. The paper introduces the paradigm as well as the design and implementation of a specific learning based programming language (LBP) within it. LBP allows the programming of complex systems whose behaviors depend on naturally occurring data and that require reasoning about data and concepts in ways that are hard, if not impossible, to write explicitly. In LBP the programmer can reason using high level concepts without the need to explicitly define all the variables they might depend on, or the functional dependencies among them. Instead, LBP supports reasoning in terms of the information sources that might contribute to decisions and allows the specifics to be determined in a data-driven way. We provide the formalisms for the main constructs of the language, including knowledge representations and learning constructs as well as the notions of an interaction and sensors through which an LBP program interacts with its environment. Examples and experimental evidence are given from natural language and visual processing applications.