Što je TensorFlow? Objasnila je knjižnica strojnog učenja

Strojno učenje složena je disciplina. No, primjena modela strojnog učenja daleko je zastrašujuća i teža nego što je bila nekada, zahvaljujući okvirima za strojno učenje - poput Googleova TensorFlowa - koji olakšavaju postupak prikupljanja podataka, modela obuke, posluživanja predviđanja i pročišćavanja budućih rezultata.

Stvorio je Googleov tim za mozak, TensorFlow je biblioteka otvorenog koda za numeričko računanje i veliko strojno učenje. TensorFlow spaja mnoštvo modela i algoritama strojnog učenja i dubokog učenja (tzv. Neuronsko umrežavanje) i čini ih korisnima putem uobičajene metafore. Koristi Python za pružanje prikladnog front-end API-ja za izgradnju aplikacija s okvirom, istodobno izvršavajući te programe u C ++ visokih performansi.

TensorFlow može trenirati i pokretati duboke neuronske mreže za klasifikaciju rukom napisanih znamenki, prepoznavanje slika, ugradnju riječi, rekurentne neuronske mreže, modele slijeda u niz za strojno prevođenje, obradu prirodnog jezika i simulacije temeljene na PDE (jednadžba parcijalnih diferencijala). Najbolje od svega je što TensorFlow podržava predviđanje proizvodnje u opsegu, s istim modelima koji se koriste za trening.

Kako TensorFlow djeluje

TensorFlow omogućuje programerima stvaranje grafikona protoka podataka - struktura koje opisuju kako se podaci kreću kroz grafikon ili niz čvorova za obradu. Svaki čvor na grafu predstavlja matematičku operaciju, a svaka veza ili rub između čvorova je višedimenzionalni niz podataka ili tenzor .

TensorFlow nudi sve ovo za programera putem jezika Python. Python je jednostavan za učenje i rad s njim te pruža prikladne načine da izrazi kako se apstrakcije na visokoj razini mogu povezati. Čvorovi i tenzori u TensorFlowu su Python objekti, a TensorFlow programi su sami Python programi.

Stvarne matematičke operacije, međutim, ne izvode se u Pythonu. Biblioteke transformacija dostupne putem TensorFlowa napisane su kao C ++ binarne datoteke visokih performansi. Python samo usmjerava promet između dijelova i pruža apstrakcije na visokoj razini za povezivanje.

Aplikacije TensorFlow mogu se pokretati na većini bilo kojih pogodnih ciljeva: lokalnom stroju, klasteru u oblaku, iOS i Android uređajima, CPU-ima ili GPU-ima. Ako koristite Googleov vlastiti oblak, možete pokrenuti TensorFlow na Googleovom prilagođenom silikonu TensorFlow Processing Unit (TPU) za daljnje ubrzanje. Rezultirajući modeli koje je kreirao TensorFlow mogu se primijeniti na većini bilo kojih uređaja na kojima će služiti za predviđanje.

TensorFlow 2.0, objavljen u listopadu 2019., prepravio je okvir na mnogo načina na temelju povratnih informacija korisnika kako bi olakšao rad (npr. Pomoću relativno jednostavnog Keras API-ja za obuku modela) i učinio ga boljim. Distribuirani trening lakše je izvoditi zahvaljujući novom API-ju, a podrška za TensorFlow Lite omogućuje raspoređivanje modela na većem broju platformi. Međutim, kôd napisan za starije verzije TensorFlowa mora se prepisati - ponekad samo neznatno, ponekad značajno - kako bi se maksimalno iskoristile nove značajke TensorFlow 2.0.

Prednosti TensorFlowa

Najveća prednost koju TensorFlow pruža za razvoj strojnog učenja je apstrakcija. Umjesto da se bavi detaljnim detaljima implementacije algoritama ili pronalaženjem ispravnih načina za spajanje rezultata jedne funkcije na ulaz druge, programer se može usredotočiti na cjelokupnu logiku aplikacije. TensorFlow brine o detaljima iza scene.

TensorFlow nudi dodatne pogodnosti za programere koji trebaju ispraviti pogreške i steći introspekciju u aplikacije TensorFlow. Način nestrpljivog izvršavanja omogućuje vam da svaku operaciju grafa procijenite i izmijenite zasebno i transparentno, umjesto da cijeli graf konstruirate kao jedan neprozirni objekt i procijenite sve odjednom. Paket za vizualizaciju TensorBoard omogućuje vam pregled i profiliranje načina na koji se grafikoni pokreću putem interaktivne nadzorne ploče zasnovane na webu.

TensorFlow također stječe mnoge prednosti zahvaljujući potpori za komercijalnu odjeću s popisa A na Googleu. Google nije samo potaknuo brzi razvojni korak iza projekta, već je stvorio mnoge značajne ponude oko TensorFlow-a koje ga čine lakšim za primjenu i lakšu upotrebu: gore spomenuti TPU silicij za ubrzane performanse u Googleovom oblaku; mrežno središte za dijeljenje modela stvorenih s okvirom; inkarnacije okvira za preglednike i mobilne uređaje; i mnogo više.

Jedno upozorenje: Neki detalji provedbe TensorFlow-a otežavaju dobivanje potpuno determinističkih rezultata treninga modela za neke poslove obuke. Ponekad će se model obučen na jednom sustavu malo razlikovati od modela obučenog na drugom, čak i kad im se daju potpuno isti podaci. Razlozi za to su skliski - npr. Kako se postavljaju slučajni brojevi i gdje, ili neka nedeterministička ponašanja kada se koriste GPU-ovi). Ipak, moguće je zaobići ta pitanja, a tim TensorFlowa razmatra više kontrola kako bi utjecao na determinizam u tijeku rada.

Povezani video: Strojno učenje i dešifriranje AI

Probijajući se oko hipe oko strojnog učenja i umjetne inteligencije, naš panel govori o definicijama i implikacijama tehnologije.

TensorFlow nasuprot konkurenciji

TensorFlow se natječe s mnoštvom drugih okvira strojnog učenja. PyTorch, CNTK i MXNet tri su glavna okvira koji udovoljavaju mnogim istim potrebama. Ispod sam napomenuo gdje se ističu i nadilaze TensorFlow.

  • PyTorch , osim što je izgrađen s Pythonom , ima i mnoge druge sličnosti s TensorFlowom: hardverski ubrzane komponente ispod haube, visoko interaktivni razvojni model koji omogućuje rad po dizajnu i mnoge korisne komponente koje su već uključene. PyTorch je općenito bolji izbor za brzi razvoj projekata koji trebaju biti pokrenuti u kratkom vremenu, ali TensorFlow pobjeđuje za veće projekte i složenije tijekove rada.

  • CNTK , Microsoftov kognitivni alat, poput TensorFlow-a koristi strukturu grafa za opisivanje protoka podataka, ali najviše se fokusira na stvaranje neuronskih mreža dubokog učenja. CNTK brže rješava mnoge poslove neuronske mreže i ima širi skup API-ja (Python, C ++, C #, Java). No CNTK trenutno nije tako lako naučiti ili primijeniti kao TensorFlow.

  • Apache MXNet , koji je Amazon usvojio kao vodeći okvir za duboko učenje na AWS-u, može se gotovo linearno skalirati na više GPU-a i više računala. Također podržava širok raspon jezičnih API-ja - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - iako s izvornim API-ima nije ugodno raditi kao s TensorFlowom.