Evenimentul de lansare a ediției din luna iunie a revistei a avut loc în cetatea Oradea și a fost găzduit de Accesa. Ne-am simțit foarte bine și promitem să revenim. Au fost alături de noi la panel:
Alexandru Pârvu - Machine Learning Engineer @ Accesa ,
Adrian Militaru - Data Engineer @ Accesa,
Alexandru Pârvu: Am lucrat în zona de produse de tip income prediction pentru restaurante, cu scopul de a optimiza materiile prime. De asemenea, am avut și proiecte de tip overbooking, reservation cancellation, consumption prediction (consum - ofertare - negociere). Acestea sunt doar câteva.
Adrian Militaru: Momentan, lucrez la acumularea unui set cât mai mare de date, urmând să antrenăm cât mai mulți algoritmi pentru a putea folosi aceste date în realizarea de predicții. În ceea ce privește proiectele personale, am încercat ca în ultimii trei ani să îmi aduc contribuția în domeniul medical.
Roland Szabó: Fiind consultant, am o varietate de clienți. Cu unii lucrez mai aplicat (hands-on), cu alții doar la nivel de consultanță. Lucrez la un proiect de tip recrutare unde mi se cere să extrag informațiile din job postings și din CV-uri, și , ulterior, să las algoritmul să identifice candidații cei mai potriviți. Am lucrat și în proiecte de detecție de fraudă (de utilizare de carduri furate, de trimitere de mesaje spam), de forecasting (cum va evolua numărul de utilizatori).
Cât de mult se aseamănă și cât de mult se exclud disciplinele Machine Learning și Data Science?
Roland Szabó: Mulți dintre cei care se îndreaptă spre aceste domenii ignoră partea de Software Engineering. De multe ori, codul scris de un Machine Learning specialist sau un Data Science specialist este groaznic. Cum ajungem să facem deploy la tot mai multe lucruri în producție cu Machine Learning, este o nevoie reală să se adopte niște best practices din Software Engineering, din DevOps ca să putem înțelege când și de ce crapă un model.
Adrian Militaru: Sunt două domenii conexe. Aș spune că nu e nevoie de mult Software Engineering în Machine Learning, ci mai degrabă în procesarea datelor. În procesul efectiv de antrenare a modelelor este nevoie de matematică și de înțelegerea problemei. Nu poți alege anumite trăsături înainte de a antrena modelele. Trebuie să antrenezi setul de date pentru un anumit model. Abia după ce ai înțeles de ce ai obținut rezultate care nu se ridică la nivelul așteptărilor, în partea ulterioară de procesare ar fi nevoie de programare.
Putem rezolva o problemă utilizând Machine Learning sau utilizând algoritmii clasici. Care sunt limitările, avantajele și dezavantajele?
Alexandru Pârvu: Să luăm niște exemple precum conducerea autonomă. Conducerea autonomă cu programare clasică este imposibilă. Cantitatea de variabile este pur și simplu mult peste capacitatea unui om sau a unei echipe care să țină evidența. Machine Learning nu este un înlocuitor pentru programare. În esență, un Data Scientist bun va fi și un bun programator, pentru a avea cod aplicabil. Machine Learning este aplicat în acele situații în care efortul este prea mare sau codul este imposibil de scris.
Sunt cazuri când algoritmica clasică funcționează mai bine?
Alexandru Pârvu: Da, pentru lucrurile repetitive sau predictibile. De exemplu, vrem ca în fiecare zi la ora 10 să se aprindă niște lumini, iar seara la 12 să se stingă.
Cum vedeți partea de testare a corectitudinii datelor?
Alexandru Pârvu: În mod ironic, slăbiciunea în Machine Learning sunt tot oamenii. Datele nu sunt colectate automat. Mai mult, diagnosticul pe care noi ne bazăm este dat de o persoană. Dacă persoana s-a înșelat, modelul este incorect.
Adrian Militaru: Aș dori să completez ceva la prima întrebare. Nu cred că este corect să vorbim de Machine Learning versus programare tradițională, deoarece ideea de versus implică o competiție. Cele două nu ar trebui comparate, astfel încât să determinăm care este mai bună. Trebuie doar să identificăm contextele în care fiecare este mai bună. Legat de întrebarea despre corectitudinea datelor, Machine Learning ne ajută. Tot folosind Machine Learning putem găsi în cadrul unui data set niște valori care nu corespund celorlalte valori, acest lucru putând fi extrapolat la diverse coloane ale unui tabel, de exemplu.
În Machine Learning, putem antrena niște date pentru Europa. Totul merge perfect, pentru ca apoi să mergi în Asia, unde modelul nu se poate aplica, deoarece anumiti parametri ce trebuie detectați (ce țin de culori de exemplu) sunt diferiți. Trebuie să definim foarte bine cui i se adresează soluția la care lucrezi.
Adrian Militaru: Da, orice generalizare fără o înțelegere profundă a modelului poate face modelul irelevant.
Roland Szabó: Problema generalizării este destul de mare. Era un exemplu cu cei de la Google care au realizat un model pentru prezicerea sau detectarea unei boli oculare. Totul funcționa bine, iar cei de la Google au spus că vor ca modelul să poată ajuta populația din Africa unde nu sunt foarte mulți specialiști. S-a dovedit că, din cauza faptului că în Africa se folosește un echipament diferit, că sunt condiții diferite de umiditate și căldură, imaginile erau altfel luate, iar modelul a funcționat catastrofal, neputând fi folosit de nimeni. Ne confruntăm cu probleme de algoritm, de bias și nu numai.
Există o limită unde ar trebui să ne oprim cu Machine Learning când vine vorba de etică?
Roland Szabó: De multe ori, Machine Learning se folosește pentru laundering, ca să facem să pară curată treaba. Recent, în Olanda, s-a dovedit că unul din algoritmii folosiți de Fiscul lor care decidea cine trebuie investigat pentru evaziune fiscală avea un bias destul de mare către persoane cu nume africane și alte probleme similare. S-a spus că algoritmul este de vină, dar s-a investigat și s-a dovedit că și înainte de a avea acel algoritm, deciziile erau luate la fel de oameni. Algoritmul învățase de la oameni.
Am o întrebare de la ascultătorii online. Cătălin Golban întreabă dacă există un plugin, un Copilot care să simplifice codul prea complicat. Această întrebare vine în contextul prezentării tale.
Roland Szabó: Copilot nu face asta din câte știu, dar este un domeniu de cercetare. Cei de la Amazon au lansat ceva similar numit PullRequest Assistant. Trimiți un PullRequest pentru review, iar un AI îți analizează codul precum un Linter mai avansat.
Revenim la întrebarea legată de etică.
Adrian Militaru: Poate va părea mai radical ce voi spune. Așa cum algoritmul nostru era legat de detecția bolilor cardiovasculare, iar alte afecțiuni nu sunt deranjate că noi ne-am axat pe acest data set, la fel nici persoanele cu nume africane nu ar trebui să fie deranjate că un algoritm funcționează așa. Am impresia că se exagerează puțin cu corectitudinea politică.
În măsura în care se poate, este normal și bine să fii corect.
Alexandru Pârvu: Nu pot adăuga decât că, dacă datele sunt biased, iar acest bias ne scapă, evident și modelul va avea probleme. Întrebarea este dacă acest modul ce conține bias provoacă o pagubă sau nu.
(Întrebare din sală) Aș dori să aduc o completare. Vorbesc ca medic. Este foarte important să înțelegem distincția dintre predicție și explicație. Miza Machine Learning în biologie este să ne ajute să prezicem lucruri pe care nu le putem încă explica, dar în cazul bolilor cardio-vasculare, baza de date pe care stă toată cunoașterea medicală este axată pe niște studii care sunt efectuate pe milioane de pacienți. Meta-analiza studiilor mari duce la milioane de pacienți, convergența statistică fiind foarte mare. Studiile mari spun că fumatul este unul dintre cei mai importanți factori de risc. Alți factori sunt consumul de alcool, genul masculin etc. Modelele folosite în studiile respective sunt în general modele de regresie logică. Fiind un model mult mai transparent, ne-a fost mai ușor să coroborăm ce am găsit acolo cu biologia și să ne explicăm de ce anumite variabile sunt mai importante decât altele. Trebuie să fim prudenți când interpretăm biologia dintr-un model dacă noi am gândit modelul cu scop de predicție. Nu doresc să plece nimeni de aici cu ideea că fumatul sau alcoolul nu sunt factori de risc.
Alexandru Pârvu: Completez și eu. În primul rând, modelul de predicție trage niște concluzii pe baza datelor valabile. Dacă datele nu reflectă acest lucru, nu putem adăuga date decât dacă nu suntem convinși. În al doilea rând, am o observație legată de aceste studii medicale. Am cunoscuți care sunt bio-statisticieni și cred că veți fi de acord cu mine că există probleme în reproductibilitatea studiilor medicale, deoarece datele nu se fac niciodată publice. Eu, ca om ce lucrează cu Machine Learning, devin foarte suspicios dacă nu văd datele.
Cum va evolua Machine Learning peste 5-10 ani și ce probleme se vor rezolva?
Alexandru Pârvu: Mi-aș dori o dezvoltare mai mare în robotică. Activitățile roboților de la Boston Dynamics sunt impresionante, dar aș face pariu că mulți dintre voi nu ați văzut toate dublele de filmare, acele mișcări impresionante reprezentând 10% din totalul dublelor. Restul sunt eșecuri similare cu cele de la Camera Ascunsă.
Adrian Militaru: Dacă am ști ce domenii ar evolua, ne-am axa pe acele domenii. În liceu, am avut de ales între zona tehnică și medicină. Am ales zona tehnică, dar mi-aș dori ca lucrurile să se dezvolte cât mai mult în medicină, fie că e vorba de aparatură, preziceri, farmaco-vigilență. Tehnologia ne poate ușura viața, dar medicina ne-o poate salva.
Roland Szabó: Machine Learning va deveni tot mai ușor de folosit. Așa cum, acum 10 ani, pentru a putea face un site trebuia să știi CSS, HTML, JavaScript, PHP, deployment, azi poți să faci deployment cu WordPress și să ai un site care arată foarte bine. Nu trebuie să scrii deloc cod, iar cu Netlify poți să ajungi la orice utilizator de pe orice continent. Acum 10 ani când am început cu Machine Learning, a trebuit să scriu fișiere YAML ca să antrenez o rețea neuronală. Era foarte greu de făcut debug. Astăzi, e simplu să faci debug. Peste 10 ani, vom avea platforme unde vom încărca datele și, în funcție de complexitatea lor, vom reveni peste câteva ore și vom avea modelul antrenat.