Почему Python такой популярный язык в области ИИ?

48

Прежде всего, я новичок в изучении искусственного интеллекта, и это не вопрос, ориентированный на мнение или сравнение языков программирования. Я не имею в виду, что Python - лучший язык. Но дело в том, что большинство известных фреймворков ИИ имеют основную поддержку Python. Они могут даже поддерживаться на нескольких языках, например, TensorFlow, которые поддерживают Python, C ++ или CNTK от Microsoft, которые поддерживают C # и C ++, но наиболее часто используется Python (я имею в виду больше документации, примеров, большего сообщества, поддержки и т. Д.). Даже если вы выберете C # (разработанный Microsoft и мой основной язык программирования), у вас должна быть настроена среда Python.

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

Я смотрел фильм с AI тематикой (Ex_Machina). В какой-то сцене главный герой взламывает интерфейс домашней автоматизации. Угадай, какой язык был на сцене? Python.

Так в чем же дело с Python?

Почему между Python и AI растет связь?

Дуглас Феррейра
источник
Просто имейте в виду, что представление языков программирования в фильмах обычно не связано с реальной жизнью! Все, что выглядит как загадочное болтовня для мирян, обычно прекрасно ...
Оливер Мейсон,
Если C # ваш основной язык программирования, вас может заинтересовать scisharpstack.org
henon

Ответы:

33

Python поставляется с огромным количеством встроенных библиотек. Многие из библиотек предназначены для искусственного интеллекта и машинного обучения. Вот некоторые из библиотек: Tensorflow (высокоуровневая библиотека нейронных сетей), scikit-learn (для анализа данных, анализа данных и машинного обучения), pylearn2 (более гибкий, чем scikit-learn) и т. Д. концы.

Вы можете найти некоторые библиотеки здесь .

Python имеет простую реализацию для OpenCV. Что делает Python любимым для всех, так это его мощная и простая реализация.
Что касается других языков, студентам и исследователям необходимо ознакомиться с языком, прежде чем приступить к ОД или ИИ с этим языком. Это не в случае с питоном, Даже программист с очень базовыми знаниями может легко работать с Python. Кроме того, время, которое кто-то тратит на написание и отладку кода на python, намного меньше по сравнению с C, C ++ или Java. Это именно то, что хотят студенты AI и ML. Они не хотят тратить время на отладку кода на предмет синтаксических ошибок, они хотят тратить больше времени на свои алгоритмы и эвристики, связанные с AI и ML .
Не только библиотеки, но и их учебники, обработка интерфейсов легко доступны онлайн . Люди создают свои собственные библиотеки и загружают их на GitHub или в другое место для использования другими.

Все эти особенности делают Python подходящим для них.

Ugnes
источник
11
«Они не хотят тратить время на отладку кода на предмет синтаксических ошибок» - хочет ли это кто-нибудь из программистов? Является ли Python лучшим языком для всего? Я не уверен.
Фрэнк Пуффер
Бесконечные компромиссы во всех этих областях: то, что питон имеет в простоте / встроенных библиотеках, он может потерять в таких вещах, как скорость, использование памяти и т.д. Вы не добьетесь большого успеха в гонке против гоночной машины, самолета или авианосца. Можно только попытаться подобрать лучший инструмент для решения проблемы.
Филипп
24

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

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

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

akopacsi
источник
4
«....... большинство излишне раскрученных онлайн-курсов по искусственному интеллекту продвигают Python, потому что это легко для начинающих программистов. AI - новое горячее слово маркетинга для продажи курсов по программированию ...» ---- Хорошая мысль , Не могу согласиться больше.
Эмран Хуссейн
5

Python имеет стандартную библиотеку в разработке, и несколько для AI. Он имеет интуитивно понятный синтаксис, базовый поток управления и структуры данных. Он также поддерживает интерпретирующую среду выполнения без стандартных языков компилятора. Это делает Python особенно полезным для прототипирования алгоритмов для ИИ.

Epsilekt
источник
Приятное замечание о возможности интерпретации Python. Кажется, что гибкость и скорость разработки сильно предпочтительнее, чем большая «мощность» скомпилированных языков.
DukeZhou
5

