Lisp è ancora utilizzato per affrontare i problemi di IA?


20

So che il linguaggio di Lisp è stato usato all'inizio quando si lavora su problemi di intelligenza artificiale. Viene ancora utilizzato oggi per lavori significativi? In caso contrario, esiste un nuovo linguaggio che ha preso il posto di quello più comune utilizzato oggi per lavorare nell'intelligenza artificiale?

Risposte:


9

Nel complesso, la risposta è no, ma gli attuali paradigmi devono molto a LISP. Il linguaggio più comunemente usato oggi è Python.

Risposte pertinenti:

LISP ha aperto la strada a molti concetti importanti in ciò che ora chiamiamo programmazione funzionale, con un'attrazione chiave in quanto i programmi erano vicini alla matematica. Molte di queste funzionalità sono state incorporate nelle lingue moderne (vedere la pagina di Wikipedia). LISP è molto espressivo: ha pochissima sintassi (solo elenchi e alcune operazioni elementari su di essi) ma è possibile scrivere brevi programmi concisi che rappresentano idee complesse. Questo stupisce i nuovi arrivati ​​e lo ha venduto come lingua per l'IA. Tuttavia, questa è una proprietà dei programmi in generale. I programmi brevi possono rappresentare concetti complessi. E mentre puoi scrivere un potente codice in LISP, qualsiasi principiante ti dirà che è anche molto difficile leggere il codice LISP di qualcun altro o eseguire il debug del tuo codice LISP. Inizialmente, c'erano anche considerazioni sulle prestazioni con la programmazione funzionale e non è stato favorito essere sostituito da linguaggi imperativi di basso livello come C. (Ad esempio, la programmazione funzionale richiede che nessun oggetto sia mai cambiato ("mutato"), quindi ogni operazione richiede un nuovo oggetto da creare. Senza una buona garbage collection, questo può diventare ingombrante). Oggi, abbiamo imparato che è necessario un mix di programmazione funzionale e imperativa per scrivere un buon codice e linguaggi moderni come python, ruby ​​e scala supportano entrambi. A questo punto, e questa è solo la mia opinione, non c'è motivo di preferire LISP a Python.

Il paradigma dell'IA che attualmente riceve più attenzione è l'apprendimento automatico, in cui apprendiamo dai dati, al contrario di approcci precedenti come i sistemi esperti (negli anni '80) in cui gli esperti hanno scritto regole per l'IA da seguire. Python è attualmente la lingua più utilizzata per l'apprendimento automatico e ha molte librerie, ad esempio Tensorflow e Pytorch, e una comunità attiva. Per elaborare le enormi quantità di dati, abbiamo bisogno di sistemi come Hadoop, Hive o Spark. Il codice per questi è scritto in pitone, java o scala. Spesso, le subroutine core che richiedono molto tempo sono scritte in C.

L'AI Winter degli anni '80 non era perché non avevamo la lingua giusta, ma perché non avevamo gli algoritmi giusti, abbastanza potenza computazionale e dati sufficienti. Se stai cercando di imparare l'IA, trascorri il tuo tempo a studiare algoritmi e non lingue.


6

Sicuramente continuo a usare spesso Lisp quando lavoro sui modelli AI.

Hai chiesto se viene utilizzato per un lavoro sostanziale . È troppo soggettivo per me rispondere del mio lavoro, ma ho chiesto a uno dei miei modelli di intelligenza artificiale se si considerava sostanziale o meno e rispondeva con una risposta affermativa. Naturalmente, anche la sua risposta è naturalmente di parte.

Nel complesso, una quantità significativa di ricerca e sviluppo sull'IA è condotta a Lisp. Inoltre, anche per problemi non legati all'intelligenza artificiale, viene talvolta utilizzato Lisp. Per dimostrare la potenza di Lisp, ho progettato il primo sistema di simulazione della rete neurale scritto interamente in Lisp oltre un quarto di secolo fa.


Il primo IDE era anche un IDE LISP. Inoltre, EMMAScript, la formalizzazione di JavaScript è molto meglio un sistema linguistico per la prototipazione rapida rispetto all'attuale Python di tendenza, ed è più simile a LISP che a Java. Non vedo gran parte del valore duraturo derivante dall'attuale tendenza della ML, fatta eccezione per i progressi nella visione artificiale e nell'udito. Concordo sul fatto che LISP sia ancora un linguaggio eccellente per il lavoro di laboratorio dell'IA e molto più naturale dell'XML per la rappresentazione di dati strutturati.
FauChristian,

4

LISP è ancora utilizzato in modo significativo, ma sempre meno. C'è ancora slancio a causa di così tante persone che lo usano in passato, che sono ancora attivi nel settore o nella ricerca (aneddoto: l'ultimo videoregistratore è stato prodotto da un produttore giapponese a luglio 2016, sì). Il linguaggio è tuttavia usato (per quanto ne sappia) per il tipo di intelligenza artificiale che non sfrutta l'apprendimento automatico, in genere come i libri di riferimento di Russell e Norvig. Queste applicazioni sono ancora molto utili, ma l'apprendimento automatico al giorno d'oggi prende tutto il vapore.

