Cos'è TensorFlow? Spiegazione della libreria di machine learning

L'apprendimento automatico è una disciplina complessa. Ma l'implementazione di modelli di machine learning è molto meno scoraggiante e difficile di quanto non fosse in passato, grazie a framework di machine learning, come TensorFlow di Google, che facilitano il processo di acquisizione di dati, modelli di addestramento, elaborazione di previsioni e perfezionamento dei risultati futuri.

Creata dal team di Google Brain, TensorFlow è una libreria open source per il calcolo numerico e l'apprendimento automatico su larga scala. TensorFlow riunisce una serie di modelli e algoritmi di machine learning e deep learning (noti anche come reti neurali) e li rende utili tramite una metafora comune. Utilizza Python per fornire una comoda API front-end per la creazione di applicazioni con il framework, mentre esegue tali applicazioni in C ++ ad alte prestazioni.

TensorFlow può addestrare ed eseguire reti neurali profonde per la classificazione di cifre scritte a mano, riconoscimento di immagini, incorporamenti di parole, reti neurali ricorrenti, modelli da sequenza a sequenza per la traduzione automatica, elaborazione del linguaggio naturale e simulazioni basate su PDE (equazione differenziale parziale). Soprattutto, TensorFlow supporta la previsione della produzione su larga scala, con gli stessi modelli utilizzati per la formazione.

Come funziona TensorFlow

TensorFlow consente agli sviluppatori di creare grafici del flusso di dati: strutture che descrivono il modo in cui i dati si spostano attraverso un grafico o una serie di nodi di elaborazione. Ogni nodo nel grafico rappresenta un'operazione matematica e ogni connessione o bordo tra i nodi è un array di dati multidimensionali, o tensore .

TensorFlow fornisce tutto questo al programmatore tramite il linguaggio Python. Python è facile da imparare e lavorare e fornisce modi convenienti per esprimere come le astrazioni di alto livello possono essere accoppiate insieme. I nodi e i tensori in TensorFlow sono oggetti Python e le applicazioni TensorFlow sono esse stesse applicazioni Python.

Le operazioni matematiche effettive, tuttavia, non vengono eseguite in Python. Le librerie di trasformazioni disponibili tramite TensorFlow sono scritte come file binari C ++ ad alte prestazioni. Python dirige semplicemente il traffico tra i pezzi e fornisce astrazioni di programmazione di alto livello per collegarli insieme.

Le applicazioni TensorFlow possono essere eseguite su quasi tutti i target convenienti: una macchina locale, un cluster nel cloud, dispositivi iOS e Android, CPU o GPU. Se utilizzi il cloud di Google, puoi eseguire TensorFlow sul silicio personalizzato TensorFlow Processing Unit (TPU) di Google per un'ulteriore accelerazione. I modelli risultanti creati da TensorFlow, tuttavia, possono essere distribuiti sulla maggior parte dei dispositivi in ​​cui verranno utilizzati per fornire previsioni.

TensorFlow 2.0, rilasciato nell'ottobre 2019, ha rinnovato il framework in molti modi in base al feedback degli utenti, per renderlo più facile da lavorare (ad esempio, utilizzando l'API Keras relativamente semplice per l'addestramento del modello) e più performante. La formazione distribuita è più facile da eseguire grazie a una nuova API e il supporto per TensorFlow Lite consente di distribuire modelli su una maggiore varietà di piattaforme. Tuttavia, il codice scritto per le versioni precedenti di TensorFlow deve essere riscritto, a volte solo leggermente, a volte in modo significativo, per sfruttare al massimo le nuove funzionalità di TensorFlow 2.0.

Vantaggi di TensorFlow

L'unico vantaggio più grande che TensorFlow offre per lo sviluppo del machine learning è l' astrazione. Invece di occuparsi dei dettagli essenziali dell'implementazione degli algoritmi o di trovare modi appropriati per collegare l'output di una funzione all'input di un'altra, lo sviluppatore può concentrarsi sulla logica generale dell'applicazione. TensorFlow si prende cura dei dettagli dietro le quinte.

TensorFlow offre ulteriori vantaggi per gli sviluppatori che hanno bisogno di eseguire il debug e ottenere l'introspezione nelle app TensorFlow. La modalità di esecuzione desiderosa consente di valutare e modificare ciascuna operazione del grafico separatamente e in modo trasparente, invece di costruire l'intero grafico come un singolo oggetto opaco e valutarlo tutto in una volta. La suite di visualizzazione TensorBoard consente di ispezionare e profilare il modo in cui i grafici vengono eseguiti tramite una dashboard interattiva basata sul web.

TensorFlow ottiene anche molti vantaggi dal sostegno di un gruppo commerciale di prima qualità in Google. Google non solo ha alimentato il rapido ritmo di sviluppo alla base del progetto, ma ha creato molte offerte significative intorno a TensorFlow che lo rendono più facile da distribuire e più facile da usare: il suddetto silicio TPU per prestazioni accelerate nel cloud di Google; un hub online per la condivisione di modelli creati con il framework; incarnazioni del framework in-browser e mobile-friendly; e altro ancora.

Un avvertimento: alcuni dettagli dell'implementazione di TensorFlow rendono difficile ottenere risultati di addestramento del modello totalmente deterministici per alcuni lavori di addestramento. A volte un modello addestrato su un sistema varierà leggermente da un modello addestrato su un altro, anche quando vengono alimentati esattamente gli stessi dati. Le ragioni di ciò sono sfuggenti: ad esempio, come vengono seminati i numeri casuali e dove, o alcuni comportamenti non deterministici quando si utilizzano le GPU). Detto questo, è possibile aggirare questi problemi e il team di TensorFlow sta prendendo in considerazione più controlli per influenzare il determinismo in un flusso di lavoro.

Video correlato: Machine learning e AI decifrati

Rompendo il clamore intorno all'apprendimento automatico e all'intelligenza artificiale, il nostro panel parla delle definizioni e delle implicazioni della tecnologia.

TensorFlow contro la concorrenza

TensorFlow compete con una serie di altri framework di machine learning. PyTorch, CNTK e MXNet sono tre framework principali che soddisfano molte delle stesse esigenze. Di seguito ho notato dove si distinguono e si scontrano con TensorFlow.

  • PyTorch , oltre ad essere costruito con Python, ha molte altre somiglianze con TensorFlow: componenti con accelerazione hardware sotto il cofano, un modello di sviluppo altamente interattivo che consente il lavoro di progettazione in movimento e molti componenti utili già inclusi. PyTorch è generalmente una scelta migliore per lo sviluppo rapido di progetti che devono essere operativi in ​​breve tempo, ma TensorFlow vince per progetti più grandi e flussi di lavoro più complessi.

  • CNTK , il Microsoft Cognitive Toolkit, come TensorFlow utilizza una struttura a grafo per descrivere il flusso di dati, ma si concentra principalmente sulla creazione di reti neurali di deep learning. CNTK gestisce molti lavori di rete neurale più velocemente e dispone di un set più ampio di API (Python, C ++, C #, Java). Ma CNTK non è attualmente così facile da apprendere o distribuire come TensorFlow.

  • Apache MXNet , adottato da Amazon come il principale framework di deep learning su AWS, può scalare in modo quasi lineare su più GPU e più macchine. Supporta anche un'ampia gamma di API di linguaggio: Python, C ++, Scala, R, JavaScript, Julia, Perl, Go, sebbene le sue API native non siano piacevoli da lavorare con quelle di TensorFlow.