Что меня привлекает в Python для моей аналитической работы, так это «полный набор» инструментов, доступных благодаря тому, что они разработаны как язык общего назначения, а R - как язык, специфичный для предметной области. Фактический анализ данных - это только часть истории, и в Python есть богатые инструменты и чистый полнофункциональный язык, позволяющий перейти от начала до конца на одном языке (несмотря на использование оболочек C / Fortran).

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

С другой стороны, вы должны иметь возможность представлять большие наборы данных в реальной форме, и для меня это обычно означает создание веб-страниц. Для двух проектов я написал значимые веб-приложения Django для проверки результатов крупных исследовательских проектов Chandra. Это включало в себя много соскобов (многоволновых каталогов) и так далее. Они просто использовались для навигации по набору данных и помогали в создании исходного каталога, но они были неоценимы в общем проекте.

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

Уильям Никсон
источник
3

Python имеет богатую библиотеку, он также объектно-ориентирован, прост в программировании. Он также может быть использован в качестве языка интерфейса. Вот почему он используется в искусственном интеллекте. Вместо ИИ он также используется в машинном обучении, мягких вычислениях, программировании НЛП, а также в качестве веб-сценариев или этического хакерства.

Rocx En Ruff
источник
Это отличный ответ, потому что Python действительно является языком программирования номер один, особенно для веб-сценариев. Сначала я боялся, что вы сможете объяснить миру, что AutoIt - это идеальный язык сценариев, потому что он используется для написания Aimbot.
Мануэль Родригес
2

Это потому, что Python - это современный объектно-ориентированный язык сценариев со стильным синтаксисом. В отличие от структурных языков программирования, таких как java и C ++, его скриптовая природа позволяет программисту очень быстро проверить свою гипотезу. Кроме того, существует множество библиотек машинного обучения с открытым исходным кодом (включая scikit-learn и Keras), которые расширяют использование python в области искусственного интеллекта.

pythinker
источник
2

Это сочетание многих факторов, которые вместе делают его очень хорошим вариантом для развития когнитивных систем.

  • Быстрая разработка
  • Быстрое прототипирование
  • Дружественный синтаксис с удобочитаемостью почти на уровне человека
  • Разнообразная стандартная библиотека и мультипарадигма
  • Он может использоваться в качестве внешнего интерфейса для бэкэндов-исполнителей, написанных на скомпилированных языках, таких как C / C ++.

Существующие эффективные числовые библиотеки, такие как numpy и другие, уже выполняют интенсивную массовую работу за вас, что позволяет вам больше сосредоточиться на архитектурных аспектах вашей системы.

Кроме того, вокруг Python существует очень большое сообщество и экосистема, что приводит к разнообразному набору доступных инструментов, ориентированных на различные задачи.

AlexPnt
источник
0

Я на самом деле предпочитаю C для машинного обучения. Потому что, как и в жизни, в мире, который мы знаем, он состоит из бесконечных «логических ворот» (что в основном похоже на подбрасывание монеты - будет 2 возможных результата, не считая третьего: приземление на стороне!). Что также означает, что, хотя вселенная кажется бесконечной, мы все равно никогда не перестанем находить вещи, которые даже меньше, чем последняя маленькая вещь, верно?

Итак ... Чтобы поместить это в контекст при программировании на C, я могу более эффективно контролировать использование памяти, кодируя меньшие фрагменты, которые объединяются, чтобы всегда формировать меньшие и эффективные "фрагменты кода", которые составляют то, что мы бы назвали " ячейки »в биологии (она получила измеримую функцию и обладает некоторыми заданными свойствами).

Таким образом, я люблю оптимизировать для низкого использования ОЗУ, низкого использования ЦП и т. Д. При программировании ИИ. Я сделал только прямую связь с базовым генетическим алгоритмом на C, но более продвинутую рекуррентную нейронную сеть я написал на C ++ (ТОЛЬКО из-за простоты использования «std :: vector name;», поэтому я написал свой собственный 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 в поисках оптимизации использования ЦП (и общего времени выполнения) при создании оптимизированных нейронных сетей.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Таким образом, я в некотором смысле действительно вижу противоположность тому, что видит AlexPnt, когда дело доходит до изучения того, что возможно в сфере "я".

anonusr
источник