ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 153
NOU
Numărul 152
Numărul 151 Numărul 150 Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 153
Abonamente

ML.net și era AI

Alexandru Alexan
Senior Software Engineer @ Cognizant



PROGRAMARE

În mod clar, trăim în era AI, fie că interacționăm cu boți inteligenți din ce în ce mai prezenți în interacțiunile noastre zilnice, fie că suntem consumatori de conținut generat de AI, sub formă de text, imagini sau chiar video-uri. În acest articol, vom discuta despre ML.net și despre rolul și modul de utilizare al acestuia în marele ecosistem .NET.

AI (Inteligența Artificială) este domeniul care își propune să facă mașini capabile de acte inteligente precum învățarea, înțelegerea limbajului, raționamentul, rezolvarea de probleme și percepția.

De exemplu, să analizăm următorul paragraf care descrie rolul Generative AI și care, nu în mod surprinzător, a fost generat de AI Copilot de la Microsoft:

"Generative AI este un tip de inteligență artificială ce poate crea conținut nou precum text, imagine, video și audio pe baza unor date de antrenament. Folosește modele sofisticate de machine learning, precum algoritmi deep learning pentru a înțelege tiparele din datele de intrare și pentru a genera conținut nou, similar, drept răspuns la prompturi. Exemplele includ modele AI precum ChatGPT pentru generarea de text și DALL-E pentru crearea de imagini."

Deci, AI poate avea un efect semnificativ asupra vieților noastre, îmbunătățind sau simplificând anumite aspecte. Totuși, pe măsură ce, din ce în ce mai mulți furnizori de servicii integrează capabilitățile puternice ale AI, interacțiunea noastră cu AI crește și ea, din moment ce procesele de optimizare sunt acaparate de prietenul nostru iubitor de bytes.

Modelele mari de inteligență artificială create de AI ce au acces la datele publice sunt grozave și extrem de utile, dar, evident, există anumite preocupări legate de securitate și de caracterul privat al datelor, în perspectiva în care este tot mai frecventă utilizarea datelor fără autorizație și breșele.

Am văzut ce este un AI, pe scurt. Să ne îndreptăm atenția și spre machine learning. Machine learning (sau ML) este un sub-domeniu AI care pune accent pe algoritmi care permit unui computer să învețe și să facă predicții (sau să ia decizii) pe baza datelor furnizate. Scopul este ca sistemul să învețe fără instrucțiuni directe, identificând tiparele din date. Similar modului în care învață oamenii, pentru a face un ML de acuratețe ridicată, avem nevoie de foarte multe date și de multă experiență pe care o obținem prin antrenament.

Introducere în ML.net

Deci, veți întreba, unde apare ML.net în peisaj? Ei bine, ML.net este un framework open source, multiplatformă de machine learning construit pentru programatori, creat de Microsoft, așa cum se vede în figura 1. Folosind C# sau F#, putem crea modele ML personalizate direct în ecosistemul .NET. Astfel, ML.NET permite unui programator .NET să își folosească toate abilitățile dobândite anterior pentru a integra rapid capabilitățile machine learning în mai multe tipuri de aplicații: desktop, mobile, web, jocuri sau chiar IoT. Când ne referim la aplicații, vorbim de aplicații gata de a fi lansate în producție, din moment ce, după ce modelul ML.net este antrenat și pregătit, acesta poate fi lansat și folosit direct din aplicația .NET.

Fig 1: ML.net și ecosistemul .Net AI

Există patru etape mari pentru a putea folosi ML: selectarea datelor și a scenariilor, pre-procesarea datelor, antrenamentul, iar în final, lansarea modelului.

În cadrul etapei de selectare a datelor și a scenariilor, alegem cu precădere scenariul țintă pentru ML. Avem nevoie, în prealabil, de date adnotate, din moment ce atât datele, cât și scenariul ar trebui să fie cei mai buni prieteni. Cu cât există mai multe date disponibile, cu atât mai bine.

