Programarea statistică în învățarea automată: contrastul între Pyro și TFP

Publicat: 2021-01-29

În învățarea automată, programarea statistică sau probabilistică se face folosind 2 limbaje de programare, așa cum se arată mai jos. Făcând o scurtă introducere, Cu cuvinte simple, programarea probabilistică este un instrument de modelare statistică. Practic înseamnă să rezolvăm probleme folosind un limbaj prin care putem realiza și proiecta modele statistice ca soluție.

Este vorba despre aplicarea conceptelor de statistică folosind limbaje de programare pentru computer. Folosind modele probabilistice, se poate deduce modul în care convingerile noastre despre hiperparametrii modelului pot schimba rezultatul.

Cuprins

Limbajele de programare probabilistice celebre

1. Pyro

Pyro este un limbaj de programare probabilistic (PPL) care este scris în Python și este susținut de Pytorch pe backend. Cu Pyro, avem acces la modelarea probabilistică profundă, modelarea bayesiană și combinăm cei mai buni algoritmi moderni de învățare profundă. Poate fi instalat după cum urmează:

pip3 Instalați Pyro-ppl

sau pentru a-l instala din sursă utilizați următoarele comenzi:

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

cd pyro

pip install .[extra]

Importă Pyro folosind o linie simplă de cod:

import pyro

2. Probabilitatea fluxului tensor (TFP)

TFP este o bibliotecă Python construită pe TensorFlow care face posibilă combinarea modelelor probabilistice și modelelor de deep learning pe GPU și TPU. Poate fi folosit de oricine dorește să încorporeze cunoștințe de domeniu pentru a înțelege și a face predicții relevante. Pentru a instala TFP, tastați următoarea comandă în promptul de comandă sau anaconda.

pip install – upgrade tensorflow-probability

TFP poate fi utilizat în cod folosind următoarea linie de comandă:

import tensorflow_probability ca tfp

Alăturați-vă cursului de inteligență artificială online de la cele mai bune universități din lume – masterat, programe executive postuniversitare și program de certificat avansat în ML și AI pentru a vă accelera cariera.

Contrastul dintre Pyro și TFP

1. Documentare

Documentația pentru Pyro și TFP este excelentă și abundentă, în timp ce este mai puțină cu privire la explicația pentru TFP din perspectiva rețelelor neuronale. În pyro, modulul pyro.nn prezintă implementări ale modulelor de rețea neuronală care sunt utile în contextul programării probabilistice profunde. În TFP, tfp.layers reprezintă straturi de rețea neuronală cu incertitudine asupra funcțiilor pe care le reprezintă, extinzând Straturile TensorFlow.

2. Limba

Utilizatorii TFP și Pyro scriu în python. Cu toate acestea, API-ul implicat în cazul TFP este extrem de proligent. Prin asta, vreau să spun, uneori trebuie să scriem mai multe linii de cod pentru a ajunge la o soluție. Acest lucru poate fi bun uneori, deoarece avem mai mult control asupra întregului program și rău atunci când este disponibil într-o formă mai scurtă în Pyro.

3. Timp de accelerare

Cu Pyro, executarea codului este mai rapidă și eficientă și nu veți avea nevoie de concepte noi pentru a învăța. TFP, pe de altă parte, necesită concepte precum substituenți, domeniul variabil, precum și sesiuni, luând astfel mai mult timp pentru execuție.

4. Desfăşurare

Atât TFP, cât și Pyro pot fi implementate cu ușurință pe un server la scară mică. Pentru mobil și microcomputer sau implementări încorporate, TensorFlow funcționează eficient, spre deosebire de Pytorch. Este necesar un efort mai mic pentru implementarea TensorFlow în Android și IOS, în comparație cu Pytorch.

5. Grafice

Tensorflow are vizualizări grafice computaționale mai bune, care sunt indigene în comparație cu alte biblioteci precum Torch și Theano. Edward este construit pe TensorFlow și permite funcții precum grafice de calcul, antrenament distribuit, integrare CPU/GPU, diferențiere automată și vizualizare cu TensorBoard. Pyro, cu toate acestea, nu oferă nicio funcționalitate demonstrativă sau de vizualizare.

Edward interferență cu TensorBoard, Sursa: Edward

6. Lanțul Markov Monte Carlo

TFP implementează o mulțime de algoritmi din lanțul Markov Monte Carlo (MCMC) (cum ar fi Metropolis, Gibbs, Hamiltonian) a căror utilizare este eșantionarea unei distribuții de probabilitate și câțiva algoritmi de iterație a valorii în TensorFlow. Până în 2018, Pyro nu a interpretat lanțul Markov Monte Carlo. A fost actualizat și are suport complet MCMC, HMC și NUTS.

7. Optimizatoare

La fel cum TFP implementează mai multe optimizatoare ale TensorFlow, inclusiv Nelder-Mead, BFGS și L-BFGS (pentru determinarea problemelor de optimizare neliniară neconstrânse), Pyro implementează optimizatorii care sunt prezenți în PyTorch. Modulul pyro.optim oferă suport pentru optimizarea în Pyro . Se poate spune că cele două PPL-uri depind de modulele lor de bază (TensorFlow și PyTorch).

