Programmazione statistica nell'apprendimento automatico: contrasto tra Pyro e TFP

Pubblicato: 2021-01-29

In Machine learning, la programmazione statistica o probabilistica viene eseguita utilizzando 2 linguaggi di programmazione come mostrato di seguito. Facendo una breve introduzione, in parole semplici, la programmazione probabilistica è uno strumento per la modellazione statistica. Fondamentalmente significa risolvere problemi usando un linguaggio attraverso il quale possiamo creare e progettare modelli statistici come soluzione.

Si tratta di applicare i concetti di statistica utilizzando linguaggi di programmazione per computer. Utilizzando modelli probabilistici, si può dedurre come le nostre convinzioni sugli iperparametri del modello possano modificare l'output.

Sommario

Famosi linguaggi di programmazione probabilistica

1. Piro

Pyro è un linguaggio di programmazione probabilistico (PPL) scritto in Python ed è supportato da Pytorch sul backend. Con Pyro, abbiamo accesso alla modellazione probabilistica profonda, alla modellazione bayesiana e combiniamo il meglio dei moderni algoritmi di deep learning. Può essere installato come segue:

pip3 Installa Pyro-ppl

oppure per installarlo dal sorgente utilizzare i seguenti comandi:

git clone https://github.com/pyro-ppl/pyro.git

cd pirotecnico

installazione pip .[extra]

Importa Pyro utilizzando una semplice riga di codice:

importare piro

2. Probabilità del flusso tensoriale (TFP)

TFP è una libreria Python basata su TensorFlow che rende possibile la combinazione di modelli probabilistici e modelli di deep learning su GPU e TPU. Può essere utilizzato da chiunque desideri incorporare la conoscenza del dominio per comprendere e fare previsioni pertinenti. Per installare TFP, digita il seguente comando nel tuo comando o nel prompt di anaconda.

pip install –upgrade tensorflow-probabilità

TFP può essere utilizzato nel codice utilizzando la seguente riga di comando:

importa tensorflow_probability come tfp

Partecipa al corso di intelligenza artificiale online dalle migliori università del mondo: master, programmi post-laurea esecutivi e programma di certificazione avanzata in ML e AI per accelerare la tua carriera.

Il contrasto tra Pyro e TFP

1. Documentazione

La documentazione per Pyro e TFP è eccellente e abbondante mentre è meno sulla spiegazione per TFP dalla prospettiva delle reti neurali. In pyro, il modulo pyro.nn presenta implementazioni di moduli di rete neurale utili nel contesto della programmazione probabilistica profonda. In TFP, tfp.layers rappresenta i livelli della rete neurale con incertezza sulle funzioni che rappresentano, estendendo i livelli TensorFlow.

2. Linguaggio

Gli utenti di TFP e Pyro scrivono in python. Tuttavia, l'API coinvolta nel caso della TFP è estremamente dettagliata. Con questo, voglio dire, a volte dobbiamo scrivere più righe di codice per raggiungere una soluzione. Questo può essere positivo a volte perché abbiamo un maggiore controllo sull'intero programma e negativo quando è disponibile in una forma più breve all'interno di Pyro.

3. Tempo di accelerazione

Con Pyro, l'esecuzione del codice è più veloce ed efficiente e non avrai bisogno di nuovi concetti da imparare. TFP, d'altra parte, richiede concetti come segnaposto, ambito variabile e sessioni, richiedendo così più tempo per l'esecuzione.

4. Distribuzione

Sia TFP che Pyro possono essere facilmente implementati su un lato server su piccola scala. Per implementazioni mobili e microcomputer o integrate, TensorFlow funziona in modo efficiente, a differenza di Pytorch. È necessario uno sforzo minore per la distribuzione di TensorFlow in Android e IOS, rispetto a Pytorch.

5. Grafici

Tensorflow ha migliori visualizzazioni dei grafici computazionali, che sono indigene rispetto ad altre librerie come Torch e Theano. Edward è basato su TensorFlow e abilita funzionalità come grafici computazionali, training distribuito, integrazione CPU/GPU, differenziazione automatica e visualizzazione con TensorBoard. Pyro, tuttavia, non fornisce alcuna funzionalità dimostrativa o di visualizzazione.

Interferenza di Edward con TensorBoard, Fonte: Edward

6. Catena Markov Monte Carlo

TFP implementa una tonnellata di algoritmi Monte Carlo (MCMC) della catena di Markov (come Metropolis, Gibbs, Hamiltonian) il cui uso è campionare una distribuzione di probabilità e alcuni algoritmi di Iterazione del valore in TensorFlow. Fino al 2018 Pyro non ha eseguito la catena di Markov a Monte Carlo. È stato aggiornato e ha il supporto completo di MCMC, HMC e NUTS.

7. Ottimizzatori

Proprio come TFP implementa diversi ottimizzatori di TensorFlow, inclusi Nelder-Mead, BFGS e L-BFGS (per determinare problemi di ottimizzazione non lineare non vincolati), Pyro implementa gli ottimizzatori presenti in PyTorch. Il modulo pyro.optim fornisce supporto per l'ottimizzazione in Pyro . Si può dire che i due PPL dipendono dai loro moduli di base (TensorFlow e PyTorch).