În cadrul etapei de pre-procesare, se curăță datele și se extrag caracteristicile datelor. Acesta poate fi un proces intensiv ce presupune multe calcule și multă logică complexă de pre-procesare, în funcție de scenariul ales.

În cadrul etapei de antrenament, este nevoie de mult timp sau de o putere de procesare mare pentru ca modelul să fie antrenat pe baza datelor de intrare. Cu alte cuvinte, este o etapă intens consumatoare de timp și de resurse computaționale. În unele cazuri, dacă modelul de performanță obținut nu este suficient sau dacă apar noi date, se efectuează un reantrenament pentru a asigura cel mai bun nivel de acuratețe pentru modelul obținut.

Finalmente, modelul poate fi implementat în aplicația țintă, iar funcționalitatea testată. Dacă modelul a atins acuratețea dorită, iar testarea se finalizează cu succes, modelul poate fi folosit în mediile superioare.

AutoML & instrumentele Model Builder de la ML.net

Pentru a simplifica lucrurile, ML.net oferă pachetul AutoML & Model Builder. Model Builder este un instrument similar unui wizard, cu suport CLI care face ca lucrul cu ML să fie ușor și rapid. Model Builder este reprezentat în figura 2.

Fig 2: Model Builder

Folosit împreună cu AutoML, acest instrument automatizează procesul de construire a celor mai performante modele pentru scenariul ML ales și permite programatorilor să scrie volume mici de cod. AutoML este, de fapt, un pachet NuGet "Microsoft.ML.AutoML" care localizează automat cele mai bune trăsături din model și cei mai buni hiperparametri pentru scenariul în cauză și pentru setul de date.

Așa cum s-a menționat, este simplu. Încărcați datele, iar AutoML & Model Builder se ocupă de restul. Există trei categorii mari de scenarii pentru care oferă suport AutoML:

  1. Date tabulare,

  2. Detecția vizuală asistată de calculator,

  3. Procesarea limbajului natural.

Categoria datelor tabulare gestionează numere, texte, valori categoriale și valori de tip dată, acoperind scenariile următoare:

  1. Clasificarea datelor:

    • Datele tabulare pot fi clasificate în două sau mai multe categorii.

    • Datele de intrare pot fi fie numerice, fie categoriale, fie de tip text.
  2. Predicția de valori:

    • Permite predicția de valori numerice pe baza scenariilor de regresie.
  3. Recomandări:

    • Permite obținerea unei liste de itemi sugerați pentru un utilizator specific.
  4. Previziuni:

    • Permite predicția unei valori viitoare pe baza unei serii de valori temporale observate anterior.

Detecția vizuală bazată pe calculator folosește deep learning pentru a gestiona doar date de tip imagine, acoperind următoarele scenarii:

  1. Clasificarea imaginilor:

    • Imaginile pot fi clasificate în două sau mai multe categorii.
  2. Detecția de obiecte:

    • Permite detectarea și identificarea obiectelor.

Categoria destinată procesării limbajului natural folosește deep learning pentru a gestiona doar date de tip text, acoperind următoarele scenarii:

  1. Clasificare textelor:

    • Textelor brute li se poate asigna o etichetă sau o categorie.
  2. Similaritatea propozițiilor:

    • Permite compararea similarității dintre două propoziții.
  3. Răspuns la întrebări:

    • Permite generarea de răspunsuri la întrebări pe baza informației contextuale.
  4. Recunoașterea entităților numite:

    • Permite cuvintelor individuale dintr-o propoziție să fie asociate cu o categorie.

Pentru fiecare din aceste scenarii, când antrenăm un model de date, AutoML va încerca algoritmi și parametri diferiți, pe măsură ce iterează algoritmii ML împerecheați cu trăsătura corespondentă selectată. După acest proces, fiecare iterație generează un model care are un scor de antrenament atașat. Cu cât scorul este mai bun, cu atât este mai potrivit modelul pentru datele de intrare oferite.

