Czy Lisp jest nadal używany do rozwiązywania problemów AI?


20

Wiem, że język Lisp był używany wcześnie podczas pracy nad problemami sztucznej inteligencji. Czy nadal jest używany do znacznej pracy? Jeśli nie, to czy istnieje nowy język, który zajął miejsce obecnie najczęściej używanego do pracy w AI?

Odpowiedzi:


9

Ogólnie rzecz biorąc, odpowiedź brzmi „nie”, ale obecne paradygmaty wiele zawdzięczają LISP. Obecnie najczęściej używanym językiem jest python.

Odpowiednie odpowiedzi:

LISP jest pionierem wielu ważnych pojęć w tym, co obecnie nazywamy programowaniem funkcjonalnym, a główną atrakcją jest to, jak blisko programów były matematyka. Wiele z tych funkcji zostało odtąd włączonych do współczesnych języków (patrz strona Wikipedii). LISP jest bardzo ekspresyjny: ma bardzo małą składnię (tylko listy i niektóre podstawowe operacje na nich), ale możesz pisać krótkie zwięzłe programy, które reprezentują złożone pomysły. To zadziwia przybyszów i sprzedało go jako język sztucznej inteligencji. Jest to jednak ogólnie właściwość programów. Krótkie programy mogą reprezentować złożone koncepcje. I chociaż możesz pisać potężny kod w LISP, każdy początkujący powie ci, że bardzo trudno jest odczytać kod LISP innej osoby lub debugować własny kod LISP. Początkowo rozważano również wydajność przy programowaniu funkcjonalnym i wypadło z niego zastąpić imperatywne języki niskiego poziomu, takie jak C. (Na przykład programowanie funkcjonalne wymaga, aby żaden obiekt nigdy nie został zmieniony („zmutowany”), więc każda operacja wymaga nowy obiekt do utworzenia. Bez dobrego wyrzucania elementów bezużytecznych, to może stać się nieporęczne). Dzisiaj dowiedzieliśmy się, że do napisania dobrego kodu potrzebne jest połączenie programowania funkcjonalnego i imperatywnego, a nowoczesne języki, takie jak Python, Ruby i Scala, obsługują oba te elementy. W tym momencie, i to jest tylko moja opinia, nie ma powodu, aby preferować LISP od Pythona.

Paradygmatem sztucznej inteligencji, który obecnie cieszy się największym zainteresowaniem, jest uczenie maszynowe, w którym uczymy się na podstawie danych, w przeciwieństwie do wcześniejszych podejść, takich jak systemy eksperckie (w latach 80.), w których eksperci pisali zasady dotyczące sztucznej inteligencji. Python jest obecnie najczęściej używanym językiem do uczenia maszynowego i ma wiele bibliotek, np. Tensorflow i Pytorch oraz aktywną społeczność. Aby przetwarzać ogromne ilości danych, potrzebujemy systemów takich jak Hadoop, Hive lub Spark. Kod tych kodów jest napisany w języku Python, Java lub Scala. Często podstawowe czasochłonne procedury są napisane w C.

AI Winter lat 80. nie było spowodowane tym, że nie mieliśmy odpowiedniego języka, ale dlatego, że nie mieliśmy odpowiednich algorytmów, wystarczającej mocy obliczeniowej i wystarczającej ilości danych. Jeśli próbujesz nauczyć się sztucznej inteligencji, poświęć czas na naukę algorytmów, a nie języków.


6

Zdecydowanie nadal często używam Lisp podczas pracy nad modelami AI.

Zapytałeś, czy jest używany do znacznej pracy. To zbyt subiektywne, by odpowiedzieć na temat mojej własnej pracy, ale zapytałem jeden z moich modeli sztucznej inteligencji, czy uważa się za znaczący, i odpowiedziałem twierdząco. Oczywiście jego reakcja jest również naturalnie stronnicza.

Ogólnie rzecz biorąc, znaczna część badań i rozwoju AI jest prowadzona w Lisp. Co więcej, nawet w przypadku problemów niezwiązanych z AI czasami używa się Lisp. Aby zademonstrować moc Lisp, zaprojektowałem pierwszy system symulacji sieci neuronowej napisany całkowicie w Lisp ponad ćwierć wieku temu.