Fonte

8. Biiettori

In TFP, i biiettori includono la modifica delle variabili per una densità di probabilità. Quando eseguiamo la mappatura da uno spazio all'altro, influenziamo anche una mappa dalle densità di probabilità nello spazio iniziale alle densità nello spazio target.

Ma poiché stiamo mappando su uno spazio diverso, abbiamo bisogno di tenere traccia di questi conti di mappatura nel calcolo della densità di probabilità in quest'ultimo spazio. I biiettori vengono quindi utilizzati per una mappatura uniforme. In pyro, la documentazione non menziona nulla sui biiettori, quindi presumo che non li abbiano.

9. Serie temporali

Il modulo pyro.contrib.timeseries fornisce una raccolta di modelli di serie temporali bayesiane utili per le applicazioni di previsione. Questo può essere ottenuto utilizzando l'oggetto Forecaster esistente in Pyro. Dopo aver fornito i dati di input al modello, diciamo semplicemente al modello come fare una previsione informata.

È così facile, solo dati e una struttura probabilistica. TFP utilizza tuttavia i modelli di serie temporali di Tensorflow come CNN e RNN insieme al suo Framework for bayesiano modelli di serie temporali strutturali (tfp.sts). Le serie temporali strutturali bayesiane sono un'interfaccia di alto livello per l'adattamento di modelli di serie temporali che devono ancora essere rilasciati.

Fonte

10. Distribuzioni

È una classe base per costruire e organizzare proprietà (es. media, varianza) di variabili casuali (es. Bernoulli, Gaussiana). Un esempio può essere una distribuzione normale. La maggior parte delle distribuzioni in Pyro sono sottili wrapper attorno alle distribuzioni PyTorch. Per i dettagli sull'interfaccia di distribuzione di PyTorch, puoi controllare torch.distributions.distribution.Distribution. TFP tuttavia ha il suo modulo tfp.distributions.

Fonte

Fonte

11. Modelli lineari generalizzati (GLM)

In statistica, il modello lineare generalizzato è una generalizzazione flessibile della regressione lineare ordinaria che consente variabili di risposta che hanno modelli di distribuzione degli errori diversi da una distribuzione normale. In TFP, il modulo tfp.glm contiene un'interfaccia di alto livello per l'adattamento di modelli di regressione a effetti misti. Pyro, tuttavia, non ha un tale modulo per GLM.

Fonte

Conclusione

Utilizzando questi fattori, è lecito concludere che Pyro non differisce così tanto da TFP. Entrambi sono basati sul linguaggio di programmazione Python. Le API Python sono ben documentate. Pytorch, tuttavia, ha un buon tempo di accelerazione ed è quindi molto più veloce di TensorFlow. Decidere tra questi due framework dipenderà da quanto accessibile trovi il metodo di apprendimento per ciascuno di essi. La tua selezione dipenderà anche dai requisiti della tua organizzazione.

Se sei interessato a saperne di più sull'apprendimento automatico, dai un'occhiata al programma Executive PG di IIIT-B e upGrad in Machine Learning e AI , progettato per i professionisti che lavorano e offre oltre 450 ore di formazione rigorosa, oltre 30 casi di studio e incarichi, IIIT -B Status di Alumni, oltre 5 progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Riferimenti

Per iniziare – Documentazione Pyro

Modulo: tfp | Probabilità del flusso tensoriale

In che modo l'apprendimento automatico è collegato alle statistiche e viceversa?

La statistica viene utilizzata per costruire un modello statistico al fine di rappresentare i dati e trarne conclusioni o inferenze. Mentre l'apprendimento automatico fa uso di questo modello statistico per ottenere una comprensione dei dati e fare previsioni accurate. Pertanto, le statistiche vengono utilizzate nella creazione di modelli statistici per aiutare a svolgere correttamente e facilmente l'apprendimento automatico.

Posso conoscere l'apprendimento automatico senza la conoscenza delle statistiche?

Le statistiche e l'apprendimento automatico sono interconnessi. Se conosci le statistiche, puoi rappresentare i dati sotto forma di un modello statistico e quindi analizzare e fare previsioni con l'apprendimento automatico. Pertanto, conoscere le statistiche prima dell'apprendimento automatico sarà molto utile. Quindi, se conosci solo le basi della statistica, sei a posto. Non devi essere un professionista delle statistiche per fare bene nell'apprendimento automatico.

TensorFlow è facile da imparare per un principiante?

TensorFlow è una piattaforma di machine learning open source che funziona dall'inizio alla fine. TensorFlow semplifica la creazione di modelli di machine learning sia per i principianti che per i professionisti. Dovrai dedicare dai sei ai dodici mesi per studiare e perfezionare le tue capacità di TensorFlow se vuoi lavorare nell'apprendimento automatico. Tuttavia, se conosci i fondamenti dei linguaggi di programmazione come R e Python, non avrai troppi problemi.