Sarcini de învățare automată

Fiecare scenariu se mapează pe o sarcină de lucru diferită, de machine learning. Iată câteva exemple: clasificare binară, clasificare multi-clasă, regresie, clustering, detecția anomaliilor, ierarhizare, recomandări, predicții, clasificarea imaginilor & detecția obiectelor.

Clasificarea binară prezice care este clasa sau categoria căreia îi aparține o instanță de date, atunci când avem de ales între două clase. Poate fi folosită pentru a detecta sentimentul dominant al comentariilor de pe Twitter, cu valori precum "pozitiv" sau "negativ". Este utilă pentru diagnosticul unui pacient dacă dorim să determinăm dacă are o boală sau nu. Putem chiar decide dacă un email este "spam" sau nu.

Clasificarea multi-clasă prezice clasa sau categoria unei instanțe de date. Poate fi folosită pentru a cataloga zborurile în termeni precum: "devreme", "la timp", or "întârziat", pentru a cataloga recenziile de film în termeni precum: "pozitiv", "neutru" sau "negativ" sau chiar pentru a cataloga recenziile unui hotel după criterii precum "locație", "preț", "curățenie". Figura 3 arată scenariul de clasificare a datelor, așa cum este acesta disponibil din wizardul ml.net.

Fig 3: Scenariul de clasificare de date

Regresia prezice valoarea unei etichete dintr-un set de trăsături asociate. Se poate folosi pentru prezicerea prețului caselor, pe baza unor trăsături ale caselor, precum numărul de dormitoare, locație sau dimensiune. Poate prezice viitorul preț al acțiunilor pe baza datelor istorice și a tendințelor actuale din piață. Poate prezice vânzările unui produs pe baza bugetului de reclame. Figura 4 arată scenariul de prezicere de valori.

Fig. 4: Scenariul de prezicere de valori

Clusteringul grupează instanțele de date în clustere ce conțin caracteristici similare. Se poate folosi pentru înțelegerea segmentelor de invitați dintr-un hotel pe baza obiceiurilor invitaților și pe baza caracteristicilor hotelurilor. Se poate folosi pentru implementarea de campanii de publicitate țintite, prin identificarea segmentelor de clienți și a datelor demografice. Suplimentar, se poate folosi pentru clasificarea inventarelor pe baza metricilor din manufactură.

Predicțiile, așa cum se pot observa în figura 5, se folosesc de serii de date din trecut pentru a anticipa comportamentul viitor. Se pot folosi pentru predicția vremii, pentru predicția vânzărilor sezoniere și pentru mentenanță predictivă.

Fig. 5: Scenariul de predicții

Clasificarea imaginilor prezice clasa sau categoria unei imagini. Se poate folosi pentru determinarea rasei de câine: "Siberian Husky", "Golden Retriever", pentru determinarea unui defect de manufactură al unui produs și pentru determinarea speciei de flori: "Trandafir", "Floarea Soarelui", așa cum se observă în figura 6.

Fig. 6: Scenariul de clasificare de imagini

Detecția obiectelor prezice clasa sau categoria unei imagini, oferind și o delimitare grafică a locului unde se află acea categorie în imagine. Poate detecta chiar și obiecte multiple într-o imagine. Se poate folosi pentru detectarea mașinilor, a semnelor sau a pietonilor (din imagini), pentru detectarea defectelor unor produse (din imagini) sau pentru detectarea anomaliilor din imagini cu raze X. Scenariul de detecție a obiectelor se poate observa în figura 7.

Fig. 7: Scenariul de detecție a obiectelor

ML.net și locul său

Cum am văzut anterior, ML.net poate fi folosit în scenarii multiple, unde trebuie să adăugăm capabilități inteligente unei aplicații existente sau noi. Fiind multiplatformă și open-source, se poate integra cu orice aplicație .NET.

