Cum să începeți cu Machine Learning?

Ideea de a crea mașini cu o inteligență superioară celei umane nu este o noutate.

Unul dintre primele obiective majore ale informaticii în domeniul „inteligenței” umane a fost cucerirea jocului de șah. Șahul este (sau poate mai corect, a fost?) considerat de mulți ca fiind testul suprem al ingeniozității și creativității umane. În anii ’60 și ’70, în lumea informaticii existau diverse viziuni.

Unii erau de părere că este doar o chestiune de timp până când calculatoarele vor surclasa oamenii în șah, în timp ce alții credeau că un astfel de moment nu va sosi niciodată.

Kasparov contra Deep Blue

Evenimentul cel mai spectaculos care a ilustrat confruntarea om-mașină în arena inteligenței a fost meciul de șah din 1996, unde s-au întâlnit campionul mondial de atunci, Garry Kasparov (considerat, fără îndoială, cel mai bun jucător de șah din istorie) și Deep Blue, un supercomputer dezvoltat de IBM special pentru acest eveniment.

Sursa imaginii: Wikipedia

Pe scurt, Kasparov a triumfat în mod convingător în meciul din 1996 (4-2), dar a pierdut revanșa din 1997 (4,5-3,5), într-un context marcat de controverse controversă intense, inclusiv acuzații de înșelătorie formulate de Kasparov împotriva IBM.

Indiferent de circumstanțe, o epocă a șahului și a informaticii s-a încheiat. Calculatoarele au fost declarate superioare oricărui om din punct de vedere al inteligenței. IBM, satisfăcută de revanșa obținută, a demontat Deep Blue și a trecut la alte proiecte.

În prezent, este imposibil pentru orice mare maestru să învingă un motor de șah obișnuit, rulat pe un calculator standard.

Ce nu este Învățarea Automată?

Înainte de a analiza mai detaliat învățarea automată, să clarificăm câteva neînțelegeri. Învățarea automată nu este, sub nicio formă, un demers de a imita creierul uman. În ciuda afirmațiilor senzaționaliste ale unor personalități ca Elon Musk, cercetătorii în informatică declară că nu aceasta este căutarea lor supremă și că, de fapt, suntem departe de un astfel de obiectiv.

Simplu spus, învățarea automată constă în aplicarea proceselor de învățare prin exemple pe computere. Această abordare contrastează cu metoda tradițională, care presupune ca un programator uman să anticipeze toate situațiile posibile și să le codeze regulile în sistem.

În esență, învățarea automată se referă la furnizarea unei cantități imense de date unui computer, astfel încât acesta să învețe din exemple (încercare → eroare → comparație → îmbunătățire), în loc să se bazeze pe cod sursă.

Aplicațiile Învățării Automate

Deci, dacă învățarea automată nu este magie neagră și nici un instrument care va crea roboți distrugători, la ce este utilă?

Învățarea automată se dovedește utilă în situațiile în care programarea clasică este dificilă, iar aceste situații se încadrează, de obicei, în una dintre două categorii.

După cum sugerează numele, Clasificarea implică etichetarea corectă a obiectelor, în timp ce Predicția are ca scop realizarea de previziuni viitoare corecte, pe baza unui set suficient de mare de valori din trecut.

Iată câteva aplicații interesante ale învățării automate:

Filtrarea Spamului

Mesajele spam sunt omniprezente, iar încercarea de a le opri poate fi extrem de dificilă. Cum definim spam-ul? Se bazează pe prezența anumitor cuvinte cheie? Sau pe modul în care este redactat un mesaj? Este dificil să concepem un set exhaustiv de reguli din punct de vedere al programării.

Din acest motiv, folosim învățarea automată. Sistemul este alimentat cu milioane de mesaje spam și non-spam, iar restul este lăsat în sarcina sa. Acesta a fost secretul din spatele filtrelor de spam excepționale ale Gmail, care au revoluționat experiența e-mailurilor personale la începutul anilor 2000!

Recomandări

Astăzi, toate marile companii de comerț electronic se bazează pe sisteme puternice de recomandări. Uneori, capacitatea acestora de a recomanda produse pe care „s-ar putea” să le considerăm utile este uimitor de exactă, chiar dacă nu am accesat niciodată acel produs anterior.

O coincidență? Nu!

Învățarea automată este intens utilizată aici, analizând terabytes de date pentru a ne anticipa preferințele și dispozițiile.

Chatboți

Ați interacționat vreodată cu un serviciu de asistență clienți care părea neobișnuit de robotizat, dar care a reușit să aibă discuții relevante?

Ei bine, atunci ați interacționat cu un sistem bazat pe învățare automată!

Învățarea din conversații și generarea de răspunsuri adecvate reprezintă un domeniu promițător în dezvoltarea aplicațiilor de tip chatbot.

Îndepărtarea Buruienilor

În agricultură, roboții ghidați de învățarea automată sunt utilizați pentru a pulveriza selectiv buruienile și plantele nedorite din culturi.

În mod obișnuit, această operațiune ar trebui realizată manual sau ar duce la o risipă considerabilă, deoarece sistemul ar pulveriza și cultura, nu doar buruienile!

Căutarea Vocală

Interacțiunea verbală cu sistemele informatice nu mai ține de domeniul science-fiction. Astăzi avem asistenți digitali precum Alexa, Siri și Google Home care pot primi comenzi vocale, iar rezultatele sunt, de regulă, corecte.

Unii pot argumenta că este o invenție care ar trebui evitată, deoarece face rasa umană mai leneșă, dar eficiența sa nu poate fi negată.

Diagnostic Medical

