Unul dintre factorii cei mai importanți în explozia învățării automate în ultimii zece ani a fost puterea crescută de calcul. În 2010, Dan Cireșan et al. au doborât recordul de recunoaștere de cifre scrise de mână, folosind un algoritm inventat prin anii 1980 și augmentând setul de date printr-un procedeu descris în 1990. Singura diferență a fost puterea de calcul: folosind o placă grafică modernă, ei au terminat antrenarea algoritmului într-o zi, pe când pe un CPU ar fi durat mai mult de 50 de zile.
Dar odată cu creșterea puterii de calcul a procesoarelor, cantitatea de informație disponibilă a crescut și ea, chiar mai repede decât frecvența CPU-urilor. Pentru a face față situației, au apărut tot felul de soluții cloud, majoritatea oferite de startup-uri, care se specializează pe diferite nișe de învățare automată.
Printre primii care au oferit servicii de învățare automată în cloud au fost cei de la BigML, care sunt pe piață de aproape doi ani. Ei au început cu arbori de decizie și apoi au dezvoltat acest produs, oferind diferite îmbunătățiri, cum ar fi diverse strategii de fasonare și opțiunea de agregare a mai multor modele.
Odată ce am antrenat un model, putem să îl vizualizăm prin două tipuri de diagrame, care ne ajută să vedem cum influențează fiecare trăsătură rezultatul dorit. Una din vizualizări este un arbore interactiv pe care putem să urmăm decizia luată la fiecare nivel, iar cealaltă vizualizare este numită "Sunburst diagram", care prezintă numărul de instanțe din datele de antrenare pe care este bazată fiecare decizie în parte, precum și intervalul de eroare pe care îl va avea rezultatul obținut mergând pe acea cale.
Serviciul poate fi folosit în două moduri: dintr-o interfață web și dintr-un API HTTP.
Cei de la Ersatz labs sunt mai noi. Fiind în private beta deocamdată, ei plănuiesc să se deschidă publicului prin aprilie-mai.
Ei se specializează pe deep learning. Oferă diferite modele de rețele neuronale, se setează hiperparametrii lor și apoi se pornește antrenarea, pe care ei o efectuează pe GPU pentru a obține viteză mai mare. Ei analizează datele pe care le încărcăm la ei și oferă o analiză euristică prin care sugerează ce valori ale hiperparametrilor se potrivesc cel mai bine datelor noastre. Cu câteva ajustări, am reușit să obțin în cinci minute un model care îmi recunoștea litere și cifre de pe bonuri cu o precizie de 80%.
După ce se efectuează antrenarea, putem vedea statistici legate de modul în care a evoluat acuratețea, valoarea funcției de cost și valorile maxime ale ponderilor rețelei neuronale de-a lungul iterațiilor. Apoi, bazându-ne pe acestea, putem să decidem cum să continuăm, în ce direcții să mai ajustăm hiperparametrii.
Deși invite-urile pentru beta se primesc de obicei în aceeași zi, trebuie ținut cont de faptul că încă este în beta. Când am testat servicul, pe primul set de date pe care l-am încercat am întâmpinat o eroare misterioasă, "Training failed". Apoi persoana de la suport tehnic a inforrmat că a fost descoperit un bug în Pylearn2, librărie pe care o folosesc ei în spate pentru definirea modelelor de rețele neuronale. Au fost destul de prompți în rezolvarea acelui bug, dar tot am mai întâlnit chestii care nu prea aveau sens.
Modelele pe care le oferă deocamdată sunt autoencoder-e pentru date sub formă de imagini, rețele recurente pentru date temporale, rețele neuronale cu straturi sigmoide sau ReLU și rețele neuronale convoluționale cu sau fără maxout.
PredictionIO este un pic diferit față de celelalte produse din această listă. Deși este dezvoltat de o firmă, TappingStone, care oferă suport comercial pentru el, produsul în sine este distribuit în mod liber, fiind pus pe GitHub cu o licență open-source.
PredictionIO este un engine de recomandare, construit pe tehnologii scalabile, cum ar fi MongoDB și Hadoop. Acesta permite ca, având un istoric al acțiunilor efectuate de un utilizator (vizionarea, cumpărarea sau acordarea unei note unui produs), să îi sugerăm alte produse care l-ar interesa.
Engine-ul are două componente. Prima este o interfață web de management al algoritmilor pe care îi folosim. De aici putem selecta ce algoritmi vrem să folosim, care sunt parametrii acestora și putem să rulăm evaluări simulate. Cealaltă parte este un API HTTP (cu SDK-uri pentru diferite limbaje) prin care putem să adăugăm user-i, produse, acțiuni și apoi să obținem recomandări.
Faptul că este bazat pe MongoDB și pe Hadoop oferă o putere destul de mare la PredictionIO, dar în același timp face ca să fie și mai complicat. În momentul în care vrei să schimbi setup-ul de Hadoop cu care vine în mod normal, care rulează pe o singură mașină totul și să îl faci să ruleze pe un cluster, deja trebuie să te descurci cu Hadoop, pe când la celelalte servicii menționate, când ai nevoie de mai multă putere de procesare, doar faci un click în browser (și plătești mai mult).
AlchemyAPI oferă și ei servicii de deep learning, dar la un nivel mult mai înalt decât cei de la Ersatz. În loc de a-ți oferi posibilitatea de a antrena rețele neuronale pe orice fel de date dorești, ei s-au specializat pe procesarea de limbaj natural și oferă doar un API prin care se pot extrage entitățile menționate în text, cuvintele cheie, sentimentele exprimate despre diferite lucruri, autori, limba și alte atribute ale textului.
Ei nu oferă prea multe la nivel de customizare, mare parte din serviciu fiind gata făcut deja. Atâta timp cât ne limităm la limbile pentru care au suport, nu vom avea probleme, problemele de extragere de entități, cuvinte cheie, autor sau sentimente fiind suficient de generale ca să funcționeze în orice domeniu. Problema apare când vrem să folosim o limbă care nu este bine integrată, ca de exemplu româna, la care deocamdată serviciul pur și simplu nu știe ce să răspundă.
AlchemyAPI poate fi folosit prin intermediul unor SDK-uri oferite de ei pentru diferite limbaje, cum ar fi Python, PHP, Node.js, C++, Java, C#, care apoi pot fi integrate în aplicațiile noastre.
Acestea sunt doar câteva din serviciile de învățare automată în cloud. Mai sunt altele, cum ar fi Google Prediction API (care este complet închis și nu se știe exact ce algoritmi folosesc pentru predicții), sau ŷhat, care este la latura complet opusă, oferind un framework în care noi trebuie să integrăm ce algoritm de învățare automată dorim.