Чому Python є такою популярною мовою в галузі AI?


47

Перш за все, я початківець, що вивчає AI, і це не питання, орієнтоване на думку, чи порівняння мов програмування. Я не кажу, що це найкраща мова. Але факт полягає в тому, що більшість відомих фреймворків AI мають первинну підтримку Python. Вони навіть можуть підтримуватися багатомовними, наприклад, TensorFlow, що підтримують Python, C ++ або CNTK від Microsoft, які підтримують C # і C ++, але найбільш використовуваним є Python (я маю на увазі більше документації, приклади, більшу спільноту, підтримку тощо). Навіть якщо ви вибрали C # (розроблений Microsoft та моєю основною мовою програмування), ви повинні мати налаштоване середовище Python.

Я читав на інших форумах, що Python є кращим для AI, оскільки код спрощений і чистіший, добре для швидкого прототипування.

Я дивився фільм з AI тематикою (Ex_Machina). У якійсь сцені головний герой зламає інтерфейс автоматизації будинку. Здогадайтесь, яка мова була на сцені? Пітон.

То яка велика справа, стосунки між Python та AI?


Тільки майте на увазі, що представлення мов програмування у фільмах зазвичай не пов'язане з реальним життям! Все, що схоже на криптований гоблік для мирян, як правило, добре ...
Олівер Мейсон

Якщо C # - ваша основна мова програмування, вас може зацікавити scisharpstack.org
henon

Відповіді:


32

Python постачається з величезною кількістю вбудованих бібліотек. Багато бібліотек призначені для штучного інтелекту та машинного навчання. Деякі бібліотеки - Tensorflow (це бібліотека нейронних мереж високого рівня), scikit-learn (для обміну даними, аналізу даних та машинного навчання), pylearn2 (більш гнучка, ніж scikit-learn) тощо. Цей список продовжується і ніколи кінців.

Ви можете знайти деякі бібліотеки тут .

Python має просту реалізацію для OpenCV. Що робить Python улюбленим для всіх, це його потужна та проста реалізація.
Для інших мов студенти та дослідники повинні ознайомитись з мовою, перш ніж вступити в ML або AI цією мовою. Це не так з python. Навіть програміст з дуже базовими знаннями може легко впоратися з пітоном. Крім того, час, який хтось витрачає на написання та налагодження коду в python, значно менший порівняно з C, C ++ або Java. Це саме те, чого хочуть студенти AI та ML. Вони не хочуть витрачати час на налагодження коду для синтаксичних помилок, вони хочуть витрачати більше часу на свої алгоритми та евристику, пов'язані з AI та ML .
В Інтернеті легко доступні не лише бібліотеки, а й їх навчальні посібники, обробка інтерфейсів . Люди створюють власні бібліотеки та завантажують їх у GitHub або деінде, щоб їх використовували інші.

Всі ці особливості роблять Python підходящим для них.


10
"Вони не хочуть витрачати час на налагодження коду для синтаксичних помилок" - Чи хоче це зробити будь-який програміст? Хіба що Python - найкраща мова для всього? Я не переконаний.
Френк Пуффер

24

Практично всі найпопулярніші та широко використовувані рамки глибокого навчання реалізовані в Python на поверхні та C / C ++ під кришкою.

Я думаю, що головна причина полягає в тому, що Python широко використовується в наукових та дослідницьких спільнотах, оскільки легко експериментувати з новими ідеями та прототипами коду швидко мовою з мінімальним синтаксисом, як Python.

Більше того, може бути й інша причина. Як я бачу, більшість завищених онлайн-курсів на AI підштовхують Python, тому що для початківців програмістів це легко. AI - це нове гаряче слово для продажу курсів програмування. (Згадуючи AI, можна продавати курси програмування дітям, які хочуть створити HAL 3000, але навіть не можуть написати Hello Hello або скинути лінію тренду на графік Excel. :)


4
"....... більшість завищених онлайн-курсів на AI підштовхують Python, тому що новачкам-програмістам це легко. AI - це нове гаряче слово для продажу курсів програмування ..." ---- Добре . Неможливо погодитися більше.
Емран Хуссейн

5

Python має стандартну бібліотеку в розробці і кілька для AI. Він має інтуїтивно зрозумілий синтаксис, основний потік управління та структури даних. Він також підтримує час інтерпретації, без стандартних мов компілятора. Це робить Python особливо корисним для прототипування алгоритмів для AI.


Приємний момент щодо можливостей інтерпретації Python. Здається, що гнучкість та швидкість розвитку сильно віддають перевагу більшій «кінській силі» складених мов.
DukeZhou

5

Що мене приваблює Python для моєї аналітичної роботи, це "повний стек" інструментів, які доступні завдяки тому, що вони розроблені як мова загального призначення порівняно з R як мова, що залежить від домену. Фактичний аналіз даних є лише частиною історії, і Python має багаті інструменти та чисту повнофункціональну мову, щоб отримати від початку до кінця однією мовою (незалежно від використання обгортки C / Fortran).

