Najnowszy język programowania dla AI? [Zamknięte]

15

Przez kilka dziesięcioleci językiem programowania AI był Prolog lub LISP , a kilka innych nie było tak dobrze znanych . Większość z nich została zaprojektowana przed latami 70.

Zmiany zdarzają się często w wielu innych domenach w określonych językach, ale w domenie sztucznej inteligencji nie pojawiło się tak dużo, jak w określonych językach internetowych lub skryptach itp.

Czy istnieją najnowsze języki programowania, które miały na celu zmianę gry w sztucznej inteligencji i wyciąganie wniosków z niedoskonałości poprzednich języków?

Eduard Florinescu
źródło
1
Oktawa jest dobrym językiem do uczenia maszynowego, jeśli ta gałąź AI Cię interesuje.
setzamora
Rozważ także podejście metaprogramowania (tj. Generowanie programów). Zajrzyj na blog J.Pitrat . Wtedy język, który generujesz, może nie mieć większego znaczenia, może to być nawet C.
Basile Starynkevitch,

Odpowiedzi:

23

Kurs sztucznej inteligencji, w którym uczestniczyłem online, prowadzony w Stanford, zalecał użycie Pythona do odrabiania zadań domowych. Wierzę, że Georgia Tech nadal korzysta z LISP.

Błędem jest to, że „nowy” jest „dobry”. Badania nad AI są jedną z najstarszych dyscyplin komputerowych. Ucieka z subpól, gdy ludzie zdają sobie sprawę, że techniki z nich można wykorzystać gdzie indziej. Przetwarzanie języka, uczenie maszynowe i eksploracja danych to przykłady „praktycznych” aplikacji korzystających z ogromnej liczby języków.

Więc mniej zmieniło się główne pole niż zostało zmienione w ogromną gamę powiązanych dziedzin. Przypomina to powiedzenie „obliczeń naukowych” i oczekiwanie, że będzie to oznaczało rozwiązanie równań liniowych.

Języki, o których wspomniałeś, ewoluowały całkiem sporo w ciągu ostatnich 20 lub 30 lat. Lisp zrodził Common Lisp i Clojure. Prolog pojawił się Visual Prolog (ma przedmioty ...) i Mercury (zabierz Haskella i Prologa, zamknij je razem w pokoju ... stań daleko i przygotuj się do ucieczki).

Biorąc pod uwagę, że badania nad sztuczną inteligencją są bardziej teoretyczne, sensowne byłoby skoncentrowanie się na teorii (matematyce), a nie na praktyczności (językach).

Biorąc to wszystko pod uwagę, największym innowatorem technologii AI, który postawiłem, jest Google. Zwykle faworyzują Pythona (i Go i Dart, ale to nie ma sensu). Tak więc powiedziałbym, że Python jest „ostatnim wybranym językiem”, ale możesz również użyć Haskell lub OCaml lub F # lub C # lub nawet Java.

Inżynier świata
źródło
+1 Za wspomnienie o rtęci.
Guy Coder,
8

Odpowiedzi na pytania można znaleźć w ostatnim wydaniu specjalnym „Sprachen der KI” („Języki AI”) niemieckiego czasopisma AI KI - Künstliche Intelligenz , tom 26, numer 1 / luty 2012, opublikowanym przez Springera. Jestem współautorem jednej z zawartych w nim części dyskusji: „Jakiego języka używasz do tworzenia programów sztucznej inteligencji i dlaczego?” Oto jego przedruk: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Podsumowując, niektórzy badacze AI wciąż przysięgają na klasyczne języki AI Lisp i Prolog. Inni używają głównych języków, takich jak C ++, Java lub Python. Jeszcze inni lubią odkrywać nowe ezoteryczne języki programowania.

Uważam, że w AI nie ma nic specjalnego, co wymagałoby specjalnych języków programowania. Na ogół naukowcy chcą języków programowania, które umożliwiają szybkie prototypowanie. Jest to coś, w czym świetnie nadają się stare języki AI (Lisp, Prolog) i nowsze języki „skryptowe” (Perl, Python, Ruby lub najnowsze języki JVM, takie jak Clojure).

Niektórzy badacze chcą wyjść poza prototypowanie lub mają specjalne wymagania (np. Duże zbiory danych) i muszą ponownie wdrożyć swoje algorytmy w skompilowanych lub silnie typowanych językach, takich jak C, C ++ lub Java, po zakończeniu fazy programowania eksploracyjnego i mają lepsza przyczepność do problemu. Niektórzy powiedzieliby, że w tym momencie (kiedy problem jest dobrze zrozumiany) nie masz już do czynienia z AI.