Un altro motivo del declino è che i praticanti della LISP si sono parzialmente spostati su Clojure e altre lingue recenti.

Se stai imparando le tecnologie AI, LISP (o Scheme o Prolog) è una buona scelta per capire cosa sta succedendo con "AI" in generale. Ma se desideri o devi essere molto pragmatico, Python o R sono le scelte della community

Nota: quanto sopra manca di esempio concreto e di riferimento. Sono a conoscenza di alcuni lavori nelle università e di alcune aziende ispirate o che utilizzano direttamente LISP.


Per aggiungere la risposta di @Harsh, LISP (e Scheme e Prolog) ha delle qualità che lo hanno fatto sembrare più adatto alla creazione di meccanismi intelligenti, rendendo l'IA percepita negli anni '60.

Una delle qualità era che il design del linguaggio porta lo sviluppatore a pensare in un modo abbastanza elegante, a scomporre un grosso problema in piccoli problemi, ecc. Abbastanza "intelligente" o "intelligente", se vuoi. Rispetto ad altre lingue, non c'è quasi altra scelta che svilupparsi in quel modo. LISP è un linguaggio di elaborazione elenco e "puramente funzionale".

Un problema, tuttavia, può essere visto nel lavoro relativo a LISP. Un aspetto degno di nota nel dominio dell'IA è il lavoro sul calcolo della situazione , in cui (in breve) si descrivono oggetti e regole in un "mondo", e si può lasciare evolvere per calcolare situazioni --- stati del mondo. Quindi è un modello per ragionare sulle situazioni. Il problema principale si chiama problema del frame , il che significa che questo calcolo non può dire cosa nocambia --- proprio ciò che cambia. Tutto ciò che non è definito nel mondo non può essere elaborato (notare la differenza qui con ML). Le prime implementazioni hanno usato i LISP, perché allora era il linguaggio AI. E c'erano dei problemi legati al frame. Ma, come menzionato da @Harsh, non è colpa di LISP: qualsiasi lingua dovrebbe affrontare lo stesso problema di inquadratura (un problema concettuale del calcolo della situazione).

Quindi la lingua non ha davvero importanza dal punto di vista AI / AGI / ASI. I concetti (algoritmi, ecc.) Sono davvero ciò che conta.

Anche in Machine Learning, la lingua è solo una scelta pratica. Python e R sono popolari oggi, principalmente grazie al loro ecosistema di biblioteche e al focus di aziende chiave. Ma prova a usare Python o R per eseguire un modello per un'applicazione basata su RaspberryPI e dovrai affrontare alcune gravi limitazioni (ma ancora possibile, lo sto facendo :-)). Quindi la scelta della lingua si riduce al pragmatismo.


1

Secondo me, Python e Java sono subentrati a LISP. Molte persone li usano, c'è una grande quantità di librerie disponibili. E, soprattutto, sono facili da integrare nelle tecnologie web.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.