¿Por qué Python es un lenguaje tan popular en el campo de la IA?

48

En primer lugar, soy un principiante que estudia IA y esta no es una pregunta orientada a la opinión ni una para comparar lenguajes de programación. No estoy implicando que Python sea el mejor lenguaje. Pero el hecho es que la mayoría de los famosos marcos de IA tienen soporte principal para Python. Incluso pueden ser compatibles con varios idiomas, por ejemplo, TensorFlow que admite Python, C ++ o CNTK de Microsoft que admite C # y C ++, pero el más utilizado es Python (me refiero a más documentación, ejemplos, comunidad más grande, soporte, etc.). Incluso si elige C # (desarrollado por Microsoft y mi lenguaje de programación principal) debe tener configurado el entorno Python.

Leí en otros foros que Python es preferido para la IA porque el código es simplificado y más limpio, bueno para la creación rápida de prototipos.

Estaba viendo una película con temas de IA (Ex_Machina). En alguna escena, el personaje principal piratea la interfaz de la automatización de la casa. Adivina qué idioma estaba en la escena? Pitón.

Entonces, ¿cuál es el gran problema con Python?

¿Por qué hay una asociación creciente entre Python y AI?

Douglas Ferreira
fuente
¡Solo tenga en cuenta que la representación de lenguajes de programación en películas generalmente no está relacionada con la vida real! Cualquier cosa que parezca engullir críptico a los laicos por lo general está bien ...
Oliver Mason
Si C # es su lenguaje de programación principal, puede estar interesado en scisharpstack.org
henon

Respuestas:

33

Python viene con una gran cantidad de bibliotecas incorporadas. Muchas de las bibliotecas son para Inteligencia Artificial y Aprendizaje Automático. Algunas de las bibliotecas son Tensorflow (que es una biblioteca de redes neuronales de alto nivel), scikit-learn (para minería de datos, análisis de datos y aprendizaje automático), pylearn2 (más flexible que scikit-learn), etc. La lista continúa y nunca termina

Puedes encontrar algunas bibliotecas aquí .

Python tiene una implementación fácil para OpenCV. Lo que hace que Python sea el favorito de todos es su implementación potente y fácil.
Para otros idiomas, los estudiantes y los investigadores deben conocer el idioma antes de ingresar a ML o AI con ese idioma. Este no es el caso con Python. Incluso un programador con conocimientos muy básicos puede manejar fácilmente Python. Aparte de eso, el tiempo que alguien pasa escribiendo y depurando código en python es mucho menor en comparación con C, C ++ o Java. Esto es exactamente lo que quieren los estudiantes de IA y ML. No quieren perder tiempo en depurar el código para errores de sintaxis, quieren pasar más tiempo en sus algoritmos y heurísticas relacionadas con AI y ML .
No solo las bibliotecas sino sus tutoriales, el manejo de las interfaces está fácilmente disponible en línea . La gente construye sus propias bibliotecas y las carga en GitHub o en otro lugar para que otras personas las usen.

Todas estas características hacen que Python sea adecuado para ellos.

Ugnes
fuente
11
"No quieren perder tiempo depurando el código para detectar errores de sintaxis". ¿Algún programador quiere hacer esto? ¿Es Python el mejor lenguaje para todo? No estoy convencido.
Frank Puffer
Intercambios interminables en todas estas áreas: lo que Python tiene en simplicidad / bibliotecas incorporadas puede perder en cosas como velocidad, uso de memoria, etc. no te llevará muy lejos en una carrera contra un auto de carrera, un avión o un portaaviones. Solo puedo intentar elegir la mejor herramienta para el problema.
Philip hace
24

Prácticamente todos los marcos de aprendizaje profundo más populares y ampliamente utilizados se implementan en Python en la superficie y C / C ++ bajo el capó.

Creo que la razón principal es que Python se usa ampliamente en comunidades científicas y de investigación, porque es fácil experimentar con nuevas ideas y prototipos de código rápidamente en un lenguaje con una sintaxis mínima como Python.

Además, puede haber otra razón. Como puedo ver, la mayoría de los cursos en línea exagerados sobre IA están presionando a Python porque es fácil para los programadores novatos. AI es la nueva palabra de marketing para vender cursos de programación. (Mencionar AI puede vender cursos de programación a niños que desean construir HAL 3000, pero ni siquiera pueden escribir un Hello World o colocar una línea de tendencia en un gráfico de Excel. :)

akopacsi
fuente
44
"....... la mayoría de los cursos en línea exagerados sobre IA están presionando a Python porque es fácil para los programadores novatos. AI es la nueva palabra de marketing para vender cursos de programación ..." ---- Buen punto . No puedo estar más de acuerdo.
Emran Hussain
5

Python tiene una biblioteca estándar en desarrollo, y algunas para IA. Tiene una sintaxis intuitiva, flujo de control básico y estructuras de datos. También admite tiempo de ejecución interpretativo, sin lenguajes de compilación estándar. Esto hace que Python sea especialmente útil para la creación de prototipos de algoritmos para IA.

Epsilekt
fuente
Buen punto sobre la capacidad interpretativa de Python. Parece que la flexibilidad y la velocidad de desarrollo se ven fuertemente favorecidas sobre la mayor "potencia" de los lenguajes compilados.
DukeZhou
5

Lo que me atrae a Python para mi trabajo de análisis es la "pila completa" de herramientas que están disponibles en virtud de estar diseñadas como un lenguaje de propósito general frente a R como un lenguaje específico de dominio. El análisis de datos real es solo una parte de la historia, y Python tiene herramientas ricas y un lenguaje limpio y completo para llegar desde el principio hasta el final en un solo idioma (a pesar del uso de envoltorios C / Fortran).

