Linguaggio di programmazione recente per l'intelligenza artificiale? [chiuso]

15

Per alcuni decenni il linguaggio di programmazione di scelta per l'intelligenza artificiale era Prolog o LISP e un altri pochi altri che non sono così famosi . Molti di questi sono stati progettati prima degli anni '70.

Le modifiche avvengono molto su molti altri linguaggi specifici dei domini, ma nel dominio AI non era emerso così tanto come nelle lingue o script di Web specifici ecc.

Ci sono dei linguaggi di programmazione recenti che hanno lo scopo di cambiare il gioco nell'IA e imparare dalle insufficienze delle lingue precedenti?

    
posta Eduard Florinescu 06.10.2012 - 00:39
fonte

5 risposte

23

Il corso di intelligenza artificiale che ho frequentato online, insegnato a Stanford, mi ha raccomandato di usare Python per i compiti. Credo che Georgia Tech usi ancora LISP.

L'errore qui è "nuovo" è "buono". La ricerca AI è una delle più antiche discipline di ricerca informatica. Continua a allontanarsi dai sottocampi quando le persone si rendono conto che le tecniche da esso utilizzate possono essere utilizzate altrove. L'elaborazione del linguaggio, l'apprendimento automatico e il data mining sono tutti esempi di applicazioni "pratiche" che utilizzano una grande quantità di lingue.

Quindi è meno che il campo principale sia cambiato di quanto non sia stato raffinato in una vasta gamma di discipline correlate. È come dire "Scientific Computing" e aspettarsi che significhi solo risolvere le equazioni lineari.

Le lingue che hai citato si sono evolute parecchio negli ultimi 20 o 30 anni. Lisp ha generato Common Lisp e Clojure. Prolog ha generato Visual Prolog (ha oggetti ...) e Mercury (prendi Haskell e Prolog, chiudili in una stanza insieme ... stai lontano e preparati a correre).

Dato che la ricerca sull'IA è più teorica, ha senso che si concentri sulla teoria (matematica) piuttosto che sugli aspetti pratici (lingue).

Tutto ciò che viene detto, il più grande innovatore di tecnologie IA che scommetterei è Google. Tendono a favorire Python (e Go and Dart, ma questo è oltre il punto). Quindi direi che Python è il "linguaggio recente di scelta", ma potresti anche usare Haskell o OCaml o F # o C # o anche Java.

    
risposta data 06.10.2012 - 01:02
fonte
8

Potresti trovare le risposte alle tue domande in un recente numero speciale "Sprachen der KI" ("Languages of AI") della rivista tedesca AI KI - Künstliche Intelligenz , Volume 26, Numero 1 / Febbraio 2012, pubblicato da Springer. Sono il coautore di una parte di un documento di discussione in esso contenuto: "Che lingua usi per creare i tuoi programmi di intelligenza artificiale e perché?" Ecco una stampa preliminare: link

In sintesi, alcuni ricercatori dell'IA giurano ancora sulle lingue classiche di intelligenza artificiale Lisp e Prolog. Altri usano linguaggi mainstream come C ++, Java o Python. Altri ancora amano esplorare nuovi linguaggi di programmazione esoterici.

Credo che non ci sia nulla di speciale nell'IA che richiederebbe linguaggi di programmazione speciali. Ciò che i ricercatori in generale vogliono sono i linguaggi di programmazione che consentono la prototipazione rapida. Questo è qualcosa che i vecchi linguaggi AI (Lisp, Prolog) e i nuovi linguaggi "scripting" (Perl, Python, Ruby o recenti linguaggi JVM come Clojure) sono perfetti per.

Alcuni ricercatori vogliono andare oltre la prototipazione, o hanno requisiti speciali (es. big data) e hanno bisogno di ri-implementare i loro algoritmi in linguaggi compilati o strongmente tipizzati come C, C ++ o Java una volta terminata la fase di programmazione esplorativa e hanno una migliore presa del problema. Alcuni direbbero che a quel punto (quando il problema è ben compreso), non si sta più occupando di AI.

