Perché Python è un linguaggio così popolare nel campo dell'IA?


48

Prima di tutto, sono un principiante che studia AI e questa non è una domanda orientata all'opinione o una per confrontare i linguaggi di programmazione. Non sto insinuando che Python sia la lingua migliore. Ma il fatto è che la maggior parte dei famosi framework AI ha il supporto primario per Python. Possono anche essere supportati in più lingue, ad esempio TensorFlow che supporta Python, C ++ o CNTK di Microsoft che supporta C # e C ++, ma il più utilizzato è Python (intendo più documentazione, esempi, comunità più ampia, supporto ecc.). Anche se scegli C # (sviluppato da Microsoft e dal mio linguaggio di programmazione principale) devi configurare l'ambiente Python.

Ho letto in altri forum che Python è preferito per l'IA perché il codice è semplificato e più pulito, ottimo per la prototipazione veloce.

Stavo guardando un film con tematiche AI ​​(Ex_Machina). In alcune scene, il personaggio principale compromette l'interfaccia dell'automazione della casa. Indovina quale lingua era sulla scena? Pitone.

Qual è il grosso problema con Python?

Perché esiste una crescente associazione tra Python e AI.


Ricorda solo che la rappresentazione dei linguaggi di programmazione nei film non è in genere correlata alla vita reale! Qualunque cosa che assomigli a un ciarlatano ingannevole per i laici di solito va bene ...
Oliver Mason,

Se C # è il tuo linguaggio di programmazione principale potresti essere interessato a scisharpstack.org
henon

Risposte:


33

Python viene fornito con un'enorme quantità di librerie integrate. Molte librerie sono per Intelligenza Artificiale e Machine Learning. Alcune delle librerie sono Tensorflow (che è una libreria di rete neurale di alto livello), scikit-learn (per il data mining, l'analisi dei dati e l'apprendimento automatico), pylearn2 (più flessibile di scikit-learn), ecc. L'elenco continua e mai le estremità.

Puoi trovare alcune biblioteche qui .

Python ha una facile implementazione per OpenCV. Ciò che rende Python preferito da tutti è la sua implementazione semplice e potente.
Per altre lingue, studenti e ricercatori devono conoscere la lingua prima di entrare in ML o AI con quella lingua. Questo non è il caso di Python. Anche un programmatore con conoscenze di base può gestire facilmente Python. A parte questo, il tempo che qualcuno dedica alla scrittura e al debug del codice in Python è molto meno rispetto a C, C ++ o Java. Questo è esattamente ciò che vogliono gli studenti di AI e ML. Non vogliono dedicare tempo al debug del codice per errori di sintassi, vogliono dedicare più tempo ai loro algoritmi e alle euristiche relative a AI e ML .
Non solo le librerie ma i loro tutorial, la gestione delle interfacce sono facilmente disponibili online . Le persone costruiscono le proprie librerie e le caricano su GitHub o altrove per essere utilizzate da altri.

Tutte queste caratteristiche rendono Python adatto a loro.


11
"Non vogliono perdere tempo a eseguire il debug del codice per errori di sintassi" - Qualche programmatore vuole farlo? Python è la migliore lingua per tutto? Non sono convinto.
Frank Puffer

Infiniti compromessi in tutte queste aree: ciò che Python ha nella semplicità / librerie integrate può perdere in cose come la velocità, l'uso della memoria ecc. Un po 'come i veicoli: una semplice auto automatica è facile da imparare a guidare e muoversi in una città ma non ti porterà molto lontano in una gara contro una macchina da corsa, un aereo o una portaerei. Posso solo provare a scegliere lo strumento migliore per il problema.
Philip

24

Praticamente tutti i framework di deep learning più diffusi e ampiamente utilizzati sono implementati in Python in superficie e C / C ++ sotto il cofano.

Penso che il motivo principale sia che Python è ampiamente utilizzato nelle comunità scientifiche e di ricerca, perché è facile sperimentare rapidamente nuove idee e prototipi di codice in un linguaggio con una sintassi minima come Python.

Inoltre potrebbe esserci un altro motivo. Come posso vedere, la maggior parte dei corsi online iper-ipnotizzati sull'intelligenza artificiale stanno spingendo Python perché è facile per i programmatori principianti. AI è la nuova parola di marketing per vendere corsi di programmazione. (Citando l'intelligenza artificiale puoi vendere corsi di programmazione ai bambini che vogliono costruire HAL 3000, ma non possono nemmeno scrivere un Hello World o rilasciare una linea di tendenza su un grafico Excel. :)


4
"....... la maggior parte dei corsi online iperpaturati sull'intelligenza artificiale stanno spingendo Python perché è facile per i programmatori principianti. L'intelligenza artificiale è la nuova parola di marketing per vendere corsi di programmazione ..." ---- Buon punto . Non posso essere più d'accordo.
Emran Hussain il

5

Python ha una libreria standard in sviluppo e alcune per l'IA. Ha una sintassi intuitiva, un flusso di controllo di base e strutture di dati. Supporta anche il runtime interpretativo, senza linguaggi di compilazione standard. Ciò rende Python particolarmente utile per gli algoritmi di prototipazione per l'IA.


Bel punto sulla capacità interpretativa di Python. Sembra che la flessibilità e la velocità di sviluppo siano fortemente favorite rispetto alla maggiore "potenza" dei linguaggi compilati.
DukeZhou

5

