Techniki wnioskowania z użyciem rozproszonej bazy wiedzy


Grupa jako organizacja zrzeszająca pewną ilość autonomicznych agentów



Pobieranie 347.22 Kb.
Strona4/10
Data24.10.2017
Rozmiar347.22 Kb.
1   2   3   4   5   6   7   8   9   10

Grupa jako organizacja zrzeszająca pewną ilość autonomicznych agentów



Struktury i organizacje

Filozofia MAS opiera się o organizacje, grupy inteligentnych programów (agentów), które mają za zadanie wspólnie rozwiązywać problemy. Programy (agenci) w poszczególnych grupach mają możliwość kooperacji, negocjacji oraz koordynacji za pomocą wymiany komunikatów pomiędzy sobą.

Historycznie systemy rozproszonej sztucznej inteligencji miały znacznie ograniczone możliwości dostosowywania swoich globalnych intencji, ponieważ zwykle były projektowane do rozwiązania pojedynczego zadania. Aktualnie są prowadzone próby zaprojektowania środowiska, w którym programy staną się w większym stopniu zdolne do dostosowywania swoich globalnych intencji.

Corkill i Lesser zaproponowali trzy warunki będące podstawą pomyślnej współpracy pomiędzy agentami :



  • Pokrycie - każda część problemu musi być przydzielona chociaż jednemu agentowi

  • Współpraca - agenci powinni współpracować pomiędzy sobą

  • Zdolność do racjonalizmu - agent powinien racjonalnie wykorzystywać dojście do zasobów oraz współpracę z innymi agentami

 

Organizacja w systemach rozproszonej sztucznej inteligencji jest mniej strukturalna i bardziej przybliżona do obecnej teorii organizacji. Gasser rozumie organizację jako zbiór pytań o intencje i akcje, przez które programy agentowe mają możliwość spostrzegania innych programów.

Organizację można zdefiniować jako zbiór agentów ze wzajemnymi powiązaniami pomiędzy sobą, globalnymi powiązaniami względem całej organizacji, wzajemnymi intencjami oraz ewentualnie wspólnymi intencjami, jeżeli agenci współpracują razem, ażeby osiągnąć wspólny cel.

Malone zaproponował definicję organizacji jako grupy programów agentowych zdolnych do wymiany jakiejkolwiek informacji, jeżeli rezultaty poszczególnych agentów w danej grupie przyniosą więcej danych niż przyniosłyby bez wzajemnego powiązania tych programów.


Społeczeństwa agentów

Organizacje ludzkie są dobrymi przykładami inteligentnych systemów rozproszonych. Z nich można łatwo przejąć dużo sposobów rozwiązań różnych problemów, jak na przykład: problem rozproszonego decydowania, hierarchicznej kontroli, koordynacji grup, negocjacji itd.

Malone analizował wszystkie analogie pomiędzy systemami komputerowymi a organizacjami ludzkimi. Malone zaproponował środowisko do analizy różnych podziałów oraz koordynacji zadań spośród grupy agentów. Werner rozwinął ogólną teorię komunikacji, kooperacji oraz struktury socjalnej, jako podstawy do projektowania systemów agentowych opartych na grupach czy społeczeństwach multiagentowych.

 

 


Współistnienie agentów w grupie



Koordynacja

Koordynacja polega na wspólnej alokacji zasobów oraz na wymianie wspólnych wyników. Mintzberg rozważył trzy fundamentalne procesy koordynacji:



  • wzajemne przystosowanie

  • bezpośrednia kontrola

  • standaryzacja

 

Wzajemne przystosowanie występuje wtedy, gdy dwa lub więcej programy agentowe zgadzają się dzielić wspólne zasoby, ażeby osiągnąć cel. Agenci muszą wtedy wymienić wiele informacji oraz zrobić dużo poprawek we własnym zachowaniu zależnym od zachowania innych. We wzajemnym przystosowaniu żaden program agentowy nie posiada priorytetu kontroli nad innym, lecz wszelkie decyzje powstają jako wspólne decyzje.

Bezpośrednia kontrola występuje wtedy, gdy dwa lub więcej programy agentowe występują w zaprzyjaźnionej grupie, przy czym jeden agent posiada kontrolę nad drugim. W tej formie koordynacji supervisor kontroluje użycie dzielonych zasobów.

W niektórych przypadkach program nadzorcy wyznacza standardowe procedury koordynacji, w których wyznacza pewne dopuszczalne sytuacje. Dla przykładu, procedury rutynowe w komputerach można traktować jako koordynacje przez standaryzację.

Opierając się na wymienionych powyżej procesach Malone skonstruował dwa systemy koordynacji:


  • hierarchia

  • rynek