Tornando alla tua ultima domanda, tutti gli sviluppi significativi nelle nuove lingue AI di cui sono a conoscenza sono ispirati dalla programmazione basata sui vincoli. Alcuni hanno inserito implementazioni Prolog come SICStus e SWI, altri hanno generato linguaggi di tipo Prolog come Mercury e Mozart / Oz. Naturalmente ci sono probabilmente nuovi sviluppi significativi di cui non sono a conoscenza.

    
risposta data 25.10.2012 - 00:30
fonte
2

Mentre la maggior parte di queste risposte si concentra sulla parola "lingua" perché la hai usata nella tua domanda, non credo che tu debba pensare una lingua specifica quando pensi all'IA.

Lavoro con questa tecnologia da anni e attualmente sto lavorando con Proof Assistants e convertendo del codice da OCaml a F #. Non è il linguaggio che raggiunge l'intelligenza artificiale ma specifici algoritmi implementati nella lingua. Per PROLOG questo è un motore di inferenza basato su unificazione . Ora, se inizi con l'unificazione e osservi come è stata personalizzata e avanzata nel corso degli anni, penso che troverai la progressione del progresso che cerchi. Non concentrarti sulla lingua, concentrati sugli algoritmi.

Ad esempio, l'inferenza di tipo nelle lingue funzionali usa Hindley-Milner che si basa su unificazione.

Un altro esempio specifico dell'assistente alla prova è qui , nota prolog.ml. Il motore di inferenza per prolog è implementato in OCaml e tradotto in F #. Quindi, mentre OCaml e F # non sono noti normalmente come lingue AI, sono pienamente in grado di implementare gli algoritmi AI.

    
risposta data 06.10.2012 - 16:30
fonte
1

Direi che dipende da cosa intendi per AI. L'apprendimento automatico in generale ha visto una rapida evoluzione degli strumenti, quindi un certo numero di algoritmi per la classificazione, il clustering e altre forme di apprendimento supervisionato e non supervisionato, specialmente con modelli grafici probabilistici, sono stati implementati in Python, C #, Ruby, OCaml e Java, solo per citarne alcuni.

Se stai facendo una manipolazione su larga scala dei dati per costruire cose come motori di raccomandazione, filtri collaborativi o altri tipi di problemi di apprendimento non supervisionati o supervisionati, potresti dare un'occhiata a Mahout . Non è davvero un "linguaggio di programmazione" di per sé, ma è un insieme di strumenti per questo tipo di problema. Puoi scrivere codice modello in Java o in altri linguaggi JVM come groovy (un linguaggio dinamico, ragionevolmente espressivo) o clojure (simile al lisp).

Non sono sicuro del motivo per cui considereresti la data di Lisp; è dove ha origine la maggior parte delle "nuove" funzionalità linguistiche in altre lingue (chiusure, ecc.)

Naturalmente, le tecniche di machine learning si sono generalmente spostate verso modelli probabilistici piuttosto che sulla logica binaria, l'approccio in stile "decision-tree" con cui sono iniziati i primi sforzi di IA, quindi è possibile sostenere che l'apprendimento automatico è una derivazione o una deviazione dalla la grande tenda dell'IA.

    
risposta data 06.10.2012 - 02:41
fonte
0

Il linguaggio di scelta per l'IA che ho usato anni fa era Prolog, che ha Visual Prolog versione fornita con IDE come in Delphi.

Prolog (e la sua versione GUI Visual Prolog) è un linguaggio di programmazione logica generico associato all'intelligenza artificiale e alla linguistica computazionale.

Tuttavia, recenti trend mostrano che qualsiasi linguaggio OOP come C #, Java, Python, Haskell, ecc. sta diventando programmabile per le applicazioni AI.

    
risposta data 06.10.2012 - 01:22
fonte

Leggi altre domande sui tag