Wracając do ostatniego pytania, wszystkie znaczące zmiany w nowych językach sztucznej inteligencji, o których wiem, są inspirowane programowaniem opartym na ograniczeniach. Niektórzy weszli w implementacje Prologu, takie jak SICStus i SWI, inni stworzyli języki podobne do Prologu, takie jak Mercury i Mozart / Oz. Oczywiście prawdopodobnie pojawią się nowe znaczące zmiany, o których nie wiem.

Christian Pietsch
źródło
2

Podczas gdy większość tych odpowiedzi skupia się na słowie „język”, ponieważ użyłeś go w swoim pytaniu, nie sądzę, że powinieneś myśleć konkretnym językiem, myśląc o AI.

Pracuję z tą technologią od lat i obecnie pracuję z Proof Assistants i przekształcam trochę kodu z OCaml do F #. To nie język osiąga sztuczną inteligencję, ale określone algorytmy zaimplementowane w tym języku. Dla PROLOG jest to silnik wnioskowania oparty na unifikacji . Teraz, jeśli zaczniesz od zjednoczenia i przyjrzysz się, jak został on dostosowany i zaawansowany przez lata, myślę, że znajdziesz postęp, którego szukasz. Nie skupiaj się na języku, skup się na algorytmach.

Jako przykład, wnioskowanie typu w językach funkcjonalnych wykorzystuje Hindley – Milner, który opiera się na unifikacji.

Kolejny przykład specyficzny dla asystenta dowodu znajduje się tutaj , zauważ prolog.ml. Silnik wnioskowania dla prologu jest zaimplementowany w OCaml i jest tłumaczony na F #. Tak więc, chociaż OCaml i F # nie są normalnie zapisywane jako języki AI, są one w pełni zdolne do implementacji algorytmów AI.

Guy Coder
źródło
Muszę powiedzieć, że właśnie tak myślę o tym pytaniu: algorytmy są ważniejsze niż język, w którym je piszesz, dlatego każda czytana książka AI nalegała na podanie pseudokodu dla algorytmów.
JJP
1

Powiedziałbym, że to zależy od tego, co masz na myśli przez AI. Uczenie maszynowe generalnie uległo szybkiej ewolucji narzędzi, dlatego w Pythonie, C #, Ruby, OCaml i Java, żeby wymienić tylko kilka.

Jeśli zajmujesz się przetwarzaniem danych na dużą skalę w celu budowania takich rzeczy, jak silniki rekomendacji, filtrowanie grupowe lub inne rodzaje problemów związanych z uczeniem się bez nadzoru lub nadzorowanego, możesz rzucić okiem na Mahout . Nie jest to tak naprawdę „język programowania”, ale zestaw narzędzi do tego rodzaju problemów. Możesz pisać kod modelu w Javie lub innych językach JVM, takich jak groovy (dynamiczny, dość ekspresyjny język) lub clojure (seplenienie).

Nie jestem pewien, dlaczego uważa Pan Lisp za datę; stąd pochodzi większość „nowych” funkcji językowych w innych językach (zamknięcia itp.).

Oczywiście techniki uczenia maszynowego przeważnie zmierzają w kierunku modeli probabilistycznych niż w oparciu o logikę binarną, podejście oparte na drzewku decyzyjnym, od którego zaczęły się początkowe wysiłki AI, więc można argumentować, że uczenie maszynowe jest odgałęzieniem lub odejściem od dużego namiotu AI.

JasonTrue
źródło
0

Językiem wyboru AI, z którego korzystałem przed laty, był Prolog, który ma wersję Visual Prolog dostarczaną z IDE, jak w Delphi.

Prolog (i jego wersja GUI Visual Prolog) to język programowania logiki ogólnego zastosowania związany ze sztuczną inteligencją i językoznawstwem obliczeniowym.

Jednak najnowszy trend pokazuje, że każdy język OOP, taki jak C #, Java, Python, Haskell itp., Staje się programowalny dla aplikacji AI.

Jusubow
źródło
3
Od kiedy jest OOP Haskell?
Andrea,
możesz naśladować OOP w Haskell, prawda?
Yusubov,
1
możesz go emulować w dowolnym języku, co nie znaczy, że normalnie uważałbyś każdy język za OO
jk.