Dla większej grupy agentów nadaje się lepiej hierarchia, która wykorzystuje bezpośrednią kontrolę. W systemie tym dużą grupę dzieli się na podgrupy. Wtedy wymiana informacji przebiega pomiędzy tymi podgrupami oraz niektóre ważniejsze informacje są przechwytywane przez ich nadrzędną grupę. W sytuacji takiej pomiędzy podgrupami można wprowadzić wzajemne przystosowanie lub dalej bezpośrednią kontrolę.

Jeżeli chodzi o mniejsze grupy, to wygodnym systemem staje się rynek, który jest oparty na wzajemnym przystosowaniu.

Wiele organizacji implementuje mieszaną koordynację opartą jednocześnie na: wzajemnym przystosowaniu, bezpośredniej kontroli oraz standaryzacji.


Współpraca

Głównym zagadnieniem systemów wielokrotnych agentów jest współpraca pomiędzy poszczególnymi agentami. Durfee zauważył, że sposobem zwiększenia efektywności w tych systemach jest umiejętne podzielenie wspólnych zasobów oraz właściwe wykorzystanie protokołów komunikacyjnych.

Bond zaproponował użycie rozproszonej wiedzy, która ma służyć do porozumiewania się specjalistów z różnych dziedzin pracujących nad wspólnym dużym zadaniem.

Decker zauważył, że współpraca pomiędzy grupą agentów charakteryzuje się różnymi stopniami złożoności. Agent zdolny do pełnej współpracy posiada możliwość rozwiązania niezależnych problemów i często za to płaci dużą ceną wymiany komunikatów. Z drugiej strony systemy z brakiem współpracy nie potrzebują wymiany komunikacji.



Pełna współpraca polega na tym, że każdy agent jest zdolny do całkowitego rozwiązania lokalnego problemu, chociaż działa samodzielnie, jednocześnie rozwiązanie problemu globalnego odbywa się poprzez współpracę wszystkich programów. Wynika to z tego, że nie każdy agent posiada pewną specyficzną wiedzę do rozwiązania problemu z każdej dziedziny.
Negocjacja

Negocjacje odgrywają fundamentalną rolę w międzyludzkich stosunkach. Służą między innymi do poprawy współpracy i efektywnego rozwiązywania problemów.

Durfee zdefiniował negocjację jako proces poprawy porozumienia się i polegający na zredukowaniu wszelkich nieporozumień i niepewności. Generalnie negocjacja w systemach rozproszonej sztucznej inteligencji służy do koordynacji grup agentów.

Możemy wyszczególnić kilka protokołów negocjacji:


  • protokół kontraktu (contract-net protocol)

  • protokół centralnego zadania (task centralization)

  • model rekursywnych negocjacji (recursive negotiation model)

 

Jednym z podstawowych protokołów negocjacji jest protokół kontraktu, który został zbudowany na bazie stosunków międzyludzkich. Agent ma za zadanie podjęcie się kontraktu, który ma wspomóc jakiś cel. Agent ma możliwość podziału kontraktu na podkontrakty i może przeznaczyć je innym potencjalnym agentom-managerom, którzy będą mieli możliwość realizacji ich.

Następnym protokołem jest protokół centralnego zadania, który odpowiada planom lotów. Każdy samolot opracowuje swój własny plan lotów, który ma zapewnić bezpieczną odległość z innymi samolotami oraz zapewnić poszczególnym agentom (samolotom) jak najbardziej oszczędne trasy do osiągnięcia swoich celów z punktu widzenia zużycia paliwa.

Lâasri opisał generalny model i nazwał go model rekursywnych negocjacji. Ten model definiuje gdzie i jak negocjacje mogą być uzyskane. Dzieli on struktury rozwiązania problemów na cztery etapy: sformułowanie problemu, środek zainteresowania problemu, alokacja celów lub zadań dla agentów i osiągnięcie celów lub zadań. W tym modelu Lâasri zaproponował rozwiązanie rekursywne i kompleksowe.


Spójność

Ważną cechą we współistnieniu wielu agentów w grupie jest osiągnięcie spójności w dążeniu do globalnego rozwiązania problemu.

Dla przykładu Kornfeld i Hewitt zaprezentowali strukturę dla grupy służącą do rozproszonego rozwiązywania problemów. Struktura ta opiera się na obserwacji, że naukowe społeczeństwo jest czymś w rodzaju dużego systemu współbieżnego. Programy agentowe zostają przydzielone do różnych klas. Każda klasa posiada swój wyznaczony cel, problem do rozwiązania.

