Por que o Python é uma linguagem tão popular no campo da IA?

48

Primeiro de tudo, eu sou um iniciante estudando IA e essa não é uma pergunta orientada a opiniões ou para comparar linguagens de programação. Não estou dizendo que essa é a melhor linguagem. Mas o fato é que a maioria das famosas estruturas de IA tem suporte primário para Python. Eles podem até ser compatíveis com vários idiomas, por exemplo, TensorFlow que suporta Python, C ++ ou CNTK da Microsoft que suportam C # e C ++, mas o mais usado é o Python (quero dizer mais documentação, exemplos, comunidade maior, suporte etc.). Mesmo se você escolher C # (desenvolvido pela Microsoft e minha linguagem de programação principal), deverá ter o ambiente Python configurado.

Li em outros fóruns que o Python é o preferido para a IA porque o código é simplificado e mais limpo, bom para a criação rápida de protótipos.

Eu estava assistindo um filme com temáticas de IA (Ex_Machina). Em algumas cenas, o personagem principal invade a interface da automação residencial. Adivinha qual idioma estava em cena? Pitão.

Então, qual é o grande problema, a relação entre Python e IA?

Douglas Ferreira
fonte
Lembre-se de que a representação de linguagens de programação nos filmes não costuma estar relacionada à vida real! Qualquer coisa que se parece com gobbledegook enigmática para os leigos é geralmente bem ...
Oliver Mason
Se C # é sua principal linguagem de programação, você pode estar interessado em scisharpstack.org
henon

Respostas:

32

O Python vem com uma enorme quantidade de bibliotecas embutidas. Muitas das bibliotecas são para Inteligência Artificial e Aprendizado de Máquina. Algumas das bibliotecas são Tensorflow (que é uma biblioteca de rede neural de alto nível), scikit-learn (para mineração de dados, análise de dados e aprendizado de máquina), pylearn2 (mais flexível que scikit-learn), etc. A lista continua e nunca termina.

Você pode encontrar algumas bibliotecas aqui .

Python tem uma implementação fácil para OpenCV. O que torna o Python favorito para todos é sua implementação fácil e poderosa.
Para outros idiomas, estudantes e pesquisadores precisam conhecer o idioma antes de entrar em ML ou AI com esse idioma. Este não é o caso do python. Mesmo um programador com conhecimentos muito básicos pode facilmente lidar com python. Além disso, o tempo que alguém passa escrevendo e depurando código em python é bem menor quando comparado a C, C ++ ou Java. É exatamente isso que os estudantes de IA e ML querem. Eles não querem gastar tempo depurando o código para erros de sintaxe, eles querem gastar mais tempo em seus algoritmos e heurísticas relacionados à IA e ML .
Não apenas as bibliotecas, mas seus tutoriais, o manuseio de interfaces está facilmente disponível online . As pessoas criam suas próprias bibliotecas e as carregam no GitHub ou em outro lugar para serem usadas por outras pessoas.

Todos esses recursos tornam o Python adequado para eles.

Ugnes
fonte
10
"Eles não querem gastar tempo depurando o código para erros de sintaxe" - algum programador deseja fazer isso? Python é o melhor idioma para tudo? Não estou convencido.
Frank Puffer
24

Praticamente todas as estruturas de aprendizado profundo mais populares e amplamente usadas são implementadas no Python na superfície e no C / C ++ sob o capô.

Eu acho que o principal motivo é que o Python é amplamente usado em comunidades científicas e de pesquisa, porque é fácil experimentar novas idéias e protótipos de código rapidamente em uma linguagem com sintaxe mínima como o Python.

Além disso, pode haver outra razão. Como posso ver, a maioria dos cursos on-line exagerados de IA está pressionando o Python porque é fácil para os programadores iniciantes. AI é a nova palavra quente de marketing para vender cursos de programação. (A menção à AI pode vender cursos de programação para crianças que desejam criar o HAL 3000, mas não pode nem escrever um Hello World ou soltar uma linha de tendência em um gráfico do Excel. :)

akopacsi
fonte
4
"....... a maioria dos cursos on-line exagerados de IA está pressionando o Python porque é fácil para programadores novatos. AI é a nova palavra de marketing para vender cursos de programação ..." ---- Bom ponto . Não posso concordar mais.
Emran Hussain 4/03
5

O Python possui uma biblioteca padrão em desenvolvimento e algumas para AI. Possui uma sintaxe intuitiva, fluxo de controle básico e estruturas de dados. Ele também suporta tempo de execução interpretativo, sem linguagens de compilação padrão. Isso torna o Python especialmente útil para a criação de algoritmos de prototipagem para IA.

Epsilekt
fonte
Ponto interessante sobre a capacidade interpretativa do Python. Parece que a flexibilidade e a velocidade de desenvolvimento são fortemente favorecidas sobre o "cavalo-vapor" maior das linguagens compiladas.
DukeZhou
5

O que me atrai no Python para o meu trabalho de análise é a "pilha completa" de ferramentas disponíveis em virtude de serem projetadas como uma linguagem de propósito geral versus R como uma linguagem específica de domínio. A análise real dos dados é apenas parte da história, e o Python possui ferramentas avançadas e uma linguagem completa com recursos completos para chegar do início ao fim em um único idioma (não obstante o uso de wrappers C / Fortran).