Ciò che mi attrae di Python per il mio lavoro di analisi è lo "stack completo" di strumenti che sono disponibili in virtù del fatto che sono stati progettati come linguaggio di uso generale e R come linguaggio specifico di dominio. L'analisi dei dati effettivi è solo una parte della storia e Python ha strumenti ricchi e un linguaggio pulito e completo per ottenere dall'inizio alla fine in una sola lingua (nonostante l'utilizzo dei wrapper C / Fortran).

Per quanto riguarda il front-end, il mio lavoro di solito inizia con il recupero di dati da una varietà di fonti, inclusi database, file in vari formati o web scraping. Il supporto Python per questo è buono e la maggior parte dei formati di database o dati comuni ha una libreria solida e ben mantenuta disponibile per l'interfaccia. R sembra condividere una ricchezza generale per l'I / O dei dati, anche se per FITS il pacchetto R sembra non essere in fase di sviluppo attivo (nessuna versione di FITSio in 2,5 anni?). Gran parte della fase successiva del lavoro si verifica in genere nella fase di organizzazione dei dati e di elaborazione basata su pipeline con molte interazioni a livello di sistema.

Sul back-end, devi essere in grado di presentare in modo tangibile grandi set di dati e, per me, questo significa comunemente generare pagine web. Per due progetti ho scritto importanti app Web Django per l'ispezione dei risultati di grandi progetti di sondaggi Chandra. Ciò includeva molti raschiature (cataloghi a lunghezza multipla) e così via. Questi erano solo usati internamente per navigare nel set di dati e aiutare nella generazione del catalogo di origine, ma erano preziosi per l'intero progetto.

Passando alla funzionalità specifica dell'astronomia per l'analisi, sembra chiaro che la comunità sia solidamente dietro Python. Ciò è dimostrato dalla profondità dei pacchetti disponibili e dal livello di attività di sviluppo, sia a livello individuale che istituzionale ( http://www.astropython.org/resources ). Dato questo livello di infrastruttura che è disponibile e in funzione, penso che abbia senso indirizzare gli sforzi per portare su Python gli strumenti statistici R più utili per l'astronomia. Ciò completerebbe l'attuale capacità di chiamare le funzioni R da Python tramite rpy2. Se sei interessato, ti consiglio vivamente di leggere questo articolo, qui si tratta di confrontare i linguaggi di programmazione https://diceus.com/what-technology- is-b ... nd-java-r / Spero che sia d'aiuto. Buona fortuna


3

Python ha una ricca libreria, è anche orientato agli oggetti, facile da programmare. Può anche essere usato come linguaggio frontend. Ecco perché viene utilizzato nell'intelligenza artificiale. Piuttosto che AI ​​è anche usato in machine learning, soft computing, programmazione NLP e usato anche come script web o hacking etico.


È un'ottima risposta, perché Python è davvero il linguaggio di programmazione numero uno in particolare per gli script web. All'inizio, temevo che tu potessi spiegare al mondo che AutoIt è il linguaggio di scripting perfetto perché è usato per la scrittura di Aimbot.
Manuel Rodriguez,

2

Questo perché python è un moderno linguaggio di programmazione orientato agli oggetti di scripting che ha una sintassi elegante. Contrariamente ai linguaggi di programmazione strutturale come java e C ++, la sua natura di scripting consente al programmatore di testare le sue ipotesi molto velocemente. Inoltre, ci sono molte librerie di machine learning open source (inclusi scikit-learn e Keras) che ampliano l'uso di Python nel campo dell'IA.


2

È un mix di molti fattori che insieme lo rendono un'ottima opzione per sviluppare sistemi cognitivi.

  • Sviluppo rapido
  • Prototipazione rapida
  • Sintassi amichevole con leggibilità quasi a livello umano
  • Diversa libreria standard e multi-paradigma
  • Può essere usato come frontend per backend performanti scritti in linguaggi compilati come C / C ++.

Le librerie numeriche performanti esistenti, come numpy e altre, svolgono già un intenso lavoro di massa che consente di concentrarsi maggiormente sugli aspetti architettonici del sistema.

Inoltre, esiste una grande comunità ed ecosistema attorno a Python, che si traduce in una serie diversificata di strumenti disponibili orientati a diversi tipi di attività.


0

In realtà preferisco C per l'apprendimento automatico. Perché come nella vita, nel mondo come lo conosciamo, consiste in infinite "porte logiche" (che fondamentalmente è come lanciare una moneta - ci saranno 2 possibili esiti - senza contare il terzo: atterrare sul lato!). Ciò significa anche che mentre l'universo sembra infinito, non smettiamo mai di trovare quelle cose che sono ancora più piccole dell'ultima cosa più piccola, giusto?

Quindi ... Per metterlo in un contesto durante la programmazione di C, posso controllare l'utilizzo della memoria in modo più efficiente codificando frammenti più piccoli che vengono combinati, per formare sempre "frammenti di codice" più piccoli ed efficienti, che compongono ciò che chiameremmo " cellule "in biologia (ha una funzione misurabile e ha alcune proprietà preimpostate).

Pertanto, mi piace ottimizzare per un basso utilizzo della RAM, un basso utilizzo della CPU ecc. Durante la programmazione dell'intelligenza artificiale. Ho fatto solo feedforward con un algo genetico di base in C, ma la rete neurale ricorrente più avanzata che ho scritto in C ++ (SOLO a causa della semplicità di utilizzo di "std :: vector name;", quindi ho scritto il mio cvector.c: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 e debug: https://pastebin.com/kcGD8Fzf - compilare con gcc -o debug debug.c cvector.c). Ciò ha aiutato ALOT nella ricerca dell'ottimizzazione dell'utilizzo della CPU (e del tempo di esecuzione complessivo) durante la creazione di reti neurali ottimizzate.

Spero che sia d'aiuto.

EDIT: Quindi, in un certo senso, vedo davvero il contrario di ciò che vede AlexPnt, quando si tratta di esplorare ciò che è possibile nel regno di un "io".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.