Sursă

8. Bijectoare

În TFP, bijectoarele includ modificarea variabilelor pentru o densitate de probabilitate. Când mapăm de la un spațiu la altul, influențăm și o hartă de la densitățile de probabilitate pe spațiul inițial la densitățile pe spațiul țintă.

Dar, deoarece mapam într-un spațiu diferit, trebuie să urmărim aceste conturi de mapare pentru ele în calculul densității de probabilitate în spațiul din urmă. Prin urmare, bijectoarele sunt utilizate pentru cartografierea lină. In pyro documentatia nu mentioneaza nimic despre bijectoare, asa ca presupun ca nu le au.

9. Serii temporale

Modulul pyro.contrib.timeseries oferă o colecție de modele bayesiene de serii temporale utile pentru aplicații de prognoză. Acest lucru poate fi realizat prin utilizarea obiectului Forecaster existent în Pyro. După ce dăm date de intrare modelului, îi spunem modelului cum să facă o predicție informată.

Este atât de ușor, doar date și un cadru probabilistic. Cu toate acestea, TFP folosește modelele de serie de timp ale Tensorflow, cum ar fi CNN și RNN, împreună cu Cadrul său pentru modelele de serie de timp structurale Bayesian (tfp.sts). Seria de timp structurală bayesiană este o interfață de nivel înalt pentru adaptarea modelelor de serie de timp care nu a fost încă lansată.

Sursă

10. Distribuții

Este o clasă de bază pentru construirea și organizarea proprietăților (de exemplu, medie, varianță) ale variabilelor aleatoare (de exemplu, Bernoulli, Gaussian). Un exemplu poate fi o distribuție normală. Majoritatea distribuțiilor din Pyro sunt învelișuri subțiri în jurul distribuțiilor PyTorch. Pentru detalii despre interfața de distribuție PyTorch, puteți consulta torch.distributions.distribution.Distribution. TFP are totuși modulul său tfp.distributions.

Sursă

Sursă

11. Modele liniare generalizate (GLM)

În statistică, modelul liniar generalizat este o generalizare flexibilă a regresiei liniare obișnuite care permite variabile de răspuns care au modele de distribuție a erorilor, altele decât o distribuție normală. În TFP, modulul tfp.glm conține o interfață de nivel înalt pentru potrivirea modelelor de regresie cu efecte mixte. Pyro, însă, nu are un astfel de modul pentru GLM.

Sursă

Concluzie

Folosind acești factori, este sigur să concluzionam că Pyro nu diferă atât de mult de TFP. Ambele sunt bazate pe limbajul de programare Python. API-urile Python sunt bine documentate. Pytorch, totuși, are un timp bun de accelerare și, prin urmare, este mult mai rapid decât TensorFlow. Decizia dintre aceste două cadre se va baza pe cât de accesibilă găsiți metoda de învățare pentru fiecare dintre ele. Selecția dvs. va depinde și de cerințele organizației dvs.

Dacă sunteți interesat să aflați mai multe despre învățarea automată, consultați Programul Executive PG de la IIIT-B și upGrad în Învățare automată și IA, care este conceput pentru profesioniști care lucrează și oferă peste 450 de ore de pregătire riguroasă, peste 30 de studii de caz și sarcini, IIIT -B Statut de absolvenți, peste 5 proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Referințe

Noțiuni introductive – documentația Pyro

Modul: tfp | Probabilitatea TensorFlow

Cum este conectată învățarea automată cu statisticile și invers?

Statistica este folosită pentru a construi un model statistic pentru a reprezenta datele și a trage concluzii sau inferențe din acestea. În timp ce învățarea automată folosește acest model statistic pentru a obține o înțelegere a datelor și a face predicții precise. Astfel, statisticile sunt utilizate în construirea modelelor statistice pentru a ajuta la realizarea învățării automate în mod corespunzător și ușor.

Pot cunoaște învățarea automată fără cunoștințe de statistică?

Statisticile și învățarea automată sunt interconectate. Dacă cunoașteți statistici, puteți reprezenta datele sub forma unui model statistic și apoi puteți analiza și face predicții cu machine learning. Astfel, cunoașterea statisticilor înainte de învățarea automată va fi destul de utilă. Deci, dacă știi doar elementele de bază ale statisticilor, ești gata. Nu trebuie să fii un profesionist în statistici pentru a te descurca bine în învățarea automată.

Este TensorFlow ușor de învățat pentru un începător?

TensorFlow este o platformă open-source de învățare automată care rulează de la început până la sfârșit. TensorFlow face crearea modelelor de învățare automată simplă atât pentru începători, cât și pentru profesioniști. Va trebui să petreceți între șase și douăsprezece luni studiind și perfecționându-vă abilitățile TensorFlow dacă doriți să lucrați în învățarea automată. Cu toate acestea, dacă cunoașteți elementele fundamentale ale limbajelor de programare precum R și Python, nu veți avea prea multe probleme.