ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ LISTĂ EDIȚII ▼
Numărul 43
Abonament PDF

Logica Fuzzy și mecanismele specifice. O introducere teoretică

Mursa Bogdan
Software Developer @ Yardi
PROGRAMARE


Proiectarea mecanismelor tehnice ce pot reproduce o funcționalitate a corpului uman a fost una dintre preocupările frecvente care l-a frământat pe om de-a lungul evoluției sale. Răspunsul la întrebarea "De ce?" este unul destul de evident, ce se poate sumariza la următorul aspect: ușurarea ori îmbunătățirea activităților pe care le desfășoară omul.   

Începând de la simpla roată care a apărut odată cu necesitatea transportului de materiale mult prea grele pentru un om până la sistemul optic ce formează un binoclu, care facilitează vizualizarea de obiecte aflate la o distanță mult prea mare, astfel de mecanisme au ajutat la o evoluție rapidă a tuturor domeniilor.    

Încetul cu încetul soluția tehnică ce poate efectua procesări similare creierului uman a devenit o necesitate, odată cu această evoluție rapidă din majoritatea domeniilor. Capacitatea intelectuală a oamenilor nu mai făcea față ori era mult prea costisitoare pentru a putea fi folosită în mecanisme manuale. Astfel apariția calculatorului modern, ce reprezintă transpunerea într-un sistem mecanic a creierului uman, marchează începutul unei noi ere, unde procesări de înaltă performanță devin posibile.  

Modul în care calculatorul interpretează datele se bazează pe o logică tradițională și anume logica binară. La un moment dat, orice decizie luată de această unealtă creată de om se va rezuma la un răspuns 0 sau 1 sau, natural vorbind, adevărat sau fals. Până nu demult acest lucru mulțumea toate nevoile domeniilor ce foloseau puterea de procesare a calculatoarelor, însă expansiunea rapidă a nivelului calității și preciziei care se dorește în luarea de decizii a început să nu mai fie satisfăcută de acest mod tradițional de a procesa datele. 

Necesitatea folosirii unei logici care să fie mult apropiată de raționamentul creierului uman, a fost demult semnalată de profesorul Lotfi A. Zadeh (1965). Din păcate, precum marelui Einstein i-au fost respinse teoriile de mulți fizicieni ai momentului și acum aceste teorii reprezintă bazele fizicii moderne, așa și teoria profesorului Zadeh, intitulată Fuzzy Logic, a fost respinsă de majoritatea oamenilor de știință din acel moment; abia după mulți ani comunitatea științifică i-a înțeles adevărata putere. Acum teoria reprezintă una din bazele Inteligenței Artificiale moderne și este folosită în sisteme fuzzy aflate în: automobile, mecanisme de securitate, aparate medicale, mecanisme decisionale (marketing, business etc.), aparate foto etc. .

Noi ca oameni folosim așa numita logică fuzzy zi de zi, fără să avem nici cea mai mică idee, pentru că mintea umană este construită natural să gândească într-o manieră fuzzy. Un exemplu simplu poate fi reprezentat de răspunsurile posibile la întrebarea "Cât de satisfăcut ești de Universitatea Babeș-Bolyai?": "Destul de satisfăcut", "Nu sunt satisfăcut", "Foarte satisfăcut", care sunt răspunsuri ce pot fi considerate ambigue sau fuzzy, folosind termenii prezentați deja. Pentru că raționamentul uman este făcut să lucreze așa, pentru noi oamenii este foarte simplu să interpretăm aceste tipuri de răspunsuri, folosindu-ne de experiența acumulată deja sau de diferite metrici. Însă când vine vorba de mașini controlate de un calculator ce folosește logica binară, acest lucru nu mai este posibil. Pentru că acestea înțeleg doar valori ca 0 și 1, sau răspunsuri ca "satisfăcut", "nesatisfăcut". 

 În termenii logicii fuzzy, aceste seturi de date ce pot fi interpretate de orice mașină într-un sistem binar se numesc crisp data. 

Pentru a parcurge și câteva noțiuni mai practice, vom folosi un exemplu destul de interesant ca să vedem cum se vor comporta logica fuzzy și cea tradițională. În acest exemplu dorim să creăm conceptual un sistem de "self-driving car" de pe un automobil care să fie capabil să ia cele mai bune decizii în momentul în care o altă mașină se află la o anumită distanță de automobilul nostru.

Conform metodei tradiționale, sistemul nostru va putea lua doar două decizii: aproape și departe. Folosindu-ne de Figura 1. ne putem imagina distanța între mașini ca fiind împărțită în două jumătăți egale, fiecare având drept corespondent direct una din cele două decizii. În acest context, faptul că putem lua în considerare doar aceste două decizii trase în urma analizei distanței între mașini duce la măsuri direct proporționale. Voi formula aceste decizii sub forma unor reguli de forma "dacă-atunci" (dacă o condiție atunci o consecință). 

