Programació inductiva

programes d'aprenentatge a partir de dades

La programació inductiva (IP) és una àrea especial de programació automàtica, que cobreix la investigació de la intel·ligència artificial i la programació, que aborda l'aprenentatge de programes típicament declaratius ( lògics o funcionals ) i sovint recursius a partir d'especificacions incompletes, com ara exemples d'entrada/sortida o restriccions.

Depenent del llenguatge de programació utilitzat, hi ha diversos tipus de programació inductiva. La programació funcional inductiva, que utilitza llenguatges de programació funcionals com Lisp o Haskell, i sobretot la programació lògica inductiva, que utilitza llenguatges de programació lògica com Prolog i altres representacions lògiques com les lògiques de descripció, han estat més destacades, però un altre llenguatge (de programació) També s'han utilitzat paradigmes, com ara la programació de restriccions o la programació probabilística.

Definició modifica

La programació inductiva incorpora tots els enfocaments relacionats amb programes d'aprenentatge o algorismes a partir d'especificacions ( formals ) incompletes. Les possibles entrades en un sistema IP són un conjunt d'entrades d'entrenament i sortides corresponents o una funció d'avaluació de la sortida, que descriu el comportament desitjat del programa previst, traces o seqüències d'acció que descriuen el procés de càlcul de sortides específiques, limitacions per al programa a induir. pel que fa a la seva eficiència temporal o la seva complexitat, diversos tipus de coneixements bàsics com ara tipus de dades estàndard, funcions predefinides a utilitzar, esquemes de programes o plantilles que descriuen el flux de dades del programa previst, heurístiques per guiar la cerca d'una solució o altres biaixos.

La sortida d'un sistema IP és un programa en algun llenguatge de programació arbitrari que conté condicionals i estructures de control de bucle o recursius, o qualsevol altre tipus de llenguatge de representació complet de Turing.

En moltes aplicacions, el programa de sortida ha de ser correcte pel que fa als exemples i l'especificació parcial, i això porta a considerar la programació inductiva com una àrea especial dins de la programació automàtica o síntesi de programes, [1][2] generalment oposada a "deductiva". síntesi del programa, [3][4][5] on l'especificació sol estar completa.

En altres casos, la programació inductiva es veu com una àrea més general on es pot utilitzar qualsevol programació declarativa o llenguatge de representació i fins i tot podem tenir algun grau d'error en els exemples, com en l'aprenentatge automàtic general, l'àrea més específica de la mineria d'estructures o l'àrea de la intel·ligència artificial simbòlica. Una característica distintiva és el nombre d'exemples o especificacions parcials necessaris. Normalment, les tècniques de programació inductiva poden aprendre només d'uns quants exemples.

La diversitat de la programació inductiva sol prové de les aplicacions i els llenguatges que s'utilitzen: a part de la programació lògica i la programació funcional, en la programació inductiva s'han utilitzat o suggerit altres paradigmes de programació i llenguatges de representació, com ara la programació lògica funcional, la programació de restriccions, la programació probabilística. programació, programació de lògica abductiva, lògica modal, llenguatges d' acció, llenguatges d' agent i molts tipus de llenguatges imperatius.

Àrees d'aplicació modifica

El primer taller sobre Enfocaments i Aplicacions de la Programació Inductiva (AAIP) celebrat conjuntament amb ICML 2005 va identificar totes les aplicacions on "es requereix l'aprenentatge de programes o regles recursives, [...] primer en el domini de l'enginyeria del programari on l'aprenentatge estructural, Els assistents de programari i els agents de programari poden ajudar a alleujar els programadors de les tasques rutinàries, donar suport a la programació per als usuaris finals o donar suport a programadors novells i sistemes tutors de programació. Altres àrees d'aplicació són l'aprenentatge d'idiomes, l'aprenentatge de regles de control recursiu per a la planificació d'IA, l'aprenentatge recursiu. conceptes en mineria web o per a transformacions de format de dades".

Des d'aleshores, aquestes i moltes altres àrees han demostrat ser nínxols d'aplicacions d'èxit per a la programació inductiva, com ara la programació d'usuari final, [6] les àrees relacionades de programació per exemple [7] i programació per demostració [8] i tutoria intel·ligent. sistemes.

Altres àrees on la inferència inductiva s'ha aplicat recentment són l'adquisició de coneixement, [9] la intel·ligència general artificial, [10] l'aprenentatge de reforç i l'avaluació de la teoria, [11][12] i la ciència cognitiva en general.[13][14] També hi pot haver aplicacions potencials en agents intel·ligents, jocs, robòtica, personalització, intel·ligència ambiental i interfícies humanes.

Referències modifica

  1. Biermann, A.W. Encyclopedia of Artificial Intelligence, 1992, pàg. 18–35.
  2. Rich, C. Yovits. Approaches to automatic programming (en anglès). 37, 1993, p. 1–57 (Advances in Computers). DOI 10.1016/S0065-2458(08)60402-7. ISBN 9780120121373. 
  3. Lowry. Automatic software design (en anglès), 1991. 
  4. Manna, Z.; Waldinger, R. IEEE Trans Softw Eng, 18, 8, 1992, pàg. 674–704. DOI: 10.1109/32.153379.
  5. Flener, P. «Achievements and Prospects of Program Synthesis». A: Kakas. Computational Logic: Logic Programming and Beyond; Essays in Honour of Robert A. Kowalski (en anglès). LNAI 2407, 2002, p. 310–346 (Lecture Notes in Computer Science). DOI 10.1007/3-540-45628-7_13. ISBN 978-3-540-43959-2. 
  6. Lieberman, H. End user development (en anglès). Springer, 2006. 
  7. Lieberman, H. Your wish is my command: Programming by example (en anglès). Morgan Kaufmann, 2001. ISBN 9781558606883. 
  8. Cypher, E. Watch what I do: programming by demonstration (en anglès). MIT Press, 1993. ISBN 9780262032131. 
  9. Schmid, U.; Hofmann, M.; Kitzelmann, E. Proceedings of the Second Conference on Artificial General Intelligence, 2009, pàg. 162–167.
  10. Crossley, N.; Kitzelmann, E.; Hofmann, M.; Schmid, U. Proceedings of the Second Conference on Artificial General Intelligence, 2009, pàg. 19–24.
  11. Hernandez-Orallo, J. International Journal of Intelligent Systems, 15, 3, 2000, pàg. 241–264. DOI: 10.1002/(sici)1098-111x(200003)15:3<241::aid-int6>3.0.co;2-z.
  12. Kemp, C.; Goodman, N.; Tenenbaum, J.B. Advances in Neural Information Processing Systems, 2007, pàg. 753–760.
  13. Schmid, U.; Kitzelmann, E. Cognitive Systems Research, 12, 3, 2011, pàg. 237–248. DOI: 10.1016/j.cogsys.2010.12.002.
  14. Stuhlmuller, A.; Goodman, N.D. Cognitive Systems Research, 28, 2012, pàg. 80–99. DOI: 10.1016/j.cogsys.2013.07.003.