No front-end, meu trabalho geralmente começa com a obtenção de dados de uma variedade de fontes, incluindo bancos de dados, arquivos em vários formatos ou raspagem na web. O suporte ao Python para isso é bom e a maioria dos bancos de dados ou formatos de dados comuns tem uma biblioteca sólida e bem mantida disponível para a interface. R parece compartilhar uma riqueza geral de E / S de dados, embora para o FITS o pacote R pareça não estar em desenvolvimento ativo (nenhuma versão do FITSio em 2,5 anos?). Grande parte do próximo estágio do trabalho geralmente ocorre no estágio de organização dos dados e no processamento baseado em pipeline com muitas interações no nível do sistema.

No back-end, você precisa apresentar grandes conjuntos de dados de maneira tangível e, para mim, isso geralmente significa gerar páginas da web. Em dois projetos, escrevi importantes aplicativos da Web do Django para inspecionar os resultados de grandes projetos de pesquisa do Chandra. Isso incluía muitas raspagens (catálogos de comprimentos de onda múltiplos) e assim por diante. Elas foram usadas apenas internamente para navegar no conjunto de dados e ajudar na geração do catálogo de origem, mas foram inestimáveis ​​no projeto geral.

Passando para a funcionalidade específica da astronomia para análise, parece claro que a comunidade está solidamente por trás do Python. Isso é visto na profundidade dos pacotes disponíveis e no nível de atividade de desenvolvimento, tanto no nível individual quanto no institucional ( http://www.astropython.org/resources ). Dado esse nível de infraestrutura disponível e em funcionamento, acho que faz sentido direcionar esforços para portar as ferramentas estatísticas R mais úteis para astronomia no Python. Isso complementaria a capacidade atual de chamar funções R do Python via rpy2. Se você estiver interessado, recomendo fortemente que você leia este artigo, aqui está uma questão de comparar linguagens de programação https://diceus.com/what-technology- is-b ... nd-java-r / Espero que ajude. Boa sorte

William Nickson
fonte
3

O Python possui uma biblioteca rica, também é orientada a objetos, fácil de programar. Também pode ser usado como idioma de interface. É por isso que é usado em inteligência artificial. Em vez de IA, ele também é usado em aprendizado de máquina, computação suave, programação de PNL e também é usado como script da Web ou em hackers éticos.

Rocx En Ruff
fonte
É uma ótima resposta, porque o Python é realmente a linguagem de programação número um, especialmente para scripts da web. No começo, eu estava com medo de que você pudesse explicar ao mundo que o AutoIt é a linguagem de script perfeita porque é usada para escrever Aimbot.
Manuel Rodriguez
2

Isso ocorre porque o python é uma linguagem de programação orientada a objetos de script moderna que possui uma sintaxe elegante. Ao contrário das linguagens de programação estruturais como java e C ++, sua natureza de script permite que o programador teste sua hipótese muito rapidamente. Além disso, existem muitas bibliotecas de aprendizado de máquina de código-fonte aberto (incluindo scikit-learn e Keras) que ampliam o uso de python no campo de IA.

pensador
fonte
2

É uma mistura de muitos fatores que, juntos, tornam uma opção muito boa para o desenvolvimento de sistemas cognitivos.

  • Desenvolvimento rápido
  • Prototipagem rápida
  • Sintaxe amigável com legibilidade quase no nível humano
  • Biblioteca padrão diversa e vários paradigmas
  • Ele pode ser usado como um front-end para back-ends de desempenho escritos em linguagens compiladas, como C / C ++.

As bibliotecas numéricas de desempenho existentes, como numpy e outras, já fazem o trabalho intensivo em massa para você, o que permite que você se concentre mais nos aspectos arquitetônicos do seu sistema.

Além disso, existe uma comunidade e um ecossistema muito grandes em torno do Python, o que resulta em um conjunto diversificado de ferramentas disponíveis, orientadas a diferentes tipos de tarefas.

AlexPnt
fonte
0

Na verdade, eu prefiro C para aprendizado de máquina. Porque, como na vida, no mundo como o conhecemos, consiste em "portas lógicas" intermináveis ​​(que basicamente são como jogar uma moeda - haverá 2 resultados possíveis - sem contar o terceiro: aterrissar de lado!). O que também significa que, embora o universo pareça interminável, ainda nunca paramos de encontrar coisas que são ainda menores que a última coisa menor, certo?

Então ... Para colocá-lo em um contexto ao programar C, posso controlar o uso da memória com mais eficiência, codificando trechos menores que são combinados, para sempre formar "fragmentos de código" menores e eficientes, que compõem o que chamaríamos de " células "na biologia (tem uma função mensurável e possui algumas propriedades predefinidas).

Assim, eu gosto de otimizar para baixo uso de RAM, baixo uso de CPU etc. ao programar AI. Eu fiz apenas feedforward com um algo genético básico em C, mas a rede neural recorrente mais avançada que escrevi em C ++ (SOMENTE devido à simplicidade de usar "std :: vector name;", escrevi meu próprio cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - compile com gcc -o debug debug.c cvector.c). Isso realmente ajudou MUITO na busca de otimizar o uso da CPU (e o tempo de execução geral) ao criar redes neurais otimizadas.

Espero que ajude.

EDIT: Então, em certo sentido, eu realmente vejo o oposto do que AlexPnt vê, quando se trata de explorar o que é possível dentro do reino de um "eu".

anonusr
fonte