Scenariile se bazează pe cerințe comune și pot fi extinse pentru sarcini de lucru similare. Modelul ML poate fi antrenat local și, chiar și în Azure pentru unele scenarii, dar cel mai important aspect este că acesta este autonom.

După ce modelul ML generează teste complete, acesta poate fi încorporat chiar și într-o aplicație offline, necesitând nicio altă componentă adițională, nicio conexiune externă la servicii sau Internet pe care să le utilizeze în cadrul rulării. Oricare ar fi locația în care rulează aplicația de bază, componenta machine learning va putea rula lângă aceasta. Modelele pot fi folosite oriunde: local, pe dispozitive, în cloud, toate acestea fără a abandona ecosistemul .NET. Ce înseamnă acest lucru? Înseamnă că ML.net poate fi folosit pentru aspecte critice de securitate sau când nu vrem costuri adiționale asociate cu funcționalitatea AI.

Din moment ce atât aplicația, cât și componenta ML rulează ca parte a aceleiași aplicații, constatăm un câștig la nivel de performanță prin eliminare altor apeluri în rețea, ceea ce elimină latența. Pentru aplicații ASP.net existente sau pentru componente API, putem chiar rula modelul folosind o resursă PredictionEnginePool.

ML.net este complet adaptat lansării în producție, putând fi folosit cu orice alt produs .NET. Este o tehnologie matură lansată inițial în 2019, după ce a fost dezvoltată inițial de Microsoft. Companiile folosesc ML.net pentru aplicații diverse, iar Power BI utilizează ML.net pentru a identifica factori cheie de influență și segmente de clienți, în timp ce Microsoft Defender ATP folosește ML.net pentru a crea modele machine learning cu rol în protecția malware. SigParser convertește semnăturile email în contracte și prezice dacă o entitate ce trimite email este umană sau automată. Asgard Systems folosește ML.net pentru a prezice modul în care magazinele pot reduce risipa alimentară și emisiile cu efect de seră. Hunter Medical Research Institute (HMRI) a realizat un framework de tip Human-In-The-Loop ML pentru cercetarea medicală, în timp ce Williams Mullen folosește ML.net pentru clasificarea documentelor, permițând avocaților să se axeze pe clienți în loc să caute prin documente.

Dacă sunteți programatori experimentați în știința datelor, puteți personaliza pipeline-ul de antrenament, iar apoi puteți ajusta parametrii ML în continuare. ML.net se poate integra chiar și cu modelele Open Neural Network Exchange (ONNX), ceea ce presupune că ML.net poate fi folosit cu un model dezvoltat în TensorFlow (de exemplu) ce poate fi apoi exportat.

Concluzie

Putem observa că ML.net este un candidat grozav pentru a adăuga capabilități ML aplicațiilor noastre .NET existente sau noi. Pe lângă suportul pentru scenariile existente, pe măsură ce noi funcționalități sunt adăugate cu fiecare nouă versiune .NET, beneficiază de sprijinul bine cunoscut al comunității și al Microsoft.

Este un produs stabil și matur care poate dezvolta, testa și lansa rapid un model ML direct în aplicația voastră .NET și, mai important, într-un mod multiplatformă.

Referințe:

  1. https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet

  2. https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet/model-builder

  3. https://learn.microsoft.com/en-us/dotnet/machine-learning/automated-machine-learning-mlnet

  4. https://dotnet.microsoft.com/en-us/platform/customers/machinelearning-ai

LANSAREA NUMĂRULUI 153

Generative AI în Programare

Miercuri, 26 Martie, ora 18:00

sediul Betfair Romania Development

Facebook Meetup StreamEvent YouTube

Conferință TSM

NUMĂRUL 150 - Technologiile SAP ABAP

Sponsori

  • BT Code Crafters
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • GlobalLogic
  • Colors in projects