Dlaczego Python jest tak popularnym językiem w dziedzinie sztucznej inteligencji?

47

Przede wszystkim jestem początkującym uczącym się sztucznej inteligencji i nie jest to pytanie zorientowane na opinię ani porównanie języków programowania. Nie twierdzę, że to najlepszy język. Ale faktem jest, że większość znanych struktur AI ma podstawowe wsparcie dla Pythona. Mogą być nawet obsługiwane w wielu językach, na przykład TensorFlow, który obsługuje Python, C ++ lub CNTK firmy Microsoft, który obsługuje C # i C ++, ale najczęściej używany jest Python (mam na myśli większą dokumentację, przykłady, większą społeczność, wsparcie itp.). Nawet jeśli wybierzesz C # (opracowany przez Microsoft i mój podstawowy język programowania), musisz mieć skonfigurowane środowisko Python.

Czytałem na innych forach, że Python jest preferowany do AI, ponieważ kod jest uproszczony i bardziej przejrzysty, dobry do szybkiego prototypowania.

Oglądałem film o tematyce AI (Ex_Machina). W niektórych scenach główny bohater włamuje się do interfejsu automatyki domowej. Zgadnij, który język był na scenie? Pyton.

Więc o co chodzi, związek między Pythonem a AI?

Douglas Ferreira
źródło
Pamiętaj, że reprezentacja języków programowania w filmach zwykle nie jest związana z prawdziwym życiem! Wszystko, co dla świeckich wygląda na tajemniczy gobbledegook, jest zwykle w porządku ...
Oliver Mason
Jeśli C # jest twoim głównym językiem programowania, możesz być zainteresowany scisharpstack.org
henon

Odpowiedzi:

32

Python posiada ogromną liczbę wbudowanych bibliotek. Wiele bibliotek służy do sztucznej inteligencji i uczenia maszynowego. Niektóre biblioteki to Tensorflow (biblioteka wysokiego poziomu sieci neuronowej), scikit-learn (do eksploracji danych, analizy danych i uczenia maszynowego), pylearn2 (bardziej elastyczny niż scikit-learn) itp. Lista jest długa i nigdy kończy się.

Można znaleźć kilka bibliotek tutaj .

Python ma łatwą implementację dla OpenCV. To, co sprawia, że ​​Python jest lubiany przez wszystkich, to jego potężne i łatwe wdrożenie.
W przypadku innych języków studenci i badacze muszą zapoznać się z tym językiem przed przystąpieniem do ML lub AI z tym językiem. W przypadku Pythona tak nie jest. Nawet programista o bardzo podstawowej wiedzy z łatwością poradzi sobie z pythonem. Poza tym czas, który ktoś spędza na pisaniu i debugowaniu kodu w pythonie, jest znacznie mniejszy w porównaniu do C, C ++ lub Java. Właśnie tego chcą studenci AI i ML. Nie chcą tracić czasu na debugowanie kodu pod kątem błędów składniowych, chcą spędzić więcej czasu na swoich algorytmach i heurystyce związanych z AI i ML .
Nie tylko biblioteki, ale ich samouczki, obsługa interfejsów jest łatwo dostępna online . Ludzie budują własne biblioteki i przesyłają je na GitHub lub w innym miejscu, z którego mogą korzystać inni.

Wszystkie te funkcje sprawiają, że Python jest dla nich odpowiedni.

Ugnes
źródło
10
„Nie chcą tracić czasu na debugowanie kodu pod kątem błędów składniowych” - Czy jakiś programista chce to zrobić? Czy Python jest najlepszym językiem do wszystkiego? Nie jestem przekonana.
Frank Puffer
24

Praktycznie wszystkie najpopularniejsze i szeroko stosowane platformy do głębokiego uczenia są zaimplementowane w Pythonie na powierzchni i C / C ++ pod maską.

Myślę, że głównym powodem jest to, że Python jest szeroko stosowany w społecznościach naukowych i badawczych, ponieważ łatwo jest szybko eksperymentować z nowymi pomysłami i prototypami kodu w języku o minimalnej składni, takiej jak Python.

