Documente Academic
Documente Profesional
Documente Cultură
Conferențiar universitar
Dr.ing. Iustin PRIESCU
Cap. 1: Subcapitolele: 1.7; 1.8.2.
Cap. 2: Subcapitolele: 2.1
Cap. 3: Subcapitolele: 3.2.3; 3.2.5
Cap. 4: Subcapitolele: 4.2
Cap. 5: Subcapitolele: 5.5; 5.6
Cap. 6: Subcapitolele: 6.5; 6.6; 6.7; 6.8
Lector universitar
Dr.ing. Dan-Laurențiu GRECU
Cap. 1: Subcapitolele: 1.8.3; 1.8.4
Cap. 2: Subcapitolele: 2.3
Cap. 3: Subcapitolele: 3.2.4
Cap. 4: Subcapitolele: 4.2
Cap. 6: Subcapitolele: 6.4
Conferențiar universitar
Dr.inf. Ana-Cristina DĂSCĂLESCU
Cap. 1: Subcapitolele: 1.8.1
Cap. 2: Subcapitolele: 2.2.
Cap. 3: Subcapitolele: 3.1; 3.2.
Cap. 5: Subcapitolele: 5.2
Cap. 4: Subcapitolele: 4.3
Asistent universitar
Drd. Violeta-Nicoleta OPRIȘ
Cap. 1: Subcapitolele: 1.1; 1.2; 1.3; 1.4; 1.5; 1.6.
Cap. 5: Subcapitolele: 5.1
Cap. 6: Subcapitolele: 6.1;
Lucian Ștefăniță GRIGORE
Iustin PRIESCU Dan-Laurențiu GRECU
Ana-Cristina DĂSCĂLESCU Violeta OPRIȘ
INGINERIE SOFTWARE
ȘI
TEHNICI DE INTELIGENȚĂ
ARTIFICIALĂ
Editura AGIR
București, 2021
ASOCIAȚIA GENERALĂ A INGINERILOR DIN ROMÂNIA
Copyright © Editura AGIR şi autorii, 2021
Toate drepturile asupra acestei ediții sunt rezervate.
Editura AGIR
Calea Victoriei, nr. 118, sector 1,
010093 București,
tel: 4021-316 89 92, 4021-316 89 93
4021- 319 49 45 (difuzare); fax 4021-312 55 31
e-mail: editura@agir.ro; www.agir.ro
Autorii
INGINERIE SOFTWARE ȘI
TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ
Software Engineering and Artificial Intelligence are two fields that are
increasingly intertwined nowadays. Through this first step, the authors complete a
series of books that address the issue of Artificial Intelligence Techniques, this time
being Software Engineering.
The book provides readers with notions and information regarding:
– software engineering, which is a field related to the design, creation and
maintenance of software applying technologies and knowledge / techniques in
computer science, project management, engineering, interface design and other
related fields;
– artificial intelligence (AI), considered part of the technologies of the future,
is the ability of a machine to mimic human functions, such as reasoning, learning,
planning and creativity.
Today's technological challenges, such as the need to increasingly automate
human activities, the digitization of information and its high level of availability, the
large volume of data to be processed, etc., have imposed new approaches to how
implementation of future technical systems, their hardware & software development,
as well as the large-scale integration of new algorithms and specific approaches in
the field of artificial intelligence.
In view of the above, the authors organized the contents of the book into 6
chapters, as follows:
1. The first chapter describes the introductory notions of software engineering.
The main objectives of software engineering, the paradigms of software systems
development, the programs used in this field, as well as the approach of software
engineering in the field of robotics are presented.
2. Chapter 2 deals with artificial intelligence and includes, in addition to the
introductory concepts specific to the field, references to distributed artificial
intelligence and intelligent agents.
3. An important chapter of the book is Chapter 3 which deals with how to
implement AI. Problem-solving agents and their type are defined, the process of
formulating the problem together with the definition of the search spaces.
Here, too, solution search strategies are presented, along with associated
algorithms, such as: width search, depth search, uniform cost search, limited depth
search, incremental depth search, bidirectional search. Also, a subchapter is
dedicated to multiagent systems that use notions and approaches from game theory.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 12
4. Chapter 4 deals with two important aspects of AI, namely knowledge and
reasoning. A smart agent needs real world knowledge to make decisions and
reasoning to act effectively.
Knowledge-based agents are those agents who have the ability to maintain an
internal state of knowledge, reason on that knowledge, update their knowledge after
observations and take action. These agents can represent the world with a certain
formal representation and can act intelligently. Aspects regarding logical reasoning
and clarification of robot perception, deliberation, planning, action and object
recognition functions are presented.
5. Chapter 5 deals with machine learning, which is a subdomain of computer
science and a branch of artificial intelligence, whose goal is to develop techniques
that give robots the opportunity to learn. Aspects regarding the navigation of mobile
robots, learning visual cues, deformable models and the structure of the system are
presented.
6. Chapter 6 deals with another branch of AI, namely deep learning. Until
2010, we did not know how to prepare neural networks to overcome the more
traditional approaches, except for a few specialized issues. What changed in 2010
was the discovery of learning techniques in so-called deep neural networks. These
techniques are now known as deep learning. Deep learning is the science of forming
large artificial neural networks Deep Neural Networks (DNNs) can have hundreds
of millions of parameters, allowing them to model complex functions, such as
nonlinear dynamics. The methods presented in this chapter refer to deep learning in
robotics, generative and unsupervised models, methods of learning policies,
learning landmarks for grabbing objects.
CUPRINS
PREFAȚĂ ................................................................................................................ 7
INGINERIE SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ .. 9
SOFTWARE ENGINEERING AND ARTIFICIAL INTELLIGENCE
TECHNIQUES....................................................................................................... 11
CUPRINS ............................................................................................................... 13
1. INTRODUCERE ÎN INGINERIA SOFTWARE....................................... 19
1.1 Obiectivele Ingineriei Software .................................................... 23
1.2 Paradigme de dezvoltare a sistemelor software ............................ 24
1.2.1. Paradigma procedurală ....................................................... 26
1.2.2. Paradigma bazată pe date.................................................... 27
1.2.3. Paradigma orientată pe obiecte ........................................... 28
1.3 Introducere în UML ...................................................................... 29
1.4 Introducere în SysML ................................................................... 34
1.4.1. Abordarea modelării ........................................................... 35
1.4.2. Scopul ................................................................................. 35
1.4.3. Procesul de modelare .......................................................... 36
1.5 Cicluri de viață software ............................................................... 37
1.5.1. Modelul SDLC tip cascadă ................................................. 38
1.5.2. Modelul de prototipare rapidă ............................................ 39
1.5.3. Modelul tip spirală .............................................................. 41
1.5.4. Model de dezvoltare software bazat pe piață ...................... 43
1.5.5. Model de dezvoltare Open-Source ..................................... 44
1.5.6 Model de dezvoltare Agile.................................................. 44
1.6 Metodologia Agile bazată pe UML ............................................... 45
1.7 Principiile proiectării orientate pe obiect ...................................... 50
1.7.1 Principiile de proiectare ...................................................... 54
1.7.2 Lucrări conexe .................................................................... 56
INGINERIA SOFTWARE FOLOSIND TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 14
1
Ingineria software reprezintă aplicarea sistematică a abordărilor inginerești pentru
dezvoltarea de software. Ingineria software este o ramură a informaticii.
2
https://www.computer.org/publications/tech-news/events/what-to-know-about-the-
scientist-who-invented-the-term-software-engineering
20 1 – Introducere în Ingineria Software
3
https://www.defectivebydesign.org/
22 1 – Introducere în Ingineria Software
Aceste servere nu permit controlul utilizatorilor asupra lor, ele livrează doar
niște rezultate fără a pune la dispoziție codul sursă.
Spre exemplu, aplicația Microsoft Windows poate trimite fără aprobare
informațiile derulate direct la deținătorul aplicației Microsoft (Windows Media
Player, RealPlayer)4.
Orice dezvoltator de aplicații independente trebuie să respecte o serie întreagă
de formalități/reglementări/standardizări. Spre exemplu multitudinea de aplicații
pentru iPhone și iPad, care se pot descărca de pe AppStore, sunt greu de localizat din
punct de vedere al deținătorului.
Dintre sistemele de operare existente, amintim de următoarele:
• MS-DOS a fost dezvoltat în mare măsură de Bill Gates și Paul Allen –
Microsoft. PC-DOS a funcționat pe o mașină cu 64K de acces aleatoriu,
citire-scriere a memoriei, acum rulează doar ca aplicație într-o fereastră
terminal a cărei pictogramă se găsește în folderul accesorii de pe
calculatoare. Cu timpul a devenit Windows 8/10;
• Apple DOS pentru familia de computere Apple II a fost creat de Steve Jobs
și Steve Wozniak. Apple-DOS folosea mai puțină memorie și a funcționat
pe Apple II cu doar 16K. Cu timpul a devenit MacOS, OS X, Yosemite;
• UNIX a fost dezvoltat inițial de Dennis Ritchie și Kenneth Thompson5
pentru seria PDP-11 de minicomputere pe 16 biți. Dimensiunea kernel-ului
UNIX l-a determinat pe Linus Torvalds să dezvolte un kernel mai mic, care
a devenit sistemul de operare Linux;
• VisiCalc, a fost în mare parte scris de o singură persoană, Dan Bricklin.
Versiunile VisiCalc au funcționat pe Apple II și pe IBM8086. VisiCalc nu
mai există ca produs comercial, fiind înlocuit de Excel și Numbers.
Versiunea curentă a Excel constă din milioane de linii de cod sursă scrise în
C și limbaje conexe.
Testarea este esențială în dezvoltarea software-ului modern și este necesară o
organizație de asistență tehnică pentru a răspunde la cerințele clienților, cum ar fi
Application Lifecycle Management (ALM).
Dezvoltarea Sistemelor Software Agile a fost posibilă datorită faptului că
dezvoltarea unui produs software, care satisface o nevoie, necesită șase luni,
multiplicarea cu factorul conservator de Brooks de opt ori înseamnă că software-ul
va dura cel puțin patru ani pentru a fi gata pentru lansare. Presupunând că timpul
necesar și efortul necesar - în ceea ce privește persoana - cresc în același mod.
Desigur, produsul poate fi irelevant în patru ani, deoarece restul industriei software
nu stă pe loc.
Cele mai multe proiecte de succes, care au dat naștere companiilor de software
au devenit mult mai mari în ceea ce privește numărul de persoane pe care le
4
https://www.nytimes.com/2009/07/18/technology/companies/18amazon.html
5
https://www.historyofinformation.com/detail.php?id=872
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 23
angajează. Chiar și software-ul, care a fost inițial dezvoltat de unul sau doi
antreprenori este acum dezvoltat de echipe. Companiile și organizațiile de mare
succes care realizează browsere de internet, ale căror versiuni inițiale s-au datorat în
mare măsură eforturilor unei echipe mici, sunt acum angajatori ai multor ingineri
software pentru a crește numărul de caracteristici disponibile, pentru a asigura
portabilitatea către toate mediile și de îmbunătățire a gradului de utilizare de către o
clasă largă de utilizatori și chiar pentru a furniza suficiente documente.
6
https://standards.ieee.org/standard/610_12-1990.html
7
https://www.computer.org/education/bodies-of-knowledge/software-engineering
24 1 – Introducere în Ingineria Software
▪ orientată pe obiecte;
▪ ad-hoc.
O mare parte din cele mai vechi software produse au fost dezvoltate pe baza
unor paradigme ad-hoc sau improvizate. Fiecare dintre aceste paradigme încearcă să
rezolve o problemă din lumea reală cu o soluție software. Ilustrația (Fig. 1.3)
sugerează în plus că fiecare paradigmă este capabilă să facă acest lucru.
Fluxurile de date au fost modelate ca săgeți de date care intră și ies din bule
de proces. Uneori, mai multe săgeți intrau într-un balon și erau îmbinate într-un
singur flux de ieșire; uneori, un singur flux a intrat doar pentru a fi separat în fluxuri
multiple părăsind procesul. Rezultatul final a fost o rețea de date și procese care a
descris o anumită problemă. O analiză bazată pe oricare dintre paradigmele bazate
pe date a dus la o mai bună înțelegere a domeniului problemelor decât o analiză bazată
28 1 – Introducere în Ingineria Software
pot fi adăugate noi clase și unele clase pot fi eliminate, dar, în cea mai mare parte,
clasele descoperite în timpul analizei sunt reportate la proiectare. Mai mult, clasele
rafinate în timpul proiectării sunt reportate în faza de implementare.
Implementarea claselor necesită traducerea diagramelor de clasă UML într-un
limbaj de programare adecvat. Din fericire, procesul de traducere este bine definit și
unul la unu (ceea ce înseamnă că, în afară de nuanțele cosmetice, există o singură
modalitate de a face traducerea). Mai fundamental, conceptele de clase și obiecte nu
se schimbă de la o fază la alta. Această consistență conceptuală formează punți între
lumea reală, analiză și proiectare și implementare.
veți descoperi că UML poate fi aplicat la câteva domenii diferite și poate capta și
comunica totul, de la organizarea companiei la procesele de afaceri, până la
software-ul distribuit al întreprinderii.
Se intenționează a fi un mod obișnuit de a capta și exprima relații,
comportamente și idei la nivel înalt într-o notație ușor de învățat și eficient de scris.
UML este vizual; cam tot ce conține are o reprezentare grafică. De-a lungul acestei
cărți vom discuta despre semnificația diferitelor elemente UML, precum și despre
reprezentările lor [1.9].
UML este legat de proiectarea și analiza orientată pe obiecte [1.10]. UML
utilizează elemente și formează asociații între ele pentru a forma diagrame (Fig. 1.7).
Diagramele din UML pot fi clasificate în general ca:
▪ diagrame structurale, care includ:
o diagrame componente;
o diagrame obiecte;
o diagrame de clasă;
o diagrame de desfășurare;
▪ diagrame de comportament, care includ:
o diagrame de caz de utilizare;
o diagrame de stare;
o diagrame de activitate;
o diagrame de interacțiune.
8
https://developer.ibm.com/articles/an-introduction-to-uml/
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 33
1.4.2. Scopul
Unul dintre cele mai comune modele ale procesului de dezvoltare software se
numește ,,model clasic de cascadăˮ și este ilustrat în Fig. 1.10. Acest model este
utilizat aproape exclusiv în situațiile în care există un client pentru care este creat
software-ul.
cascadă este o secvență de repere în care fiecare două faze adiacente ale interfeței
ciclului de viață au un feedback. Un exemplu simplu de diagramă de referință pentru
un proces de dezvoltare software care se bazează pe modelul clasic de cascadă este
dat în Fig. 1.11.
Cerințele pentru sistem sunt de obicei prezentate într-o serie de revizuiri ale
cerințelor: preliminare, intermediare și finale sau critice. Toți cei care utilizează de
pentru dezvoltarea software modelul clasic tip cascadă, consideră revizuirea
cerințelor critice acceptate de către proiectanți și clienți ca sfârșitul „oficial” al fazei
cerințelor.
Orice activitate desfășurată în perioada dintre revizuirea preliminară și cea
finală, poate fi refăcută dacă nu mai este în concordanță cu modificările
cerințelor.
Granița dintre specificațiile cerințelor și fazele de proiectare ale modelului
clasic tip cascadă nu au nimic special. Același lucru este valabil și pentru fazele de
proiectare și implementare, întrucât proiectarea sistemului este aprobată după cum
urmează: o revizuire preliminară, una intermediară și una finală. Modelul se aplică
și celorlalte interfețe ale fazelor oricărui ciclu de viață.
Acest model clasic tip cascadă este utili pentru proiectele de dezvoltare
software la care cerințele sistemului trebuie determinate într-o perioadă rezonabilă
și, în plus, aceste cerințe nu se vor schimba foarte mult în perioada de dezvoltare.
9 http://agilemanifesto.org/principles.html
46 1 – Introducere în Ingineria Software
bazată pe model). Astfel, s-au putut dezvolta tehnici pentru generarea de coduri și de
testare de foring-factor UML/Pmodels [1.12].
Standardul UML trebuie să satisfacă o multitudine de cerințe de la o varietate
de influențe și, prin urmare, este în mod inevitabil supraîncărcat cu multitudinea
diferitelor diagrame de modelare cu o semantică largă și semi-clară. Multe elemente
ale standardului nu sunt adecvate, sau cel puțin nu în forma lor dată, iar alte concepte
lingvistice lipsesc în întregime.
Metodele agile, în mod special programarea extremă, au o serie de tehnici și
principii, care îmbogățesc portofoliul de inginerie software pentru anumite tipuri de
proiecte. Aceste tehnici nu implică în mod obișnuit vreo documentație creată. Ele se
concentrează asupra flexibilității, optimizând timpul de comercializare și
minimizând cantitatea de resurse utilizate.
UML este utilizat în principal în proiecte bazate pe planuri care implică un
nivel relativ ridicat de documentare și inflexibilitatea pe care aceasta o cauzează. Cu
toate acestea, comparativ cu un limbaj de programare normal, UML este mai
compact, mai cuprinzător din punct de vedere semantic și mai potrivit pentru
reprezentarea conținutului complex. Oferă avantaje semnificative pentru modelarea
cazurilor de testare și pentru evoluția transformării sistemelor software.
Scopul dezvoltării software-ului de transformare este de a descompune
procesul de dezvoltare a software-ului în pași mici, aplicabili sistematic, care sunt
gestionabili datorită efectelor lor limitate la mediul local. Refactorizarea descrie o
colecție extinsă de tehnici de transformare pentru limbajul de programare Java.
Tehnicile de refactorizare ne permit să migram codul în conformitate cu o ierarhie
de clase. De asemenea, ne permit să împărțim sau să împărțim clase, să schimbăm
atributele, să extindem sau să externalizăm părți de cod în metode separate și multe
altele. Punctul forte al tehnicilor de refactorizare se bazează pe gestionarea etapelor
de transformare individuale (denumite „mecanisme”) și capacitatea de a le combina
flexibil, ceea ce duce la îmbunătățiri mari, orientate spre obiective, în structura
software-ului. Scopul refactorizării este de a transforma un program existent, dar de
a păstra semantica. Refactorizarea este utilizată pentru a îmbunătăți calitatea
designului, păstrând în același timp funcționalitatea, mai degrabă decât pentru a
extinde funcționalitatea. Refactorizarea și evoluția funcționalității sunt activități
complementare care se pot alterna rapid în procesul de dezvoltare. Cursul unui
proiect poate fi astfel conturat așa cum se arată în Fig. 1.17. Cu toate acestea, nu
există un criteriu obiectiv pentru măsurarea „calității designului”. Abordările inițiale,
de exemplu, măsoară conformitatea cu standardele de codare, dar sunt insuficiente
pentru evaluarea mentenabilității și testabilității arhitecturii și implementării.
Pentru a verifica dacă transformările care păstrează semantica sunt corecte se
utilizează metodele de testare existente. Cu cât nivelul de calitate al metodelor de
testare este mai ridicat, crește probabilitatea de a detecta modificările defecte. Prin
refactorizare se modifică semnăturile interne ale unui subsistem. De aceea anumite
teste trebuie adaptate împreună cu codu.l Tehnicile de refactorizare vizează diferite
niveluri ale sistemului. Posibilitatea îmbunătățirii unei arhitecturi de sistem care a
fost deja realizată în cod înseamnă că a devenit mai puțin necesară definirea unei
arhitecturi de sistem corecte și stabile a priori.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 47
În timp ce multe tehnici de refactorizare pentru Java [1.13] sunt în prezent în curs
de dezvoltare, în prezent există doar câteva tehnici similare pentru diagramele UML.
Eficiența metodelor agile se poate îmbunătăți prin omiterea inteligentă a
lucrărilor inutile și printr-o implementare eficientă. Nu este neapărat cazul ca toate
tehnicile unei metode agile să se concentreze pe calitatea produsului dezvoltat. Cu
toate acestea, anumite elemente ale unei metode agile, cum ar fi concentrarea asupra
simplității proiectării și dezvoltarea extinsă a testelor automate, susțin îmbunătățirea
calității. Alte practici aplicate prin unele metode agile, cum ar fi lipsa specificațiilor
detaliate și a recenziilor, descurajează utilizarea metodei pentru sisteme extrem de
critice. În acest caz, trebuie selectat un proces alternativ sau o extensie adecvată.
Dacă un model este utilizat exclusiv pentru comunicare, atunci există în mod
normal doar ca desen informal. Un model creat de un instrument are o reprezentare
formală a sintaxei10 și poate fi utilizat pentru prelucrarea ulterioară susținută de
instrumente. Există două variante principale de generare a codului:
i. generarea codului produsului;
ii. generarea codului de testare.
Necesitatea adaptării software-ului pe baza schimbării cerințelor înseamnă, de
asemenea, că trebuie să fie disponibile tehnici pentru transformarea sau refacerea
modelelor. Adaptarea sistematică a modelelor la funcționalități noi și modificate într-
un proces validat în fiecare etapă prin teste automate și invarianți permite această
ajustare dinamică. Deoarece un model creat conform cerințelor date este mai
compact și, prin urmare, mai ușor de înțeles decât codul, acest lucru îmbunătățește
și adaptabilitatea modelelor. De exemplu, putem adapta structura într-o diagramă de
clasă, care este răspândită într-un număr de fișiere din cod. În același timp,
flexibilitatea pentru integrarea noilor funcționalități și, prin urmare, agilitatea
10
XML Metadata Interchange Format (XMI) este un standard pentru reprezentarea modelelor
UML și, prin urmare, acest tip de reprezentare formală a sintaxei
48 1 – Introducere în Ingineria Software
de asamblare flexibile cu brațele robotului conforme sunt încă greu de dezvoltat din
cauza multor incertitudini cauzate - printre altele - de toleranțele obiectelor,
incertitudinile de poziție și toleranțele de la senzorii externi și interni. Reutilizarea acestor
programe depinde de fiecare expert individual și lipsesc instrumentele care permit
reutilizarea și modelele de compunere la diferite niveluri de detaliu.
Ca urmare a colaborării dintre B.Rumpe [1.9] și Institutul DLR pentru
Robotică și Mecatronică s-a introdus cadrul LightRocks (Light Weight Robot
Coding for Skills) [1.14] care permite experților în robotică și începătorilor să
modeleze sarcini de asamblare robotică pe diferite niveluri de abstractizare, și
anume: sarcini de asamblare, abilități și acțiuni elementare.
Experții în robotică oferă un model de domeniu al mediului de asamblare și
acțiuni elementare care fac referire la acest model. Lucrătorii din fabrică le combină cu
abilitățile și sarcina de a implementa procesele de asamblare furnizate de experți. Acest
lucru permite separarea preocupărilor, crește reutilizarea și permite producția flexibilă.
Cadrul este implementat pe baza profilurilor de limbaj MontiCore pentru diagramele de
clasă UML/P și diagramele de clasă UML/P, ceea ce permite reutilizarea multor cadre
UML/P pentru modelare, validare model, generare cod și generare editor.
4. gestiunea proiectelor;
5. aspectele socio-economice ale proiectelor de dezvoltare a produselor
software.
Proiectarea orientată pe obiect este foarte importante și pentru sistemele de
fabricație automatizate flexibile, domeniu care este în continuă dezvoltare, mai ales
că asistăm astăzi la o individualizare a produselor, conform specificațiilor clienților
finali. Procesele sistemelor de fabricație automatizate sunt, încă, destul de greu de
programat din cauza multitudinii incertitudinilor cauzate printre altele de toleranțe,
de poziționare și chiar și a celor datorate senzorilor interni și externi. Calibrarea
senzorilor, într-un sistem cu buclă închisă este făcută pas cu pas, deocamdată.
După cum se știe, o linie de asamblare automatizată este echipată cu brațe
robotizate. Un astfel de braț îl reprezintă Brațul Ușor pentru Robot (Light Weight
Robot Arm LWR), care permite efectuarea de mișcări conforme, astfel încât, se pot
rezolva incertitudinile [1.14]. De ce programarea LWR este mai complicată decât
programarea roboților industriali? Pentru că (Fig. 1.18) trebuie ținut cont de poziții,
rigiditate, feedback de amortizare etc., care trebuie ajustate la fiecare comandă dată
pentru ca brațul robotizat să efectueze o mișcare. Complexitatea crește atunci când
feedback-ul necesită implicarea mai multor senzori. Astfel, reutilizarea acestor
programe depinde până la urmă de fiecare specialist. Exemplul amintit se referă la
un caz în care instrumentele care permit reutilizarea și compoziția modelelor la
diferite niveluri de detaliu lipsesc cu desăvârșire. De aceea, există o cerere puternică
de a dezvolta astfel de instrumente și de a permite programarea robotului bazată pe
abilități pentru nespecialiști, respectiv care să fie ușor de accesat de către utilizatorii
finali (lucrătorii de pe linia de montaj).
hardware extrem de diferite care rulează pe diferite platforme, unele dintre ele cu
comunicare dură în timp real [1.17]. Algoritmii de planificare a mișcării și
calculele dinamicii corpului multibody sunt extrem de complicați și necesită
implementări eficiente, ușor de utilizat pentru programatorul mediu. Alte obiective
de proiectare, cu caracter conflictual, pot fi atinse numai prin compromisuri atente,
motiv pentru care preferăm o abordare pură a bibliotecii C ++, care acoperă
întreaga gamă de la abstractizarea hardware până la planificarea mișcării Robotics
Library - RL.
RL oferă suport în timp real. Pentru planificarea căilor fără coliziuni, Open
Motion Planning Library [1.23] oferă o colecție largă de algoritmi de ultimă
generație, dar nu există mijloace pentru executarea acestor căi pe roboți fizici.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 57
Fig. 1.22 Ierarhia de clase a funcțiilor matematice. O funcție este o mapare cu valoare
vectorială care poate fi evaluată eficient și stabil, inclusiv derivatele sale.
Fig. 1.23 Extras de clase pentru abstractizarea hardware-ului. Dispozitive similare oferă
metode comune, cum ar fi citirea valorilor distanței pentru un RangeSensor sau citirea
valorilor poziției unui manipulator pentru fiecare axă a unui JointPositionSensor.
aplicația ca un singur proces cu un fir sau fire individuale de timp de ciclu diferit pentru
fiecare dispozitiv hardware. De asemenea poate alege un proces pentru fiecare dispozitiv
împreună cu o comunicare de memorie partajată bazată pe API-ul său preferat. Pentru a
echilibra sarcina de calcul, programatorul poate muta dispozitivele și procesele care
efectuează calcule grele către un computer separat și prin utilizarea de comunicații de
bază de TCP / UDP, un bus specific dintre multele middleware disponibile.
Fig. 1.24 Stările (a) Device și (b) CyclicDevice. Acesta din urmă schimbă toate mesajele
către și de la dispozitiv, funcție care trebuie apelată într-o buclă în timp real.
Găsirea unei căi fără coliziuni de la o configurație de robot la alta este o sarcină
obișnuită în robotică. Au fost dezvoltați diferiți algoritmi de planificare, cu abordări
bazate pe eșantionare, cum ar fi foi de parcurs probabilistice (PRM) și arbori de
decizie aleatori cu explorare rapidă (RRT) și variațiile acestora.
O comparație a diferiților algoritmi de planificare și a performanței acestora
utilizând RL poate fi găsită în [1.33]. Planificarea traseului necesită o reprezentare
cinematică a robotului împreună cu un model geometric și un motor pentru detectarea
coliziunilor (Fig. 9). Pentru a determina dacă o stare se ciocnește, cinematica mapează
o configurație articulară imens -dimensională la cadre pentru geometria din spațiul de
lucru tridimensional și motorul de coliziune calculează rezultatul.
Cinematica definește, de asemenea, un spațiu metric ca o combinație a
varietăților articulațiilor sale individuale. O articulație prismatică sau revolută cu limite
superioare și inferioare este reprezentată de 1 , o articulație revolută fără limite, însă
1
de S .
3
Îmbinările sferice reprezintă spațiul proiectiv real P și colectorul corect
pentru obiectele care zboară liber este dat de 3 P3 . Aceste valori trebuie luate
în considerare la calcularea unei funcții de distanță globală și la interpolare între
configurații. În afară de complexitatea geometriei și performanțele motorului de
coliziune, calculul celui mai apropiat vecin este cea mai scumpă operație într-o
mulțime de algoritmi de planificare. Căutarea liniară devine din ce în ce mai scumpă
66 1 – Introducere în Ingineria Software
Fig. 1.27 Extras de clase relevante pentru planificarea traseului, cu modele pentru
detectarea coliziunilor și calculul cinematic, precum și structuri de date pentru calculul
celui mai apropiat vecin.
1.8.1.3 Funcționalități
Roboții sunt mașini versatile utilizate din ce în ce mai mult nu numai pentru a
îndeplini sarcini murdare, periculoase și anoste în industriile producătoare, ci și
pentru a atinge obiective societale, cum ar fi îmbunătățirea siguranței în transport și
reducerea utilizării pesticidelor în agricultură.
În acest scenariu, costul creării de noi produse robotice este semnificativ legat
de complexitatea dezvoltării sistemelor de control software care sunt suficient de
flexibile pentru a satisface cu ușurință cerințele care se schimbă frecvent: sarcini mai
avansate în medii extrem de dinamice, în colaborare cu utilizatori necalificați și în
conformitate cu schimbarea reglementărilor.
Inițiativele recente vizează dezvoltarea abordărilor MDE care simplifică
reconfigurarea statică și dinamică a unui sistem de control al robotului în funcție de
cerințele specifice ale aplicației și condițiile operaționale.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 69
11
http://www.omg.org/
70 1 – Introducere în Ingineria Software
AADL mai este folosit și pentru a modela arhitectura sistemului de control pentru
un scaun cu rotile motorizat de monitorizare a siguranței. Analiza de latență end-to-end
este efectuată pentru a determina factori precum latența în răspunsul la apariția unui
obstacol, timpul de răspuns la o defecțiune și alegerea hardware-ului pentru
microcontroler.
generarea de cod din modele, așa cum este ilustrat în [1.41]. Multe abordări MDE de
ultimă generație [1.42] constau în utilizarea unor generatoare de cod specifice
domeniului pentru transformarea modelelor abstracte în cod executabil. De obicei,
un generator de cod este specific pentru un limbaj de modelare și încorporează
cunoștințele unei platforme tehnologice specifice (un limbaj de programare, un cadru
middleware, o infrastructură de execuție, un mediu de simulare). Implementarea
generatoarelor de cod este cu greu o competență de bază pentru majoritatea
organizațiilor academice și industriale care dezvoltă tehnologii software pentru
domenii specifice de aplicații, cum ar fi robotica. Mai mult, robotica este un domeniu
extrem de centrat pe schimbări și noi platforme tehnologice (software și hardware)
sunt dezvoltate continuu. Aceasta înseamnă că generatorul de cod devine rapid
depășit.
Model Driven Architecture (MDA) și alte standarde asociate de la OMG sunt
o încercare de a reduce impactul modificărilor platformelor tehnologice asupra
ciclului de viață al sistemelor software. MDA impune o separare clară a arhitecturii
funcționale, denumită Model Independent Platform (PIM) al unui sistem software,
de detaliile tehnologice ale platformei specifice utilizate pentru implementarea
acestuia. Acest lucru se realizează folosind tehnici de transformare a modelelor care
convertesc PIM într-unul sau mai multe modele specifice platformei (PSM), care
specifică detaliile modului în care funcționalitatea sistemului folosește capacitățile
software-ului sau platformelor hardware pentru a-și asigura operațiunile. În ultimii
ani, industria de dezvoltare software a dezvoltat o varietate semnificativă de
instrumente care automatizează transformările de la model la model și de la model
la cod. Folosesc limbaje standard de transformare, care oferă construcții și
mecanisme pentru exprimarea, compunerea și aplicarea transformărilor [1.43].
Transformarea ulterioară a PSM în cod executabil necesită maparea
conceptelor de model arhitectural la anumite fragmente de cod fix (șabloane)
furnizate de un cadru de domeniu și o bibliotecă de componente care reprezintă
interfața cu platforma subiacentă (de exemplu, un middleware de calcul distribuit).
Șabloanele de cod au nevoie de dezvoltator de software pentru a completa detalii,
adică implementarea structurilor de date și a algoritmilor care oferă funcționalități
robotice specifice. În unele cazuri, acest cod poate fi generat automat din modele
comportamentale definite cu limbaje de modelare cu scop general, cum ar fi
diagrame de stare și rețele Petri, sau limbaje de modelare specifice domeniului, cum
ar fi diagrame bloc și grafice de legătură.
Următoarele secțiuni exemplifică trei abordări ale generării de cod, care sunt
în primul rând preocupate de reducerea decalajului dintre domeniul problemei și
domeniul implementării software-ului, prin captarea diferitelor aspecte ale
sistemelor de robotică.
1.8.3.1 SmartSoft
1.8.3.2 Proteus
produselor sale (de exemplu, diferite sisteme de control pentru logistica depozitelor)
cu o diversitate tehnică minimă la un cost minim.
Miezul unui SPL este o arhitectură software stabilă, care separă în mod clar
caracteristicile comune de variațiile reflectate în produse și prescrie modul în care
componentele software pot fi asamblate pentru a obține produse individuale. Fiecare
aplicație nouă este construită prin configurarea SPL, adică prin selectarea variantelor
(de exemplu, funcționalități, resurse software) care îndeplinesc cerințele specifice
ale aplicației.
Mediile MDE simplifică configurația sistemului oferind limbaje specifice
domeniului pentru a modela variabilitatea robotului și transformări de la model la
model pentru a rezolva variabilitatea în sistemul de control al software-ului.
aspectul unui obiect (de exemplu, un tabel) pe care robotul ar trebui să îl recunoască
și să îl localizeze în mediu.
Un alt exemplu de limbaj de modelare textuală este prezentat în [1.51].
Permite descrierea constrângerilor diferențiale găsite în mod obișnuit în problemele
de planificare a mișcării pentru roboții mobili. ), x, y și theta reprezintă configurația
robotului (vectorul de stare), r este raza roții și L este distanța dintre cele două roți
(Fig. 1.35).
Bibliografie – Capitolul 1
1.19. M. Rickert, “Efficient motion planning for intuitive task execution in modular
manipulation systems,” Dissertation, Technische Universitat¨ Munchen,
2011, https://mediatum.ub.tum.de/doc/981979/981979.pdf .
1.20. M. Quigley, K. Conley, B. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler,
and A. Y. Ng, “ROS: An open-source robot operating system,” in Proc. of the
IEEE Intl. Conf. on Robotics and Automation, Workshop on Open Source
Software in Robotics, 2009.
1.21. Y. Maruyama, S. Kato, T. Azumi, Exploring the Performance of ROS2,
EMSOFT’16, October 01-07, 2016, Pittsburgh, PA, USA, ISBN 978-1-4503-
4485-2/16/10.https://dx.doi.org/10.1145/2968478.2968502.
1.22. M. Strandberg, “Robot path planning: An object-oriented approach,” Ph.D.
dissertation, School of Electrical Engineering, Royal Institute of Technology,
2004.
1.23. I. A. Sucan, M. Moll, and E. Kavraki, “The open motion planning library,”
IEEE Robotics & Automation Magazine, vol. 19, no. 4, pp. 72–82, 2012,
https://doi.org/10.1109/MRA.2012.2205651 .
1.24. G. Guennebaud, B. Jacob, et al., “Eigen v3,” https://eigen.tuxfamily.org/
index.php?title=Main_Page, accesat 08.03.2021.
1.25. Fred Brackx, The exponential function of a quaternion variable, Applicable
Analysis, 1979 January, 8(3): 265-276, https://doi.org/ 10.1080/
00036817908839234 .
1.26. B. Dam, M. Koch, M. Lillholm, “Quaternions, interpolation and animation,”
Department of Computer Science, University of Copenhagen, Tech. Rep.
DIKU-TR-98/5, 1998.
1.27. R. Featherstone, Rigid Body Dynamics Algorithms. A comprehensive
collection of the best rigid-body dynamics algorithms Springer, 2008, eBook
ISBN 978-1-4899-7560-7, https://doi.org/10.1007/978-1-4899-7560-7 .
1.28. A. Barbalace, A. Luchetta, G. Manduchi, M. Moro, A. Soppelsa, and C.
Taliercio, “Performance comparison of VxWorks, Linux, RTAI and Xenomai
in a hard real-time application,” in Proc. of the IEEE-NPSS Real-Time Conf.,
2007, pp. 1–5.
1.29. A. Kecskemethy and M. Hiller, “An object-oriented approach for an effective
formulation of multibody dynamics,” Computer Methods in Applied
Mechanics and Engineering, vol. 115, no. 3–4, pp. 287–314, 1994.
1.30. Andreas Scholz, Ian Stavness, Michael Sherman, Scott Delp and Andrés
Kecskeméthy, Improved Muscle Wrapping Algorithms Using Explicit Path-
Error Jacobians, F. Thomas and A. Pérez Gracia (eds.), Computational
Kinematics, 395 Mechanisms and Machine Science 15, © Springer
Science+Business Media Dordrecht 2014, https://doi.org/10.1007/978-94-
007-7214-4_44 .
1.31. A. Gaschler, Q. Fischer, and A. Knoll, “The bounding mesh algorithm,”
Technische Universitat Munchen, Germany, Tech. Rep. TUM-I1522,
Published 2015 Mathematics, ID: 14538041.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 87
1.32. Collada – Digital Asset Schema Release 1.5.0, Specification, Ed. M. Barnes,
E.L. Finch, Sony Computer Entertainment Inc., 2-6-21 Minami-Aoyama,
Minato-ku, Tokyo 107-0062 Japan, April 2008.
1.33. M. Rickert, A. Sieverling and O. Brock, "Balancing Exploration and
Exploitation in Sampling-Based Motion Planning," in IEEE Transactions on
Robotics, vol. 30, no. 6, pp. 1305-1317, Dec. 2014,
https://doi.org/10.1109/TRO.2014.2340191.
1.34. D. Brugali, Model-Driven Software Engineering in Robotics, IEEE Robotics
& Automation Magazine 2015, 22(3), pp. 155-166,
http://doi.org/10.1109/MRA.2015.2452201 .
1.35. P. Clements, F. Bachmann, L. Bass, D. Garlan, J. Ivers, R. Little, R. Nord, and
J. Stafford, Documenting Software Architectures: Views and Beyond. Boston,
MA: Addison-Wesley, 2003.
1.36. J. Ivers, P. Clements, D. Garlan, R. Nord, B. Schmerl, and O. Silva,
“Documenting component and connector views with uml 2.0,” Software
Engineering Institute, Carnegie Mellon University, Pittsburgh, PA, Tech. Rep.
CMU/SEI-2004-TR-008, 2004. http://resources.sei.cmu.edu/library/asset-
view.cfm?AssetID=7095.
1.37. D. Garlan, “Formal modeling and analysis of software architecture:
Components, connectors, and events.” in SFM, ser. Lecture Notes in
Computer Science, M. Bernardo and P. Inverardi, Eds., vol. 2804. Springer,
2003, pp. 1–24, http://dblp.unitrier.de/db/conf/sfm/sfm2003.htmlGarlan03.
1.38. J. Medina and A. Garcia Cuesta, “Model-based analysis and design of real-
time distributed systems with ada and the uml profile for marte,” in Reliable
Software Technologies - Ada-Europe 2011, ser. Lecture Notes in Computer
Science, A. Romanovsky and T. Vardanega, Eds. Springer Berlin Heidelberg,
2011, vol. 6652, pp. 89–102.
1.39. P. H. Feiler and D. P. Gluch, Model-Based Engineering with AADL: An
Introduction to the SAE Architecture Analysis & Design Language, 1st ed.
Addison-Wesley Professional, 2012.
1.40. A. Basu, M. Bozga, and J. Sifakis, “Modeling heterogeneous real-time
components in bip,” in Proceedings of the Fourth IEEE International
Conference on Software Engineering and Formal Methods, ser. SEFM ’06.
Washington, DC, USA: IEEE Computer Society, 2006, pp. 3–12,
http://dx.doi.org/10.1109/SEFM.2006.27.
1.41. R. France, B. Rumpe, and M. Schindler, “Why it is so hard to use models in
software development: observations,” Software Systems Modeling, vol. 12,
no. 4, pp. 665–668, 2013, http://dx.doi.org/10.1007/s10270-013-0383-z.
1.42. Y. Zheng and R. N. Taylor, “A classification and rationalization of model-
based software development,” Softw. Syst. Model., vol. 12, no. 4, pp. 669–
678, Oct. 2013, http://dx.doi.org/10.1007/s10270-013-0355-3.
1.43. S. Sendall and W. Kozaczynski, “Model transformation: The heart and soul
of model-driven software development,” IEEE Softw., vol. 20, no. 5, pp. 42–
45, Sep. 2003, http://dx.doi.org/10.1109/MS.2003.1231150.
88 1 – Introducere în Ingineria Software
Abrevieri – Capitolul 1
Abrevierea Explicație
DRM Digital Restrictions Management – Gestiunea
Restricțiilor Digitale
SaaS Software as a Service – Software Ca Serviciu
ALM Application Lifecycle Management
DOS Disk Operating System
MS-DOS Microsoft - Disk Operating System
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 89
PC Personal Computer
PDP Programmed Data Processor
IBM International Business Machines
Mac OS Mac Operating System, Mac - Macintosh
OS X Este a zecea versiune a Mac OS
iOS Sistem de operare pentru Apple și este un sistem de
operare tip UNIX
UNIX Este un sistem standard deschis, bazat pe sistemul IBM
AIX
QA Quality assurance
SDLC The Software Development Life Cycle
NATO Organizația Atlanticului de Nord
SWEBOK Software Engineering Body of Knowledge
BASIC Limbaj de programare
DRM Digital Restrictions Management
UNIX Sistem de operare
ALM Application Lifecycle Management
QA Quality Assurance
OO Orientată pe Obiect
UML Unified Modeling Language
RTM Robot Technology Middleware – Tehnologie Robotică
Middleware)
AIST The National Institute of Advanced Industrial Science and
Technology
MDA Model Driven Architecture
PIM Platform Independent Model
PSM Platform Specific Model
SysML Systems Modeling Language
SDLC The Software Development Life Cycle
ADP Advanced Development Projects
OMT Object Modeling Technique
ROS Robot Operating System
API Application Programming Interface
RL Robotics Library
90 1 – Introducere în Ingineria Software
1
http://www.psych.utoronto.ca/users/reingold/courses/ai/turing.html
2 – Inteligența Artificială 92
2
https://en.wikipedia.org/wiki/Dartmouth_Conferences ;
http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 93
3
http://www.egemin-automation.com/en/automation/material-handling-automation_ha-
solutions/agv-systems
2 – Inteligența Artificială 94
4
http://www.aaai.org/ojs/index.php/aimagazine/article/view/739/657
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 97
5
http://www.ace.tuiasi.ro/users/103/2011-Copot%20Cosmin.pdf
2 – Inteligența Artificială 98
Controlul mișcării brațului unui robot manipulator, dintr-o poziție inițială într-
una finală, prin intermediul unui sistem „servoing visual” se face având ca informații
datele provenite de la senzori vizuali. Mișcarea, din punct de vedere matematic,
implică definirea unui spațiu de configurare al task-urilor (stărilor) [2.3]:
{𝑒|𝑒 ∈ ℝ3 |ℝ3 − 𝑠𝑝𝑎𝑡𝑖𝑢 𝑐𝑎𝑟𝑡𝑒𝑧𝑖𝑎𝑛 3𝐷}.
Adaptarea mișcării brațului la un sistem de referință se efectuează prin
transformarea cordonatelor (vectoriale de cele mai multe ori) de la un sistem de
referință la altul.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 99
Trăsătura geometrică a unui punct de interes se poate asimila unui punct dintr-
o imagine, care este bine definit geometric, astfel încât, el poate fi integrat sau izolat
față de linia, curba, elipsa etc. din care a fost preluat. Pe de altă parte dacă imaginea
prelevată reprezintă doar un mic colț din ansamblu, acest colț se va defini ca o
intersecție a două muchii. Instrumentele de detectare (aparatul matematic) nu este
foarte robust, de aceea analiza implică suprapunerea de date care diferă prin:
luminozitate, translație, rotație sau altele. Două dintre cele mai uzuale sisteme de
detectare a trăsăturilor sunt: operatorul Harris și detectorul SIFT.
6
https://en.wikipedia.org/wiki/Moravec's_paradox
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 101
unde: 〈𝐼𝑥 〉, 〈𝐼𝑦 〉 – sunt gradienții funcției imagine pe direcțiile (〈𝑥〉, 〈𝑦〉), gradienți
supuși unui filtru cu nucleu Gaussian:
1 𝑟2 𝐹 1 𝜔2 ∙𝜎 2
𝑔2𝐷 (𝑟, 𝜎) = 2∙π∙𝜎2 exp (− 2∙𝜎2 ) ↔ 𝐺2𝐷 (𝑓, 𝜎) = 2∙π∙𝜎2 exp (− 2
) .
7
distanța dintre planul de mișcare a obiectelor și cameră este constant
2 – Inteligența Artificială 104
unde: {𝑜} – una dintre octavele axei din spațiul scalărilor; {𝑆} – numărul de niveluri
ale fiecărei octave; {𝑠} – indexul nivelului din octava {𝑜} care se poate defini ca
spațiul al scalărilor.
Spațiul scalărilor pentru o imagine 𝐼(𝑥, 𝑦) se obține în urma unor filtrări
succesive și a unor modficări de asemenea succesive ale dimensiunilor imaginii:
i. se consideră imaginea 𝐿(𝑥, 𝑦, 𝜎(𝑜, 𝑠));
ii. se calculează 𝜎(𝑜, 𝑠 + 1);
iii. se determină imaginea 𝐿(𝑥, 𝑦, 𝜎(𝑜, 𝑠 + 1));
iv. atunci când {𝑠 + 1 = 𝑆}, imaginea în noua octavă se redimensionează.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 105
Fig. 2.11 (a) Reprezentarea scalei pentru 3 niveluri ale unei octave; (b) Fereastra de 3x3x3
din jurul punctului P. Pg. 15, fig. 2.2 [2.3].
unde: 𝑃 = (𝑥, 𝑦, 𝜎)𝑇 , iar determinarea extremelor funcției 𝐷(𝑃) se obține prin
egalarea cu zero a derivatei acestei funcții:
𝜕 2 𝐷 −1 𝜕𝐷
𝑃̂ = − ∙ ,
𝜕𝑃2 𝜕𝑃
de unde rezultă:
1 𝜕𝐷 𝑇
𝐷(𝑃̂) = 𝐷 + ∙ ∙ 𝑃̂ .
2 𝜕𝑃
2 2
𝑀(𝑥, 𝑦) = √(𝐿𝑥+1,𝑦 − 𝐿𝑥−1,𝑦 ) + (𝐿𝑥,𝑦+1 − 𝐿𝑥,𝑦−1 )
{ .
𝐿 −𝐿
𝜃(𝑥, 𝑦) = tan−1 ( 𝑥,𝑦+1 𝑥,𝑦−1 )
𝐿𝑥+1,𝑦 −𝐿𝑥−1,𝑦
Fig. 2.13 (a) Trăsăturile obiectului detectat cu SIFT; (b) Orientarea și magnitudinea; (c)
Descriptorul trăsăturii pg. 18, fig. 2.4 [2.3].
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 107
8
https://en.wikipedia.org/wiki/Stigmergy
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 111
Fig. 2.18 Robotic All Terrain Lunar Exploration Rovers fig. 1, pag 17.
https://www.osti.gov/scitech/servlets/purl/10196260/.
Cooperare între UTVs (Fig. 2.18), există și sub o formă de organizare tip
progresie liniară. Acest model de cooperare se utilizează pentru acțiuni complee de
identificare terestră, care includ: dispersia, orbita/traiectoria, clustere cu reguli
predefinite. Cele de mai înainte permit informațiilor adunate de fiecare robot să fie
distribuite și celorlalți roboți.
Fig. 2.19 Exemplu de căutare a unui grup de Robotic All Terrain Lunar
Exploration Rovers fig. 2, pag 17
https://www.osti.gov/scitech/servlets/purl/10196260/.
Fig. 2.20 Modelarea numerică a dispersiei unui grup de Robotic All Terrain Lunar
Exploration Rovers fig. 3, pag 18
https://www.osti.gov/scitech/servlets/purl/10196260/.
9
http://artint.info/html/ArtInt.html
2 – Inteligența Artificială 114
10
https://dexonline.ro/intrare/omniscien%C8%9B%C4%83/39032 - calitatea de a ști tot
11
https://merlinstore.ro/jucarii/257-joc-cu-bile-de-sticla-standard-solitaire.html
12
http://www.netinform.ro/blog/2016/03/10/inteligenta-artificiala-il-invinge-pe-campionul-
jocului-go/
13
http://www.scritub.com/sociologie/psihologie/Strategii-de-rezolvare-a-
probl2332213815.php
14
https://dexonline.ro/intrare/mapare/216699 - cartografiere
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 115
7. roboți reconfigurabili;
8. învățare – deep learning, machine learning;
9. probleme distribuite adiționale pentru sisteme de roboți mobili autonomi.
15
http://www.turing.org.uk/scrapbook/test.html
2 – Inteligența Artificială 116
Se scriu astfel datele într-un tabel de căutare (Fig. 2.24) , tabel care
funcționează prin menținerea, în memorie, a întregii secvențe de percepție cu ajutorul
unui indice, care conține acțiunea corespunzătoare pentru toate secvențele posibile
provenite din sistemul de precepție. Tabelul descrie de fapt valorile de risc:
1) numărul de intrări necesare pentru jocul de șah - 1043 ÷ 1047 – care pot fi
asociate unei competiții normale, iar dacă se ia în calcul complexitatea
jocului (game-tree complexity), din punct de vedere combinatoric, numărul
estimat este în jur de 10120 (Shannon number16);
2) timpul pentru construirea tablei de joc;
3) faptul că agentul nu are autonomie deloc, deoarece calculul celor mai bune
acțiuni este în întregime încorporat, în cazul în care mediul va suferi
schimbări, într-un mod neașteptat, agentul va fi pus în dificultate și nu va
putea învinge un competitor uman;
4) agentul dispune de un mecanism tip machine-learning, astfel încât, să aibă o
anumită autonomie, însă timpul de învățare al tuturor mișcărilor posibile ar
fi prohibit.
Pentru a putea rezolva problema de mai înainte s-a apelat la noțiunea de
„Structură de Control Ierarhică – Hierarchical Control17”. Agentul este împărțit în
senzori și un sistem de percepție complex, care trimite informațiile către un controler
din care vor pleca informațiile pentru sistemul de acționare. Această structură este
deficitară, întrucât este foarte lentă. De exemplu în cazul unui robot care trebuie să
16
https://en.wikipedia.org/wiki/Claude_Shannon
17
http://artint.info/html/ArtInt_37.html
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 117
informațiile ajung într-un centru de prelucrare (Fig. 2.27) pentru a se lua o decizie
privind ocolirea unor obstacole, atunci elementele efectoare (motoarele electrice)
vor primi comenzile de modificare a turației astfel încât dinamica robotului să
fie modificată.
arrived ←distance(previous_target_pos,robot_pos)<threshold
if whisker_sensor=on
then steer←left
else if straight_ahead(robot_pos,robot_dir,current_target_pos)
then steer←straight
else if left_of(robot_position,robot_dir,current_target_pos)
then steer←left
else steer←right
end if
if arrived and not empty(to_do)
then
target_pos' ←coordinates(head(to_do))
to_do'←tail(to_do)
end if
2 – Inteligența Artificială 120
1. Mașini reactive
Este un model de bază, în care sistemele AI nu au:
▪ abilitatea de a memora lucruri;
▪ posibilitatea de a se folosi de experiențe anterioare pentru a rezolva
probleme actuale;
▪ capabilitatea de a lua decizii noi.
Spre exemplu supercomputerul Deep Blue19, care l-a la sfârșitul anilor ’90
reușește să îl învingă pentru prima oară pe maestrul internațional de șah Garry
Kasparov.
2. Memoria limitată
Reprezintă acele sisteme AI, care pot reține informații despre evenimente care
au fost deja înfăptuite. Sunt sisteme cu o memorie pe termen scurt. Dintre acestea
putem aminti vehiculele autonome. Aceste sisteme se utilizează în telematică putând
să urmărească alte vehicule aflate în trafic, având acces la informații despre
cinematica respectivelor vehicule. Acest lucru se poate face de-a lungul timpului, nu
doar la un anumit moment dat.
4. Conștiința de sine
Se poate spune că este, în acest moment, ultimul criteriu de clasificare. Spre
deosebire de IA corespunzătoare Teoriei minții, ar trebui ca IA să permită sistemelor
inteligente/robotizate să își poată forma o imagine despre ele însele, nu doar despre
lumea înconjurătoare sau despre oameni: respectiv abilitatea sistemului IA de a se
autoidentifica față de mediul înconjurător și față de celelalte entități care fac parte
din ea.
18
https://gotech.world/inteligenta-artificiala-definitie-tipuri-de-ai-cum-invata-si-ce-
aplicatii-are/
19
https://interestingengineering.com/deep-blue-vs-kasparov-the-historic-contest-that-
sparked-the-ai-revolution
2 – Inteligența Artificială 122
20
https://machinelearningmastery.com/types-of-learning-in-machine-learning/
21
https://robotex.international/competitions/starship-animal-rescue/
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 123
22
https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-
xavier/
2 – Inteligența Artificială 124
Bibliografie – Capitolul 2
2.18. A. Samuel, Some studies in machine learning using the game of checkers,
IBM Journal on Research and Development, 1959, pp. 210-229.
2.19. Y. Shoham și K. Leyton-Brown, Multiagent Systems: Algorithmic, Game
Theoretic, and Logical Foundations, First ed., Cambridge University Press,
2008, p. 504.
Abrevieri – Capitolul 2
Abrevierea Explicația
AC Alternative Current / Curent alternativ
ACL Advanced CMOS Logic
ADC Analog to Digital Conversion A → D
AO (op- Amplificator Operațional
AMP)
API Application Programming Interface
SVMs Support Vector Machines
UGV Unmanned Ground Vehicle
UAV Unmanned Aerial Vehicle
UUV Unmanned Undersea Vehicle
AGV Automated Guided Vehicle
PEGASUS Prototype EGNOS Analysis System Using Sapphire
ALI Automatic Language Identification
MARVEL Multimission Automation for Real-time Verification of
spacecraft Engineering Link
SIFT Scale-invariant feature transform
UTV Vehicul cu sarcini utilitare
3. REZOLVAREA PROBLEMELOR
Inteligența artificială include scopuri, obiective, acțiuni etc. Un alt tip de agent
este cel care trebuie să rezolve probleme (Problem Solving). Este un agent bazat pe
obiective. El caută secvențe ale unor acțiuni corespunzătoare unor spații dorite.
Agentul formulează o vizualizare a problemei, ce decurge din procesul de formulare
ce are la dispoziție cunoașterea actuală și rezultatele acțiunilor. Procedural, dacă
avem definițiile exacte ale problemelor, se poate construi un proces de căutare pentru
găsirea soluțiilor:
▪ formularea problemei:
o tipuri de cunoștințe;
o probleme și soluții bine definite;
o măsurarea performanței de rezolvare a problemelor;
o alegerea spațiilor și a acțiunilor;
▪ probleme:
o virtuale;
o reale;
▪ căutarea soluțiilor:
o generarea unor secvențe de acțiune;
o structurarea datelor sub forma arborilor de decizie;
▪ strategii de căutare:
o lățimea primei benzi de căutare;
o respectarea unui cost al căutării;
o adâncimea primei benzi de căutare;
o limita adâncimii primei benzi de căutare;
o căutare iterativă;
o căutare bidirecțională;
▪ evitarea repetării spațiilor;
▪ constrângeri.
1
https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/tutorial/
2
https://www.geeksforgeeks.org/depth-first-search-or-dfs-for-a-graph/
3
https://www.educative.io/edpresso/what-is-depth-first-search
4
https://brilliant.org/wiki/depth-first-search-dfs/
5
http://cs-gw.utcluj.ro/~anca/iia/slide03.pdf
6
https://www.educba.com/uniform-cost-search/
7
https://cse.iitrpr.ac.in/ckn/courses/s2017/csl302/w3.pdf
8
https://www.javatpoint.com/ai-uninformed-search-algorithms
9
https://www.analyticsvidhya.com/blog/2021/02/uninformed-search-algorithms-in-ai/
130 3 – Rezolvarea problemelor
muchiilor disponibile din nodul curent către noduri nedescoperite, care vor fi astfel
vizitate. După acest proces, nodul explorat este scos din coadă, prelucrându-se
succesiv toate nodurile ajunse în vârful cozii.
#include<iostream.h>
#include<ifstream.h>
#define N 50
typedef struct nod{
int inf;
nod *leg;
}AD;
AD *L[N]; //listele vecinilor
int VIZ[N],C[N],DMIN[N],TATA[N]; // C-vectorul coada
int n,k,prim,ultim;
int a[2*N][3]; //a retine muchiile arborelui BF
void citire()
{
int i,j; AD *x;
Ifstream f(“graf.in”);
f>>n;
for(i=1;i<=n;i++) //aloca adrese pentru listele de vecini
{
L[i]=new AD; L[i]->leg=0;
}
while(!feof(f))
{
f>>i>>j;
x=new AD; x->inf=j; x->leg=L[i]->leg; L[i]->leg=x;
//adaug j in lista vecinilor lui i
x=new AD; x->inf=i; x->leg=L[j]->leg; L[j]->leg=x;
//adaug i in lista vecinilor lui j
}
f.close();
}
void BF(int nod)
{
AD *x;
VIZ[nod]=1; TATA[nod]=0; DMIN[nod]=0;
prim=ultim=1; C[prim]=nod;
while(prim<=ultim)
{
nod=C[prim]; //extrag nodul din varful cozii
x=L[nod]->leg; //lista vecinilor lui nod
while(x)
{
if(!VIZ[x->inf])
{
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 133
TATA[x->inf]=nod; VIZ[x->inf]=1;
DMIN[x->inf]=DMIN[nod]+1;
C[++ultim]=x->inf; //adaug x->inf in coada
k++; a[k][1]=nod; a[k][2]=x->inf;
//memorez muchia de arbore [nod,x->inf]
}
x=x->leg;
}
prim++; //avansez la urmatorul nod din coada
}
}
void afisare_coada() //afiseaza nodurile dintr-un arbore BF
{
int i;
for(i=1;i<=ultim;i++) cout<<C[i]<<” ”;
cout<<“\n”;
}
void drum(int i,int nod) //afiseaza nodurile dintr-un lant minim
{
if(i!=nod) drum(TATA[i],nod);
cout<<i<<“ “;
}
void parcurgere_bf()
{
int nod,i;
for(nod=1;nod<=n;nod++) VIZ[nod]=0;
for(nod=1;nod<=n;nod++)
if(!VIZ[nod])
{
k=0; BF(nod); afisare_coada();
cout<<"Muchiile arborelui BF: ";
for(i=1;i<=k;i++)
cout<<"[ a[“<<i<<”][1],a[“<<i<<”][2]] ";
cout<<“\n”;
for(i=1;i<=ultim;i++)
if(C[i]!=nod)
{
cout<<"de la <<nod<<” la “<<C[i]<<” lantul este: ";
drum(TATA[C[i]],nod);
cout<< C[i],<<" lungime \n"<< DMIN[C[i]]<<” ”;
}
}
134 3 – Rezolvarea problemelor
}
void main()
{
int i;
citire();
cout<<"Parcurgere BF: \n";
parcurgere_bf();
cout<<"TATA_DF=("; for(i=1;i<=n;i++) cout<<TATA[i]<< " ",;
cout<<")\n";
}
#include<iostream.h>
#include<ifstream.h>
#define N 50
typedef struct nod{
int inf;
nod *leg;
}AD;
AD *L[N]; //listele vecinilor
int VIZ[N],TI[N],TF[N],TP[N],n,timp,k,t;
int a[N][N]; //matricea de adiacenta
void citire()
{
int i,j; AD *x;
Ifstream f(“graf.in”);
f>>n;
for(i=1;i<=n;i++) //aloca adrese pentru listele de vecini
{
L[i]=new AD; L[i]->leg=0;
}
while(!feof(f))
{
f>>i>>j; a[i][j]=a[j][i]=1;
x=new AD; x->inf=j; x->leg=L[i]->leg; L[i]->leg=x;
//adaug j in lista vecinilor lui i
x=new AD; x->inf=i; x->leg=L[j]->leg; L[j]->leg=x;
//adaug i in lista vecinilor lui j
}
f.close();
}
void parcurge_df(int nod)
{
AD *x=L[nod]->leg;
VIZ[nod]=1; timp++; TI[nod]=timp; //timpul de incepere
cout<<"%d ",nod);
while(x)
{
if(!VIZ[x->inf])
{
TP[x->inf]=nod;
parcurge_df(x->inf);
}
x=x->leg;
138 3 – Rezolvarea problemelor
}
timp++; TF[nod]=timp; //timp de terminare
}
void muchii_intoarcere(int nod)
{
int i;
for(i=1;i<=n;i++)
if(a[nod][i])
if(TATA[nod]!=i && nod!=TP[i])
{
cout<<“[“<<nod<<“,”<<i<<“] “;
a[nod][i]=a[i][nod]=0;
muchii_intoarcere(i);
}
}
void muchii_avans(int nod)
{
int i;
for(i=1;i<=n;i++)
if(a[nod][i])
{
cout<<“[“<<nod<<“,”<<i<<“] “;
a[nod][i]=a[i][nod]=0;
muchii_avans(i);
}
}
void DF()
{
int nod;
for(nod=1;nod<=n;nod++) VIZ[nod]=0;
timp=0;
for(nod=1;nod<=n;nod++)
if(!VIZ[nod])
{
parcurge_df(nod); cout<<“\n”;
cout<<"Muchii de intoarcere: "; muchii_intoarcere(nod);
cout<<“\n”;
cout<<"Muchii de avans: "; muchii_avans(nod);
cout<<“\n”;
}
}
void main()
{
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 139
int i;
citire();
cout<<"Parcurgerea DF: \n"); DF(); cout<<“\n”;
cout<<"\nTI=("); for(i=1;i<=n;i++) cout<<TI[i]<<” ”; cout<<")";
cout<<"\nTF=("); for(i=1;i<=n;i++) cout<<TF[i]<<” ”; cout<<")";
cout<<"\nTATA_DF=("; for(i=1;i<=n;i++) cout<<"%d ",TP[i];
cout<<")\n";
}
{
public SearchTreeNode parrent = null;
public int cost;
public int level;
public long id = 0;
public int coordX = 0;
public int coordY = 0;
public int nodeOperator = 0; //degreess from 90 to
360
}
10
https://www.javatpoint.com/ai-uninformed-search-algorithms
11
https://www.codegrepper.com/code-examples/python/depth+limited+search+in+python+
with+a+graph
142 3 – Rezolvarea problemelor
return false
Cel mai important lucru este că se vizitează noduri de nivel superior de mai
multe ori. Ultimul nivel (sau adâncimea maximă) este vizitat o singură dată, al doilea
ultim nivel este vizitat de două ori și așa mai departe. Poate părea scump, dar se pare
că nu este atât de costisitor, deoarece într-un arbore decizional majoritatea nodurilor
se află la nivelul inferior. Deci, nu contează prea mult dacă nivelurile superioare sunt
vizitate de mai multe ori.
12
https://www.geeksforgeeks.org/iterative-deepening-searchids-iterative-deepening-depth-
first-searchiddfs/
144 3 – Rezolvarea problemelor
public:
Graph(int V); // Constructor
void addEdge(int v, int w);
// IDDFS traversal of the vertices reachable from v
bool IDDFS(int v, int target, int max_depth);
};
Graph::Graph(int V)
13
https://www.geeksforgeeks.org/iterative-deepening-searchids-iterative-deepening-depth-
first-searchiddfs/
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 145
{
this->V = V;
adj = new list<int>[V];
}
return false;
}
// Driver code
int main()
{
// Let us create a Directed graph with 7 nodes
146 3 – Rezolvarea problemelor
Graph g(7);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 3);
g.addEdge(1, 4);
g.addEdge(2, 5);
g.addEdge(2, 6);
b) completitudine şi optimalitate:
Căutarea bidirecţională este completă şi optimală după cum sunt cele două
strategii care le implică. Astfel, pentru cazul în care se foloseşte breadth-first, este
completă tot timpul (atunci când factorul de ramificaţie este finit) şi este optimală pe
toate cazurile unde este şi breadth-first optimală.
c) implementare:
Se implementează cele două strategii de căutare, astfel, se porneşte cu breadth-
first simultan de la starea iniţială şi de la starea finală. Pe lângă aceasta se păstrează
şi două liste ale frontierelor între care se verifică periodic dacă nu există coliziuni.
Se poate alege breadth-first dintr-o parte şi o căutare diferită din cealaltă parte, având
grijă la riscurile ca nodurile din cele două frontiere să nu coincidă.
d) avantaje şi dezavantaje:
Avantajul major este că reduce semnificativ costurile căutării Breath-First, dar
mai ales datorită faptului că este mult mai rapidă decât orice altă strategie neinformată.
Ca dezavantaje amintim:
• consumul de memorie care este tot exponenţial;
• faptul că nu poate fi implementată dacă nu este cunoscută starea finală sau
dacă operatorii de generare a stărilor nu sunt inversabili sau sunt greu de
calculat predecesorii.
148 3 – Rezolvarea problemelor
14
http://aima.cs.berkeley.edu/
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 149
1:Procedure Search(G,S,goal)
2: Inputs
3: G: graph with nodes N and arcs A
4: S: set of start nodes
5: goal: Boolean function of states
6: Output
7: path from a member of S to a node for which goal is true
8: or ⊥ if there are no solution paths
9: Local
10: Frontier: set of paths
11: Frontier ←{⟨s⟩: s∈S}
12: while (Frontier ≠{})
13: select and remove ⟨s0,...,sk⟩ from Frontier
14: if (goal(sk)) then
150 3 – Rezolvarea problemelor
În acest subcapitol este prezentat cazul în care există mai mulți agenți. Agenții
pot acționa autonom, fiecare având propriile informații despre ceilalți agenți. De
asemenea, rezultatul depinde de acțiunile tuturor agenților iar un mecanism specifică
modul în care acțiunile agenților duc la rezultate. Totodata, fiecare agent poate avea
propria utilitate, care depinde de rezultat (Fig. 3.15).
exemplu, doi agenți comerciali, cu magazine unul lângă celălalt, pot împărtăși
obiectivul de a avea zona străzii curată. Aceștia pot concura pentru clienți. Totodată
este posibil să nu aibă preferințe cu privire la detaliile magazinului celuilalt agent.
Adesea agenții pot fi mai buni dacă își coordonează acțiunile prin cooperare și
negociere.
Interacțiunile multiagent au fost studiate folosind terminologia jocurilor în
urma lucrărilor ale lui Neumann și Morgenstern (Neumann, 1953). Multe probleme
de interacțiune între agenți pot fi studiate în ceea ce privește jocurile. Studiul
jocurilor este menit să fie despre interacțiuni multiagent generale, nu doar despre
jocuri artificiale.
Sistemele multiagent sunt omniprezente în inteligența artificială, jocurile fiind
primele aplicații ale AI. Unul dintre primele sisteme de învățare a fost pentru jocul
de damă de Samuel (Samuel, 1959). Calculatoarele au avut succes la checker și
backgammon, mai puțin la joc Go din cauza dimensiunii spațiului de căutare. Aceste
jocuri sunt mari dar conceptual simple iar agenții pot observa starea lumii.
În majoritatea interacțiunilor din lumea reală, starea lumii nu este observabilă
iar interesul pentru jocurile parțial observabile a crescut.
Cea mai de bază reprezentare a jocurilor este forma strategică a unui joc sau
un joc cu formă normală, fiind alcătuită din:
• Un set finit de agenți I, identificat cu numerele întregi I = {1, ..., n};
• Un set de acțiuni A pentru fiecare agent i∈I. O alocare a unei acțiuni în Ai
fiecărui agent i∈I este un profil de acțiune. Putem vizualiza un profil de
acțiune ca un tuple ⟨a1, ..., an⟩, care specifică faptul că agentul I desfășoară
acțiunea ai;
• Funcție de utilitate ui pentru fiecare agent i∈I, returnează utilitatea așteptată
pentru agentul dat profilului de acțiune.
Acțiunea comună a tuturor agenților produce un rezultat, un agent are o
utilitate asupra fiecărui rezultat. Utilitatea pentru un agent este menită să cuprindă
tot ceea ce este interesat, inclusiv corectitudinea și bunăstarea societății.
152 3 – Rezolvarea problemelor
Exemplu: Jocul „piatră, hârtie, foarfecă” (rock, paper, scissors) este un joc
obișnuit, existând chiar un campionat mondial. Să presupunem că există doi agenți
A și B. Există trei acțiuni pentru fiecare agent, astfel încât:
AA=AB={piatră, hârtie, foarfecă}.
Pentru fiecare combinație de o acțiune pentru A și o acțiune pentru B există o
utilitate pentru A și o utilitate pentru B.
B
piatră hârtie foarfecă
piatră 0,0 -1,1 1,-1
A hârtie 1,-1 0,0 -1,1
foarfecă -1,1 1,-1 0,0
Acest lucru este reprezentat într-un tabel ca în Fig. 3.16, având denumirea de
matrice de plată. Alice alege un rând și Bob alege o coloană, simultan. Acest lucru
oferă o pereche de numere: primul număr este rambursarea către jucătorul de rând
(A), iar cel de-al doilea dă plata jucătorului de coloană (B).
Utilitatea pentru fiecare dintre ei depinde de ceea ce fac ambii jucători. Un
exemplu de profil de acțiune este ⟨foarfecăA, piatrăB⟩, unde (A) alege „foarfecă” și
(B) alege „piatră”. În acest profil de acțiune, (A) primește utilitatea (-1) și (B)
utilitatea (1). Acest joc este un joc cu sumă zero, practic o persoană câștigă doar
atunci când cealaltă pierde. O „acțiune” nu este doar o simplă alegere, este o
strategie, o specificație a ceea ce va face agentul în cadrul diferitelor situații. Forma
normală este o specificație a utilităților, date fiind strategiile posibile ale agenților.
Această formă reprezintă și motivul pentru care se numește „forma strategică” a unui
joc.
Acțiunea din definiția unui joc de formă normală poate fi un controler pentru
agent. Astfel, fiecare agent alege un controler, iar utilitatea oferă rezultatul scontat
al controlerelor rulate pentru fiecare agent dintr-un mediu.
Un joc de informații perfect în formă extinsă sau un arbore de joc (Fig. 3.17)
este un arbore finit în care nodurile sunt stări și ramurile corespund acțiunilor
agenților:
• fiecare nod intern este etichetat cu un agent care controlează nodul;
• fiecare ramură care intră într-un nod marcat cu agentul i corespunde unei
acțiuni pentru agentul i;
• fiecare nod intern etichetat cu un agent are o distribuție a probabilității
asupra rezultatelor sale;
• nodurile de final reprezintă rezultatele finale și sunt etichetate cu o utilitate
pentru fiecare agent.
Forma extinsă a unui joc specifică o desfășurare detaliată. Fiecare cale către
un nod final, numită rulare, specifică o modalitate particulară prin care jocul ar putea
continua în funcție de alegerile agenților și de natura aplicațiilor.
O strategie pură pentru agentul i este o funcție de la nodurile controlate de
agentul i în acțiuni, se selectează un rezultat pentru fiecare nod pe care îl controlează
agentul i.
Exemplu: Luând în considerare un joc de partajare unde există doi agenți, (A)
și (B). Există două elemente identice care trebuie împărțite între ei. (A) selectează
mai întâi modul în care se vor distribui cei doi agenți: (A) păstrează ambele articole,
le distribuiee și fiecare persoană primește câte un articol, sau dă ambele articole lui
(B). Apoi, (B) ajunge să respingă alocarea și amândoi nu obțin nimic, sau acceptă
alocarea și amândoi primesc suma alocată.
Forma extinsă a jocului de partajare este prezentată în Fig. 3.17. (A) are 3
strategii. (B) are 8 strategii pure, câte una pentru fiecare combinație de atribuții
la nodurile pe care le controlează. Drept urmare, există 24 de profiluri de
strategie.
154 3 – Rezolvarea problemelor
Având în vedere un profil de strategie, fiecare nod are o utilitate pentru fiecare
agent. Utilitatea pentru un agent la un nod este definită recursiv de jos în sus:
• utilitatea pentru fiecare agent la un nod final este dată ca parte a nodului;
• utilitatea pentru agentul j al unui nod controlat de agentul i este utilitatea
pentru agentul j al nodului rezultat, care este selectat prin strategia
agentului i.
• utilitatea pentru agentul i pentru un nod controlat de agent, este valoarea
așteptată a utilității pentru agentul i al rezultatelor. Adică, ui (n) = ∑c P (c) ui
(c), unde suma este peste rezultatele c ale nodului n și P (c) este probabilitatea
ca agentul să aleagă rezultatul c.
Forma extinsă a unui joc poate fi o reprezentare bazată pe stat a unui joc. O
rețea de decizie multiagent este o reprezentare factorizată a unei probleme, este ca o
rețea de decizie, cu excepția faptului că fiecare nod de decizie este etichetat cu un agent
care ajunge să aleagă o valoare pentru nod. Există un nod de utilitate pentru fiecare
agent care specifică utilitatea pentru acel agent. Părinții unui nod de decizie specifică
informațiile care vor fi disponibile agentului atunci când acesta trebuie să acționeze.
Fig. 3.20 Un arbore de joc cu sumă zero care indică nodurile ce pot fi tăiate.
1: Procedure MinimaxAlphaBeta(N,α,β)
2: Inputs
3: N a node in a game tree
4: α,β real numbers
5: Output
6: The value for node N
158 3 – Rezolvarea problemelor
jucător
stânga dreapta
stanga 0.6 0.2
portar
dreapta 0.3 0.9
probabilitatea de a înscrie un gol
Fig. 3.21 Lovitură de la fotbal, poate să lovească la stânga sau la dreapta sa. Portarul poate
sări la stânga sau la dreapta.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 159
Portarul ar putea apoi să creadă că, dacă jucătorul va lovi dreapta, atunci ar
trebui să sară la stânga. Dacă cel care lovește mingea crede că portarul va sări la
stânga, atunci ar trebui să dea lovitura stânga. Dar atunci, portarul ar trebui să sară
pe dreapta.
Fiecare agent este potențial confruntat cu o regresie infinită a raționării despre
ceea ce va face celălalt agent. În fiecare etapă în raționamentul lor, agenții își
inversează decizia. Dacă cel care lovește mingea ar cunoaște limita de adâncime a
raționamentului pentru portar, el ar putea exploata această cunoaștere pentru a
determina ce va face cel care lovește mingea și să-și aleagă în mod corespunzător
acțiunea.
p k = 0.4 ar putea face mai bine sau ar putea face mai rău, în funcție de ceea ce face
portarul.
Diagrama pentru pj este similară, toate liniile întâlnindu-se la p j = 0.3 . Din
nou, când p j = 0.3 , probabilitatea unui gol este 0,48. Strategia cu p k = 0.4 și
p j = 0.3 este specială în sensul că nici un agent nu poate merge mai bine prin
abaterea unilaterală de la strategie.
Acest echilibru este sigur pentru un agent, în sensul că, chiar dacă celălalt
agent a cunoscut strategia agentului, celălalt agent nu poate forța un rezultat mai rău
pentru agent. Această strategie înseamnă că un agent nu trebuie să se preocupe de
ghicirea dublă a celuilalt agent. El va obține cel mai bun profit pe care îl poate
garanta pentru a obține. Să extindem acum definiția unei strategii pentru a include
strategii randomizate.
Luând în considerare forma normală a unui joc în care fiecare agent ajunge să
aleagă o acțiune simultan. Fiecare agent alege o acțiune fără să știe ce aleg ceilalți
agenți.
O strategie pentru un agent este distribuirea probabilității peste acțiunile
pentru acest agent:
• dacă agentul acționează determinist, una dintre probabilități va fi „1”, iar
restul va fi „0” - aceasta este numită strategie pură;
• dacă agentul nu urmărește o strategie pură, nici una dintre probabilități nu
va fi „1” și mai multe acțiuni vor avea o probabilitate nulă - aceasta se
numește strategie stocastică.
Ansamblul de acțiuni cu o probabilitate diferită de zero într-o strategie se
numește set de suport al strategiei.
Un profil de strategie este o alocare a unei strategii fiecărui agent. Dacă σ este
un profil de strategie, să fie „σi” strategia de agent „i” în „σ” și să fie „σ-i” strategiile
celorlalți agenți. Atunci „σ” este ( i −i) . Dacă profilul strategiei este format din
strategii pure, este adesea numit profil de acțiune, deoarece fiecare agent joacă o
anumită acțiune.
Un profil de strategie „σ” are o utilitate pentru fiecare agent. Fie utilitatea (σ,
i) utilitatea profilului de strategie „σ” pentru agentul „i”. Utilitatea unui profil de
strategie stocastică poate fi calculată prin calcularea utilității preconizate, având în
vedere utilitățile acțiunilor de bază care alcătuiesc profilul și probabilitățile
acțiunilor.
Un cel mai bun răspuns pentru un agent „i” la strategiile „σ-i” ale celorlalți
agenți este o strategie care are utilitate maximă pentru acel agent. Adică, „σ-i” este
cel mai bun răspuns la σ-i dacă, pentru toate celelalte strategii σi pentru agentul i,
utility ( i −i , i ) utility ( i −i , i )
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 161
Agent 2
porumbel șoim
porumbel R/2,R/2 0,R
Agent 1
șoim R,0 -D,-D
Agent 2
fotbal cumpărături
fotbal 2,1 0,0
Agent 1
cumpărături 0,0 1,2
162 3 – Rezolvarea problemelor
jucător 2
a primi a da
a primi 100,100 1100,0
jucător 1
a da 0,1100 1000,1000
Indiferent ce face celălalt agent, fiecare agent este mai bun dacă ia mai degrabă
decât să dea. Cu toate acestea, ambii agenți sunt mai buni dacă dau amândoi mai
degrabă decât dacă iau amândoi.
Astfel, există un echilibru Nash unic, în care ambii agenți iau. Acest profil de
strategie are ca rezultat că fiecare jucător primește 100 USD. Profilul de strategie în
care ambii jucători dau rezultate la fiecare jucător care primește 1.000 $.
Există un număr mare de cercetări cu privire la dilema prizonierului, deoarece
nu pare să fie atât de rațional să fie lacom, în care fiecare agent încearcă să facă tot
posibilul pentru sine, rezultând că toată lumea este înrăutățită. Un caz în care
acordarea devine preferată este atunci când jocul este jucat de mai multe ori. Aceasta
este cunoscută sub numele de dilema secvențială a prizonierului. O strategie pentru
dilema secvențială a prizonierului este tit-for-tat15 (represalii echivalente):
• fiecare jucător dă inițial, apoi acțiunea anterioară a celuilalt agent la fiecare
pas.
Această strategie este un echilibru Nash atâta timp cât nu există o ultimă
acțiune despre care ambii jucători știu.
Având un echilibru Nash multiplu, nu numai că rezultă din observarea
parțială. Este chiar posibil să existe mai multe tipuri de echilibru cu un joc de
15
https://dictionary.cambridge.org/dictionary/english/tit-for-tat
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 163
informații perfecte și este chiar posibil să existe infinit de multe tipuri de echilibru
Nash, după cum arată exemplul următor.
În aceste tipuri de echilibru Nash, ambii obțin „1”. Există un alt set de tipuri
de echilibru Nash în care (A) păstrează, iar (B) randomizează printre alegerile sale,
astfel încât probabilitatea de a spune da în ramura stângă este mai mare sau egală cu
„0,5”. În aceste tipuri de echilibru, (B) primește „0”, iar (A) obține o anumită valoare
în intervalul [1,2] în funcție de probabilitatea lui (B). Există un al treilea set de tipuri
de echilibru Nash, unde (B) are o probabilitate de „0,5” de a selecta „da” în nodul
cel mai din stânga, selectează da la nodul central și (A) randomizează între a păstra
și a împărtăși cu orice probabilitate.
Să presupunem că jocul de partajare a fost modificat ușor, astfel încât, (A) a
oferit un mic mită pentru (B) să spună „da”. Acest lucru se poate realiza modificând
valoarea „2,0” la (1,9,0,1). (A) s-ar putea gândi, „Având în vedere alegerea între 0,1
și 0, (B) va alege 0,1, așa că ar trebui să păstrez”. Dar (B) s-ar putea gândi: „Ar
trebui să spun nu la 0.1, pentru ca Andy să se împărtășească și eu primim 1”. În
acest exemplu există mai multe tipuri de echilibru Nash pur, una în care (A)
păstrează, iar (B) spune că da în ramura din stânga. În acest echilibru, (A) obține 1,9,
iar (B) primește „0,1”. Există un alt echilibru Nash în care (B) spune că nu la cel mai
stânga nod de alegere și da la sucursala centrală, iar (A) alege distribuire. În acest
echilibru, amândoi obțin „1”. S-ar părea că acesta este cel preferat de (B). Cu toate
acestea, (A) ar putea crede că (B) face o amenințare goală. Dacă de fapt ar fi decis
să păstreze, (B), acționând pentru a-și maximiza utilitatea, nu ar spune „nu”.
Algoritmul de inducție înapoi găsește doar unul dintre echilibre în jocul de
partajare modificat. Calculează un echilibru perfect subgame, unde se presupune că
agenții aleg acțiunea cu cea mai mare utilitate pentru ei la fiecare nod în care ajung
să aleagă. Se presupune că agenții nu efectuează amenințări pe care nu le interesează
să le efectueze la momentul respectiv. În jocul de partajare modificat din exemplul
precedent, se presupune că (B) va spune „da”. Cu toate acestea, atunci când avem
de-a face cu oponenți reali, trebuie să fim atenți dacă vor face față amenințărilor pe
care poate nu le considerăm raționale.
Pentru a calcula un echilibru Nash pentru un joc în formă strategică, există trei
pași:
• eliminarea strategiilor dominate;
• determinarea unor acțiuni care vor avea probabilități nule, care se numește
set de suport;
164 3 – Rezolvarea problemelor
O strategie s1 pentru un agent (A) domină strategia s2 pentru (A) dacă, pentru
fiecare acțiune a celorlalți agenți, utilitatea s1 pentru agentul (A) este mai mare decât
utilitatea s2 pentru agent (A). Orice strategie pură dominată de o altă strategie poate
fi eliminată din considerație. Strategia dominantă poate fi o strategie randomizată.
Acest lucru se poate face în mod repetat.
agent 2
d2 e2 f2
a1 3,5 5,1 1,2
agent 1 b1 1,1 2,9 6,4
c1 2,6 4,7 0,8
utility ( s1 −i , i ) >utility ( s2 −i , i )
Este clar că, dacă s2 este o strategie pură, care este strict dominată de o
strategie s1, atunci s2 nu poate fi niciodată în setul de sprijin al echilibrului Nash.
Acest lucru este valabil chiar dacă s1 este o strategie stocastică. Eliminarea repetată
a strategiilor strict dominate dă același rezultat, indiferent de ordinea în care
strategiile strict dominate sunt eliminate.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 165
Ne utem folosi faptul că un agent va avea un caracter aleator între acțiuni, doar
dacă toate acțiunile au aceeași utilitate pentru agent (având în vedere strategiile
celuilalt agent). Aceasta formează un set de constrângeri care pot fi rezolvate pentru
a oferi un echilibru Nash. Dacă aceste constrângeri pot fi rezolvate cu numere în
intervalul (0,1) și strategiile mixte calculate pentru fiecare agent nu sunt dominate
de o altă strategie pentru agent, atunci acest profil16 de strategie este un echilibru
Nash. După ce strategiile dominate au fost eliminate, putem căuta peste seturi de
suport pentru a determina dacă seturile de suport formează un echilibru Nash. Dacă
există „n” acțiuni disponibile pentru un agent, există „2n-1” subseturi care nu sunt
goale și trebuie să căutăm combinații de seturi de asistență pentru diverși agenți.
Acest lucru este posibil, doar în cazul în care există puține acțiuni care nu sunt
dominate sau există echilibre Nash cu mici seturi de sprijin. Pentru a găsi echilibrul
simplu (în ceea ce privește numărul de acțiuni din setul de suport), putem căuta de
la seturi de asistență mai mici la seturi mai mari.
Presupunem că agentul i este aleator între acțiunile (a ,..., a ) , într-un
1
i
ki
i
j
echilibru Nash. Fie pi probabilitatea ca agentul să facă acțiunea ai . Fie
j
− i ( p − i1 )
strategiile pentru ceilalți agenți, în funcție de probabilitățile lor. Faptul că acesta este
ki
un echilibru Nash dă următoarele constrângeri: pij 0, j =1
pij = 1 și pentru
oricare ar fi j , j vom avea:
atunci, pentru () a ai ,..., ai i , vom avea:
1 k
16
Un set de suport este un set de strategii pure care au probabilitate diferită de zero într-un
echilibru Nash.
166 3 – Rezolvarea problemelor
0.9 pk + 0.2 (1 − pk ) .
Dacă portarul sare în partea stângă, probabilitatea de a primi un gol este:
0.3 pk + 0.6 (1 − pk ) .
Singura dată când portarul ar sări aleator se întâmplă dacă cele două
probabilități sunt egale, adică dacă:
pk = 0.4
p j = 0.3 .
1: Procedure PolicyImprovement(A,α,δ)
2: Inputs
3: A a set of actions
4: α step size for action estimate
5: δ step size for probability change
6: Local
7: n the number of elements of A
8: P[A] a probability distribution over A
9: Q[A] an estimate of the value of doing A
10: a_best the current best action
11:
12: n ←|A|
13: P[A] assigned randomly such that P[a]>0 and ∑a∈AP[a]=1
14: Q[a] ←0 for each a∈A
15: repeat
16: select action a based on distribution P
17: do a
18: observe payoff
19: Q[a]←Q[a]+ α(payoff-Q[a])
20: a_best ←argmax(Q)
21: P[a_best]←P[a_best]+n×δ
22: for each a'∈A do
23: P[a']←P[a']-δ
24: if (P[a']<0) then
25: P[a_best]←P[a_best]+P[a']
26: P[a']←0
27:
28:
29: until termination
17
https://www.oxfordreference.com/view/10.1093/oi/authority.20110803095631211
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 171
Propoziție18: Teorema imposibilității săgeții19 - dacă există trei sau mai multe
rezultate, următoarele proprietăți nu pot conține simultan nici o funcție de preferință
socială:
• funcția preferinței sociale este completă și tranzitivă;
• fiecare preferință individuală completă și tranzitivă este permisă;
• dacă fiecare element preferă rezultatul o1 sau o2, grupul preferă o1 până la o2;
• preferința grupului dintre rezultatele o1 și o2 depinde doar de preferințele
individuale de la o1 și o2 și nu de preferințele indivizilor față de alte rezultate;
• nimeni nu ajunge să decidă unilateral rezultatul (nictictia).
Atunci când construim un agent care ia preferințele individuale și conferă o
preferință socială, trebuie să fim conștienți că nu putem avea toate aceste proprietăți
intuitive și dezirabile. În loc să acorde o preferință de grup care să aibă proprietăți
nedorite, poate fi mai bine să indice persoanelor cum preferințele lor nu pot fi
reconciliate.
Discuțiile anterioare despre agenții care aleg acțiunile lor au presupus că fiecare
agent trebuie să joace într-un joc predefinit. Problema proiectării mecanismului este
de a realiza un joc cu proprietăți dezirabile pentru diferiți agenți, în vederea participării
la jocul respectiv.
Un mecanism specifică acțiunile disponibile pentru fiecare agent și distribuția
rezultatelor fiecărui profil de acțiune. Presupunem că agenții au utilități peste rezultate.
Există două proprietăți comune care sunt de dorit pentru un mecanism:
• un mecanism ar trebui să fie ușor de utilizat pentru agenți. Având în vedere
utilitatea unui agent, ar trebui să fie ușor pentru agent să determine ce să facă;
• un mecanism ar trebui să ofere cel mai bun rezultat agregat asupra tuturor
agenților. Un exemplu este un mecanism eficient din punct de vedere economic
dacă rezultatul ales este unul care maximizează suma utilităților agenților.
18
https://ro.scribd.com/doc/224188250/7-8-No%C5%A3iunea-de-Propozi%C5%A3ie-
Matematic%C4%83-Axiom%C4%83-Teorem%C4%83-Condi%C5%A3ii-Necesare-
%C5%9Ei-Suficiente-Metoda-Reducerii-La-Absurd
19
https://math.hmc.edu/funfacts/arrows-impossibility-theorem/
172 3 – Rezolvarea problemelor
Valoarea
Luni Marți Miercuri Plata
netă
A 0 8 10 3 5
B 3 4 0 1 3
C 11 7 6 0 7
Total 14 19 16
Rezolvarea 1
Se folosesc următoarele structuri de date:
• Tabla este un vector de 9 elemente care reprezintă tabla de joc, tabla fiind
liniarizată pe linii. Valorile elementelor acestui vector sunt 0 pentru spațiu
liber (blanc), 1 pentru X si 2 pentru O.
20
http://muhaz.org/partea-i-rezolvarea-problemelor-in-inteligenta-artificiala.html
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 175
9
• Tabela_de_mutări este un vector de 19.683 elemente (3 ), fiecare element
al acestui vector fiind la rindul lui un vector de 9 elemente. Fiecărei poziții
posibile de pe tabla de joc îi corespunde o intrare în această tabelă de mutări
care conține noua poziție obtinuta prin executarea mutării respective.
Algoritmul de rezolvare este prezentat in continuare.
Algoritm: Problema "Tic-Tac-Toe". Rezolvarea 1
1. Initializeaza Tabla cu blanc si Tabela_de_mutări cu toate pozițiile posibile
2. Cit timp nici un jucator nu a cistigat executa
2.1. Considera Tabla ca un numar ternar (in baza 3) si converteste-l in baza 10
obtinind M
2.2. Utilizeaza M ca index in Tabela_de_mutări si obtine
PozNoua Tabela_ de_ mutari[M]
2.3. Tabla PozNoua
2.4. dacă PozNoua este poziție cistigatoare atunci intrerupe ciclul
2.5. Citeste mutare adversar si modifica Tabla in consecinta
3. Anunta jucatorul cistigator
sfirsit.
Acest algoritm este foarte eficient din punct de vedere al timpului și, teoretic,
ar putea să joace un joc optim de "Tic-Tac-Toe." Algoritmul prezintă însă mai multe
dezavantaje. În primul rând această abordare necesită un spațiu foarte mare pentru
memorarea tabelei de mutări care specifică mișcările corecte asociate fiecărei
configurații a tablei. În al doilea rând este greu să se stabilească și să se introducă
valorile corecte în tabela de mutări. În final, dacă se dorește extinderea jocului pentru
un caz mai general, de exemplu cazul în trei dimensiuni, trebuie refăcută toată tabela
de mutări de la început. În particular, pentru cazul jocului în trei dimensiuni această
27
abordare nu mai funcționează de loc deoarece ar trebui memorate (3 ) poziții în
tabela de mutări. Tehnica folosită în această rezolvare nu respectă nici una din
cerințele unei tehnici de inteligență artificială.
Rezolvarea 2
Se folosesc următoarele structuri de date:
• Tabla este un vector similar cu cel prezentat în Rezolvarea 1 dar folosește
următoarea codificare a simbolurilor de pe tablă: 2 pentru blanc, 3 pentru X
si 5 pentru O.
• Mutare este o variabilă cu valori întregi care indică numărul mutării ce urmează
a se face. Valoarea 1 indică prima mutare iar valoarea 9 indică ultima mutare.
Algoritmul de rezolvare are o strategie predefinită pentru mișcările pe care trebuie
să le execute. Algoritmul execută numai mișcările impare dacă joacă pe postul
jucatorului X sau mișcările pare dacă joacă pe postul jucătorului O. Se folosesc trei
subprograme: Muta(N) efectuează o mutare în pătratul N, PosCistig(P) evaluează
posibilitatea de câștig a jucătorului P cu următoarea mișcare în funcție de configurația
176 3 – Rezolvarea problemelor
sfirsit.
Muta(N)
1. dacă Mutare are valoare impara
atunci Tabla[N] 3
2. dacă Mutare are valoare para
atunci Tabla[N] 5
sfirsit.
PosCistig(P)
1. dacă jucatorul P nu poate cistiga in mutarea urmatoare
atunci intoarce 0
2. intoarce pozitia patratului cu miscare cistigatoare
sfirsit.
Scop
178 3 – Rezolvarea problemelor
Rezolvarea 3
Se folosesc urmatoarele structuri de date:
• Tabla este un vector similar cu cel prezentat in Rezolvarea 2.
• Urm este o lista cu toate configuratiile urmatoare posibile care se obtin din
configuratia curenta a tablei prin executia mutărilor permise din configuratia
curenta.
• Merit este un numar intreg care reprezinta o estimare a posibilitatii de cistig
din configuratia curenta a tablei prin una sau mai multe mutări. Deci meritul
unei configuratii reprezinta cit de promitatoare este configuratia curenta
pentru cistig.
Algoritmul de rezolvare este prezentat in continuare.
sfirsit.
DetMerit(C1)
1. dacă configuratia C1 este cistigatoare
atunci intoarce valoarea maxima predefinita a meritului
2. Considera toate mutările posibile ale adversarului din configuratia C1
3. Calculeaza meritul Mi al fiecărei configuratii rezultate prin aceste mutări
4. Alege configuratia cu meritul cel mai mic, Mmin, considerind ca adversarul
va face
cea mai defavorabila miscare pentru opozant
5. intoarce Mmin
sfirsit.
Bibliografie – Capitolul 3
180 3 – Rezolvarea problemelor
Abrevieri – Capitolul 3
Abreviere Explicație
AA Appropriate Anchoring – Ancorarea Adecvată
ACM Allowed Collision Matrix
ADC Analog to Digital Conversion A → D
AI Artificial Intelligence
API Application Programming Interface
ATP Add Time Parametrization
BF breadth first
FIFO First In First Out
LIFO Last In First Out
VCG Mecanismul Vickrey-Clarke-Groves
4. CUNOAȘTERE ȘI RAȚIONAMENTE
Un agent inteligent are nevoie de cunoștințe despre lumea reală pentru a lua
decizii și raționamente pentru a acționa eficient.
Agenții bazați pe cunoaștere sunt acei agenți care au capacitatea de a menține
o stare internă a cunoașterii, raționează asupra acelor cunoștințe, își actualizează
cunoștințele după observații și iau măsuri. Acești agenți pot reprezenta lumea cu o
anumită reprezentare formală și pot acționa inteligent.
Agenții bazați pe cunoaștere sunt compuși din două părți principale:
• baza de cunoștințe;
• sistemul de inferență.
Un agent bazat pe cunoștințe trebuie să poată face următoarele:
• reprezenta stări, acțiuni etc.;
• încorpora noi percepții;
• actualiza reprezentarea internă a lumii;
• deduce reprezentarea internă a lumii;
• deduce acțiunile adecvate.
Un agent este orice lucru care poate fi privit ca percepându-și mediul prin
senzori și acționând asupra acelui mediu prin efectori. Un agent uman are ochi,
urechi și alte organe pentru senzori și mâini, picioare, gură și alte părți ale corpului
pentru efectori. Un agent robot înlocuiește sistemul senzorial vizula cu camere video,
telemetrie în infraroșu. Iar pentru acțiune cu diverse motoare pentru efectoare. Un
agent software are codat șiruri de biți pentru percepții și acțiuni [4.1].
Fig. 4.1 Exemplificarea unui agent inteligent-logic. [4.1], pp.32, fig. 2.1
Un agent logic-rațional (Fig. 4.1) este cel care face ceea ce trebuie. Evident,
acest lucru este mai bun decât să faci un lucru greșit, dar ce înseamnă? Ca primă
182 4 – Cunoaștere și Raționamente
aproximare, vom spune că acțiunea corectă este cea care va determina agentul să
aibă cel mai mare succes. Acest lucru ne lasă cu problema de a decide cum și când
să evaluăm succesul agentului.
Folosim termenul măsură de performanță pentru cum - criteriile care
determină cât de reușit este un agent. Evident, nu există o singură măsură fixă
potrivită pentru toți agenții. Am putea cere agentului o opinie subiectivă despre cât
de fericit este cu propria sa performanță, dar unii agenți nu ar putea răspunde, iar alții
s-ar înșela. (Agenții umani în special sunt cunoscuți pentru „struguri acri” - spunând
că nu și-au dorit cu adevărat ceva după ce nu au reușit să-l obțină.) Prin urmare, vom
insista asupra unei măsuri obiective de performanță impuse de o anumită autoritate.
Cu alte cuvinte, noi, ca observatori externi, stabilim un standard a ceea ce înseamnă
să ai succes într-un mediu și îl folosim pentru a măsura performanța agenților.
Considerăm că un agent care ar trebui să efectueze o sarcină, are ca factor de
îndeplinire o măsură cantitativă. Complicând algoritmul putem solicta și un criteriu
de performanță, cum ar fi cantitatea de energie electrică consumată și cantitatea de
zgomot generată. Se poate introduce și a treia măsură de performanță să lucreze în
liniște și eficient.
Ce putem aprecia acum este important să fie definit momentul evaluării
performanței. Fie pe o scară temporală fie pe una cantitativă indiferent de timp. Un
alt element care poate fi introdus este cel comparativ, în care agentul trebuie să
precizeze (pe baza datelor de la senzori) care este evoluția fiecărui parametru în timp,
de la o zi la lata sau similar. Astfel, operatorii pot măsuram performanța pe termen
lung, fie că este vorba de un schimb de opt ore sau de o lună etc..
Putem defini, astfel, arhitectura (Fig. 4.2) agentului bazat pe cunoaștere1:
1
https://www.javatpoint.com/knowledge-based-agent-in-ai
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 183
function KB-AGENT(percept):
persistent: KB, a knowledge base
t, a counter, initially 0, indicating time
TELL(KB, MAKE-PERCEPT-SENTENCE(percept, t))
Action = ASK(KB, MAKE-ACTION-QUERY(t))
TELL(KB, MAKE-ACTION-SENTENCE(action, t))
t=t+1
return action
despre lumea reală. De asemenea, are un contor pentru a indica timpul pentru întregul
proces, iar acest contor este inițializat cu zero.
De fiecare dată când funcția este apelată, își efectuează cele trei operații:
• îi spune KB-ului ceea ce percepe MAKE-PERCEPT-SENTENCE;
• îl întreabă pe KB ce măsuri ar trebui să ia MAKE-ACTION-QUERY;
• îi spune SPUNE KB ce acțiune a fost aleasă MAKE-ACTION-SENTENCE.
Există mai multe niveluri de agent bazat pe cunoaștere:
1. Nivelul de cunoștințe este primul nivel al agentului bazat pe cunoaștere și,
la acest nivel, trebuie specificat ce știe agentul și care sunt obiectivele
agentului. Cu aceste specificații, i se poate rezolva comportamentul. De
exemplu, să presupunem că un agent de taxi automat trebuie să meargă
dintr-o stație A în stația B și știe drumul de la A la B, deci acest lucru vine
la nivelul cunoștințelor;
2. Nivel logic, la acest nivel, înțelegem cum este stocată reprezentarea
cunoașterii cunoștințelor. Propozițiile sunt codificate în diferite logici. La
nivel logic, apare o codificare a cunoștințelor în propoziții logice. La nivel
logic, ne putem aștepta ca agentul de taxi automat să ajungă la destinația
B.
3. Nivelul de implementare, este reprezentarea fizică a logicii și cunoașterii.
La nivelul implementării agentul efectuează acțiuni conform nivelului
logic și de cunoștințe. La acest nivel, un agent de taxi automat își
implementează de fapt cunoștințele și logica astfel încât să poată ajunge la
destinație.
Există în principal două abordări pentru a construi un agent bazat pe
cunoaștere:
i. abordarea declarativă: se poate crea un agent bazat pe cunoaștere inițializând
cu o bază de cunoștințe goală și spunându-i agentului toate propozițiile cu
care dorim să începem. Această abordare se numește abordare declarativă.
ii. abordarea procedurală: se codifică direct comportamentul dorit ca un cod de
program. Ceea ce înseamnă că trebuie doar scris un program care codifică
deja comportamentul sau agentul dorit.
Cu toate acestea, în lumea reală, un agent de succes poate fi construit
combinând atât abordări declarative, cât și abordări procedurale, iar cunoștințele
declarative pot fi deseori compilate într-un cod procedural mai eficient.
Reprezentarea cunoașterii pentru oamenii se referă la înțelegerea,
raționamentul și interpretarea cunoștințelor, dar modul în care fac mașinile toate
aceste lucruri intră sub reprezentarea și raționamentul cunoașterii? De aceea vom
descrie reprezentarea cunoștințelor, astfel:
▪ reprezentarea și raționamentul cunoașterii (KR, KRR) este partea
inteligenței artificiale care se referă la gândirea agenților AI și modul în care
gândirea contribuie la comportamentul inteligent al agenților;
▪ reprezentarea informațiilor despre lumea reală, astfel încât un computer să
poată înțelege și să poată utiliza aceste cunoștințe pentru a rezolva
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 185
2. Cunoștințe ereditare:
În abordarea de cunoaștere moștenită, toate datele trebuie stocate într-o
ierarhie de clase. Toate clasele trebuie aranjate într-o formă generalizată sau
ierarhică. Elementele moștenesc valori de la alte elemente ale unei clase. Abordarea
conține cunoștințe moștenite care arată o relație între instanță și clasă și se numește
relație de instanță. Fiecare cadru individual poate reprezenta colecția de atribute și
valoarea acestuia.
3. Cunoștințe inferențiale:
Abordarea inferențială a cunoașterii reprezintă cunoașterea sub forma logicii
formale. Această abordare poate fi utilizată pentru a obține mai multe fapte și
garantează corectitudinea informațiilor.
Exemplu: Să presupunem că există două afirmații:
DUSTER este o mașină
Toate mașinile au motoare
Atunci poate reprezenta ca;
DUSTER (mașină)
(∀) x = DUSTER (x) ----------> motor (x) s
4. Cunoștințe procedurale:
Abordarea procedurală a cunoștințelor utilizează programe și coduri mici care
descriu cum să fie făcute diverse lucruri specifice și cum se procedează pentru acest
lucru. Abordarea, utilizează regula If-Then.
În aceste cunoștințe, putem folosi diverse limbaje de codificare, cum ar fi
limbajul LISP și limbajul Prolog.
Se pot reprezenta cunoștințe euristice sau specifice domeniului folosind
această abordare.
I. Reprezentare logică
Reprezentarea logică este un limbaj cu câteva reguli concrete care se ocupă de
propoziții și nu are nicio ambiguitate în reprezentare. Reprezentarea logică înseamnă
tragerea unei concluzii bazate pe diferite condiții. Această reprezentare stabilește
câteva reguli importante de comunicare. Acesta constă din sintaxă și semantică
definite cu precizie, care susțin inferența sunetului. Fiecare propoziție poate fi
tradusă în logică folosind sintaxa și semantica.
a. Sintaxă:
• sintaxele sunt regulile care decid cum se pot construi propoziții juridice în
logică;
• determină ce simbol se pate folosi în reprezentarea cunoașterii;
• cum trebuie scrise aceste simboluri.
b. Semantică:
• semantica reprezintă regulile prin care se poate interpreta propoziția în
logică.
• semantica implică atribuirea unui sens fiecărei propoziții.
c. Reprezentarea logică:
• logică propozițională;
• logică predicat.
Reprezentările logice prezintă următoarele avantaje și dezavantaje:
▪ avantaje:
o permite efectuarea de raționamente logice;
o se constituie ca bază a limbajelor de programare;
▪ dezavantaje:
o prezintă restricții și sunt dificile să lucreze cu acestea;
o este posibil să nu fie foarte naturală, iar inferența să nu fie atât de
eficientă.
grafice. Această rețea este formată din noduri care reprezintă obiecte și arce care
descriu relația dintre aceste obiecte [4.3]. Rețelele semantice pot clasifica obiectul în
diferite forme și, de asemenea, pot lega aceste obiecte. Rețelele semantice sunt ușor
de înțeles și pot fi ușor extinse. Această reprezentare constă în principal în două tipuri
de relații:
• relația IS-A (Moștenire);
• tipul de relație.
Reprezentările rețelelor semantice prezintă următoarele avantaje și
dezavantaje:
▪ avantaje:
o sunt o reprezentare naturală a cunoașterii;
o transmit sens într-un mod transparent;
o sunt simple și ușor de înțeles;
▪ dezavantaje:
o necesită mai mult timp de calcul în timpul rulării, deoarece trebuie
să traverseze arborele complet al rețelei pentru a răspunde unor
întrebări. În cel mai rău caz, ar putea fi posibil ca, după parcurgerea
întregului arbore, să se constate că soluția nu există în această rețea;
o încearcă să modeleze memoria asemănătoare omului (care are 1015
neuroni și fiecare neuron are aproximativ 105 legături) pentru a stoca
informațiile, lucru care, în practică, nu este posibil de construit ca o
rețea semantică atât de vastă;
o sunt inadecvate, deoarece nu au nici un cuantificator echivalent, de
exemplu, pentru toate, pentru unii, nici unul etc.;
o nu au nicio definiție standard pentru numele linkurilor;
o aceste rețele nu sunt inteligente și depind de creatorul sistemului.
obiect sau eveniment pot fi stocate împreună în baza de cunoștințe. Cadrul este un
tip de tehnologie care este utilizat pe scară largă în diverse aplicații, inclusiv
procesarea limbajului natural și viziunile mașinilor.
Reprezentările cadru prezintă următoarele avantaje și dezavantaje:
▪ avantaje:
o face programarea mai ușoară prin gruparea datelor aferente;
o este comparabil flexibilă și utilizată de multe aplicații în AI;
o este foarte ușor să fie adăugatei sloturi pentru noi atribute și relații;
o este ușor de inclus date implicite și să fie căutate valorile lipsă;
o este ușor de înțeles și vizualizat;
▪ dezavantaje:
o mecanismul de inferență nu este ușor de procesat;
o mecanismul de inferență nu poate fi continuat fără probleme prin
reprezentarea cadrului;
o are o abordare mult mai generalizată.
IV. Reprezentarea regulilor de producție
Sistemul de reguli de producție constă din (condiție, acțiune) perechi care
înseamnă „dacă condiție → atunci acțiune”. Are în principal trei părți:
1. setul de reguli de producție;
2. memorie de lucru;
3. ciclul de recunoaștere-act.
În regulile de producție agentul verifică starea și dacă starea există, atunci
regula de producție se declanșează și se efectuează acțiunea corespunzătoare. Partea
de condiție a regulii determină care regulă poate fi aplicată unei probleme. Iar partea
de acțiune efectuează etapele de rezolvare a problemelor asociate. Acest proces
complet este numit un ciclu de recunoaștere-act.
Memoria de lucru conține descrierea stării actuale de rezolvare a problemelor
și regula poate scrie cunoștințe în memoria de lucru. Această cunoaștere se potrivește
și poate declanșa alte reguli.
Dacă se generează o nouă situație (stare), atunci mai multe reguli de producție
vor fi declanșate împreună, aceasta se numește set de conflicte. În această situație,
agentul trebuie să selecteze o regulă din aceste seturi și se numește rezoluție de
conflict.
Reprezentările regulilor de producție prezintă următoarele avantaje și
dezavantaje:
▪ avantaje:
o sunt exprimate în limbaj natural;
o sunt extrem de modulare, deci putem elimina, adăuga sau modifica
cu ușurință o regulă individuală;
▪ dezavantaje:
o nu prezintă nicio capacitate de învățare, deoarece nu stochează
rezultatul problemei pentru utilizările viitoare;
o în timpul executării programului, multe reguli pot fi active, prin
urmare, sistemele de producție bazate pe reguli sunt ineficiente.
192 4 – Cunoaștere și Raționamente
Reprezentarea cunoașterii bazată pe predicate a unui robot, care este derivată din
detectarea evenimentelor, amintirea trecutului, precum și din predicția unui mediu viitor,
este prezentată schematic în Fig. 4.7. Pentru noile predicate senzoriale se presupune că
robotul este capabil să identifice care sunt incerte în sens probabilistic.
Următoarele probleme specifice trebuie abordate:
1. Dacă apare inconsecvență, trebuie identificat ce predicate incerte noi de
detectare din Ut ⊆ Bt pot fi asigurate în cadrul regulilor RP bazate pe
modele fizice.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 193
= F , B, L, , A
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 195
unde:
▪ F = p1 , p2 ,
, pnp - este ansamblul tuturor predicatelor;
▪ B ⊂ F - este setul total de convingeri la nivel atomic. Baza de convingeri
curentă la momentul t este definită ca Bt ⊂ B. La momentul t convingerile
care sunt adăugate, șterse sau modificate sunt considerate evenimente și sunt
incluse în setul Et ⊂ B, care se numește setul de evenimente. Evenimentele
pot fi interne sau externe, în funcție de faptul că sunt generate de o acțiune
internă, caz în care sunt denumite „note mentale”, sau o intrare externă, caz
în care se numesc „percepții”;
▪ L = R P R B = l1 , l2 ,
, lnl - este un set de reguli de implicare;
▪ = 1 , 2 ,
, n - este setul de planuri executabile sau biblioteca de
planuri. Planurile curente aplicabile la momentul t fac parte din subsetul Πt
⊂ Π, acest set este numit și setul Desire. De asemenea, este definit un set I
⊂ Π de intenții, care conține planuri pe care agentul este angajat să le
execute;
▪ A = a1 , a2 ,
, ana F \ B - este un set care cuprinde toate acțiunile
disponibile. Acțiunile pot fi interne, când modifică baza convingerilor sau
generează evenimente interne, fie externe, atunci când sunt legate de funcții
externe care operează în mediu.
Limbajul de programare de tip AgentSpeak, inclusiv Arhitectură limitată de
seturi de instrucțiuni (Limited Instruction Set Architecture - LISA) [4.15,4.16], pot
fi complet definite și implementate prin enumerarea următoarelor caracteristici:
▪ convingeri inițiale: convingerile și obiectivele inițiale B0 ⊂ F sunt un set de
litere care sunt copiate automat în baza de credințe Bt (care este setul de
convingeri actuale) atunci când mintea agentului este lansată pentru prima
dată;
▪ acțiunile inițiale: acțiunile inițiale A0 ⊂ A sunt un set de acțiuni care sunt
executate atunci când mintea agentului este executată pentru prima dată.
Acțiunile sunt în general obiective care activează planuri specifice;
▪ reguli logice: un set de reguli de implicare bazate pe logică L = R R
P B
p j : c j a1 , a2 , , anj
196 4 – Cunoaștere și Raționamente
Pașii de mai sus se repetă ciclic pentru a rula procesul de raționament al unui
agent robotizat.
Definiție 3 - Stabilitate
Un sistem de evoluție boolean este stabil dacă, din orice evaluare și aplicând
recursiv regulile, ajunge în cele din urmă la o evaluare B în care nu se poate obține nicio
altă evaluare, adică B = B . Spunem că B este o evaluare stabilă, scrisă ca BS .
Dacă stabilitatea se întâmplă ea este decisă de agent: doar dacă două etape
consecutive în evoluție au evaluări identice.
Definiție 4 - Inconsistență
Trei probleme pot apărea în timpul evoluției unui BES:
1. două reguli activate încearcă să actualizeze aceeași variabilă booleană cu
valori opuse la un moment dat;
known
2. o variabilă în B este actualizată la valoarea opusă valorii sale inițiale
la un moment dat;
unknown
3. o variabilă din B este actualizată la valoarea opusă la un moment
dat după ce valoarea sa a fost determinată1.
198 4 – Cunoaștere și Raționamente
Exemplu 1:
a → b c
b → c
Acest exemplu demonstrează inconsecvența sub semantica sincronă. Pentru
evaluarea inițială a = true b = c = unknown , atât prima, cât și a doua regulă sunt
activate, ceea ce face ca b = false și c = true . În următoarea iterație de evoluție,
a doua regulă stabilește c = true , în timp ce a treia stabilește c = false . În Fig. 4.8
este ilustrată evaluarea în aceste evoluții a iterațiilor.
Teorema 1:
Fie B o evaluare booleană a variabilelor din setul de reguli R. Dacă sistemul
de evoluție boolean nu este stabil atunci B și R sunt inconsistențe pe care agentul le
poate detecta din aceeași evaluare reapărând în timpul evoluției booleene.
altfel evoluția ar fi stabilă cu evaluarea t care a avut loc la două evaluări identice
consecutive. Pe măsură ce o evaluare reapare, acest lucru înseamnă că unele valori
variabile în acea evaluare sunt schimbate între cele două apariții identice ale
evaluărilor. Să fie o astfel de variabilă. Regulile logice aplicate, care au dus la
reapariția evaluării, au forțat, de fapt, cel puțin o dată să se schimbe la valoarea sa
opusă și ulterior să se schimbe înapoi. Aceasta înseamnă că setul de reguli R pentru
evaluarea inițială este incompatibil cu regulile, adică R nu este satisfăcător pentru
nici o evaluare care este în concordanță cu evaluarea inițială B .
Exemplu 2:
a →bd
b d → c a
c d → b
b d → c
cd →b
b c → d
Image (S , T ) = s S s S astfel încât (s, s) T
Dat fiind un sistem de evoluție boolean BES = B, R cu n1 variabile
necunoscute, adică,
Bunknown = b1 , , bn1 și n2 variabile cunoscute, adică
B known = bn1 +1 ,
, bn1 + n2 , fie
A = B1 , , Bn1 , Bn1 +1 ,
, Bn1 + n2
D1 , , Dn1 , Dn1 +1 ,
, Dn1 + n2 Kn1 +1 , , Kn1 + n2 , unde B i este o propoziție
n2 known
2. S0 este compusă din toate evaluările 2 în cazul în care variabilele din B
unknown
pot lua fie adevărat, fie fals, iar variabilele din B sunt necunoscute.
( ) ( )
3. O tranziție B , B T iff B → B . În prezența actualizării incoerente a
unor variabile booleene, evaluarea succesorului este aleasă aleatoriu, ceea
ce duce la stări succesorale multiple. De exemplu, se ia în considerare o
evaluare s de unde o variabilă booleană a poate fi actualizată la adevărat
prin regula r1 și false prin regula r2. În sistemul de tranziție, s are două stări
succesorale, adică evaluare: o stare conține a = true și cealaltă conține
a = false . Dacă există k variabile booleene care sunt actualizate
inconsecvent în s, atunci s are 2k stări succesorale.
( )
4. H B este definit astfel încât pentru fiecare variabilă bi Bunknown B known
( ) ( )
, Bi H B iff bi = true , Di H B iff bi = false și pentru fiecare
variabilă bj B
unknown
( )
, K j H B iff bj = true .
unknown
De reținut că toate valorile de intrare posibile ale variabilelor din B sunt
unknown
capturate de S0, adică fiecare evaluare posibilă a B este codificată într-o stare
inițială în S0.
Setul de stări și relația de tranziție într-un sistem de tranziție pot fi ilustrate ca
( )
un grafic direct, unde o tranziție s1 , s2 T este reprezentată de o săgeată de la s1
la s2. În prezintă graficul direcționat pentru Exemplul 1.
4.2.1.4.2 Implementare
unknown
variabilă din B într-o variabilă enumerată cu trei valori “True, False
și Unknownˮ. Codul ISPL corespunzător pentru exemplul 1 este după cum
urmează.
Vars
a: boolean;
b: True,False,Unknown
c: True,False,Unknown
end Vars
2. Fiecare regulă de evoluție este tradusă într-o tranziție protejată „c if g” în
ISPL, unde garda g este o expresie booleană peste variabile și c este un set
de atribuții. Într-adevăr, semantica unei tranziții păzite se potrivește exact
cu cea a unei reguli de evoluție. Regulile din Exemplul 1 sunt traduse în
codul ISPL de mai jos.
Evolution
b=false if a=true;
c=true if a=true;
b=false if c=false;
end Evolution
unknown
3. Deoarece fiecare variabilă din B în BES este inițializată la
necunoscută, trebuie să specificăm acest lucru în secțiunea de IniStates
într-un program ISPL. Următorul cod este generat pentru Exemplul 1.
InitStates
M.b=Unknown and M.c=Unknown;
end InitStates
De menționat că M este numele agentului, care încapsulează variabilele și
tranzițiile, iar M.x se referă la variabila x din M.
4. O propoziție atomică în ISPL are forma „x if g”, unde x este numele
propoziției atomice, iar g este o expresie booleană care definește setul de
stări pe care le deține x. Adică, x se păstrează în orice stare a cărei evaluare
corespunzătoare satisface g. Codul ISPL pentru Exemplul 1 este mai jos.
Evolution
a_true if M.a=true;
a_false if M.a=false;
b_true if M.b=true;
b_false if M.b=false;
b_unknown if M.b=unknown;
c_true if M.c=true;
c_false if M.c=false;
c_unknown if M.c=unknown;
end Evolution
Pașii de construcție de mai sus sugerează că un compilator poate fi produs fără
dificultăți la codul ISPL generat automat dintr-un sistem de evoluție boolean dat. Există
204 4 – Cunoaștere și Raționamente
::= p
Atât CTL cât și LTL sunt definite pe căi într-un sistem de tranziție. Având în
vedere un sistem de tranziție M S , S0 , T , A , H o cale = s0 s1 sk este o
secvență (finită sau infinită) de stări astfel încât pentru fiecare pereche de stări
adiacente, există o tranziție în sistem, adică, si S pentru toți 0 i k și
• s = 1 2 dacă s = 1 și s = 2 ;
()
• s = EX dacă există o cale ρ începând cu s astfel încât 1 = ;
()
• s = AX dacă există o cale ρ începând cu s, astfel încât, 1 = ;
• s = 1 2 dacă s = 1 și s = 2 ;
()
• s = dacă există o cale ρ începând cu s astfel încât 1 = ;
()
• s = dacă există o cale ρ începând cu s astfel încât i = pentru orice
i 0;
• s = 1 2 dacă există o cale ρ începând cu s astfel încât (i ) = 2 pentru
()
orice i 0 și j = pentru orice 0 j i ;
1
Când verificăm dacă o formulă CTL/LTL se menține pe un model, se verifică
dacă această formulă este satisfăcută de toate stările inițiale, notate cu M = . În
special, când spunem că un LTL se menține în model, fiecare cale din fiecare
stare inițială trebuie să satisfacă . Mai multe detalii despre CTL și LTL, precum și
diferența dintre ele, pot fi găsite în [4.23].
Demenstrație: Dacă un sistem este inconsistent din cauza primului caz, atunci
trebuie să existe o stare care are două stări succesorale astfel încât o variabilă să fie
evaluată la adevărat într-o stare succesivă și la falsă în cealaltă. Formula CTL
(EXB EXD )
i i surprinde acest scenariu pentru variabila bi. Negarea ( )
exclude apariția inconsecvenței cauzate de bi. Operatorul AG garantează că
inconsecvența nu apare în nici un caz. Nu este necesar să fie luat în considerare un
( )
caz precum EXKi EXBi EXDi pentru o variabilă necunoscută deoarece nu
poate fi atribuită necunoscutului în timpul evoluției.
Dacă formulele de mai sus sunt evaluate la adevărate, atunci sistemul de evoluție
boolean este consecvent. Această categorie de inconsecvență nu poate fi verificată printr-
o formulă LTL, deoarece LTL poate specifica numai proprietăți liniare.
Cu toate acestea, o mică modificare ar face LTL să funcționeze din nou la
verificarea coerenței. Lema 1 caută apariții de inconsecvență verificând dacă două valori
opuse ale unei variabile pot fi atinse dintr-o stare. Următoarea teoremă se concentrează
pe căutarea unei astfel de stări pentru efectuarea verificărilor de consistență.
EF (C1 Cm )
sau formula LTL:
(C1 Cm )
Demonstrație: dacă o stare îndeplinește o propoziție Ci, care este construită ca
g j1 g j2 , atunci ambii paznici g j1 și g j2 sunt satisfăcuți în starea respectivă. Astfel,
regulile corespunzătoare g j → X j și g j → X j sunt activate în stare. Deoarece
1 1 2 2
aceste două reguli stabilesc valori opuse unei variabile, inconsecvența apare în această
stare dacă este accesibilă dintr-o stare inițială. C surprinde toate statele în care s-ar putea
întâmpla inconsecvență, iar EF și examinează dacă oricare dintre aceste stări poate fi
atinsă dintr-o stare inițială. De reținut că:
AG (
B EXD
n1 +1 n1 +1 ) (
Dn1 +1 EXBn1 +1
)
( Bn EXDn ) ( Dn EXBn )
sau formula LTL:
(
B D
n1 +1 n1 +1 ) (
Dn1 +1 Bn1 +1
)
( Bn Dn ) ( Dn Bn )
208 4 – Cunoaștere și Raționamente
Demonstrație: dacă apare acest caz, atunci trebuie să existe o stare s care are o
stare de succes s0 astfel încât o variabilă să fie evaluată la adevărat în s și false în s0, sau
(
false în s și adevărat în s0. Formulele CTL Bi EXDi și Di EXBi ) ( ) pentru
( B1 D1 K1 )
( Bn1 Dn1 K N1 )
( )
Bn1 +1 Dn1 +1
( Bn Dn )
Dacă formula LTL sau CTL de mai sus este evaluată la adevărată, atunci sistemul
de evoluție boolean este stabil.
Demonstrație: într-un sistem stabil, fiecare cale duce la o stare stabilă, în care
nicio variabilă necunoscută nu își va mai schimba valoarea. Prin urmare, unul dintre cele
trei cazuri Bi , Di sau Ki pentru variabila necunoscută bi se menține în stare
stabilă.
Ultimul caz înseamnă că variabila necunoscută rămâne necunoscută pe
parcursul evoluției. Variabilele cunoscute nu pot lua valoare necunoscută. Astfel, nu
este nevoie să le considerăm necunoscute în formula LTL. Operatorul specifică că
această stare stabilă va fi atinsă în cele din urmă. Formula CTL poate fi argumentată
într-un mod similar.
( )
îndeplinesc . Calculul punctului fix începe cu un set X0 = SAT și calculează
( AGB AGD ) și fiecare AG necesită un calcul de punct fix fix scump, deoarece
j j
AG = EF () . Prin urmare, verificarea modelului acestei formule ar putea
consuma mult timp. Următoarea teoremă ne spune că verificarea stabilității poate fi
redusă la o problemă de accesibilitate, care cere doar un singur calcul în punct fix.
210 4 – Cunoaștere și Raționamente
4.2.1.5.4 Implementare
evoluției care duc la inconsecvență sau instabilitate. Vom arăta cum să calculăm
urmele în MCMAS pentru inconsecvență mai întâi și pentru instabilitate după aceea.
De obicei, în practică este bine să se genereze cele mai scurte urme pentru
contraexemple / execuții ale martorilor pentru a reduce dificultatea înțelegerii
acestora. Pentru a realiza acest lucru pentru setarea noastră, utilizăm abordarea
construcției spațiului de stat în MCMAS. Pornind de la setul de stări inițiale S0,
MCMAS poate calcula spațiul de stare în modul următor [4.19].
1 : S := ; next := S0 ; q := S0
2 : while S q do
3 : S := q; next := Image (next , T ) : n := next \S; q := S next ;
4 : end while
5 : return S
În acest algoritm, S este setul de stări accesibile și next , inițializat ca S0, este
setul de stări pe care stările lor succesorii trebuie să fie calculate, ceea ce se face prin
( )
funcția Image next , T . În fiecare iterație, calculăm succesorii next de next și
eliminăm din next stările care au fost procesate anterior de next − S . Această
iterație continuă până când nu se pot adăuga stări noi la S, adică next − S = .
Modificăm algoritmul de generare a spațiului de stare pentru a stoca fiecare
intermediar next : în fiecare iterație i, ne schimbăm lângă next la nexti
Teorema 4: Cea mai scurtă urmă care duce la o stare inconsistentă prin
activarea regulilor g1 → a și g2 → a , poate fi realizată în pașii următori.
1 : S := ; next0 := S0 ; q := S0 ; i := 0
2 : while S q do
3 : i := i + 1
3 : S := q; nexti := Image (nexti −1 , T ) \S; q := S nexti ;
4 : end while
5 : return S , next0 , , nexti
1. Plecând de la i = 0 , testăm fiecare nexti pentru a căuta cel mai mic indice
k astfel încât nextk g1 g2 .
2. Preluăm o stare arbitrară sk din nextk g1 g2 și calculăm predecesorul
Demonstrație: dacă conjuncția a două bucle nu este goală, atunci există o stare
astfel încât să aibă două tranziții de ieșire, una în fiecare buclă. Prin urmare, această
stare duce la apariția inconsecvenței.
Datorită Lemei 4, găsirea buclelor instabile este echivalentă cu găsirea
componentelor puternic conectate (Strongly Connected Components - SCC)
netriviale atunci când sistemul este consistent.
Există mai mulți algoritmi de identificare SCC în literatura de specialitate care
lucrează la reprezentarea BDD a spațiilor de stare [4.25, 4.26]. Cea mai eficientă a
fost raportată în [4.27]. Dar înainte de a aplica acești algoritmi, am putea elimina
stări care nu pot atinge bucle instabile din spațiul de stare pentru a accelera calculul.
Aceste state sunt identificate ca Y în al doilea pas de verificare a stabilității în
Teorema 3.
4.5 Planificarea
Roboții trebuie să-și planifice mișcări precise ale roților, picioarelor, brațelor
și articulațiilor. Planificarea mișcării și planificarea sarcinilor sunt diferite probleme
care utilizează reprezentări distincte și tehnici de căutare. Acesta din urmă a fost
considerat în cea mai mare parte de comunitatea AI, în timp ce primul a fost studiat
de comunitățile de robotică și geometrie de calcul.
În cazuri simple, se pot decupla cele două probleme: planificarea sarcinilor
produce un plan la nivel înalt ale cărui etape care necesită mișcări pot fi gestionate
de un planificator de mișcare specific.
Planificarea mișcării și a manipulării sunt capabilități cheie pentru un robot,
necesitând reprezentări specifice pentru geometrie, cinematică și dinamică. Foile de
parcurs probabilistice (PRM) și arborii aleatori care explorează rapid (RRT) sunt
tehnici bine dezvoltate și mature pentru planificatorii de mișcare, care se extind
eficient și permit numeroase extensii.
Ideea de bază este să eșantionăm aleatoriu spațiul de configurare (spațiul C) al
robotului (adică, spațiul vectorial al parametrilor cinematici ai robotului) într-un grafic
în care fiecare vârf este un punct din spațiul notat Cf al configurațiilor libere (departe
de obstacole) și fiecare margine o legătură directă în spațiul liber între două configurații
libere. La acest grafic se adaugă configurații inițiale și obiective, între care se
calculează o cale. Această cale este apoi transformată într-o traiectorie. Planificarea
manipulării necesită găsirea unor secvențe fezabile de poziții de prindere, fiecare
dintre acestea constituind o constrângere parțială asupra configurației robotului care
își schimbă cinematica. Multe alte probleme deschise rămân în mișcare și în
planificarea manipulării, cum ar fi constrângerile de dinamică și stabilitate, de
exemplu, pentru un robot umanoid, sau constrângerile de vizibilitate, de exemplu,
pentru a permite servoarea vizuală.
Planificarea sarcinilor și planificarea mișcării / manipulării au fost reunite în
câteva abordări. Planificatorul construiește un domeniu de planificare a sarcinilor
dintr-o structură construită de un planificator de mișcare în spațiul C al robotului.
Apoi, planifică simbolic cu un planificator spațial de stat și convertește înapoi
planurile găsite în spațiul C.
Integrarea mișcării la planificarea sarcinilor este, de asemenea, explorată cu
Angelic Hierarchical Planning (AHP). AHP planifică mai multe seturi de stări cu
noțiunea de seturi de stări accesibile. Aceste seturi nu sunt calculate exact, ci
delimitate, de exemplu, de un subset și un superset, sau de o funcție de cost
superioară și inferioară. Aceste costuri sunt obținute prin simulări ale activităților de
bază, inclusiv activități de mișcare, pentru valorile aleatorii ale variabilelor de stare.
O sarcină la nivel înalt are mai multe descompuneri posibile în primitive. Ansamblul
posibilelor descompuneri ale unui plan care conține mai multe sarcini la nivel înalt
este produsul cartezian al tuturor descompunerilor posibile ale acțiunilor sale. Nu
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 223
Fig. 4.12 Modelul unei acțiuni PickUp cu trei variabile de stare: Gripper,
Brațul drept, Planificatorul de manipulare.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 225
4.6 Acțiune
4.8 Observarea/Percepția
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 231
Bibliografie – Capitolul 4
4.1. Stuart J. Russell and Peter Norvig, Artificial Intelligence. A modern Approach,
Prentice Hall, 1995, Enlewood Cliffs, New Jersey 07632, ISBN 0-13-103805-2.
4.2. Ali Ahmad Malik, Arne Bilberg, Framework ti Implement Collaborative Robots
in Manual Assembly: A Lean Automation Approach, Conference: Proceedings
of the 28th International DAAAM Symposium 2017, doi:
10.2507/28th.daaam.proceedings.160.
4.3. Stuart J. Russell and Peter Norvig, Artificial Intelligence: A modern Approach,
Nils J. Nilsson, Elsevier - Artificial Intelligence 1996, 82, pp. 369-380.
4.4. Hongyang Qu and Sandor M. Veres, Verification of Logical Consistency in
Robotic Reasoning, January 4 2018, pp. 36, arXiv:1611.03322v1.
4.5. S. Maghsoudi, I. Watson, Epistemic logic and planning, in: Proceedings of
Knowledge-Based Intelligent Information and Engineering Systems (KES’04),
Vol. 3214 of Lecture Notes in Computer Science, Springer, 2004, pp. 36–45.
4.6. L. Mihaylova, A. Carmi, F. Septier, A. Gning, S. K. Pang, S. J. Godsill,
Overview of bayesian sequential monte carlo methods for group and extended
object tracking, Digital Signal Processing 25 (2014) 1–16.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 233
4.45. Tonino, H., Bos, A., de Weerdt, M., Witteveen, C., 2002. Plan coordination by
revision in collective agent based systems. Artificial Intelligence 142 (2), 121–
145.
4.46. van der Krogt, R., de Weerdt, M., 2005. Plan repair as an extension of planning.
In: ICAPS.
4.47. Alcazar, V., veloso, M. M., Borrajo, D., 2011. Adapting a Rapidly-Exploring
Random Tree for Automated Planning. In: SoCS.
4.48. Burfoot, D., Pineau, J., Dudek, G., 2006. RRT-plan: a randomized algorithm for
strips planning. In: AAAI. pp. 362–365.
4.49. Mausam, Kolobov, A., 2012. Planning with Markov Decision Processes: An AI
Perspective. Morgan & Claypool.
4.50. Boutilier, C., Dean, T., Hanks, S., May 1999. Decision-Theoretic Planning:
Structural Assumptions and Computational Leverage. JAIR 11, 1–94.
4.51. Hansen, E. A., Zilberstein, S., 2001. LAO*: A heuristic search algorithm that
finds solutions with loops. Artificial Intelligence 129 (1), 35–62.
4.52. Bonet, B., Geffner, H., 2006. Learning in Depth-First Search: A Unified
Approach to Heuristic Search in Deterministic, Non-Deterministic,
Probabilistic, and Game Tree Settings. In: ICAPS.
4.53. Barto, A. G., Bradtke, S. J., Singh, S. P., 1995. Learning to Act Using Real-Time
Dynamic Programming. Artificial Intelligence 72 (1-2), 81–138.
4.54. Bonet, B., Geffner, H., 2006. Learning Depth-First Search: A Unified Approach
to Heuristic Search in Deterministic and Non-Deterministic Settings, and Its
Application to MDPs. In: ICAPS.
4.55. Petrick, R., Bacchus, F., 2004. Extending the Knowledge-Based approach to
Planning with Incomplete Information and Sensing. In: ICAPS. pp. 2–11.
4.56. Brenner, M., Nebel, B., Jun. 2009. Continual planning and acting in dynamic
multiagent environments. Autonomous Agent and Multi-Agent Systems 19 (3),
297–331.
4.57. Santana, P. H. R. Q. A., Williams, B. C., Nov. 2014. Chance-Constrained
Consistency for Probabilistic Temporal Plan Networks. In: ICAPS.
4.58. Rockel, S., Neumann, B., Zhang, J., Dubba, K. S. R., Cohn, A. G., Konecny,´ S.,
Mansouri, M., Pecora, F., Sa ˇ ffiotti, A., Gunther, M., Stock, S., Hertzberg, J.,
Tome, A. M., Pinho, A., Seabra Lopes, L., von Riegen, S., Hotz, L., 2013. An
Ontology-Based Multi-Level Robot ´ Architecture for Learning from
Experiences. In: AAAI Spring Symposium. pp. 1–6.
4.59. Lemaignan, S., Espinoza, R. R., Mosenlechner, L., Alami, R., Beetz, M., 2010.
ORO, a knowledge management platform for cognitive ¨ architectures in
robotics. In: IROS.
4.60. Ingrand, F., Chatilla, R., Alami, R., Robert, F., 1996. PRS: a high level supervision
and control language for autonomous mobile robots. In: ICRA. pp. 43–49.
4.61. Firby, R. J., 1987. An investigation into reactive planning in complex domains.
In: AAAI.
4.62. Fikes, R. E., Aug. 1971. Monitored Execution of Robot Plans Produced by
STRIPS. In: IFIP Congress. Ljubljana, Yugoslavia.
236 4 – Cunoaștere și Raționamente
4.63. Pettersson, O., 2005. Execution monitoring in robotics: A survey. Robotics and
Autonomous Systems 53 (2), 73–88.
4.64. Kuipers, B., Byun, Y.-T., 1991. A robot exploration and mapping strategy based
on a semantic hierarchy of spatial representations. Robotics and Autonomous
Systems 8 (1-2), 47–63.
4.65. Kuipers, B., Modayil, J., Beeson, P., MacMahon, M., Savelli, F., 2004. Local
Metrical and Global Topological Maps in the Hybrid Spatial Semantic
Hierarchy. In: ICRA. pp. 4845–4851.
4.66. Konolige, K., Marder-Eppstein, E., Marthi, B., 2011. Navigation in Hybrid
Metric-Topological Maps. In: ICRA.
4.67. Laporte, C., Arbel, T., 2006. Efficient discriminant viewpoint selection for active
bayesian recognition. IJRR 68 (3), 267–287.
4.68. Pineau, J., Montemerlo, M., Pollack, M. E., Roy, N., Thrun, S., Mar. 2003.
Towards robotic assistants in nursing homes: Challenges and results. Robotics
and Autonomous Systems 42 (3-4), 271–281.
4.69. Prentice, S., Roy, N., 2009. The belief roadmap: Efficient planning in belief
space by factoring the covariance. IJRR 28 (11–12), 1448–1465.
4.70. Sridharan, M., Wyatt, J. L., Dearden, R., 2008. HiPPo: Hierarchical POMDPs
for Planning Information Processing and Sensing Actions on a Robot. In:
ICAPS. pp. 346–354.
4.71. Velez, J., Hemann, G., Huang, A., Posner, I., Roy, N., 2011. Planning to
perceive: Exploiting mobility for robust object detection. In: ICAPS.
4.72. Coradeschi, S., Saffiotti, A., 2002. Perceptual anchoring: a key concept for plan
execution in embedded systems. In: Beetz, M., Hertzberg, J., Ghallab, M.,
Pollack, M. E. (Eds.), Advances in Plan-Based Control of Robotic Agents.
Springer-Verlag, pp. 89–105.
4.73. Karlsson, L., Bouguerra, A., Broxvall, M., Coradeschi, S., Saffiotti, A., 2008. To
Secure an Anchor – A recovery planning approach to ambiguity in perceptual
anchoring. AI Communications 21 (1), 1–14.
Abrevieri – Capitolul 4
Abreviere Explicație
KBA Agentul bazat pe cunoaștere
KB Baza de cunoștințe
LTS Labelled Transition System
CTL Computation Tree Logic
LTL Linear Temporal Logic
BDI Belief-Desire-Intention
AgentSpeak Limbaj de programare
LISA Limited Instruction Set Architecture
BDD Binary-Decision-Diagram
BES Boolean Evolution System
ISPL Interpreted System Programming Language
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 237
Problema căutării tiparelor în date este una fundamentală și are o istorie lungă
și de succes. De exemplu, observațiile astronomice extinse ale lui Tycho Brahe din
secolul al XVI-lea i-au permis lui Johannes Kepler să descopere legile empirice ale
mișcării planetare, care, la rândul lor, au oferit o trambulină pentru dezvoltarea
mecanicii clasice. În mod similar, descoperirea regularităților în spectrele atomice a
jucat un rol cheie în dezvoltarea și verificarea fizicii cuantice la începutul secolului
al XX-lea. Domeniul recunoașterii tiparului se referă la descoperirea automată a
regularităților în date prin utilizarea algoritmilor de calculator și la utilizarea acestor
regularități pentru a întreprinde acțiuni precum clasificarea datelor în diferite
categorii. Spre exemplu recunoașterea cifrelor scrise de mână, ilustrat în Figura 5.1.
Fig. 5.1 Exemplu de recunoaștere a cifrelor scrise de mână. [5.1], Figure 1.1, pg. 2
ale valorilor lui t, notate t (t1 , , t N ) . În Fig. 5.2 se prezintă un grafic al unui set de
T
Fig. 5.2 Diagrama unui set de date de antrenament de N = 10 puncte, fiecare cuprinzând o
observare a variabilei de intrare x împreună cu variabila țintă corespunzătoare t. Curba arată
funcția sin (2πx) utilizată pentru a genera datele. Scopul este de a prezice valoarea lui t
pentru o valoare nouă a lui x, fără a cunoaște curba. [5.1], Figure 1.2, pg. 4
Prin generarea de date în acest mod, captăm o proprietate a mai multor seturi
de date reale, și anume că acestea posedă o regularitate subiacentă, pe care dorim să
o învățăm, dar că observațiile individuale sunt corupte de zgomot aleatoriu. Acest
zgomot ar putea apărea din procese intrinsec stochastice (adică aleatorii), cum ar fi
dezintegrarea radioactivă, dar mai ales se datorează existenței unor surse de
variabilitate care sunt ele însele neobservate.
Exploatarea setului de instruire pentru a face predicții ale valorii tˆ a variabilei
țintă pentru o nouă valoare x̂ a variabilei de intrare. După cum vom vedea mai târziu,
aceasta implică încercarea de a descoperi funcția sin ( 2 x) .
Acest lucru este dificil, deoarece trebuie realizată o generalizare dintr-un set
de date finite, multe date fiind corupte cu zgomot, astfel încât pentru un x̂ dat există
242 5 – Machine-Learning
j =0
1 N
E ( w) = y ( xn , w) − tn ,
2
2 n =1
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 243
unde: factorul 1/2 este inclus pentru comoditate ulterioară. Funcția de eroare este o
cantitate non-negativă care ar fi zero dacă și numai dacă funcția y ( x, w) ar trece
exact prin fiecare punct de date de antrenament (Fig. 5.3).
Problema ajustării curbei se poate rezolva prin alegerea unei valori a lui w pentru
care E ( w) este cât mai mică posibil. Derivatele funcției de eroare în raport cu coeficienții
vor fi liniare în elementele lui w*, astfel încât minimizarea funcției are o soluție unică, care
(
pot fi găsite în formă închisă. Polinomul rezultat este dat de funcția y x, w .
*
)
Problema alegerii ordinii M a polinomului este un concept numit comparație de
model sau selecție de model. În Fig. 5.4, prezentăm patru exemple de rezultate ale adaptării
polinoamelor având ordinele M = 0, 1, 3 și 9 la setul de date prezentat în Fig. 5.2.
Fig. 5.4 Graficele de polinoame având diferite ordine M, prezentate în curbe roșii, adaptate
la setul de date prezentat în Fig. 5.2. [5.1], Figure 1.4, pg. 7
.
Se observă că polinomele constante ( M = 0) și de ordinul întâi ( M = 1) dau
potriviri destul de slabe datelor și, în consecință, reprezentări destul de slabe ale funcției
sin ( 2 x) . Polinomul de ordinul trei ( M = 3) pare să dea cea mai bună potrivire
funcției sin ( 2 x) a exemplelor prezentate în Fig. 5.4. Când mergem la un polinom de
244 5 – Machine-Learning
curba ajustată oscilează și oferă o reprezentare foarte slabă a funcției sin ( 2 x) . Acest
din urmă comportament este cunoscut sub numele de supraadaptare.
O oarecare perspectivă cantitativă asupra dependenței performanței generalizării
în funcție de M se poate obține luând în considerare un set de test separat, care cuprinde
100 de puncte de date generate folosind exact aceeași procedură pentru a genera punctele
set de antrenament. Pentru fiecare alegere a lui M, putem evalua apoi valoarea reziduală
( ) dată de (1.2) pentru datele de antrenament și putem evalua și E (w )
a lui E w
* *
pentru setul de date de testare. Uneori este mai convenabil să se utilizeze rădăcina-medie-
pătratică în care împărțirea la N ne permite să comparăm diferite dimensiuni de seturi de
date pe picior de egalitate, iar rădăcina pătrată asigură faptul că ERMS este măsurat pe
aceeași scară (și în aceleași unități) ca variabila țintă t.
Fig. 5.6 Graficele soluțiilor obținute prin reducerea la minimum a funcției de eroare sumă
de pătrate folosind polinomul M = 9 pentru N = 15 puncte de date (graficul din stânga) și
N = 100 puncte de date (graficul din dreapta). Vedem că mărirea dimensiunii setului de
date reduce problema supraadaptării [5.1], Figure 1.6, pg. 9
1 N 2
E ( w) = y ( xn , w) − tn + w
2
2 n =1 2
Fig. 5.7 Diagramele de M = 9 polinoame montate pe setul de date prezentat în Figura 5.2
folosind funcția de eroare regularizată E ( w) pentru două valori ale parametrului de
regularizare λ corespunzător ln = −18 și ln = 0 . Cazul fără regulator, Adică, = 0 ,
corespunzător ln = − , este prezentat în partea dreaptă jos a figurii 5.4. [5.1],
Figure 1.7, pg. 10,
Dacă, totuși, folosim o valoare prea mare pentru λ atunci obținem din nou o potrivire
slabă, așa cum se arată în Fig. 5.7 pentru ln = 0 . Coeficienții corespunzători din
polinoamele potrivite sunt date în Tabelul 1.2, arătând că regularizarea are valoarea
dorită efect de reducere a magnitudinii coeficienților.
ln = − ln = −18 ln = 0
*
w 0
0.35 0.35 0.13
1
Tehnică a măsurării distanțelor parcurse de un vehicul sau de un pieton
250 5 – Machine-Learning
Fig. 5.10 2D grade de libertate pentru modelul de bază deformabil. (a) translație, (b) scalare,
(c) rotație, (d) - (e) înclinare prin deformare în perspectivă. [5.29], Figure 1.4, pg. 9.
Fig. 5.11 Gradele de libertate ale extensiei 3D pentru modelul de bază deformabil.
[5.29], Figure 1.5, pg. 10.
Aceste șase grade de libertate sunt valabile pentru obiectele plane. Când se
lucrează cu obiecte 3D, trebuie adăugate mai multe grade de libertate. În abordarea
propusă, sunt necesare doar două noi grade de libertate, perechea (X', Y') cu
coordonatele pixelilor din partea frontală a modelului 3D deformabil ( Fig. 5.11.a),
acoperind deplasările obiectelor peste planul paralel cu imaginea și rotațiile peste
axa verticală. Rotațiile care nu sunt acoperite de X’, Y’ pot fi gestionate fără a
adăuga nici un alt DOF, permițând pur și simplu parametrilor X și Y să fie
negativi. Efectul unei valori negative de X este prezentat în Fig. 5.11.b, în timp ce
un Y negativ este prezentat în Fig. 5.11.c.
Acest set de 6 DOF nu acoperă cu precizie toate deformările perceptibile
posibile ale unui obiect, dar permit aproximarea lor suficientă pentru a recunoaște
un obiect generic dacă sunt utilizate detalii adăugate adecvate și oferă o reducere a
spațiului de căutare a parametrilor.
Detectarea obiectului este acum un proces de căutare în spațiul parametrizat
al modelului, comparând detaliile adăugate modelului cu terenul din spate și cu
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 255
I ( x, y ) = H ( x, y ) , L ( x, y ) , S ( x, y ) , x 0, Xd ) , y 0, Yd )
O modalitate simplă și eficientă de a genera un ROI dependent de obiect este
să selectați o culoare reprezentativă pentru obiect și să segmentați regiunile de
258 5 – Machine-Learning
CI = ( H H , S S , L L)
Segmentarea culorilor se face în componente H, S și L ale imaginii I ( x, y )
separat și combinându-le cu o operație logică AND, ducând la imaginea binară
B ( x, y ) :
( H − H ) H ( x, y ) ( H + H )
1 AND ( L − L) L ( x, y ) ( L + L)
B ( x, y ) =
AND ( S − S ) S ( x, y ) ( S + S )
0 otherwise
Segmentarea se face prin praguri într-un spațiu HLS corectat urmat de unele
transformări morfologice. În prima etapă de formare, sistemul trebuie să învețe cele mai
bune valori prag pentru segmentarea reperului. Sunt estimate pragurile superioare și
inferioare pentru componentele Hue, Saturation și Luminance. Aceste șase valori
(G = 5) sunt făcute pentru a compune genomul indivizilor unui nou GA, utilizat pentru
căutarea prin spațiul de culoare al imaginii de antrenament: C0 = H , C1 = H ,
C2 = L , C3 = L , C4 = S , C5 = S .
Funcția de antrenament pentru acest GA trebuie să încurajeze regiunile
segmentate, generate de fiecare dată, să se potrivească cu casetele țintă definite în
imaginile de antrenament NT. Fiecare imagine de antrenament I Tn ( x, y ) ,
n 0, N T ) , care va conține tn casete țintă Aj ( x, y ) , j 0, tn ) . Pe de altă parte,
n
regiunile segmentate din afara casetelor țintă nu sunt de dorit. Rezultatul ideal al
segmentării ar trebui să fie o imagine neagră binară cu zonele corespunzătoare ale
casetelor țintă în alb, BTn ( x, y ) :
timp ce nu trebuie (sau invers). Numărul de pixeli albi după trecerea XOR este apoi o
măsură utilă a erorii de segmentare pentru imaginea de antrenament considerată.
Eroarea totală de segmentare pentru o persoană este obținută prin repetarea acestei
operații pentru toate seturile de imagini de antrenament și acumularea pixelilor clasificați
greșit în fiecare imagine:
Xd −1 Yd −1 n
( ) ( )
NT −1
1
E C j = BT ( x, y ) XORB x, y, C j
n k
NT n =0 x =0 y =0
Fig. 5.15 Exemple de segmentare învățate: (a) semn de circulație pentru stație de autobuz,
(b) panou informativ de autostradă, c) panou informativ de supermarket, pentru o cameră
color. Iar în imaginea alb-negru s-a considerat o aproximare grosieră, fără a ține cont de
nuanțele de culoare.
Etapa de învățare a intervalului de culoare face calibrarea inutilă a camerei
color, deoarece pragurile sunt selectate folosind imagini capturate de aceeași cameră.
Cu toate acestea, dacă trebuie folosită o cameră nouă cu o bază de date de obiecte
învățată cu o cameră diferită, este suficientă o ajustare grosieră a culorilor prin orice
metodă aproximativă.
Pentru a realiza timpii de procesare practici, o nouă particularizare a fost
făcută sistemului. Multe dintre obiectele de zi cu zi sunt plane, sau a treia dimensiune
a acesteia este mică în comparație cu cealaltă, iar multe dintre obiectele 3D au fețe
aproape plane care pot fi considerate ca obiecte plane separate.
Mai mult, anumite obiecte sunt întotdeauna văzute cu aceeași orientare:
obiecte atașate la pereți sau grinzi, așezate pe podea pe o masă și așa mai departe.
Având în vedere aceste restricții, este necesar să se ia în considerare doar cinci din
cele 6 DOF propus anterior: X, Y, X, Y, SkY. Această reducere a spațiului de
căutare a parametrilor modelului deformabil crește semnificativ timpul de calcul.
Această simplificare reduce aplicabilitatea sistemului la obiectele plane sau
fețele obiectelor 3D, dar aceasta nu este o pierdere de generalitate, ci doar o
operațiune de reducere a timpului: problemele legate de implementarea întregului
sistem 3D vor fi date de-a lungul acestui text. Cu toate acestea, multe obiecte
interesante pentru diferite aplicații pot fi gestionate în ciuda simplificării, în special
a tuturor tipurilor de panouri informative.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 261
Modelul 2D redus deformabil este prezentat în Fig. 1.10. Cei cinci parametri
ai săi sunt codați binar în genomul oricărui date GA: coordonatele carteziene ale
punctului (dată) (X, Y) în imagine, dimensiunea sa orizontală și verticală în pixeli
(X, Y) și o măsură a distorsiunii perspectivei sale verticale (SkY) , așa cum se
arată în ecuație pentru a zecea persoană, cu G = 5 DOF și q = 10 biți per variabilă
(pentru acoperirea a 640 pixeli). Variațiile acestor parametri fac ca modelul
deformabil să se deplaseze prin imaginea care caută obiectul selectat.
C j = (b11i , b12i , , b1iq ) ; (b21
i i
, b22 , i
,b
2q ) ; ; (b
i
G1
i
,b ,
G2 , b ) .
i
Gq
Xi Yi SkYi
X
() ()
0
x = Y x X
y X SkY X y0 + Y .
0
X 2 Y0
0
Este necesară o funcție de antrenament care să compare detaliile specifice
obiectului peste modelul deformat cu fundalul imaginii. Din nou, aproape orice
metodă poate fi utilizată pentru a face acest lucru.
Au fost evaluate câteva seturi de detalii globale: funcția de distribuție a
culorilor și a culorilor, și textura medie, dar s-au dovedit incapabile să facă o potrivire
precisă și au fost excesiv atrași de zonele de imagine incorecte. Au fost apoi evaluate
câteva seturi de detalii locale: detectarea liniei verticale și detectarea colțurilor. Au
dovedit efectul opus: s-au găsit mai multe potriviri foarte precise, dar după o viteză
262 5 – Machine-Learning
de convergență foarte mică: a fost dificil să se alinieze exactmodelul peste obiect, iar
antrenament-ul a fost scăzut, dacă da.
Fig. 5.17 Set de detalii specifice obiectului selectat. (a) obiect care trebuie învățat, (b)
locații posibile pentru ferestrele tipărite, (c) ferestre tipărite memorate după deformarea
modelului. [5.29], Figura 1.11, pg. 18
Setul de detalii selectat în cele din urmă este compus din patru „ferestre de
model” de dimensiuni mici, care sunt situate la anumite poziții învățate de-a lungul
diagonalelor modelului, așa cum se arată în Fig. 5.17 b.
Aceste ferestre tipar au o dimensiune cuprinsă între 10 și 20 de pixeli și sunt
memorate de sistem în timpul învățării unui obiect nou, la distanțe învățate
ai (i = 0, ,3) . Distanțele relative di de la colțurile modelului până la ferestrele
tiparului,
ai
di = ,
D
sunt memorate împreună cu ferestrele-model corespunzătoare. Aceste distanțe
relative sunt menținute constante în timpul deformărilor modelului de bază în etapa
de căutare, astfel încât poziția ferestrelor tipar urmează, așa cum se arată în
Fig. 5.17.c. Ferestrele tipar vor fi învățate de sistem în poziții cu informații locale
distincte, cum ar fi marginile interne sau externe ale obiectului.
Corelația normalizată asupra componentei L (conform ecuației următoare)
este utilizată pentru compararea ferestrelor model, M k ( x, y ) , cu fundalul imaginii,
L ( x, y ) , în pozițiile fixate de fiecare parametru individual, pentru furnizarea unui
evaluarea funcției de mișcare:
( ) ( ) (
3 − 0 C i 2 C i − 1 C i 3 C i ) ( )−
(
E C i = ) 3
−
( ) ( ) (
0 C i 1 C i 2 C i 3 C i ) ( )
3
(
F C i = ) 1
(
0.1 + E C i )
Termenul de eroare E din ecuațiile anterioare este o măsură a cât de diferit de
obiect este modelul deformat. Acesta include un termen global cu produsul corelației
celor patru ferestre tipar și doi termeni cu produsul corelațiilor ferestrelor tipar în
aceeași diagonală. Acești ultimi termeni forțează modelele deformate să se
potrivească cu întinderea completă a obiectului și evită să potrivească doar o parte
din acesta. Rețineți că acești termeni pot avea valori scăzute, dar nu vor fi niciodată
zero în practică, deoarece corelația nu atinge niciodată această valoare. În cele din
264 5 – Machine-Learning
Performanța acestei ferestre de tipar este evaluată prin definirea unei funcții cu mai
mulți termeni:
1. Un termen pozitiv cu corelația ferestrei într-un vecinătate foarte mică (3-
5 pixeli) a poziției teoretice a centrului ferestrei (dată de valoarea di
selectată peste diagonalele casetelor țintă).
2. Un termen negativ care calculează corelația maximă a ferestrei tipar în
interiorul casetei țintă, dar în afara zonei teoretice anterioare.
3. Un termen negativ cu corelația maximă în zonele aleatorii din afara
casetelor țintă.
ferestre tipar selectate pentru unele obiecte sunt prezentate (mărite) în Fig. 5.19;
dimensiunea sa reală în pixeli poate fi ușor apreciată.
GA trebuie apoi să valideze sau să respingă aceste ipoteze, prin rafinarea ajustării la
un ROI corect până când se generează o potrivire validă sau decolorându-se de la un
ROI incorect. S-a demonstrat cu rezultate practice că, dacă rentabilitatea investiției este
corect selectată, GA poate converge în câteva generații. De asemenea, dacă acest lucru
nu se întâmplă, va însemna că obiectul dorit nu a fost prezent în imagine. Acest lucru
accelerează sistemul, astfel încât să poată fi utilizat în aplicații practice.
O segmentare simplă și rapidă se face pe imaginea țintă, pentru a stabili Regiuni
de interes (ROI). Se realizează un prag în imaginea color după ecuația (3) și pragul
învățat în etapa de antrenament. Zonele zonelor în care modelul selectat are o
probabilitate relevantă de a fi găsit. Apoi, unele operații morfologice sunt efectuate în
imaginea binară pentru conectarea contururilor întrerupte. După aceea, regiunile
conectate cu geometrie adecvată sunt selectate ca ROI sau ipoteze de prezență a
obiectelor, aceste ROI pot fi considerate ca ipoteze de localizare a modelului.
Căutarea obiectelor este o căutare evolutivă în spațiul parametrilor modelului
deformabil. Un algoritm genetic (GA) este utilizat pentru a confirma sau respinge
ipotezele ROI. Genomul fiecărui individ este alcătuit din cinci gene (sau variabile):
coordonatele carteziene ale individului (x, y) în imagine, dimensiunea sa orizontală și
verticală în pixeli ( X , Y ) și o măsură a distorsiunii perspectivei sale verticale
(SkewY).
Într-un sens general, funcția de fitness poate utiliza detalii specifice obiectului
global și / sau local. Detaliile globale nu au o locație geometrică precisă în partea
laterală a obiectului, cum ar fi statistici ale nivelurilor sau culorilor de gri, texturi etc.
Detaliile locale sunt situate în anumite puncte din interiorul obiectului, de exemplu
colțuri, patch-uri de culoare sau textură etc. Utilizarea detaliilor globale nu are
nevoie de o aliniere perfectă între modelul deformabil și obiect pentru a obține un
scor mare, în timp ce utilizarea detaliilor locale. Detaliile globale permit convergența
cea mai rapidă, dar detaliile locale permit una mai precisă. Un compromis între
ambele tipuri de detalii va conduce la cel mai bun detaliu.
Estimarea rezultatelor funcției de antrenament, folosește rezultatele corelației
normalizate (pe componenta de luminanță a imaginii țintă). Corelația pentru fiecare
fereastră i este calculată numai într-un areal foarte mic (aproximativ 7 pixeli) al
pixelului din imaginea țintă care se potrivește cu poziția centrală a ferestrei tipar, în
scop de calcul în timp real. Utilizarea a patru mici ferestre de tipar are avantaje
enorme față de utilizarea clasică a unei imagini de tipar mare pentru corelație. Poziția
relativă a ferestrelor tipar în interiorul imaginii poate fi modificată în timpul
procesului de căutare. Această idee este baza algoritmului propus, deoarece face
posibilă găsirea unor repere cu dimensiuni aparente foarte diferite și deformări de
perspectivă în imagine. Mai mult, ferestrele tipar pentru un reper nu trebuie rotite
sau scalate înainte de corelare (presupunând că sunt prezente doar transformări de
perspectivă), datorită dimensiunilor lor mici. În cele din urmă, timpul de calcul
268 5 – Machine-Learning
pentru o căutare este mult mai mic pentru corelația celor patru tipare de ferestre decât
pentru corelația unui tipar mare.
Implementarea descrisă a sistemului de detectare a obiectelor va găsi
întotdeauna obiectul dacă este prezent în imagine sub limitele descrise anterior.
Întrebarea critică care trebuie folosită practic este timpul pe care îl alocă. Dacă
sistemul este utilizat numai cu inițializare aleatorie, un număr mare de date (imagini)
trebuie incluse în prupul de testare pentru a asigura explorarea întregii imagini într-
un timp finit. Evaluarea funcției de antrenament selectate și polarizarea individuală
accelerează convergența odată ce o imagine se apropie suficient de mult de obiect,
dar pot fi necesare câteva zecimi și poate câteva sute de iterații. Desigur, există
întotdeauna posibilitatea ca o mutație norocoasă să facă treaba rapid, dar acest lucru
nu ar trebui luat în considerare. În plus, nu există nicio modalitate de a declara că
obiectul selectat nu este prezent în imagine, cu excepția lăsării algoritmului să ruleze
mult timp fără nici un rezultat. Această metodologie ar trebui utilizată numai dacă
este sigur că obiectul este prezent în imagine și nu există restricții de timp pentru
căutare.
Când se utilizează ROI, mai multe imagini sunt concentratei în zone
interesante, astfel încât populația poate fi redusă la un număr mai mic de date și
convergența ar trebui să dureze doar câteva zeci de iterații, deoarece probabilitatea
de a avea unele modele deformate lângă obiect este mare. Cel puțin, ar trebui utilizat
acest mod de lucru, în locul celui anterior. Cu toate acestea, există o mulțime de
indivizi și iterații de rulat, iar timpii de căutare pe un computer sunt încă de ordinul
a câteva minute, în imagini de 640x480 pixeli. Acest lucru restricționează puternic
aplicațiile algoritmului. Și există și problema asigurării absenței obiectului în
imagine.
În cele din urmă, dacă sistemul cu ROI specific obiectului, de exemplu cu
strategia reprezentativă de segmentare a culorii descrisă, lucrurile se schimbă drastic.
Într-un caz real general, ar trebui să existe doar câteva ROI; cele excesiv de mici sunt
respinse deoarece vor fi introduce zgomot sau obiecte situate prea departe pentru a
avea suficientă rezoluție pentru identificarea acestuia. Din aceste ROI, unele ar putea
aparține obiectului căutat (pot exista diferite instanțe ale obiectului în imagine), iar
restul nu. Mai multe obiecte, aproximativ unul sau câteva zeci, sunt inițializate
împrăștiate în jurul ROI selectat, până ajung la 2/3 din populația totală. Restul
populației este inițializată aleatoriu pentru a asigura o diversitate genetică suficientă
pentru operațiunile de încrucișare. Dacă un ROI face parte într-adevăr din obiectul
dorit, imaginile apropiate acestuia vor rafina rapid potrivirea, în timpul evaluării
antrenamentului. Asta înseamnă un ciclu rapid cu foarte puține iterații, de obicei două
sau trei. Dacă rentabilitatea investiției nu face parte din obiect, scorul de antrenament
pentru datele din jurul ROI va fi scăzut, iar derivata genetică îi va muta pe descendenți.
Strategia de aici este de a utiliza doar datele necesare pentru a confirma sau respinge
rentabilitatea investiției prezentă în imagine (plus unele aleatorii în plus); cu numărul
obișnuit de rentabilitate a investiției, este suficientă aproximativ o sută de date. Apoi,
GA funcționează pentru câteva iterații. Dacă obiectul era prezent în imagine, în două
sau trei iterații va fi montat de niște modele deformate. Dacă după cele câteva iterații
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 269
nu s-a confirmat nici un ROI, se consideră că obiectul nu este prezent în imagine. Mai
mult, dacă nu s-a găsit ROI pentru etapa de inițializare, probabilitățile ca un obiect să
fie în imagine sunt foarte scăzute (dacă segmentarea a fost învățată corect), iar procesul
de căutare se oprește aici. Timpii de procesare tipici sunt mici (sutimi de secunde) dacă
nu se găsește ROI și mai mic pe iterație dacă există ROI în imagine. Deci, timpul total
pentru un ciclu este mic (sutimie de secunde) și mai puțin pentru a declara că nu există
dacă nu a fost prezent ROI. De reținut că toate procesările sunt realizate prin mijloace
software, programate (C++, Open CV), și nu au fost realizate optimizări în
programarea GA - doar tehnica de polarizare este non-standard -. În aceste condiții,
mutația are o probabilitate foarte mică de a-și asuma un rol relevant, astfel încât
calculul ei ar putea fi evitat. Mutația este esențială numai dacă căutarea este extinsă la
mai multe iterații atunci când obiectul nu este găsit, dacă restricțiile de timp permit
acest lucru.
Dacă obiectul dorit a fost găsit în imagine, vor fi necesare câteva informații
despre acesta. Pentru navigația topologică, adesea singura informație necesară de la
un reper este prezența sau absența sa în mediul imediat al robotului. Cu toate acestea,
pot fi necesare mai multe informații pentru alte strategii de navigație, indiferent de
natura lor topologică sau geometrică. Pentru aplicații generale, sunt extrase locația
obiectului, poziția obiectului, distanța, dimensiunea și distorsiunea în perspectivă a
fiecărui reper. Unele obiecte sunt frecvent utilizate pentru a conține informații
simbolice folosite de oameni. Acesta este cazul semnelor de circulație, panourilor
informative pe drumuri și străzi, semnelor clădirilor interioare, etichetelor și
codurilor de bare etc. Toate acestea au fost învățate și pot fi detectate de sistem,
printre altele. Mai mult, dacă reperul găsit este plăcuța de identificare a unui birou,
următorul pas este citirea conținutului acestuia. Această abilitate este utilizată pe
scară largă de oameni, iar alte abordări de cercetare au fost făcute recent în acest sens
[5.34]. În lucrarea noastră, un algoritm simplu de recunoaștere optică a caracterelor
(OCR) a fost conceput pentru sarcina de citire, discutat pe scurt mai jos.
Sistemul prezentat include o rutină de extragere a simbolurilor pentru
segmentarea caracterelor și a icoanelor prezente în obiectele detectate. Această rutină
este analizată în detectarea fundalului simbolurilor prin analiza histogramei.
Simbolurile sunt extrase mai întâi segmentând regiunea de fundal pentru ele
(selectând ca fundal cea mai mare regiune din obiectul Histograma luminanței), apoi
luând regiunile conectate în interiorul fundalului ca simboluri
Odată ce fundalul este extras și segmentat, găurile din interiorul acestuia sunt
considerate simboluri candidate. Fiecare dintre aceste pete sunt analizate pentru a se
asigura că au dimensiunea potrivită: petele relativ mari (de obicei înseamnă unele
caractere îmbinate în procesul de segmentare) sunt împărțite recursiv în două caractere
noi și pete relativ mici (fragmente de caractere rupte în segmentare (sau semnele de
punctuație) sunt îmbinate cu unul dintre vecinele lor. Apoi, aceste caractere pete sunt
grupate în linii de text și fiecare linie de text este împărțită în cuvinte (fiecare cuvânt
este apoi un grup de unul sau mai multe caractere pete). Simbolurile segmentate sunt
normalizate la imagini binare de 24x24 pixeli și se alimentează către un strat de intrare
a rețelei neuronale de propagare înapoi. Deformările mici ale simbolurilor sunt tratate
270 5 – Machine-Learning
Bibliografie – Capitolul 5
5.4. Hastie, T. and W. Stuetzle (1989). Principal curves. Journal of the American
Statistical Association 84(106), 502–516.
5.5. Hoerl, A. E. and R. Kennard (1970). Ridge regression: biased estimation for
nonorthogonal problems. Technometrics 12, 55–67.
5.6. Liu, Y.; Yamamura, T.; Ohnishi, N.; Surgie, N., (1998) “Characterbased
mobile robot navigation”. 1998 IEEE International Conference on Intelligent
Vehicles, pp. 563-568.
5.7. Borenstein, J. and Feng. L., (1996) "Measurement and correction of systematic
odometry errors in mobile robots". IEEE Journal of Robotics and Automation,
vol. 12, no. 6, pp. 869-880.
5.8. Rue H. and Husby O.K. (1998) “Identification of partly destroyed objects using
deformable templates”. Statistics and Computing, vol.8, nº 3, pp.221-228.
5.9. Sim, R., Dudek, G., “Mobile robot localization from learned landmarks”.
International Conference on Intelligent Robots and Systems, vol. 2. pp. 1060-
1065.
5.10. Iida, M., Sugisaka, M., Shibata, K., (2002) “Application of direct vision based
reinforcement learning to a real mobile robot”. International Conference on
Neural Information Processing, vol. 5 pp. 2556- 2560.
5.11. Thompson, S., Zelinsky, A., (2002) “Accurate local positioning using visual
landmarks from a panoramic sensor”. IEEE International Conference on
Robotics and Automation, pp. 2656-2661.
5.12. Franz, Matthias O. (1998) “Learning view graphs for robot navigation”.
Autonomous robots, vol.5, pp. 111-125.
5.13. Sim, R., Dudek, G., “Mobile robot localization from learned landmarks”.
International Conference on Intelligent Robots and Systems, vol. 2. pp. 1060-
1065.
5.14. Beccari, G.; Caselli, S.; Zanichelli, F. (1998) "Qualitative spatial
representations from task-oriented perception and exploratory behaviors".
Robotics and Autonomous Systems, vol. 25, pp. 165-175.
5.15. Launay, F., Ohya, A., Yuta, S. (2002) “A corridors lights based navigation
system including path definition using topologically corrected map for indoor
mobile robots”. IEEE International Conference on Robotics and Automation,
pp. 3918-3923.
5.16. Cootes, T.F., Taylor, C.J., Lanitis, A., Cooper, D.H., Graham, J. (1993)
“Building and using flexible models incorporating gray level information”.
International Conference on Computer Vision, pp.242- 246.
5.17. Yuille, A., Halliman, P., Cohen, D., (1992) “Feature extraction from faces
using deformable models”, International Journal of Computer Vision, vol.8,
no. 2, pp.99-111.
5.18. Betke, M., Makris, N., (2001) “Recognition, resolution, and complexity of
objects subject to affine transformations”, International Journal of Computer
Vision, vol.44, no. 1, pp. 5-40.
5.19. Yu, Z., Jain, A.K., (2000) “Object localization using color, texture and shape”,
Pattern Recognition, vol.33, no. 4, pp. 671-84..
272 5 – Machine-Learning
Abrevieri – Capitolul 5
Abreviere Explicație
ROI
Region Of Interest
OCROptical Character Recognition
RMSRoot-Mean-Square
NMRNuclear Magnetic Resonance
GA
Genetic Algorithm
HSL
Hue, Saturation, Lightness
RGBRed Green, Blue
CIELAB International Commission Illumination L-lightness, a* și b*
pentru cele patru culori unice ale viziunii umane: roșu, verde,
albastru și galben
LDH Local Difference Histogram
6. DEEP LEARNING –
ÎNVĂȚAREA PROFUNDĂ
6.1 Introducere
Învățarea profundă este știința formării unor rețele neuronale artificiale mari.
Rețelele neuronale profunde (Deep Neural Networks - DNN) pot avea sute de
milioane de parametri [5,6.2], permițându-le să modeleze funcții complexe, cum ar
fi dinamica neliniară. Ele formează reprezentări compacte ale stării din datele brute,
de înaltă dimensiune, ale senzorilor multimodali care se găsesc în mod obișnuit în
sistemele robotizate [6.3] și, spre deosebire de multe metode de învățare automată,
nu necesită un expert uman care să proiecteze manual vectori de caracteristici din
datele senzorilor la proiectare. timp.
DNN-urile pot, totuși, să prezinte provocări deosebite în sistemele robotizate
fizice, unde generarea de date de antrenament este, în general, costisitoare, iar
performanța sub-optimă în antrenament reprezintă un pericol în unele aplicații. Cu
toate acestea, în ciuda unor astfel de provocări ale roboticii, se găsesc alternative
creative, cum ar fi utilizarea datelor de instruire prin manipulare digitală,
automatizarea antrenamentului și utilizarea mai multor DNN-uri pentru a îmbunătăți
performanța și a reduce timpul de formare.
Aplicarea învățării profunde la robotică este un domeniu activ de cercetare.
Ideea utilizării învățării automate în controlul roboților cere oamenilor să fie
dispuși să renunțe la un anumit control. Acest lucru poate părea contraintuitiv la
început, dar beneficiul pentru acest lucru este că sistemul poate începe apoi să învețe
singur. Acest lucru face ca sistemul să se poată adapta și, prin urmare, are potențialul
de a utiliza în cele din urmă direcția care vine de la oameni.
DNN-urile sunt potrivite pentru utilizarea cu roboți, deoarece sunt flexibile și
pot fi utilizate în structuri pe care alte modele de învățare automată nu le pot suporta.
Fig. 6.2 prezintă patru structuri comune pentru utilizarea DNN-urilor cu roboți.
un strat softmax (rezultat al aplicării unei regresii logistice multiclasă) pentru stratul
de ieșire al rețelei neuronale [6.4]. În mod tradițional, cea mai populară metodă de
optimizare pentru rețelele neuronale este descendența stocastică de gradient [6.5],
dar metodele îmbunătățite precum RMSProp [6.6] și Adam [6.7] au obținut recent o
utilizare pe scară largă. După ce antrenamentul este terminat, noii vectori pot fi
alimentați ca x pentru a calcula predicțiile corespunzătoare pentru y.
Structura B se numește autoencoder [6.8].
Este un model comun pentru facilitarea „învățării nesupravegheate”, fiind
nevoie de două DNN, numite „codificator” și „decodificator”. În această
configurație, numai x trebuie furnizat de utilizator, iar s este o codificare „latentă”
sau internă generată de DNN. De exemplu, x poate reprezenta imagini observate de
camera unui robot, care conțin mii sau chiar milioane de valori.
Codificatorul ar putea utiliza straturi convoluționale, despre care se știe că sunt
eficiente pentru codarea hash a imaginilor [6.9-6.11].
Învățând să reducă x la s, codificatorul automat își creează în esență propria
codificare internă a „stării”. Nu va folosi neapărat o codificare care are sens pentru
oameni, dar va fi suficient ca DNN să reconstruiască aproximativ x. Cum sunt utile
codificatoarele automate în robotică? Uneori, este posibil ca proiectantul robotului
să nu știe exact ce valori sunt necesare robotului. Autocodificatorii permit sistemului
să descopere acest lucru în mod autonom. Acest lucru devine deosebit de util atunci
când este utilizat un hibrid de învățare supravegheată și nesupravegheată. De
exemplu, utilizatorul poate impune anumite valori în s (coordonate de poziție
unghiuri articulare) și DNN-urile vor învăța să lucreze cu acele valori, folosind
celelalte elemente libere din s în scopuri proprii de codificare.
Autocodificatorii pot fi folosiți și pentru inițializarea unor părți ale structurii
C [6.12] și utilizează doar porțiunea de decodare a modelului pentru a prezice
observațiile dintr-o reprezentare internă a stării.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 277
6.5.2 Exemple
instruirea celui mai bun model. Plasa elastică combină metodele bine stabilite de
regularizare L1 și L2 pentru a promova robustețea împotriva saturației în greutate și,
de asemenea, pentru a promova raritatea în greutăți [6.64]. Metode mai noi de
regularizare, inclusiv abandonul [6.65] și drop-connect [6.66] au obținut rezultate
empirice și mai bune. Există, de asemenea, mai multe metode de regularizare special
pentru a îmbunătăți robustețea cu autoencoderi [6.67, 6.68].
Straturile cu destinație specială pot face, de asemenea, o diferență
semnificativă cu DNN-urile. Este o practică obișnuită să alternăm straturile de
convoluție și straturile maxime.
Straturile de grupare reduc numărul total de greutăți din rețea și permit, de
asemenea, modelului să învețe să recunoască obiecte, indiferent de locul în care apar
în câmpul vizual [6.69].
Straturile de normalizare în loturi pot produce îmbunătățiri semnificative ale
ratei de convergență prin menținerea gradientului într-un interval în care acesta va
afecta greutățile tuturor neuronilor [6.70]. Și straturile reziduale pot permite
formarea unor modele mult mai profunde și, prin urmare, mai flexibile [6.71]. Pentru
a utiliza în mod eficient modelele de învățare profundă, este important să vă instruiți
pe una sau mai multe unități de procesare grafică cu scop general (General Purpose
Graphical Processing Units GPGPU) [6.72].
Au fost încercate multe alte modalități de paralelizare a rețelelor neuronale
profunde, dar niciuna dintre ele nu produce încă câștigurile de performanță ale
GPGPU-urilor [6.73].
Deoarece DNN-urile necesită utilizarea a atât de multe tehnici specializate,
folosirea unui set de instrumente existent care oferă implementări gata făcute este un
imperativ. Din fericire, comunitatea de învățare profundă a fost foarte utilă în
lansarea de implementări open source a noilor dezvoltări, așa că multe seturi de
instrumente de învățare profundă open source bine rafinate sunt acum disponibile:
Tensorflow a crescut recent în popularitate [6.74].
Theano este o platformă bazată pe Python, care oferă o paralelizare a unității
de procesare grafică cu scop general (GPGPU) pentru învățarea profundă [6.75].
Câteva seturi de instrumente populare se construiesc deasupra Theano, inclusiv
Lasagne și Pylearn2 [6.76].
Keras este un pachet în jurul Tensorflow și Theano, care caută să simplifice
interfețele pentru învățarea profundă [6.77]. Torch oferă un mediu asemănător
Matlab scris în Lua pentru învățare profundă, cu accent deosebit pe rețelele
neuronale convoluționale [6.78]. În C ++, Caffe este unul dintre cele mai populare
seturi de instrumente pentru rețelele neuronale convoluționale performante [6.79].
De asemenea, oferă legături Python. Sunt disponibile alte seturi de
instrumente C ++ cu suport pentru GPU [6.80, 6.81]. Unele alte seturi de instrumente
cu suport de învățare profundă includ GroundHog, Theanets [6.82], Kaldi [6.83] și
CURRENNT [6.84].
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 285
6.6.2 Exemple
Învățarea unei politici de control aproape optime (sau cel puțin o acceptare
rezonabilă) este adesea obiectivul principal în combinarea învățării automate cu
robotica. Modelul canonic pentru utilizarea rețelelor neuronale profunde pentru
învățarea unei politici de control este Q-learning profund [6.18]. Folosește un DNN
pentru a modela un tabel de valori Q, care sunt antrenate să convergă la o
reprezentare a valorilor pentru efectuarea fiecărei acțiuni posibile în orice stare. Deși
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 287
6.7.2 Exemple
de obiecte văzute în mediile umane din lumea reală și sunt greu de creat și
consumatoare de timp.
Învățarea pentru apucare - metodele de învățare automată s-au dovedit eficiente
pentru o gamă largă de probleme de percepție [6.109, 6.110], permițând unui sistem
de percepție să învețe o mapare de la un set de caracteristici la diferite proprietăți
vizuale. Abordările de învățare ar putea fi aplicate și problemei de a apucare, având
senzori pentru captarea de imagini, metoda de învățare bazându-se pe scorurile de
calitate.
Utilizarea datelor 3D îmbunătățește semnificativ aceste rezultate grație oferirii
de informații fizice directe despre obiectul în cauză. Odată cu apariția senzorilor
RGB-D cu un preț redus, cum ar fi dispozitivul Kinect, utilizarea datelor de adâncime
pentru apucarea robotică a devenit mult mai facilă.
Localizarea și maparea simultană (Simultaneous Localization and Mapping -
SLAM) pentru datele RGB-D pune accent pe analiza multimodală a datelor,
distingând canalele de culoare și de adâncime.
Învățarea și regularizarea structurată - are ca abordare folosirea unei funcții
de regularizare pentru a impune structura unui set de parametri învățați.
Bibliografie – Capitolul 6
6.27. Chen LC, Papandreou G, Kokkinos I, Murphy K, & Yuille AL. (2014).
Semantic image segmentation with deep convolutional nets and fully
connected crfs. arXiv preprint arXiv:1412.7062.
6.28. Sermanet P, Eigen D, Zhang X, Mathieu M, Fergus R, LeCun Y. (2013).
Overfeat: integrated recognition, localization and detection using
convolutional networks. arXiv preprint arXiv:1312.6229.
6.29. Dong C, Loy CC, He K, Tang X. (2014, September). Learning a deep
convolutional network for image super-resolution. In European Conf on
Computer Vision (pp. 184-199). Springer International Publishing.
6.30. Sun Y, Wang X, Tang X. (2013). Deep convolutional network cascade for
facial point detection. In Proc of the IEEE Conf on Computer Vision and
Pattern Recognition (pp. 3476-3483).
6.31. Taigman Y, Yang M, Ranzato MA, Wolf L. (2014). Deepface: closing the
gap to human-level performance in face verification. In Proc of the IEEE Conf
on Computer Vision and Pattern Recognition (pp. 1701-1708).
6.32. Zhou B, Lapedriza A, Xiao J, Torralba A, Oliva A. (2014). Learning deep
features for scene recognition using places database. In Advances in Neural
Information Processing Sys (pp. 487-495).
6.33. Ji S, Xu W, Yang M, Yu K.. 3D convolutional neural networks for human
action recognition. IEEE Transactions on Pattern Analysis and Machine
Intelligence. 2013;35(1):221-231.
6.34. Graves A, Mohamed AR, Hinton G. (2013, May). Speech recognition with
deep recurrent neural networks. In Acoustics, Speech and Signal Proc
(ICASSP), 2013 IEEE Int Conf on (pp. 6645-6649). IEEE.
6.35. Bakshi BR, Stephanopoulos G. Wave‐net: a multiresolution, hierarchical
neural network with localized learning. AIChE Journal. 1993;39(1):57-81
6.36. Arel I, Rose DC, Karnowski TP. Deep machine learning - a new frontier in
artificial intelligence research [research frontier]. IEEE Computational
Intelligence Magazine. 2010;5(4);13-18
6.37. Kim Y, Moon T. . Human detection and activity classification based on
microdoppler signatures using deep convolutional neural networks. IEEE
Geoscience and Remote Sensing Letters. 2016;13(1):8-12.
6.38. Liu F, Shen C, Lin G, Reid I.. Learning depth from single monocular images
using deep convolutional neural fields. IEEE Transactions on Pattern
Analysis and Machine Intelligence 2016;38(10):2024-2039.
6.39. Eitel A, Springenberg JT, Spinello L, Riedmiller M, Burgard W. (2015,
September). Multimodal deep learning for robust rgb-d object recognition. In
Intelligent Robots and Sys (IROS), 2015 IEEE/RSJ International Conference on
(pp. 681-687). IEEE.
6.40. Bohannon J. Helping robots see the big picture. Science. 2014;346(6206):186-
187.
6.41. Sweller J. (2008, September). Evolutionary bases of human cognitive
architecture: implications for computing education. In Proc of the Fourth Int
Workshop on Computing Education Research (pp. 1-2). ACM.
294 6 – Deep Learning – Învățarea Profundă
6.42. Doya K. What are the computations of the cerebellum, the basal ganglia and
the cerebral cortex? Neural Networks, 1999;12(7):961-974.
6.43. Langley P, Laird JE, Rogers S. Cognitive architectures: research issues and
challenges. Cognitive Sys Research 2009;10(2):141-160.
6.44. Sun R. (2006). Cognition and multi-agent interaction: from cognitive
modeling to social simulation. Cambridge University Press.
6.45. Duch W, Oentaryo RJ, Pasquier M. (2008, June). Cognitive Architectures:
Where do we go from here? In AGI (Vol. 171, pp. 122-136).
6.46. A roadmap for US robotics: from internet to robotics, 2016 edition.
6.47. A roadmap for US robotics: from internet to robotics, 2016 edition.
6.48. FY2009-2034 Unmanned systems integrated roadmap. Washington, DC:
Department of Defence (US); 2009.
6.49. Material Handling Institute. Material handling and logistics U.S. roadmap 2.0.
2017.
6.50. DARPA Robotics Challenge [Internet]. [cited 2017 May 20]. Available from:
http://www.darpa.mil/program/darpa-robotics-challenge.
6.51. Punjani AP, Abbeel P. Deep learning helicopter dynamics models. Robotics
and Automation (ICRA), 2015 IEEE International Conference on; 2015. p.
3223- 3230.
6.52. Neverova N, Wolf C, Taylor GW, et al. Multi-scale deep learning for gesture
detection and localization. Computer Vision-ECCV 2014 Workshops; 2014. p.
474-490.
6.53. Mariolis I, Peleka G, Kargakos A, et al. Pose and category recognition of highly
deformable objects using deep learning. Advanced Robotics (ICAR), 2015
International Conference on; Istanbul. 2015. p. 655-662.
6.54. Yang Y, Li Y, Fermüller C, et al. Robot learning manipulation action plans by
watching unconstrained videos from the world wide web. 29th AAAI
Conference on Artificial Intelligence (AAAI-15); Austin, TX. 2015.
6.55. Chen W, Qu T, Zhou Y, et al. Door recognition and deep learning algorithm for
visual based robot navigation. Robotics and Biomimetics (ROBIO), 2014 IEEE
International Conference on; Bali. 2014. p. 1793-1798.
6.56. Gao Y, Hendricks LA, Kuchenbecker KJ, et al. Deep learning for tactile
understanding from visual and haptic data. 2015. Available:
http://arxiv.org/abs/1511.06065.
6.57. Yu J, Weng K, Liang G, et al. A vision-based robotic grasping system using
deep learning for 3D object recognition and pose estimation. Robotics and
Biomimetics (ROBIO), 2013 IEEE International Conference on; Shenzhen.
2013. p. 1175-1180..
6.58. Lenz I, Lee H, Saxena A. Deep learning for detecting robotic grasps. Int J
Robotics res. 2015;34(4-5):705-724.
6.59. Redmon J, Angelova A. Real-time grasp detection using convolutional neural
networks. 2015 IEEE International Conference on Robotics and Automation
(ICRA); Seattle, WA. 2015. p. 1316-1322.
INGINERIA SOFTWARE ȘI TEHNICI DE INTELIGENȚĂ ARTIFICIALĂ 295
6.92. Ashmore SC, Gashler MS. (2016, December). Practical techniques for using
neural networks to estimate state from images. In Machine Learning and
Applications (ICMLA), 2016 15th IEEE Int Conf on (pp. 916-919). IEEE.
6.93. Rifai S, Vincent P, Muller X, Glorot X, Bengio Y. (2011). Contractive
autoencoders: explicit invariance during feature extraction. In Proc of the 28th
Int Conf on Machine Learning (ICML-11) (pp. 833-840).
6.94. Zhang T, Kahn G, Levine S, et al. Learning deep control policies for
autonomous aerial vehicles with MPC-guided policy search. 2015. Available:
http://arxiv.org/abs/1509.06791.
6.95. Lillicrap TP, Hunt JJ, Pritzel A, et al. Continuous control with deep reinforcement
learning. 2015. Available: http://arxiv.org/abs/ 1509.02971.
6.96. Finn C, Levine S, Abbeel P. Guided cost learning: deep inverse optimal control
via policy optimization. 2016. Available: http://arxiv.org/ abs/1603.00448.
6.97. Levine S, Finn C, Darrell T, et al. End-to-end training of deep visuomotor
policies. J Mach Learning Research. 2016;17:1-40.
6.98. Rosenstein M, Barto A.(2004). J. 4 supervised actor-critic reinforcement
learning. Handbook of Learning and Approximate dynamic programming, 2,
359.
6.99. Houthooft R, Chen X, Duan Y, Schulman J, De Turck F, Abbeel P. (2016).
VIME: variational information maximizing exploration. In Advances in Neural
Information Processing Systems (pp. 1109-1117).
6.100. Osband I, Blundell C, Pritzel A, Van Roy B. (2016). Deep exploration via
bootstrapped DQN. In Advances in Neural Information Processing Systems
(pp. 4026-4034).
6.101. Pinto L, Gupta A. Supersizing self-supervision: learning to grasp from 50k tries
and 700 robot hours. 2015. Available: http://arxiv.org/abs/ 1509.06825.
6.102. Kappler D, Bohg J, Schaal S. Leveraging big data for grasp planning. 2015
IEEE International Conference on Robotics and Automation (ICRA); Seattle,
WA. 2015. p. 4304-4311.
6.103. C. Ferrari and J. Canny. Planning optimal grasps. ICRA, 1992.
6.104. A. Rodriguez, M. Mason, and S. Ferry. From caging to grasping. In RSS, 2011.
6.105. F. T. Pokorny, K. Hang, and D. Kragic. Grasp moduli spaces. In RSS, 2013.
6.106. J. H. Piater. Learning visual features to predict hand orientations. In ICML, 2002.
6.107. D. Bowers and R. Lumia. Manipulation of unmodeled objects using intelligent
grasping schemes. IEEE Trans Fuzzy Sys, 11(3), 2003.
6.108. A. Morales, P. J. Sanz, and Angel P. del Pobil. Vision-based computation of `
three-finger grasps on unknown planar objects. In IROS, 2002.
6.109. P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple
features. In CVPR, 2001.
6.110. R. Socher, B. Huval, B. Bhat, C. D. Manning, and A. Y. Ng.
Convolutionalrecursive deep learning for 3D object classification. In NIPS, 201.
Abrevieri – Capitolul 6
298 6 – Deep Learning – Învățarea Profundă
Abreviere Explicație
CNN Rețele neuronale cu straturi convoluționale
DNN Deep Neural Networks - Rețelele neuronale profunde
GPGPU General Purpose Graphical Processing Units
Q-Learning Q-Learning este o tehnică de învățare automată care asociază
o utilitate pentru fiecare pereche stare-acțiune
RGB-D Senzori RGB-D pentru cartografierea și localizarea 3D,
planificarea traseului, navigarea autonomă, recunoașterea
obiectelor și urmărirea persoanelor
RMSProp Root Mean Square Propagation (propagarea rădăcinii medii
pătratice) - Algoritm de optimizare pentru rețelele neuronale
LIDAR Laser imaging, detection, and ranging
GPGPU General Purpose Graphical Processing Units
SLAM Simultaneous Localization and Mapping
Tensorflow Platformă open source end-to-end pentru învățarea automată