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.
În lumea Inteligenței Artificiale există în prezent două mari tipuri (sau clase) de probleme, care trebuie rezolvate într-un anume fel:
- 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.
- 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ă:
- 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.
- 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.