Ponadto może być inny powód. Jak widzę, większość przesadzonych kursów online na temat sztucznej inteligencji wypycha Pythona, ponieważ jest to łatwe dla początkujących programistów. AI to nowe modne słowo marketingowe do sprzedaży kursów programistycznych. (Wspomnienie o sztucznej inteligencji może sprzedawać kursy programowania dzieciom, które chcą zbudować HAL 3000, ale nie mogą nawet napisać Hello World ani upuścić linii trendu na wykresie Excela. :)

akopacsi
źródło
4
„....... większość przesadzonych kursów online na temat sztucznej inteligencji wypycha Pythona, ponieważ jest to łatwe dla początkujących programistów. AI to nowe popularne słowo marketingowe do sprzedawania kursów programistycznych ...” ---- Dobra uwaga . Nie mogę się zgodzić.
Emran Hussain
5

Python ma standardową bibliotekę w fazie rozwoju i kilka dla AI. Ma intuicyjną składnię, podstawowy przepływ sterowania i struktury danych. Obsługuje także interpretacyjny czas wykonywania bez standardowych języków kompilatora. To sprawia, że ​​Python jest szczególnie przydatny w przypadku algorytmów prototypowych dla sztucznej inteligencji.

Epsilekt
źródło
Fajna uwaga na temat możliwości interpretacyjnych Pythona. Wydaje się, że elastyczność i szybkość rozwoju są zdecydowanie preferowane w porównaniu z większą „mocą” skompilowanych języków.
DukeZhou
5

To, co przyciąga mnie do Pythona w mojej pracy analitycznej, to „pełen stos” narzędzi, które są dostępne dzięki temu, że zostały zaprojektowane jako język ogólnego przeznaczenia vs. R jako język specyficzny dla domeny. Rzeczywista analiza danych jest tylko częścią historii, a Python ma bogate narzędzia i czysty, w pełni funkcjonalny język, który można uzyskać od początku do końca w jednym języku (niezależnie od zastosowania opakowań C / Fortran).

Na froncie moja praca zwykle zaczyna się od uzyskiwania danych z różnych źródeł, w tym z baz danych, plików w różnych formatach lub zgarniania stron internetowych. Obsługa tego języka w Pythonie jest dobra, a większość formatów baz danych lub popularnych ma solidną, dobrze utrzymaną bibliotekę dostępną dla interfejsu. Wydaje się, że R ma wspólne bogactwo danych we / wy, chociaż w przypadku FITS pakiet R wydaje się nie być w fazie aktywnego rozwoju (brak wydania FITSio za 2,5 roku?). Wiele następnego etapu pracy zwykle ma miejsce na etapie organizowania danych i przetwarzania opartego na potoku z dużą ilością interakcji na poziomie systemu.

Z tyłu musisz mieć możliwość prezentacji dużych zestawów danych w namacalny sposób, a dla mnie oznacza to zwykle generowanie stron internetowych. Dla dwóch projektów napisałem znaczące aplikacje internetowe Django do kontroli wyników dużych projektów ankietowych Chandra. Obejmowało to dużo skrobania (katalogi o wielu długościach fal) i tak dalej. Były one po prostu używane wewnętrznie do poruszania się po zestawie danych i pomocy w generowaniu katalogu źródłowego, ale były nieocenione w całym projekcie.

