Big Data

Ce este Big Data? Spre deosebire de ce ar putea sugera numele, nu este vorba neapărat de fișiere mari sau despre cunoștințe complete despre un anumit domeniu. Dar, pentru a înțelege mai bine semnificația acestui termen important, mai întâi să înțelegem ce sunt exact Datele și cum pot fi acestea MARI.

Ce sunt Datele?

Spre deosebire de informații, care pot implica înțelegere asupra unui anumit lucru, datele pot fi privite ca o măsurare a ceva, o valoare care descrie starea într-un anumit moment, fără nici o informație despre cât de mare sau mică este această valoare. Așadar, informațiile ar putea fi privite ca o comparație a datelor cu anumite referințe pe o perioadă anume de timp.

SensorTemporalSeries

Să luăm cazul unui senzor de temperatură. Dacă îl plasăm într-un mediu necunoscut și obținem valoarea 32°C, aceasta este o valoare unică, o citire. Dar, ce putem învăța despre această valoare? Momentan nimic. Nu avem cu ce să comparăm valoarea, pentru a putea extrage informații utile de acolo. Nu știm în ce mediu funcționează acel senzor, care sunt valorile minime și maxime întâlnite acolo, sau valoarea medie a temperaturii.

Pentru a putea extrage informații despre mediul în sine, trebuie să folosim mai mulți senzori, plasați eficient, și trebuie să colectăm mai multe măsurători. Numărul de măsurători per unitate de timp se numește rezoluție, iar acest aspect este foarte important, deoarece pentru anumite aplicații s-ar putea să fie nevoie de o anumită rezoluție, suficient de mare, astfel încât mediul să se dezvăluie pe deplin.

Ce este Big Data?

Să ne imaginăm că avem de citit date de la mai mulți senzori dintr-o seră de legume. Pentru a înțelege mai bine condițiile de creștere a plantelor, sunt necesari mai multe tipuri de senzori, cum ar fi de temperatură, umiditate, nivel de iluminare și așa mai departe. Să presupunem că dispunem de 20 de astfel de senzori.

Suntem interesați să aflăm variația zilnică a tuturor senzorilor, așadar o rezoluție de 15 minute per citire ar trebui să fie potrivită. Aceasta înseamnă 96 de citiri per senzor pe zi, deci un total de 1920 de citiri zilnice per aplicație. Anual, dimensiunea bazei de date crește cu încă 700,000 de citiri. Volumul este deja copleșitor și crește exponențial pe măsură ce trece timpul. Aceasta explică ce este de fapt Big Data.

De ce este azi important Big Data?

Trăim într-o lume a informațiilor și suntem înconjurați de nenumărate sisteme care generează zilnic mulți petabiți de date. Colectarea și analiza acestor date este extrem de importantă în contextul optimizărilor ce pot fi aplicate pe sisteme, dar și în alte scopuri precum detectarea defectelor, securitatea cibernetică, detectarea intruziunilor, a fraudei și multe altele.

Concluzie

Un aspect important de remarcat este faptul că Big Data nu se limitează la Internet of Things (IoT), ci are multe alte aplicații și în alte domenii, cum ar fi serviciile bancare. Volumele uriașe de date sunt generate zilnic de fiecare sistem. De ce să nu folosim aceste date pentru a inspecta, depana și optimiza aceste sisteme?

Holisun poate oferi metodologii de Data Mining (analiză a datelor) precum și fluxuri de lucru complete ce permit analizarea, rezumarea de Big Data, precum și generarea de modele de învățare automată (Machine Learning) pe baza acestora. Cu astfel de modele se pot genera modele de Digital Twins, cu care se pot analiza sistemele chiar și din punctul de vedere al predicțiilor. Abordările de tip Big Data sunt implementate în unele dintre proiectele noastre de cercetare, cum ar fi BIECO, MUSNOMICS și SDK4ED.

Inteligența artificială