Ne aflăm în pragul unei revoluții în diagnosticul medical, deoarece sistemele bazate pe învățare automată încep să depășească performanțele medicilor cu experiență în diagnosticarea prin radiografii etc.

Acest lucru nu înseamnă că medicii nu vor mai fi necesari în viitor, ci că nivelul calității serviciilor medicale va crește considerabil, în timp ce costurile ar trebui să scadă (cu excepția cazului în care structurile de putere din afaceri decid altfel!).

Acesta a fost doar un scurt rezumat al aplicațiilor învățării automate. Mașini autonome, roboți pentru jocuri de strategie, mașini de împăturit tricouri, spargerea captchelor și colorarea fotografiilor alb-negru sunt doar câteva din domeniile unde este aplicată învățarea automată.

Tipuri de Învățare Automată

Tehnicile de învățare automată sunt de două feluri.

Învățarea supervizată, în care sistemul este ghidat de intervenția umană și Învățarea nesupervizată, în care sistemul învață în mod independent. Într-o altă formulare, în învățarea supervizată, avem un set de date care conține atât intrările, cât și ieșirile așteptate, iar sistemul le folosește pentru a se compara și auto-corecta. În învățarea nesupervizată, nu există un rezultat de referință, deci rezultatele pot varia considerabil.

Un exemplu captivant de învățare automată nesupervizată?

Ar fi boții care joacă jocuri de societate, în care programul cunoaște regulile și condițiile de victorie și apoi este lăsat să se dezvolte independent. Programul joacă milioane de jocuri împotriva sa, învață din greșeli și își consolidează strategiile eficiente.

Pe un computer performant, un astfel de program de joc poate fi dezvoltat în doar câteva ore!

Următoarele imagini ilustrează aceste concepte în mod succint (sursa: Medium):

Resurse pentru a Începe în Învățarea Automată

Acum că sunteți pasionat de învățarea automată și de modul în care vă poate ajuta să cuceriți lumea, de unde să începeți?

Mai jos, vă prezentăm câteva resurse utile de pe internet care vă pot ajuta să stăpâniți învățarea automată, fără a fi nevoie de un doctorat în informatică! Dacă nu sunteți un cercetător specializat în învățare automată, veți descoperi acest domeniu la fel de practic și captivant ca și programarea în general.

Așadar, nu vă faceți griji, indiferent de nivelul dvs. actual, puteți, ca un program eficient de învățare automată, să vă instruiți și să vă perfecționați. 😛

#1. Programare

Prima cerință pentru a aborda învățarea automată este să învățați să programați. Asta deoarece sistemele de învățare automată sunt, de fapt, biblioteci disponibile pentru diferite limbaje de programare.

Python este cel mai recomandat, parțial deoarece este ușor de învățat, și parțial datorită ecosistemului său extins de biblioteci și resurse.

Ghidul oficial pentru începători este un punct de pornire excelent, chiar dacă sunteți familiarizat cu Python. Sau, puteți alege acest curs intensiv pentru a deveni expert de la zero.

#2. Gândiți-vă la Statistică

După ce ați stăpânit elementele de bază ale Python, următoarea mea recomandare ar fi să parcurgeți două cărți extraordinare. Sunt 100% gratuite și disponibile ca fișiere PDF pentru descărcare. Gândiți-vă la Statistică și Gândiți-vă la Bayes sunt două lucrări moderne clasice pe care fiecare viitor inginer în domeniul învățării automate ar trebui să le înțeleagă.

#3. Udemy

În acest moment, vă recomand să urmați câteva cursuri de pe Udemy. Formatul interactiv și posibilitatea de a avansa în ritmul propriu vă vor ajuta să înțelegeți rapid noțiunile de bază și să vă dezvoltați încrederea.

Asigurați-vă că verificați preview-ul cursului, recenziile (în special cele negative!) și impresia generală înainte de a începe.

De asemenea, puteți găsi tutoriale excelente pe YouTube, în mod gratuit. Sentdex este un astfel de canal pe care îl recomandăm, unde există mereu multe activități interesante, dar abordarea sa nu este ideală pentru începători.

#4. Andrew Ng

Cursul susținut de Andrew Ng pe Coursera este, probabil, cea mai populară resursă pentru învățarea fundamentelor învățării automate.

Deși folosește limbajul de programare R, modul în care este tratat subiectul și claritatea explicațiilor sale nu pot fi egalate. Datorită acestui curs, Andrew Ng a dobândit o faimă de guru în domeniul învățării automate, iar mulți îl apreciază pentru înțelepciunea sa (nu exagerăm!).

Acest curs nu este pentru începători, dar dacă sunteți deja familiarizat cu analiza datelor și nu vă deranjează să realizați cercetări suplimentare pe parcurs, acest curs este cea mai bună recomandare.

#5. Udacity

Deveniți inginer în învățare automată, urmând acest nanograd oferit de Udacity.

Veți avea nevoie de aproximativ 3 luni pentru a finaliza cursul, iar la final, veți avea o înțelegere clară a algoritmilor de învățare automată, a modului de a-i modela și implementa în practică.

Concluzie

Resursele disponibile pe internet sunt nesfârșite și este ușor să vă pierdeți în ele atunci când începeți. Multe tutoriale și discuții de pe internet sunt prea avansate din punct de vedere matematic sau nu au o structură clară, ceea ce vă poate afecta încrederea înainte de a începe.

De aceea, vă sfătuiesc să evitați autosabotajul: stabiliți-vă obiective realiste și avansați treptat. Învățarea automată nu este un domeniu pe care îl veți stăpâni într-o zi sau două, dar, în scurt timp, veți începe să vă distrați, și cine știe, poate veți crea și ceva extraordinar!

Distracție plăcută! 🙂