Przechodząc do funkcji analizy specyficznej dla astronomii, wydaje się jasne, że społeczność jest zdecydowanie za Pythonem. Widać to w głębi dostępnych pakietów i na poziomie działań programistycznych, zarówno na poziomie indywidualnym, jak i instytucjonalnym ( http://www.astropython.org/resources ). Biorąc pod uwagę ten poziom infrastruktury, który jest dostępny i działa, myślę, że sensowne jest skierowanie wysiłku na przeniesienie do Pythona najbardziej przydatnych narzędzi statystycznych R dla astronomii. Uzupełniałoby to obecną możliwość wywoływania funkcji R z Pythona przez rpy2.Jeśli jesteś zainteresowany, zdecydowanie zalecamy przeczytanie tego artykułu, tutaj jest kwestia porównania języków programowania https://diceus.com/what-technology- is-b ... nd-java-r / Mam nadzieję, że to pomoże. Powodzenia

William Nickson
źródło
3

Python ma bogatą bibliotekę, jest również obiektowy, łatwy w programowaniu. Może być również używany jako język interfejsu użytkownika. Dlatego jest wykorzystywany w sztucznej inteligencji. Zamiast sztucznej inteligencji jest również wykorzystywany w uczeniu maszynowym, komputerowym programowaniu, programowaniu NLP, a także jako skrypt sieciowy lub w etycznym hakowaniu.

Rocx En Ruff
źródło
To świetna odpowiedź, ponieważ Python jest rzeczywiście pierwszym językiem programowania, szczególnie w przypadku skryptów sieciowych. Początkowo obawiałem się, że możesz wyjaśnić światu, że AutoIt jest idealnym językiem skryptowym, ponieważ jest używany do pisania w Aimbot.
Manuel Rodriguez
2

Wynika to z faktu, że Python jest nowoczesnym skryptowym językiem programowania obiektowego o stylowej składni. W przeciwieństwie do strukturalnych języków programowania, takich jak java i C ++, jego charakter skryptowy umożliwia programiście bardzo szybkie sprawdzenie swojej hipotezy. Ponadto istnieje wiele bibliotek uczenia maszynowego typu open source (w tym scikit-learn i Keras), które rozszerzają użycie pytona w dziedzinie AI.

pythinker
źródło
2

Jest to połączenie wielu czynników, które razem sprawiają, że jest to bardzo dobra opcja rozwoju systemów poznawczych.

  • Szybki rozwój
  • Szybkie prototypowanie
  • Przyjazna składnia z czytelnością prawie na poziomie ludzkim
  • Zróżnicowana standardowa biblioteka i wiele paradygmatów
  • Może być używany jako nakładka dla wydajnych backendów napisanych w skompilowanych językach, takich jak C / C ++.

Istniejące wydajne biblioteki numeryczne, takie jak numpy i inne, wykonują już dla Ciebie intensywną pracę, która pozwala skupić się bardziej na aspektach architektonicznych twojego systemu.

Poza tym wokół Pythona istnieje bardzo duża społeczność i ekosystem, co daje różnorodny zestaw dostępnych narzędzi ukierunkowanych na różnego rodzaju zadania.

AlexPnt
źródło
0

Właściwie wolę C do uczenia maszynowego. Ponieważ podobnie jak w życiu, w świecie, który znamy, składają się niekończące się „bramki logiczne” (co w zasadzie przypomina rzut monetą - będą 2 możliwe wyniki - nie licząc trzeciego: lądowanie na boku!). Co oznacza również, że chociaż wszechświat wydaje się nie mieć końca, wciąż nie przestajemy znajdować rzeczy, które są jeszcze mniejsze niż ostatnia najmniejsza rzecz, prawda?

Więc ... Aby umieścić to w kontekście podczas programowania C, mogę efektywniej kontrolować użycie pamięci, kodując mniejsze fragmenty kodu, które się łączą, aby zawsze tworzyć mniejsze i wydajne „fragmenty kodu”, które tworzą to, co nazywamy „ komórki ”w biologii (ma mierzalną funkcję i ma pewne wstępnie ustawione właściwości).

Dlatego lubię optymalizować pod kątem niskiego zużycia pamięci RAM, niskiego zużycia procesora itp. Podczas programowania AI. Zrobiłem tylko feedforward z podstawową algo genetyczną w C, ale bardziej zaawansowaną rekurencyjną sieć neuronową napisałem w C ++ (TYLKO ze względu na prostotę użycia "std :: vector name;", więc napisałem własny cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 i debugowanie: https://pastebin.com/kcGD8Fzf - skompiluj z gcc -o debug debug.c cvector.c). Pomogło to ALOT w dążeniu do optymalizacji wykorzystania procesora (i ogólnego czasu działania) podczas tworzenia zoptymalizowanych sieci neuronowych.

Mam nadzieję, że to pomoże.

EDYCJA: Tak więc w pewnym sensie naprawdę widzę przeciwieństwo tego, co widzi AlexPnt, jeśli chodzi o badanie tego, co jest możliwe w sferze „ja”.

anonusr
źródło