Durfee i Lesser zauważyli, że pewien rodzaj informacji rozchodzącej się wśród agentów może doprowadzać także do spójności. Jeżeli informacja posiada pewną wagę, to znaczy, że może być zgodna z rozwiązaniami pewnych grup agentów. Mniej istotna informacja może doprowadzić agenta do skupienia uwagi na sprawach mało znaczących, które nie będą nigdy istotne z punktu widzenia rozwiązania globalnego. Jeżeli dana informacja jest kompletna, wtedy zostanie zredukowana ilość przychodzących częściowych komunikatów, co czyni danego agenta bardziej zorientowanym w danej sprawie.

 

Planowanie 

Bond i Gasser zauważyli, że większą koordynację możemy osiągnąć przez narzucenie określonych rozumowań pewnej grupie programów agentowych interesujących się konkretnym celem. Możemy, zatem mówić o możliwości planowania zadań dla poszczególnych grup czy samych agentów (planowanie wieloagentowe). Takie planowanie może odbywać się na dwa sposoby:



  • scentralizowane planowanie wieloagentowe (centralized multiagent planning)

  • rozproszone planowanie wieloagentowe (distributed multiagent planning)

 

Scentralizowane planowanie wieloagentowe oznacza sytuację, w której jeden agent kreuje centralistycznie plan dla grupy innych agentów. Ten rodzaj planowania został wybrany, przez Cammarata dla kontroli lotów powietrznych. Na początku samoloty wybierają wspólnego koordynatora, który następnie generuje plan wieloagentowy dla poszczególnych samolotów.

Inny sposób implementacji centralistycznego planowania zaproponował, Georgeff na początku każdy agent generuje własny plan, następnie agent centralny zbiera poszczególne plany oraz rozpoznaje w nich potencjalne konflikty. Poprzez próbę rozwiązania tych problemów modyfikuje poszczególne plany.



Rozproszone planowanie wieloagentowe charakteryzuje się tym, że ciężar planowania zostaje rozdystrybuowany pomiędzy poszczególne programy agentowe. Ten rodzaj planowania jest realizowany wtedy, kiedy trudno jest znaleźć stosownego agenta, który by mógł mieć globalny nadzór nad pewną grupą agentów.

Von Martial podzielił rozproszone planowanie wieloagentowe na dwa podproblemy: planowane sterowanie zadania oraz koordynacja planowania.



Planowane sterowanie zadania na początku dzieli problem na podproblemy i przydziela je poszczególnym agentom. Następnie koordynacja planowania jest uzyskiwana za pomocą relatywnych rezultatów oraz komunikacji pomiędzy agentami.
Wymiana komunikatów oraz interakcja w grupie

Wymiana informacji pomiędzy agentami może odbywać się bezpośrednio za pomocą wymiany komunikatów lub też pośrednio przez modyfikację środowiska, w którym dane programy agentowe działają. Komunikacja jest ważną cechą, dzięki której programy są zdolne do wzajemnej koordynacji, negocjacji oraz innych rodzajów współpracy. W systemach wieloagentowych istnieją dwa rodzaje wymiany komunikatów:




Prosta komunikacja lub jej brak

Istnieją przypadki, kiedy programy posiadają zdolność właściwie przewidywać sytuację bez jakiejkolwiek wymiany informacji z innymi programami. Taki przypadek można zauważyć przede wszystkim w grach, jak na przykład szachy. Gra charakteryzuje się tym, że gracze kierują się aktualną sytuacją na planie gry, a nie wymianą informacji w celu podejmowania dalszych decyzji.

Jeżeli ma się do czynienia z przekazem jakiejkolwiek informacji w postaci paru ustalonych sygnałów mówimy wtedy o prostej komunikacji.
Wymiana planów oraz komunikatów

W wymianie planów pierwszy agent przesyła swój cały plan do drugiego oraz drugi swój własny do pierwszego. Ten plan zostaje zaakceptowany, który dociera jako pierwszy. Ta forma wymiany umożliwia miedzy innymi kooperację wśród programów agentowych, ale wywołuje także parę problemów. Rosenschein wskazał, że taka forma współpracy może być obliczeniowo kosztowna oraz dostarczony plan do innego agenta nie musi być zrozumiany przez jego bazę wiedzy. Nie ma także możliwości sukcesywnego formułowania planu, ponieważ plan zawsze dociera do odbiorcy w ostatecznej wersji.

Lepszą strategią wymiany informacji jest wymiana komunikatów przez ustalone z góry protokoły komunikacyjne.
Wymiana informacji za pomocą tablicy

Tablica jest modelem wspólnej dzielonej pamięci, przez którą programy wymieniają informację z innymi programami. Programy mogą do niej zapisywać komunikaty i rozwiązania częściowe oraz otrzymywać informacje od innych. W większych systemach agentowych z użyciem tej formy wymiany informacji wprowadza się kilka lokalnych tablic, które służą do lokalnej wymiany informacji dla grupy agentów danego subsystemu.


