Linguaggio di programmazione recente per AI? [chiuso]


15

Per alcuni decenni il linguaggio di programmazione scelto per l'IA era Prolog o LISP , e pochi altri che non sono così noti . Molti di questi sono stati progettati prima degli anni '70.

I cambiamenti avvengono molto in molti altri linguaggi specifici di domini, ma nel dominio AI non sono emersi così tanto come nei linguaggi specifici del web o negli script ecc.

Esistono linguaggi di programmazione recenti che avevano lo scopo di cambiare il gioco nell'intelligenza artificiale e imparare dalle insufficienze delle lingue precedenti?


1
Octave è un buon linguaggio per l'apprendimento automatico se quella branca dell'IA ti interessa.
setzamora,

Considera anche un approccio di meta-programmazione (ovvero generazione di programmi). Guarda nel blog di J.Pitrat . Quindi la lingua che generi potrebbe non avere molta importanza, potrebbe anche essere C.
Basile Starynkevitch

Risposte:


23

Il corso di intelligenza artificiale a cui ho partecipato online, tenuto a Stanford, mi ha raccomandato di utilizzare 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. Mantiene il parto dai sottocampi quando le persone si rendono conto che le tecniche da esso possono essere utilizzate altrove. Elaborazione delle lingue, Machine Learning e Data Mining sono tutti esempi di applicazioni "pratiche" che utilizzano una vasta gamma di lingue.

Quindi è meno che il campo principale sia cambiato di quanto non sia stato perfezionato in una vasta gamma di discipline correlate. È molto simile a dire "calcolo scientifico" e aspettarsi che significhi semplicemente risolvere equazioni lineari.

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

Dato che la ricerca sull'IA è più teorica, ha senso che si focalizzerebbe sulla teoria (matematica) piuttosto che sulle pratiche (lingue).

Detto questo, il più grande innovatore delle tecnologie AI che scommetterei è Google. Tendono a favorire Python (e Go and Dart, ma questo è il punto). Quindi direi che Python è il "linguaggio di scelta recente" ma potresti anche usare Haskell o OCaml o F # o C # o persino Java.


+1 Per menzionare Mercurio.
Guy Coder,

8

Puoi trovare le risposte alle tue domande in un recente numero speciale "Sprachen der KI" ("Lingue dell'IA") della rivista tedesca KI - Künstliche Intelligenz , volume 26, numero 1 / febbraio 2012, pubblicato da Springer. Sono il coautore di una parte di un documento di discussione incluso in esso: "Che lingua usi per creare i tuoi programmi di intelligenza artificiale e perché?" Ecco una prestampa: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

In sintesi, alcuni ricercatori dell'IA giurano ancora con le lingue AI classiche Lisp e Prolog. Altri usano linguaggi tradizionali come C ++, Java o Python. Ad altri piace ancora esplorare nuovi linguaggi di programmazione esoterici.

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

Alcuni ricercatori vogliono andare oltre la prototipazione o hanno requisiti speciali (ad es. Big data) e devono implementare nuovamente i loro algoritmi in linguaggi compilati o fortemente tipizzati come C, C ++ o Java al termine della fase di programmazione esplorativa e hanno un migliore presa del problema. Alcuni direbbero che a quel punto (quando il problema è ben compreso), non si ha più a che fare con l'IA.

Tornando alla tua ultima domanda, tutti gli sviluppi significativi in ​​nuovi linguaggi di intelligenza artificiale di cui sono a conoscenza sono ispirati dalla programmazione basata sui vincoli. Alcuni sono entrati nelle implementazioni di Prolog come SICStus e SWI, altri hanno generato linguaggi simili a Prolog come Mercury e Mozart / Oz. Naturalmente ci sono probabilmente nuovi sviluppi significativi di cui non sono a conoscenza.


2

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

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

Ad esempio, l'inferenza di tipo nei linguaggi funzionali usa Hindley-Milner che si basa sull'unificazione.

Un altro esempio specifico dell'assistente per le prove è qui , notate prolog.ml. Il motore di inferenza per prolog è implementato in OCaml e tradotto in F #. Pertanto, sebbene OCaml e F # non siano indicati normalmente come linguaggi AI, sono pienamente in grado di implementare gli algoritmi AI.


Devo dire che questo è esattamente ciò che penso a questa domanda: gli algoritmi sono più importanti del linguaggio che usi per scriverli, ecco perché ogni libro di AI che ho letto ha insistito nel dare lo pseudocodice per gli algoritmi.
JJP,

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 raggruppamento e altre forme di apprendimento supervisionato e non supervisionato, in particolare con modelli grafici probabilistici, sono stati implementati in Python, C #, Ruby, OCaml e Java, solo per citarne alcuni.

Se stai manipolando i dati su larga scala per creare cose come motori di raccomandazione, filtro collaborativo o altri tipi di problemi di apprendimento senza supervisione o supervisione, potresti dare un'occhiata a Mahout . Non è in realtà un "linguaggio di programmazione" di per sé, ma è un insieme di strumenti per questo tipo di problema. È possibile scrivere codice modello in Java o altri linguaggi JVM come groovy (un linguaggio dinamico, ragionevolmente espressivo) o clojure (simile a lisp).

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

Naturalmente, le tecniche di apprendimento automatico si sono generalmente spostate verso modelli probabilistici piuttosto che sulla logica binaria, sull'approccio in stile albero decisionale con cui sono iniziati i primi sforzi di IA, quindi è possibile sostenere che l'apprendimento automatico è un ramo o un diversivo dalla grande tenda di AI.


0

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

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

Tuttavia, la tendenza recente mostra che qualsiasi linguaggio OOP come C #, Java, Python, Haskell, ecc. Stanno diventando programmabili per le applicazioni AI.


3
Da quando Haskell è OOP?
Andrea,

potresti emulare OOP in Haskell, giusto?
Yusubov,

1
puoi emularlo in qualsiasi lingua, non significa che normalmente considereresti qualsiasi lingua come OO
jk.
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.