Dacă mașina B este aproape atunci frânează.    

Dacă mașina B este departe atunci nu frâna.

Dacă presupunem că mașina noastră va avea mereu o viteză mai mare decât mașina B și ținem cont de regulile de mai sus, atunci de fiecare dată când distanța dintre mașini va fi undeva în intervalul semnalat ca aproape, sistemul self-driving va frâna brusc, indiferent de cât de aproape sunt mașinile. Odată ce distanța dintre mașini se va situa în intervalul departe, mașina noastră va reporni și își va continua drumul până când iarăși va fi oprită brusc, în momentul în care distanța va ajunge în intervalul aproape.

Abordarea pe care o propune logica fuzzy este una care spune că răspunsul este mereu undeva între 0 și 1 (inclusiv acestea). Deci reprezentarea distanței dintre cele două autovehicule va fi mai mult un gradient așa cum este afișat în Figura 2.

Astfel putem obține seturi de reguli de forma celor de mai sus, punând întrebări cât mai naturale:

Mașina B este aproape ?       

Răspuns: 0.2 (nu foarte aproape).     

Dacă mașina B este 0.2 de aproape atunci frânează 0.2 (nu foarte tare).         

Răspuns: 0.8 (destul de aproape).     

Dacă mașina B este 0.8 de aproape atunci frânează 0.8 (destul de tare). 

Exemplul de mai sus oferă ca răspuns la întrebare un număr ce se află în intervalul [0,1]. Acest număr este de fapt un număr fuzzy ce are în calitate de corespondent un set fuzzy căruia îi poate fi asociat (în acest caz setul "nu foarte aproape").    

Într-un caz real, un mecanism de "self-driving car" ce ar implementa o logică fuzzy conform exemplului de mai sus, ar respecta comportamentul omenesc mult mai bine, mașina conducându-se cu adaptări ale vitezei în funcție de distanța între mașini, fără a pune frâne bruște.      

Cu siguranță acest exemplu v-a făcut un pic curioși în legătură cu algoritmul propriu-zis ce este implementat într-un astfel de sistem fuzzy. Această implementare este una foarte naturală de asemenea, deși mai este presărată pe alocuri cu diferite noțiuni specifice; partea bună este că acestea sunt sugestive. 

Un controler fuzzy sau un mecanism fuzzy nu este altceva decât o mașină ce folosește logica fuzzy. Acest controler poate să fie un sistem hardware sau software, sau amândouă, scopul lui final fiind să aplice logica fuzzy în așa fel încât să interpreteze datele așa cum ar face-o un om, doar că mult mai rapid.    

Flow-ul unui astfel de mecanism este reprezentat prin următorii pași:            

1.Primirea unui număr de măsurători oferite de un alt sistem (în exemplul de mai sus, ar fi un senzor care ar măsura distanța între cele două mașini). 

E.g: 4 m, 5 m etc.              

2.Să nu uităm că sistemul nostru poate procesa doar seturi de date fuzzy. Deci datele primite în pasul anterior trebuie transformate din date crisp în date fuzzy. Aceste transformări se fac conform unor metrici stabilite de un expert în domeniul de aplicabilitate. 

E.g: 4 m reprezintă o valoare de 0.3 de aproape.    

3.Setul de date fuzzy rezultat este folosit ca input în regulile fuzzy de tipul  "dacă-atunci", ce au drept rezultat (sau consecință) un alt set de date fuzzy

E.g: Dacă mașina B este 0.3 m aproape atunci apasă frâna 0.3 (nu foarte tare)               

4.În ultimul pas această consecință fuzzy trebuie tranformată în date crisp pentru ca  sistemele ce citesc output-ul din controler-ul fuzzy să poată lua măsuri. 

E.g: 0.3 frână poate  reprezenta o reducere de viteză de 30% față de viteză actuală. 

Din păcate detaliile despre arhitectura propriu-zisă a unui astfel de sistem ce folosește flow-ul de mai sus, s-ar încadra într-o altă discuție. Însă sper că aspectele teoretice prezentate de-a lungul articolului au fost destul de clare și au oferit o sumarizare completă a conceptului din spatele logicii fuzzy și a sistemelor ce o implementează.       

Vă recomand să continuați să descoperiți aplicațiile practice ale acestor sisteme ce folosesc modul de gândire propus de profesorul Zadeh. Beneficiile aduse pot fi unele extraordinar de mari, și pot aduce un aport de calitate și precizie oricărui proiect pe care îl desfășurați.  

LANSAREA NUMĂRULUI 86

Prezentări articole și
Panel: Autonomous driving

Marți, 20 August, ora 18:00
Bosch R&D, Cluj-Napoca

Înregistrează-te

Facebook Meetup

Conferință

Sponsori

  • ntt data
  • 3PillarGlobal
  • Betfair
  • Telenav
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • UIPatj
  • MetroSystems
  • Globant
  • Colors in projects