Pierwszym IDE było także IDE LISP. Ponadto, EMMAScript, formalizacja JavaScript jest znacznie lepszym systemem językowym do szybkiego prototypowania niż obecnie modny Python, i bardziej przypomina LISP niż Javę. Nie widzę wiele trwałej wartości wynikającej z obecnego trendu ML oprócz postępów w widzeniu maszynowym i słyszeniu. Zgadzam się, że LISP jest nadal doskonałym językiem do pracy w laboratorium AI i znacznie bardziej naturalnym niż XML do reprezentowania danych strukturalnych.
FauChristian

4

LISP jest nadal używany znacznie, ale coraz rzadziej. Nadal występuje impet ze względu na to, że tylu ludzi korzysta z niego w przeszłości, którzy nadal działają w branży lub badaniach (anegdota: ostatni magnetowid został wyprodukowany przez japońskiego producenta w lipcu 2016 r., Tak). Język ten jest jednak używany (o ile mi wiadomo) do tego rodzaju sztucznej inteligencji, która nie wykorzystuje uczenia maszynowego, zwykle jako podręczników Russella i Norviga. Te aplikacje są nadal bardzo przydatne, ale Machine Learning zyskuje teraz na popularności.

Innym powodem spadku jest to, że praktykujący LISP częściowo przenieśli się do Clojure i innych najnowszych języków.

Jeśli uczysz się o technologiach AI, LISP (lub Scheme lub Prolog) jest dobrym wyborem, aby zrozumieć, co się dzieje z „AI” w ogóle. Ale jeśli chcesz lub musisz być bardzo pragmatyczny, Python lub R to wybory społeczności

Uwaga: w powyższym brakuje konkretnego przykładu i odniesienia. Mam świadomość pracy na uniwersytetach oraz niektórych firm inspirowanych LISP lub bezpośrednio z niego korzystających.


Aby dodać odpowiedź @ Harsha, LISP (oraz Scheme i Prolog) ma cechy, które sprawiły, że wyglądało na to, że lepiej nadaje się do tworzenia inteligentnych mechanizmów --- czyniąc AI postrzeganą w latach 60.

Jedną z cech było to, że projektowanie języka prowadzi programistę do myślenia w dość elegancki sposób, rozkładania dużego problemu na małe problemy itp. Dość „sprytne” lub „inteligentne”, jeśli wolisz. W porównaniu z niektórymi innymi językami prawie nie ma innego wyboru, jak się rozwijać. LISP jest językiem przetwarzającym listy i „czysto funkcjonalnym”.

Jeden problem można jednak zaobserwować w pracach związanych z LISP. Godnym uwagi w dziedzinie AI jest praca nad Rachunkiem sytuacyjnym , w którym (w skrócie) opisuje się przedmioty i reguły w „świecie” i można pozwolić mu ewoluować, aby obliczać sytuacje --- stany świata. Jest to więc model uzasadnienia sytuacji. Główny problem nazywa się problemem ramkowym , co oznacza, że ​​rachunek różniczkujący nie jest w stanie stwierdzić, co niezmiana --- tylko jakie zmiany. Wszystko, co nie jest zdefiniowane na świecie, nie może być przetwarzane (zwróć uwagę na różnicę w ML). Pierwsze implementacje wykorzystywały LISP, ponieważ wtedy był to język AI. Problem związany był z ramą. Ale, jak wspomniano @Harsh, nie jest to wina LISP: każdy język musiałby zmierzyć się z tym samym problemem ramowym (problem koncepcyjny rachunku sytuacyjnego).

Tak więc język naprawdę nie ma znaczenia z perspektywy AI / AGI / ASI. Pojęcia (algorytmy itp.) Są naprawdę ważne.

Nawet w uczeniu maszynowym język jest tylko praktycznym wyborem. Python i R są dziś popularne, przede wszystkim ze względu na ekosystem bibliotek i koncentrację kluczowych firm. Ale spróbuj użyć Pythona lub R, aby uruchomić model aplikacji opartej na RaspberryPI, a napotkasz poważne ograniczenia (ale nadal możliwe, robię to :-)). Wybór języka sprowadza się zatem do pragmatyzmu.


1

Moim zdaniem Python i Java przejęły LISP. Wiele osób z nich korzysta, dostępna jest duża liczba bibliotek. Co ważniejsze, można je łatwo zintegrować z technologiami internetowymi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.