Wysoki poziom wymiany informacji

Język naturalny jest dobrym przykładem protokołu komunikacyjnego wysokiego poziomu dla środowiska wieloagentowego. W języku naturalnym nawet proste dialogi mogą opisać doskonale wewnętrzne stany jak intencje, przypuszczenia, wiedzę itd.

Winograd i Flores zaproponowali „language / action perspective”, w której programy komunikują ze sobą poprzez język. Searle i Vanderveken zaproponowali teoretyczne środowisko dla badania języka ludzkiego, w którym można było studiować różne formy przekazywania informacji, jak na przykład: zapytania, zamówienia, przebaczenia, itd. Najbardziej przybliżonymi programami sztucznej inteligencji do posługiwania się językiem ludzkim są agenci socjalni (social agents). Są one zdolne do przekazywania swoich zamiarów, intencji oraz innych stanów wewnętrznych.
Interakcja pomiędzy maszyną oraz użytkownikiem

Rozproszony system wieloagentowy składa się nie tylko ze sztucznych agentów, ale także z agentów-użytkowników. Istnieje problem dostosowania interakcji pomiędzy użytkownikiem i maszyną w ten sposób, żeby system został efektywnie wykorzystany przez jego użytkowników.

Chang zdefiniował system komputerowy, który posiada zdolność do intelektualnej współpracy między użytkownikami rozproszonymi w różnych lokalizacjach.

 

Implementacje systemu wieloagentowego

Jeżeli mówimy o konkretnej implementacji systemu, w którym mają współistnieć rozproszone autonomiczne programy, mamy na uwadze przede wszystkim:


  • transport komunikatów

  • język komunikacji

  • sposób komunikacji

  • architektura systemu

 

Transport komunikatów określa, w jaki sposób programy wysyłają i odbierają komunikaty. Natomiast język komunikacji umożliwia poprawny odczyt komunikatów. Dalszą ważną cechą w komunikacji jest sposób w jaki przebiega konwersacja pomiędzy programami, czyli jak jest zbudowana cała struktura komunikacyjna (sposób komunikacji). Natomiast za poprawne połączenia programów w systemie protokołami komunikacyjnymi odpowiada architektura systemu.

KQML (Knowledge Query and Manipulation Language) jest dobrym przykładem wysokopoziomowego języka oraz protokołu komunikacyjnego służącego do wymiany wiedzy pomiędzy rozproszonymi, autonomicznymi oraz asynchronicznymi programami agentowymi. Budowa KQML jest oparta na standardzie DARPA Knowledge Sharing Initiative's Knowledge Interchange Format (KIF). Za pomocą KQML można przesyłać dużą ilość obiektowo zorientowanych danych. Programy za pośrednictwem KQML mogą zadawać pytania, wymieniać intencje, przesyłać oferty itd.

Całe środowisko programistyczne do pisania MAS zaproponowała firma IBM pod nazwą Agent Building Environment Toolkit (ABE). Za pomocą ABE można w dość szybki, nieskomplikowany sposób stworzyć aplikację opartą na MAS lub rozbudować inne istniejące aplikacje nie posiadające jeszcze technologii MAS. ABE oparta jest o tzw. adapter architecture, która umożliwia w łatwy sposób rozbudowę systemu przez przyłączanie dodatkowych modułów.

Do współpracy pomiędzy użytkownikiem a systemem komputerowym nadają się programy‑agenci napisane w popularnych językach Tcl i Tk. Programy te służą przede wszystkim do informowania użytkownika o zaszłych zmianach w jego zasobach informacyjnych, jak na przykład przesłanie nowej poczty elektronicznej, pojawienie się nowych artykułów w listach dyskusyjnych, monitorowanie ruchu w lokalnym systemie komputerowym itd.

Ostatnio wchodzi w życie nowy język programowania Java. Programy napisane w Javie mogą być wykonywalne na dowolnej platformie, ponieważ każdy kod źródłowy zostaje skompilowany do specjalnego kodu beta, który jest interpretowany w maszynie wirtualnej Javy. Maszyna wirtualna Javy obecnie jest zaimplementowana w wielu systemach komputerowych, co umożliwia swobodną migrację kodu. Java posiada także dobrze rozbudowane wysokopoziomowe interfejsy sieciowe, które umożliwiają programiście sprawne i szybkie napisanie programu sieciowego. Java także powoli staje się nierozłączną częścią globalnej sieci Internet, w której programowanie agentowe nabiera coraz większego znaczenia.

 


Pobieranie 347.22 Kb.

Share with your friends:
1   2   3   4   5   6   7   8   9   10




©operacji.org 2020
wyślij wiadomość

    Strona główna