На передній частині, моя робота зазвичай починається з отримання даних з різних джерел, включаючи бази даних, файли в різних форматах або скребтування веб-сторінок. Підтримка Python для цього хороша. Більшість баз даних або загальних форматів даних мають надійну, доглянуту бібліотеку для інтерфейсу. Здається, R поділяє загальне багатство вводу-виводу даних, хоча, для FITS, пакет R, здається, не знаходиться в активному розвитку (немає випуску FITSio за 2,5 роки?). Багато наступного етапу роботи, як правило, відбувається на етапі організації даних та обробки на основі конвеєра з великою кількістю взаємодій на рівні системи.

На зворотному боці вам потрібно мати можливість відчутно представити великі набори даних, і для мене це зазвичай означає генерування веб-сторінок. Для двох проектів я написав значні веб-програми Django для ознайомлення з результатами великих проектів опитування Chandra. Це включало багато скребків (багатохвильові каталоги) тощо. Вони були просто використані внутрішньо для навігації по набору даних та допомоги в створенні каталогів джерел, але вони були безцінними в загальному проекті.

Переходячи до астрономічної функціональності для аналізу, очевидно, що спільнота твердо відстає від Python. Це вбачається в глибині доступних пакетів та рівні активності розвитку, як на індивідуальному, так і на інституційному рівні ( http://www.astropython.org/resources ). Зважаючи на такий рівень інфраструктури, який доступний і працює, я вважаю, що має сенс спрямувати зусилля, щоб перенести на Python найбільш корисні статистичні інструменти для астрономії. Це доповнило б поточну можливість виклику функцій R з Python через rpy2.Якщо вас цікавить, я настійно рекомендую прочитати цю статтю, тут мова йде про порівняння мов програмування https://diceus.com/what-technology- is-b ... nd-java-r / Я сподіваюся, що це допомагає


3

Python має багату бібліотеку, він також об'єктно орієнтований, легко програмується. Він також може бути використаний як мова фронтенду. Ось чому його використовують у штучному інтелекті. Замість AI він також використовується в машинному навчанні, м'яких обчисленнях, програмуванні NLP, а також використовується як веб-сценарії або в етичному злому.


Це чудова відповідь, адже Python - це справді мова програмування номер один, особливо для веб-сценаріїв. Спочатку я боявся, що ви можете пояснити світові, що AutoIt - ідеальна сценарна мова, оскільки вона використовується для написання Aimbot.
Мануель Родрігес

2

Це тому, що python - це сучасна об'єктно-орієнтована мова програмування, що має стильний синтаксис. На відміну від структурних мов програмування, таких як java та C ++, його сценарій дозволяє програмісту дуже швидко перевірити свою гіпотезу. Крім того, існує багато бібліотек машинного навчання з відкритим кодом (включаючи scikit-learn та Keras), які розширюють використання python в AI-області.


2

Це поєднання багатьох факторів, які разом роблять це дуже хорошим варіантом для розвитку когнітивних систем.

  • Швидкий розвиток
  • Швидке прототипування
  • Дружній синтаксис з майже читабельним рівнем
  • Різноманітна стандартна бібліотека та багатопарадигма
  • Він може бути використаний як фронтенд для виконавців, написаних компільованими мовами, такими як C / C ++.

Існуючі чисельні бібліотеки, такі як numpy та інші, вже виконують інтенсивну групову роботу для вас, що дозволяє більше зосередитись на архітектурних аспектах вашої системи.

Крім того, навколо Python існує дуже велике співтовариство та екосистема, що призводить до різноманітного набору доступних інструментів, орієнтованих на різні завдання.


0

Я фактично віддаю перевагу С для машинного навчання. Тому що, як і в житті, у світі, як ми його знаємо, складається з нескінченних "логічних воріт" (що в основному є як перегортання монети - БУДЕ 2 можливих результату - не рахуючи третього: посадка на бік!). Що також означає, що, хоча Всесвіт здається нескінченним, ми все ще ніколи не зупиняємося на пошуку тих речей, які навіть менші, ніж остання найменша річ, правда?

Отже ... Щоб поставити це в контекст при програмуванні на С, я можу більш ефективно контролювати використання пам'яті, кодуючи менші фрагменти, що поєднуються, завжди утворювати менші та ефективніші "кодові фрагменти", які складають те, що ми б назвали " клітини "в біології (вона отримала вимірювальну функцію і має деякі заздалегідь задані властивості).

Таким чином, мені подобається оптимізувати низьке використання оперативної пам’яті, низьке використання процесора тощо при програмуванні AI. Я робив тільки feedforward з базовим генетичним альго на C, але про більш розвинену періодичну нейронну мережу я писав на C ++ (ТІЛЬКИ через простоту використання "std :: ім'я вектора;", тому я написав власний cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - компілювати з gcc -o debug debug.c cvector.c). Це фактично допомогло ALOT у прагненні оптимізувати використання процесора (та загального виконання) під час створення оптимізованих нейронних мереж.

Сподіваюся, це допомагає.

EDIT: Отже, я в одному сенсі дійсно бачу протилежне тому, що бачить AlexPnt, коли йдеться про вивчення того, що можливо в царині "Я".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.