De-a lungul istoriei, inteligența a fost definită în mai multe moduri: abilitatea de a înțelege matematica și a face calcule, de a rezolva probleme, înțelegerea idei de comunicație, cunoștința de sine, capacitatea de a învăța, și așa mai departe, la început în efortul de a stabili diferența dintre oameni și animale (în percepția de atunci, inteligența fiind una dintre principalele diferențe), iiar mai târziu pentru a înțelege viața per ansamblu.

Înțelegerea noastră actuală a inteligenței poate fi descrisă ca abilitatea de a percepe informații, de a păstra cunoștințele și chiar de a le aplica pentru adaptarea comportamentului (https://en.wikipedia.org/wiki/Intelligence). În acest sens, toată viața cunoscută este inteligentă, deoarece adaptările la mediile disponibile au însemnat schimbarea comportamentului pentru a supraviețui.

Inteligența artificială (sau IA/AI(eng)), pe de altă parte, are aplicații foarte diferite. De-a lungul istoriei încă scurte a lumii IT, informaticienii au început să dezvolte algoritmi pentru probleme matematice dificile, pentru care nu a fost conceput încă un algoritm stabilit. Astfel, abordările generalizate au venit în ajutor.

Tipuri de probleme

În matematică, există trei elemente clare care definesc în mod complet o problemă: input-ul, sau datele problemei, funcția obiectiv, sau modul de rezolvare a problemei (care poate fi sau nu oricât de complexă), și output-ul, sau rezultatul obținut.

mathematical problem definition

În lumea Inteligenței Artificiale există în prezent două mari tipuri (sau clase) de probleme, care trebuie rezolvate într-un anume fel:

  1. Probleme pentru care cunoaștem rezultatul și datele de intrare, dar nu cunoaștem modul de calcul al acestor rezultate. Aici intră problemele de regresie, clasificare și altele.
  2. Probleme la care cunoaștem care sunt datele de intrare și o modalitate de a verifica dacă o soluție anume este bună, însă noi vrem să vedem ce combinație de valori de intrare (sau ordine a acestor valori) ne dă cea mai bună soluție la ieșire. Această problemă se numește optimizare și stă la baza a nenumărate aplicații ce le utilizăm zilnic, cum ar fi aplicațiile de generare a rutelor cele mai scurte între două puncte, internetul în sine și multe altele.

Inspirându-ne din natură, putem găsi două abordări majore, cel puțin câte una pentru fiecare tip de problemă:

  1. Algoritmi evolutivi, care utilizează concepte cum ar fi evoluția, genetica dar și alte abordări din lumea animală cum ar fi comportamentul coloniilor de furnici sau albine. Acești algoritmi sunt utilizați cu succes pentru optimizarea diferitelor funcții sau aplicații.
  2. Abordări de tip învățare automată (Machine Learning), care „învață” datele de intrare și găsesc moduri de a calcula ieșirile pe baza acestora.

Optimizare Evolutivă, Algoritmi Genetici

Din lumea optimizărilor, una dintre cele mai cunoscute clase de algoritmi sunt algoritmii evolutivi, în special Algoritmii Genetici (AG). Aceștia se folosesc de principiile evoluției, așa cum au fost formulate de Charles Darwin (încorporând și ultimele observații făcute de experți), pentru a genera cel puțin o soluție viabilă și apoi a o optimiza (îmbunătățirea unui anumit indicator de performanță). Putem aplica astfel de algoritmi în probleme unde dispunem de datele de intrare și avem o modalitate de a verifica dacă o soluție este potrivită sau nu, dar nu avem nici un mod de a calcula cea mai bună soluție.

De exemplu, să discutăm Problema Comis Voiajorului (în literatura de specialitate cunoscută ca TSP - Travelling Salesman Problem). Un comis voiajor dorește să viziteze mai multe orașe, dorind de asemenea să păstreze cheltuielile la un nivel cât mai scăzut posibil. O rută este secvența (sau ordinea) în care orașele sunt vizitate. Cea mai bună rută va fi ruta cu cel mai mic cost, unde costul poate fi: timpul, prețul total, distanța, sau orice altceva ne-ar interesa.

Într-o implementare a unui algoritm genetic, orice rută posibilă (candidat) este denumită un Individ. Fiecare oraș este o Genă din Cromozomul individului, iar ordinea acestor gene fiind ruta propusă. Algoritmul funcționează prin crearea unei populații de indivizi și aplicarea unui set de operatori: Selecție, Încrucișare și Mutație. Recent, alte aspecte sunt studiate și considerate ca operatori, cum ar fi: Supraviețuirea, Endogamia, Monogamia, etc.

Așa cum v-ar putea spune intuiția, algoritmii evolutivi funcționează prin modificarea graduală a unor părți din indivizi în cadrul unui set de soluții (populația), pentru a se vedea dacă rezultatele se îmbunătățesc. Așadar, nu avem o modalitate de a construi o soluție bună (ruta în cazul nostru), dar avem o modalitate de a cunoaște dacă o rută este bună sau nu (prin însumarea distanțelor dintre orașe, spre exemplu).

Abordările de Învățare Automată (Machine Learning)

Spre deosebire de problemele de optimizare, învățarea automată abordează o problematică foarte diferită. De exemplu, s-ar putea să dorim să învățăm software-ul să citească (recunoașterea optică a caracterelor, o problemă clasică de clasificare) sau să creăm un software care să poată filtra spamul în timp ce evoluează împreună cu creativitatea spamului sau chiar să folosească date istorice pentru a prezice congestionarea traficului care s-ar putea întâmpla mâine la prânz pe un anumit bulevard.

Pentru ca acest lucru să se întâmple, software-ul trebuie să ghicească relația dintre intrări și ieșire. Una dintre multele abordări este utilizarea rețelelor neuronale artificiale (ANN), care sunt o copie de bază la nivelul comportamental, a creierului uman. Neuronii și sinapsele (conexiunile între neuroni) sunt simulate într-un mod algoritmic și simulează modul în care creierul învață. Învățarea se numește instruire (training) și aceasta pregătește rețeaua pentru aplicația specifică pe care inginerul o construiește.

Cel mai mare avantaj al acestei abordări este capacitatea modelului rezultat de a generaliza. Aceasta înseamnă că, dacă îl instruiți pe unele date care descriu în mod relevant o problemă, modelul rezultat va putea aplica aceleași cunoștințe pentru alte date care vor fi prezentate intrărilor sale (desigur, cu o anumită acuratețe).

Concluzie

Inteligența artificială este mai mult decât doar computere care înțeleg ceea ce le spunem sau care îndeplinesc sarcini în mod inteligent. Există probleme grele pentru care nu avem încă algoritmi specializați sau, dacă avem, acești algoritmi sunt foarte lenți (cum ar fi Backtracking, o abordare a forței brute). În unele cazuri, abordările AI pot accelera rezolvarea problemelor sau pot oferi modalități de a le rezolva, indiferent cât de complexă este problema. Desigur, inginerii buni sunt o necesitate, deoarece proiectarea și implementarea unor astfel de sisteme necesită o atenție deosebită și cunoștințe intensive.

Holisun poate ajuta la proiectarea sistemelor complete de inteligență artificială, sau poate oferi asistență în proiectarea algoritmilor și a sistemelor pentru toate aceste tipuri de algoritmi. Expertiza acumulată de echipa Holisun de-a lungul anilor cuprinde ambele tipuri de abordări AI: Optimizări evolutive, precum și abordări de învățare automată. Interacțiunile hardware-AI sunt, de asemenea, domenii de studiu pentru noi, avem mai multe proiecte care abordează acest subiect, cum ar fi proiectul nostru de cercetare MUSHNOMICS sau proiectul de cercetare GOHYDRO.