En el frente, mi trabajo comúnmente comienza con la obtención de datos de una variedad de fuentes, incluidas bases de datos, archivos en varios formatos o raspado web. El soporte de Python para esto es bueno y la mayoría de las bases de datos o formatos de datos comunes tienen una biblioteca sólida y bien mantenida disponible para la interfaz. R parece compartir una riqueza general de E / S de datos, aunque para FITS el paquete R no parece estar en desarrollo activo (¿no se lanzará FITSio en 2.5 años?). Gran parte de la siguiente etapa de trabajo generalmente ocurre en la etapa de organizar los datos y realizar un procesamiento basado en canalizaciones con muchas interacciones a nivel de sistema.

En el extremo posterior, debe poder presentar grandes conjuntos de datos de una manera tangible, y para mí, esto generalmente significa generar páginas web. Para dos proyectos escribí importantes aplicaciones web de Django para inspeccionar los resultados de grandes proyectos de encuestas de Chandra. Esto incluyó una gran cantidad de raspado (catálogos de longitudes de onda múltiples), etc. Estos se usaron internamente para navegar por el conjunto de datos y ayudar en la generación del catálogo de origen, pero fueron invaluables en el proyecto general.

Pasando a la funcionalidad específica de astronomía para el análisis, parece claro que la comunidad está firmemente detrás de Python. Esto se ve en la profundidad de los paquetes disponibles y el nivel de actividad de desarrollo, tanto a nivel individual como institucional ( http://www.astropython.org/resources ). Dado este nivel de infraestructura que está disponible y en funcionamiento, creo que tiene sentido dirigir el esfuerzo para portar las herramientas estadísticas R más útiles para la astronomía a Python. Esto complementaría la capacidad actual para llamar a funciones R desde Python a través de rpy2. Si está interesado, le recomiendo que lea este artículo, aquí se trata de comparar lenguajes de programación https://diceus.com/what-technology- is-b ... nd-java-r / Espero que ayude. Buena suerte

William Nickson
fuente
3

Python tiene una biblioteca rica, también está orientada a objetos, es fácil de programar. También se puede usar como lenguaje frontend. Por eso se usa en inteligencia artificial. En lugar de AI, también se usa en aprendizaje automático, informática suave, programación de PNL y también se utiliza como scripting web o en piratería ética.

Rocx En Ruff
fuente
Es una gran respuesta, porque Python es de hecho el lenguaje de programación número uno, especialmente para los scripts web. Al principio, tenía miedo de que pudieras explicarle al mundo que AutoIt es el lenguaje de script perfecto porque se usa para escribir Aimbot.
Manuel Rodríguez
2

Esto se debe a que python es un lenguaje moderno de programación orientado a objetos que tiene una sintaxis elegante. Al contrario de los lenguajes de programación estructural como java y C ++, su naturaleza de scripting permite al programador probar su hipótesis muy rápido. Además, hay muchas bibliotecas de aprendizaje automático de código abierto (incluidas scikit-learn y Keras) que amplían el uso de python en el campo de la IA.

Pythinker
fuente
2

Es una mezcla de muchos factores que juntos la convierten en una muy buena opción para desarrollar sistemas cognitivos.

  • Desarrollo rápido
  • Creación rápida de prototipos
  • Sintaxis amigable con legibilidad casi a nivel humano
  • Biblioteca estándar diversa y multi-paradigma
  • Se puede utilizar como interfaz para backends de rendimiento escritos en lenguajes compilados como C / C ++.

Las bibliotecas numéricas de rendimiento existentes, como numpy y otras, ya realizan el trabajo masivo intensivo por usted, lo que le permite centrarse más en los aspectos arquitectónicos de su sistema.

Además, hay una gran comunidad y ecosistema alrededor de Python, lo que resulta en un conjunto diverso de herramientas disponibles orientadas a diferentes tipos de tareas.

AlexPnt
fuente
0

De hecho, prefiero C para el aprendizaje automático. Porque, como en la vida, en el mundo tal como lo conocemos, consiste en "puertas lógicas" interminables (que básicamente es como lanzar una moneda, habrá 2 resultados posibles, sin contar el tercero: ¡aterrizar de lado!). Lo que también significa que si bien el universo parece interminable, nunca dejamos de encontrar esas cosas que son aún más pequeñas que la última cosa más pequeña, ¿verdad?

Entonces ... Para ponerlo en un contexto cuando programo C, puedo controlar el uso de la memoria de manera más eficiente al codificar fragmentos más pequeños que se combinan, para formar siempre "fragmentos de código" más pequeños y eficientes, que forman lo que llamaríamos " células "en biología (tiene una función medible y tiene algunas propiedades preestablecidas).

Por lo tanto, me gusta optimizar para un bajo uso de RAM, bajo uso de CPU, etc. al programar AI. Solo he hecho feedforward con algo genético básico en C, pero la red neuronal recurrente más avanzada que escribí en C ++ (SOLO por la simplicidad de usar "std :: vector name;", así que escribí mi propio cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - compilar con gcc -o debug debug.c cvector.c). Eso realmente ayudó MUCHO en la búsqueda de optimizar el uso de la CPU (y el tiempo de ejecución general) al crear redes neuronales optimizadas.

Espero eso ayude.

EDITAR: Entonces, en cierto sentido, realmente veo lo contrario de lo que AlexPnt ve, cuando se trata de explorar lo que es posible dentro del reino de un "yo".

anonusr
fuente