Aritificial Intelligence Expertsaie24.pl

Net Logo : Zachowania

Zachowanie

1. Kwestia perspektywy: musimy odróżnić perspektywę obserwatora od perspektywy samego agenta. Perspektywa obserwatora musi być traktowana jako wewnętrzny mechanizm leżący u podstaw opisanego zachowania.

2. Problem zachowania w stosunku do mechanizmu: zachowanie agenta zawsze jest wynikiem interakcji system-środowisko. Nie można tego wyjaśnić tylko na podstawie mechanizmów wewnętrznych

3. Problem złożoności: złożoność, którą obserwujemy w danym zachowaniu, nie zawsze wskazuje na złożoność mechanizmów leżących u podstaw. -
(Rolf Pfeifer i Christian Scheier)

Co to jest zachowanie?

Sposób, w jaki zachowuje się agent, jest często używany do odróżnienia ich i odróżnienia tego, kim i czm są, zarówno od zwierząt, ludzi, jak i od sztucznych. Zachowanie można również powiązać z grupami agentów, a nie tylko z jednym agentem. Na przykład ludzkie zachowania kulturowe odnoszą się do zachowania, które jest związane z określonym narodem, ludem lub grupą społeczną, i różni się od zachowania indywidualnego człowieka lub ludzkiego ciała. Zachowanie ma również ważną rolę do odegrania w przetrwaniu różnych gatunków i podgatunków. Sugerowano na przykład, że muzyka i sztuka stanowiły część zestawu zachowań prezentowanych przez nasz własny gatunek, który zapewnił nam ewolucyjną przewagę nad neandertalczykami. Wcześniej rozmawialiśmy o różnych aspektach dotyczących zachowań ucieleśnionych, usytuowanych agentów, takich jak to, jak można scharakteryzować zachowanie agenta z perspektywy projektu pod kątem jego ruchu w otoczeniu i jak agenci wykazują zakres zachowań od reaktywnych do poznawczych. Nie dostarczyliśmy jednak bardziej konkretnej definicji tego, czym jest zachowanie. Z perspektywy projektowania ucieleśnionych, usytuowanych agentów, zachowanie można zdefiniować w następujący sposób. Szczególnym zachowaniem ucieleśnionego, usytuowanego agenta jest seria działań wykonywanych podczas interakcji ze środowiskiem. Określona kolejność lub sposób wykonywania ruchów akcji i ogólny wynik, który pojawia się w wyniku działań, określa rodzaj zachowania. Możemy zdefiniować działanie jako serię ruchów wykonywanych przez agenta w odniesieniu do konkretnego wyniku, albo przez wolę (dla działań poznawczych), albo przez instynkt (dla działań opartych na reaktywności). W tej definicji ruch jest traktowany jako podstawowa część komponentów, które charakteryzują każdy typ zachowania - innymi słowy, działania i reakcje, które agent wykonuje, gdy wykonuje zachowanie. Rozróżnienie między ruchem a działaniem polega na tym, że działanie obejmuje jeden lub więcej ruchów wykonywanych przez agenta, a także, że istnieje określony wynik, który pojawia się w wyniku działania. Na przykład, czynnik ludzki może chcieć wykonać działanie włączania światła. Efektem działania jest włączenie światła. Ta czynność wymaga wykonania szeregu ruchów, takich jak podniesienie ręki do przełącznika świateł, przesunięcie określonego palca z ręki, a następnie użycie tego palca do dotknięcia górnej części przełącznika, a następnie naciśnięcie przycisku w dół, aż do przełączenia porusza się. Rozróżnienie między działaniem a określonym zachowaniem polega na tym, że zachowanie obejmuje jedną lub więcej czynności wykonywanych przez agenta w określonej kolejności lub sposobie. Na przykład, agent może preferować zachowanie oszczędzające energię poprzez włączanie świateł tylko wtedy, gdy jest to konieczne (jest to przykład zachowania poznawczego, ponieważ wymaga świadomego wyboru). Inny agent zawsze może włączyć światło poprzez przyzwyczajenie, gdy wchodzi do pokoju (jest to przykład zachowania głównie reaktywnego). Sposób zachowania jest sposobem, w jaki agent działa w danej sytuacji lub zestawie sytuacji. Sytuacja jest określona przez warunki środowiskowe, własne okoliczności i wiedzę, którą agent obecnie ma do dyspozycji. Jeśli agent ma niewystarczającą wiedzę do danej sytuacji, może zdecydować się na poszukiwanie dalszej wiedzy na temat sytuacji. Zachowania mogą składać się z sub-zachowań. Poszukiwanie dalszej wiedzy samo w sobie jest zachowaniem, na przykład, i może być składową pierwotnego zachowania. Istnieją również różne aspekty zachowania, w tym następujące: wykrywanie i ruch (koordynacja sensomotoryczna); rozpoznanie obecnej sytuacji (klasyfikacja); podejmowanie decyzji (wybór odpowiedniej odpowiedzi); wydajność (wykonanie odpowiedzi). Zachowania sięgają od w pełni świadomego (poznawczego) do nieświadomego (reaktywnego), od jawnego (zrobione w otwarty sposób) do ukrycia (zrobione w tajemnicy) i od dobrowolnego (agent działa zgodnie z własną wolną wolą) do mimowolnego (zrobionego bez świadomej kontroli lub zrobionego wbrew woli agenta). Termin "zachowanie" ma również różne znaczenia w zależności od kontekstu. Powyższa definicja ma zastosowanie, gdy termin jest używany w odniesieniu do działań człowieka lub zwierzęcia, ale ma również zastosowanie w opisywaniu działań systemu mechanicznego lub złożonych działań chaotycznego systemu, jeśli zorientowany na agenta rozpatrywana jest perspektywa (tutaj są ludzie, zwierzęta, systemy mechaniczne lub złożone systemy). Jednak w rzeczywistości wirtualnej i aplikacjach multimedialnych termin ten może być czasem używany jako synonim animacji komputerowej. W wiarygodnych czynnikach i sztucznych polach życia, zachowanie jest używane "w odniesieniu do improwizacji i życie-podobne działania o charakterze autonomicznym". Często antropomorficznie przypisujemy ludzkie cechy behawioralne za pomocą działania komputera, gdy mówimy, że system komputerowy lub program komputerowy zachowuje się w określony sposób w oparciu o reakcje na naszą interakcję z systemem lub programem. Podobnie często (zazwyczaj błędnie) przypisujemy ludzkie zachowanie behawioralne zwierzętom i obiektom nieożywionym, takim jak samochody.

Środki reaktywne a czynniki poznawcze

W tej części będziemy dalej badać ważne rozróżnienie pomiędzy zachowaniami reaktywnymi i poznawczymi, które po raz pierwszy zostały podkreślone w poprzednim rozdziale. Czynniki można scharakteryzować, gdy znajdują się na kontinuum, jak pokazano na rysunku.



Kontinuum to sięga od czysto reaktywnych środków, które nie wykazują zdolności poznawczych (takich jak mrówki i termity), do czynników, które wykazują zachowania poznawcze lub mają zdolność myślenia. Tabela przedstawia różnice między dwoma typami agentów.

Agenci Reaktywni : Agenci Poznawczy

•  Użyj prostych zachowań. : •  Używaj złożonych zachowań.

•  Mają małą złożoność : •  Mieć dużą złożoność.

•  Nie są w stanie przewidzieć przyszłości. : •  Przewiduj, co się wydarzy

•  Nie ma celów : •  Mieć określone cele.

•  Nie planuj ani nie koordynuj między sobą. : •  Twórz plany i koordynuj ze sobą.

•  Nie reprezentuj środowiska. : •  Mapuj swoje środowisko (tzn. Buduj wewnętrznie reprezentacje ich środowiska).

•  Nie adaptuj się i nie ucz się.: •  Pokazuj wyuczone zachowanie.

•  Może współpracować w celu rozwiązania złożonych problemów. : •  Potrafi rozwiązywać złożone problemy zarówno poprzez pracę razem i działając indywidualnie.

W rzeczywistości, wiele czynników przejawia zarówno zachowania reaktywne, jak i poznawcze w różnym stopniu, a rozróżnienie między reaktywnym a poznawczym może być arbitralne. Porównując zdolności czynników reaktywnych z czynnikami poznawczymi wymienionymi w Tabeli 1, jasne jest, że czynniki reaktywne są bardzo ograniczone w tym, co mogą zrobić, ponieważ nie mają zdolności planowania, koordynacji między sobą lub ustalania i zrozumienia konkretnych celów; po prostu reagują na zdarzenia, kiedy się pojawią. Nie wyklucza to ich roli w tworzeniu inteligentnego zachowania. Reaktywna szkoła myśli polega na tym, że agenci nie muszą być indywidualnie inteligentni. Mogą jednak wspólnie współpracować w celu rozwiązania złożonych problemów. Ich moc pochodzi z potęgi wielu - na przykład owady oparte na koloniach, takie jak mrówki i termity, mają zdolność wykonywania złożonych zadań, takich jak znajdowanie i komunikowanie miejsca pobytu żywności, walka z najeźdźcami i budowanie złożonych struktur. Ale robią to na poziomie populacji, a nie na poziomie indywidualnym, używając bardzo sztywnych powtarzalnych zachowań. W przeciwieństwie do tego, poznawcza szkoła myśli dąży do zbudowania agentów, które w pewien sposób wykazują inteligencję. W tym podejściu poszczególni agenci mają cele i mogą opracować plany, jak je osiągnąć. Korzystają z bardziej wyrafinowanych mechanizmów komunikacji i celowo koordynują swoje działania. Mapują także swoje środowisko w pewien sposób, korzystając z wewnętrznej reprezentacji lub bazy wiedzy, którą mogą odnosić i aktualizować poprzez mechanizmy uczenia się, aby pomóc w kierowaniu ich decyzjami i działaniami. W rezultacie są znacznie bardziej elastyczne w zachowaniu w porównaniu z czynnikami reaktywnymi. W Sztucznej Inteligencji podejście behawioralne do budowania inteligentnych systemów nazywa się sztuczną inteligencją behawioralną (BBAI). W tym podejściu, po raz pierwszy zaproponowanym przez Rodneya Brooksa, inteligencja zostaje rozłożona na zbiór niezależnych, pół-autonomicznych modułów. Moduły te były początkowo pomyślane jako działające na oddzielnym urządzeniu z własnymi wątkami przetwarzania i mogą być uważane za oddzielne czynniki. Brooks zalecał reaktywne podejście do sztucznej inteligencji i używał skończonych maszyn stanów do implementacji modułów zachowania. Te skończone maszyny stanu nie mają konwencjonalnej pamięci i nie zapewniają bezpośrednio wyższych funkcji poznawczych, takich jak uczenie się i planowanie. Określają zachowanie w sposób reaktywny, przy czym agent reaguje bezpośrednio na środowisko, zamiast budować jego reprezentację w pewien sposób, taki jak mapa. Oparte na zachowaniu podejście do sztucznej inteligencji stało się popularne w robotyce, ale znajduje również inne zastosowania w dziedzinie animacji komputerowej i inteligentnych agentów wirtualnych.

Powstanie, samoorganizacja, adaptacja i ewolucja

W tej sekcji omówiono kilka cech autonomicznych czynników ważnych z punktu widzenia behawioralnego - emergentne, samoorganizujące się, adaptacyjne i ewoluujące zachowania. Złożony system to system składający się z wielu komponentów, które, gdy wchodzą ze sobą w interakcje, wytwarzają aktywność, która jest większa niż to, co jest możliwe w przypadku pojedynczych komponentów. System wieloagentowy to złożony system, jeśli agenci wykazują zachowawcze zachowania. Pojawienie się w złożonym systemie jest pojawieniem się nowej właściwości wyższego poziomu, która nie jest prostym liniowym agregatem istniejących właściwości. Na przykład masa samolotu nie jest wyłaniającą się własnością, ponieważ jest to po prostu suma masy poszczególnych elementów samolotu. Z drugiej strony umiejętność latania jest wyłaniającą się własnością, ponieważ właściwość ta znika, gdy części samolotu zostają zdemontowane. Wschodzące właściwości są również powszechne w życiu codziennym - na przykład zachowanie kulturowe u ludzi, żerowanie pokarmu u mrówek i budowanie kopców w termitach. Wrażliwe zachowanie to pojawienie się zachowania systemu wieloagentowego, którego wcześniej nie zaobserwowano i które nie jest wynikiem prostej liniowej kombinacji istniejących zachowań agentów. Niektórzy uważają, że inteligencja jest wyłaniającą się własnością, wynikiem interakcji agent-agent i agent-środowisko reaktywnych, ucieleśnionych, usytuowanych agentów. Jeśli tak jest, to zapewnia alternatywną ścieżkę do tworzenia inteligentnych zachowań - zamiast budować czynniki poznawcze poprzez jawne programowanie wyższych zdolności poznawczych, takich jak rozumowanie i podejmowanie decyzji, alternatywą jest zbudowanie agenta o zdolnościach reaktywnych, takich jak rozpoznawanie wzorców i uczenie się, a to prowadzi do inteligentnego zachowania. Podejście to jednak nie przyniosło jeszcze efektów, ponieważ mechanizmy stojące za rozpoznawaniem wzorców i zdolnościami uczenia się przez ludzi nie zostały jeszcze w pełni zrozumiane i nie dysponujemy wystarczająco zaawansowanymi algorytmami w tym obszarze, aby agent mógł poznać sposób, w jaki ludzie to robią, na przykład takie jak zdolność małego dziecka do nabycia języka. Jednak bardziej tradycyjna droga do sztucznej inteligencji - do projektowania agentów o wyraźnych zdolnościach poznawczych wyższego poziomu - również nie przyniosła efektów. Mówi się, że system samoorganizuje się, gdy wzorzec lub struktura w systemie pojawiają się spontanicznie, a nie w wyniku zewnętrznych nacisków. System wieloagentowy wyświetla samoorganizujące zachowanie w wyniku zastosowania reguł lokalnych, gdy wzór lub struktura powstaje w wyniku interakcji, której nie spowodował zewnętrzny agent. Systemy samoorganizujące się zazwyczaj wyświetlają nowe właściwości. Wiele naturalnych systemów wykazuje zachowania zapobiegawcze. Oto kilka przykładów: roje ptaków i ryb oraz stada zwierząt, takich jak bydło, owce, bawoły i zebry (biologia); tworzenie i struktura planet, gwiazd i galaktyk (z dziedziny astrofizyki); formacje chmurowe i cyklony (meteorologia); struktura powierzchni ziemi (geofizyka); reakcje chemiczne (chemia); autonomiczne ruchy robotów (robotyka); sieci społecznościowe (Internet); sieci komputerowe i ruchome (technologia); naturalnie występujące fraktalne wzory, takie jak paprocie, płatki śniegu, struktury krystaliczne, krajobrazy, fiordy (świat naturalny); wzory występujące na futrze, skrzydłach motyla, skórze owadów i naczyniach krwionośnych w ciele (biologia); wzrost populacji (biologia); kolektywne zachowanie kolonii owadów, takich jak termity i mrówki (biologia); mutacja i selekcja (ewolucja); i konkurencja, giełdy i rynki finansowe (ekonomia). Biblioteka modeli NetLogo zawiera wiele modeli symulujących samoorganizację. Na przykład model Flocking naśladuje zachowanie stada u ptaków - po uruchomieniu modelu przez jakiś czas, żółwie będą się samoorganizować w kilka stad, w których ptaki kierują się w podobnym kierunku. Dzieje się tak pomimo zachowania poszczególnych agentów składającego się tylko z kilku lokalnych reguł. W modelu Fireflies, agenci żółwia są w stanie zsynchronizować miganie przy użyciu tylko interakcji między sąsiednimi agentami; ponownie tylko lokalne reguły określają zachowanie poszczególnych agentów. Model termitów i model maszyny stanowej symulują zachowanie termitów. Po uruchomieniu tych modeli przez pewien czas łatki "zrębków drewnianych" zostaną umieszczone w kilku stosach. Trzy zrzuty ekranu modelu przykładowego maszyny stanu są pokazane na rysunku poniżeh.



Lewy obraz pokazuje środowisko na początku symulacji (liczba tyknięć = 0). Pokazuje agentów umieszczonych losowo w całym środowisku, z żółtymi plamami przedstawiającymi zrębki i białe kształty reprezentujące termity. Środkowe i prawe obrazy pokazują otoczenie po 5000 i 50 000 tyknięć. Pomarańczowe kształty przedstawiają termity, które niosą drewniane wióry, a białe kształtują te, które nie są. Te dwa obrazy pokazują system środków termitów, wiórów drzewnych i środowiska, które stopniowo samoorganizują się, dzięki czemu zrębki kończą się w kilku stosach. Kod dla przykładowego modelu jest pokazany poniżej:

turtles-own [
task ;;nazwa procedury (ciąg) żółw będzie biegał podczas tego tiku
steps ;; …chyba że liczba ta jest większa od zera, w którym
;; w przypadku tego tyknięcia żółw porusza się do przodu 1
]
to setup
clear-all
set-default-shape turtles "bug"
;; losowo rozprowadzać zrębki
ask patches [
if random-float 100 < density
[ set pcolor yellow ]
]
;; losowo rozprowadzaj termity
crt number [
set color white
setxy random-xcor random-ycor
set task "search-for-chip"
set size 5 ;; easier to see
]
end
to go
ask turtles
[ ifelse steps > 0
[ set steps steps - 1 ]
[ run task
wiggle ]
fd 1 ]
tick
end
to wiggle ;; procedura żółwia
rt random 50
lt random 50
end
to search-for-chip ;; procedura żółwia - "podnosi chi", zmieniając kolor na pomarańczowy
if pcolor = yellow
[ set pcolor black
set color orange
set steps 20
set task "find-new-pile" ]
end
to find-new-pile ;; procedura żółwia - poszukaj żółtej łatki
if pcolor = yellow
[ set task "put-down-chip" ]
end
to put-down-chip ;; procedura żółwia - wyszukuje puste miejsce i upuszcza chip
if pcolor = black
[ set pcolor yellow
set color white
set steps 20
set task "get-away" ]
end
to get-away ;; procedura żółwia - wyjdź z żółtego stosu
if pcolor = black
[ set task "search-for-chip" ]
end

Procedura setup losowo rozprowadza żółte środki płatkowe i środki termitów w całym środowisku. Polecenie ask w procedurze go określa zachowanie agentów termitów. Zastosowane podejście polega na reprezentowaniu zachowania jako skończonej maszyny stanu składającej się z czterech stanów z inną akcją lub zadaniem wykonywanym przez agenta, zapewniającym przejście do następnego stanu. Te zadania to: poszukiwanie wiórów drewnianych; znalezienie nowego stosu; odkładanie kawałka drewna; i wydostanie się ze stosu. Uproszczona skończona maszyna stanów dla tego modelu została przedstawiona na rysunku



Mówi się, że system w ogólnym sensie ewoluuje, jeśli dostosowuje się lub zmienia w czasie, zwykle od prostej do bardziej złożonej postaci. Termin "ewolucja" ma różne znaczenia w różnych kontekstach, co może powodować pewne zamieszanie. Bardziej szczegółowe znaczenie odnosi się do terminu ewolucji do teorii ewolucji Darwina - mówi się, że gatunek ewoluuje, gdy następuje zmiana w DNA jego populacji z pokolenia na pokolenie. Zmiana jest przekazywana potomstwu poprzez reprodukcję. Zmiany te mogą być niewielkie, ale po wielu pokoleniach połączone efekty mogą prowadzić do istotnych zmian w organizmach. Aby odróżnić różne znaczenia terminu "ewolucja", możemy zdefiniować zachowanie adaptacyjne i ewoluujące osobno w następujący sposób. Agent wykazuje zachowania adaptacyjne, gdy ma zdolność zmiany swojego zachowania w jakiś sposób w odpowiedzi na zmiany w środowisku. Jeśli zmienia się środowisko, zachowanie dobrze dostosowane do poprzedniego środowiska może już nie być tak dobrze dostosowane; Na przykład, bardziej przejrzyste, pokazano, że niektóre zachowania dostosowane do warunków labiryntu Hampton Court Palace nie są tak dobrze dopasowane do środowiska labiryntu Chevening House i na odwrót. Z drugiej strony ewolucja zachowań występuje w populacji, gdy jej geneza zmieniła się z pokolenia na pokolenie. Ewolucja w populacji jest napędzana przez dwa główne mechanizmy - selekcję naturalną i dryf genetyczny. Selekcja naturalna to proces, w którym osoby z dziedzicznymi cechami, które są pomocne w rozmnażaniu i przetrwaniu w środowisku, staną się bardziej powszechne w populacji, podczas gdy szkodliwe cechy staną się rzadsze. Dryf genetyczny jest zmianą względnej częstotliwości dziedzicznych cech ze względu na rolę przypadku w określeniu, które osobniki przeżywają i rozmnażają się. Ewolucja człowieka i gatunków zwierząt ma miejsce przez setki tysięcy lat, a czasem miliony. Aby przedstawić te skale czasowe w perspektywie i aby pokazać, jak małe zmiany mogą mieć epokowe efekty, możemy posłużyć się przykładem Góry Himalajskiej. Linia uskoków rozciąga się od jednego końca Himalajów do drugiego, ponieważ znajduje się na granicy między tektonicznymi płytami euroazjatyckimi i indoeurlandzkimi, a w konsekwencji jest jednym z najbardziej aktywnych sejsmicznie regionów na świecie. Badania wykazały, że Himalaje wciąż rosną w tempie około 1 cm rocznie. Chociaż wzrost o 1 cm rocznie może wydawać się nieistotny, jeśli zaplanujemy tak daleko w przyszłości, efekt akumulacyjny może być niezwykły. Po 100 latach wzrośnie tylko o metr; po 1000 latach, 10 m; po 10000 latach, zaledwie 100 m, nadal nie jest szczególnie znaczący w porównaniu do ogólnej średniej wysokości gór. Jednak po 100 000 lat wzrośnie o 1 km - to ponad 10% obecnej wysokości Mt. Everest, który wynosi 8 848 metrów. Po milionie lat wzrost wyniesie 10 km, co więcej niż podwaja obecną wysokość Mt. Everest. Proces, który powoduje niewielkie zmiany z roku na rok, o ile jest stały, spowoduje dramatyczne zmiany w ciągu miliona lat. Mt. Everest stale rośnie od miliona lat, jest oczywiście hipotetyczną sytuacją, ponieważ istnieją inne siły działające, takie jak erozja i ruch płyt tektonicznych. W przeciwieństwie do tego wzrost mórz, nawet tak niewielkiej jak 1 cm na rok, może spowodować dramatyczne zmiany w znacznie krótszym czasie. Dryf kontynentalny spowodował również znaczącą zmianę w krajobrazie świata. Odległość lotu między Sydney, Australia i Wellington w Nowej Zelandii wynosi na przykład 2220 km. Jeśli Nowa Zelandia oddalała się od Australii w tempie 1 cm rocznie, to miało to miejsce w okresie 222 milionów lat. Bez względu na to, jak dobrze nadaje się dany gatunek do przetrwania w obecnym środowisku, będzie potrzebować dostosować się do zmian na poziomie epoki, jeśli ma przetrwać bardzo długo.

Problem z odniesieniem

Ważne jest, aby nie przypisywać błędnych wyjaśnień z obserwacji mechanizmom stojącym za zachowaniem ucieleśnionego przedstawiciela znajdującego się w otoczeniu. Ramy odniesienia wskazują na różnicę między perspektywą obserwatora a perspektywą obserwowanego ze względu na ich różne przykłady wykonania. Każdy prawdziwy agent jest wyjątkowy ze swoim ciałem i mózgiem, z unikalnym zestawem możliwości wykrywania i ma wyjątkową lokalizację w środowisku (ponieważ w prawdziwych środowiskach żadne dwa ciała nie mogą zajmować tej samej przestrzeni w tym samym czasie) . Dlatego każdy agent ma unikalną perspektywę swojego otoczenia; w związku z tym perspektywa czynnika wykonującego obserwację będzie bardzo odmienna od perspektywy obserwowanego czynnika. Rozbieżności w ramach odniesienia będą najbardziej wyraźne między gatunkami o znacznie różnych przykładach wykonania, na przykład między ludźmi a owadami. Często ludzie jako obserwatorzy popełniają błąd przypisywania zdolności podobnych do ludzkich przy opisywaniu mechanizmów stojących za zachowaniem, które jest obserwowane. Na przykład magnetyczne kopce termitów w północnej Australii wszystkie stoją na północ i z daleka wyglądają jak nagrobki na cmentarzu. W tym przypadku łatwo jest popełnić błąd, że zostały one stworzone zgodnie z pewnym centralnym planem, ale kopce termitów są wynikiem wielu pojedynczych czynników stosujących proste zachowanie reaktywne. Rolf Pfeifer i Christian Scheier twierdzą, że istnieją trzy główne aspekty ram odniesienia: kwestia perspektywy; kwestia zachowania w stosunku do mechanizmu; i problem złożoności. Kwestia perspektywy dotyczy potrzeby rozróżnienia perspektyw obserwatora od obserwowanego, a nie przypisywania opisów mechanizmów z punktu widzenia obserwatora. Problem zachowania względem mechanizmu stwierdza, że zachowanie agenta nie jest tylko wynikiem samych mechanizmów wewnętrznych; interakcja między agentem a środowiskiem również ma ważną rolę do odegrania. Problem złożoności wskazuje, że złożone zachowania niekoniecznie są wynikiem złożonych mechanizmów leżących u podstaw. Rolf Pfeifer i Christian Scheier używają eksperymentu myślowego mrówki na plaży, zaproponowanej przez Simona po raz pierwszy, aby zilustrować te problemy. Podobny scenariusz przedstawiono w Eksperymencie Myślowym 1.

Eksperyment Myślowy 1 : Mrówka na plaży

Wyobraź sobie mrówkę powracającą do gniazda na skraju plaży w pobliżu lasu. Napotyka przeszkody po drodze w lesie, takie jak długa trawa, opadłe liście i gałęzie, a następnie przyspiesza po dotarciu do plaży, która jest blisko gniazda. Podąża specyficznym szlakiem wzdłuż plaży i napotyka kolejne przeszkody, takie jak małe skały, drewno, suszone wodorosty i różne śmieci, takie jak odrzucone plastikowe butelki i dżety wysypane z morza. Mrówka zdaje się podążać określoną ścieżką i reagować na obecność przeszkód, obracając się w pewnych kierunkach, jakby prowadzona przez mentalną mapę terenu. Większość mrówek podążających za oryginalną mrówką również podróżuje w ten sam sposób. W końcu wszystkie mrówki wracają do gniazda, nawet te, które wydawały się zagubione po drodze. Chłopiec idący po plaży zauważa szlak mrówek. Decyduje się zablokować ich szlak, budując na ich drodze niewielki stos piasku. Pierwsza mrówka, która dociera do nowej przeszkody, zdaje się od razu rozpoznawać, że na jej drodze jest coś nowego, czego wcześniej nie było. Powoli skręca w prawo, a potem w lewo, jakby szukał ścieżki wokół przeszkody. Pojawiają się również inne mrówki i razem wydają się koordynować polowanie na ścieżkę wokół przeszkody. W końcu mrówki są w stanie znaleźć ścieżkę wokół przeszkody i wrócić do gniazda. Po pewnym czasie wybierana jest jedna konkretna ścieżka bliska najkrótszej drodze powrotnej do gniazda. Z punktu widzenia obserwatora mrówki zdają się wykazywać inteligentne zachowanie. Po pierwsze, wydają się podążać konkretną złożoną ścieżką i zdają się mieć zdolność rozpoznawania punktów orientacyjnych po drodze. Po drugie, wydają się mieć zdolność do przekazywania informacji między sobą. Na przykład szybko przesyłają lokalizację nowego źródła pożywienia, dzięki czemu mogą śledzić inne mrówki. Po trzecie, mogą znaleźć najkrótszą ścieżkę między dwoma punktami. Po czwarte, radzą sobie ze zmieniającym się środowiskiem. Jednak błędem byłoby przypisywanie inteligencji zachowaniom mrówek. Badania wykazały, że mrówki po prostu wykonują mały zestaw reguł w sposób reaktywny. Nie mają możliwości stworzenia mapy swojego środowiska, którą inne mrówki mogą śledzić w późniejszym czasie. Nie są świadomi kontekstu swojej sytuacji, tak jak przeszli długą drogę, ale są teraz blisko gniazda, więc mogą przyspieszyć, aby szybciej wrócić. Nie mogą przekazywać informacji bezpośrednio, z wyjątkiem zapachu chemicznego ustanowionego w środowisku. Nie mogą omawiać i realizować nowego planu ataku, gdy sprawy nie idą zgodnie z planem, a nie ma centralnego koordynatora. Należy to porównać z umiejętnościami ludzkimi, takimi jak orientator używający mapy do zlokalizowania flag kontrolnych umieszczonych przez kogoś innego las lub plaża lub biegacz przyśpieszający po długim biegu, ponieważ wie, że zbliża się koniec, lub myśliwy z plemienia powracającego do obozu, by powiedzieć innym myśliwym, gdzie jest więcej zwierząt, lub szefowi plemię polecające grupie myśliwych, aby wyszli i szukali więcej jedzenia. Teraz wyobraź sobie, że mrówka ma olbrzymie ciało, takie same jak ludzkie. Najprawdopodobniej zachowanie gigantycznej mrówki będzie zupełnie inne niż w przypadku normalnej wielkości mrówki. Małe obiekty, które były przeszkodami dla mrówki z normalnym rozmiarem ciała, nie stanowiłyby problemu. W rzeczywistości byłyby one zignorowane najprawdopodobniej, a gigantyczna mrówka powróciłaby bardziej bezpośrednio z powrotem do gniazda. Inne obiekty, których normalnej wielkości mrówka nie byłaby świadoma, że są odrębne, takie jak drzewo, teraz stanowiłyby inny problem dla gigantycznej mrówki w stosunku do jej postępu przez teren. A teraz gigantyczna mrówka może mieć trudności z wyczuwaniem chemicznego zapachu leżącego na ziemi. Podsumowując, zmiana w ciele mrówki radykalnie zmienia perspektywę jego otoczenia.

Stygmatyzacja i inteligencja rozproszona

W opisanych wcześniej modelach Termity i Mrówki widzieliśmy już kilka przykładów tego, jak zbiór agentów reaktywnych może wykonywać złożone zadania, które przekraczają możliwości któregokolwiek z agentów działających pojedynczo. Z naszego własnego układu odniesienia agenci wydają się zbiorowo wykazywać inteligentne zachowanie, chociaż jak wyjaśniono w poprzedniej sekcji, byłoby to niepoprawne. Modele NetLogo ilustrują, w jaki sposób mechanizmy stojące za takimi zachowaniami są bardzo proste - wystarczy kilka zasad określających, w jaki sposób agenci powinni wchodzić w interakcję ze środowiskiem. Ta sekcja definiuje dwie ważne koncepcje związane z inteligencją zbioru agentów: stygmatyzacją i inteligencją roju. Zbiór agentów przejawia stigmergię, gdy w jakiś sposób korzystają ze środowiska, a dzięki temu są w stanie koordynować swoje działania, aby tworzyć złożone struktury poprzez samoorganizację. Kluczową ideą stigmergii jest to, że środowisko może mieć istotny wpływ na zachowanie agenta i na odwrót. Innymi słowy, wpływ między środowiskiem a agentem jest dwukierunkowy. W prawdziwym życiu stygmatyzacja występuje wśród owadów społecznych, takich jak termity, mrówki, pszczoły i osy. Jak widzieliśmy w modelach Termites i Ants, stygmergia może występować pomiędzy bardzo prostymi agentami reaktywnymi, którzy mają jedynie zdolność reagowania w sposób lokalny na informacje lokalne. Te środki nie mają inteligencji i wzajemnej świadomości w tradycyjnym sensie, nie używają pamięci i nie mają zdolności planowania, kontroli lub bezpośredniej komunikacji ze sobą. Mają jednak zdolność wykonywania zadań na wyższym poziomie w wyniku połączonych działań. Stygmatyzacja nie ogranicza się do przykładów życia naturalnego - Internet jest oczywistym przykładem. Wiele systemów komputerowych również wykorzystuje stygmergię - na przykład algorytm optymalizacji kolonii mrówek jest metodą znajdowania optymalnych ścieżek jako rozwiązań problemów. Niektóre systemy komputerowe korzystają ze współużytkowanych struktur danych, które są zarządzane przez rozproszoną społeczność klientów, która obsługuje nową organizację. Jednym z przykładów jest architektura tablicy używana w systemach AI opracowanych po raz pierwszy w latach 80. XX wieku. Tablica korzysta z komunikacji za pośrednictwem pamięci współdzielonej, która może zostać napisana niezależnie przez agenta, który badani są przez innych agentów tak, jak w prawdziwym życiu tablica w pokoju wykładowym. Tablice są obecnie używane w grach wideo dla strzelanek FPS i jako środek komunikacji między agentami w sieci komputerowej. Zbiór agentów wykazuje inteligencję roju, kiedy wykorzystuje wiedzę lokologiczną stygmergiczną do koordynowania swoich działań i tworzenia złożonych struktur poprzez samoorganizację. Mechanizmy stojące za inteligencją roju wykazywaną przez owady społeczne są solidne, ponieważ nie ma scentralizowanej kontroli. Są również bardzo skuteczne - co pokazuje wielkość populacji światowej i odzwierciedlenie rozwiązań dla różnych gatunków. Kilka liczb podkreśla ten punkt. Naukowcy szacują, że w dzisiejszym świecie żyje około 9000 gatunków mrówek i jedna czworonożna (1015) mrówek. Ponadto oszacowano, że na przykład kolonie mrówek harwester mają podobną liczbę neuronów co ludzki mózg. Ludzie również wykorzystują inteligencję roju na wiele sposobów. Internetowa encyklopedia, Wikipedia, to tylko jeden przykład, który wynika ze zbiorowej inteligencji ludzi działających indywidualnie przy minimalnej scentralizowanej kontroli. Serwisy społecznościowe za pośrednictwem stron internetowych to kolejne. Obydwa korzystają ze stygmergicznych informacji lokalnych umieszczonych w chmurze.

Implementowanie zachowania agentów Turtle w NetLogo

W NetLogo zachowanie agenta jest jawnie określone przez polecenie ask. Definiuje to serię poleceń wykonywanych przez agenta lub zestaw agentów, czyli procedurę, którą ma wykonać agent. Procedura w programie komputerowym to specyficzna seria poleceń wykonywanych w precyzyjny sposób w celu wygenerowania pożądany wynik. Musimy jednak zachować ostrożność, aby odróżnić faktyczne zachowanie agenta od mechaniki procedury NetLogo, która służy do definiowania zachowania. Celem większości poleceń proceduralnych jest manipulowanie zmiennymi wewnętrznymi, w tym zmiennymi globalnymi i własnymi zmiennymi agenta. Ta ostatnia odzwierciedla stan agenta i może być przedstawiona jako punkty w przestrzeni n-wymiarowej. Jednak ten stan jest niewystarczający, aby opisać zachowanie agenta. Jego zachowanie jest reprezentowane przez działania wykonywane przez agenta, które powodują pewne zmiany w jego własnym stanie, w stan innych agentów lub w stan środowiska. Rodzaj zmiany, która pojawia się, jest wynikiem zachowania. Niektóre przykłady zachowań, które już widzieliśmy, prezentowane przez agentów w modelach Netlogo, to: poszukiwanie żerowania pożywienia przez czynniki mrówkowe w modelu Mrówki, co skutkuje efektywnym zwrotem żywności do zagnieżdżać się jako wynik; zachowanie budujące gniazda czynników termitów w modelach termitów i modeli maszynowych, w wyniku czego zrębki drewniane są umieszczane w stosach jako wynik; oraz zachowanie ściany żółwia w modelu Wall Po Przykład, który powoduje, że wszystkie żółwie działają na wszystkie ściany w określonym kierunku jako rezultat. Biblioteka modeli w NetLogo zawiera wiele innych przykładów, w których agenci wykazują bardzo różne zachowania. W większości tych modeli podstawowe mechanizmy są spowodowane mechanicznym zastosowaniem kilku lokalnych reguł, które definiują zachowanie. Na przykład model Fireflies symuluje zdolność populacji świetlików używających tylko lokalnych interakcji do synchronizowania ich flashowania jako wyniku. Model Heatbugs pokazuje, w jaki sposób może powstać kilka rodzajów zachowań wynikających z zastosowania przez agentów prostych reguł w celu utrzymania optymalnej temperatury wokół siebie. Model flokowania naśladuje zachowanie stada ptaków, co jest również podobne do zachowania szkolnego ryb i zachowań stadnych bydła i owiec. Wynik ten osiąga się bez lidera, przy czym każdy agent wykonuje ten sam zestaw zasad. Zwartość kodu NetLogo w tych modelach potwierdza, że złożoność zachowania niekoniecznie koreluje ze złożonością mechanizmów leżących u podstaw. Zachowanie można określić za pomocą różnych alternatyw, na przykład za pomocą procedur i poleceń NetLogo oraz automatów stanu skończonego. Ten ostatni jest abstrakcyjnym modelem zachowania z ograniczoną pamięcią wewnętrzną. W tym formacie zachowanie można uznać za wynik przejścia agenta z jednego stanu do drugiego - lub punktu w przestrzeni n-wymiarowej - ponieważ może on być reprezentowany jako skierowany wykres ze stanami, przejściami i działaniami. Aby utworzyć powiązanie między procedurą zaimplementowaną w języku programowania, takim jak NetLogo i skończone automaty stanów (a tym samym ponownie podkreślić analogię między zachowaniem a ruchem agenta znajdującego się w środowisku), ściana śledząca zachowanie NetLogo Code powtórzony poniżej został przekształcony na równoważny skończony automat stanów na rysunku



to behaviour-wall-following
; klasyczne zachowanie "na ścianie"
if not wall? (90 * direction) 1 and wall? (135 * direction) (sqrt 2)
[ rt 90 * direction ]
;;ściana prosto: w razie potrzeby skręć w lewo (czasami więcej niż raz)
while [wall? 0 1] [ lt 90 * direction]
;; pójść naprzód
fd 1
end

Kod został przekonwertowany na skończony automat stanów poprzez uporządkowanie stanów w trybie działania "zmysłów - myśl-działanie" zgodnie z opisem. Zwróć uwagę, że nie jesteśmy ograniczeni do dokonywania konwersji w ten szczególny sposób - możemy dowolnie organizować państwa i przejścia w dowolny sposób. W tym przykładzie stany i przejścia, jak pokazano na rysunku, zostały zorganizowane w celu odzwierciedlenia rodzaju działania (wykrywanie, myślenie lub działanie), które agent ma wykonać podczas następnego przejścia ze stanu. Ponadto, niezależnie od wybranej ścieżki, kolejność przechodzenia stanów jest zawsze stanem odczuwającym, po którym następuje stan myślenia, a następnie stan działania. Następnie następuje kolejny stan odczuwania i tak dalej. Na przykład zachowanie agenta rozpoczyna się od stanu wyczuwania (oznaczonego jako "Stan czuwania 1") na lewym środku rysunku. Jest tylko na przejściu poza tym stanem i używany jest określony sens jest widzeniem, ponieważ wykonywana czynność polega na szukaniu ściany po korzystnej stronie (to znaczy prawej stronie, gdy podążają za prawymi ściankami, a lewej strony, jeśli podążają za ścianami po lewej ręce). Następnie agent przechodzi do stanu myślenia (Thinking State 1), który uwzględnia informacje, które otrzymał z tego, co wyczuł. Myśląca czynność wykonywana przez agenta polega na odnotowaniu, czy w pobliżu znajduje się ściana. Jeśli nie było, to agent przechodzi do stanu działania (Stan działania 1), który polega na wykonaniu działania obracania o 90 ° w kierunku preferowanej strony. Jeśli była ściana, nie wykonuje się żadnej akcji (Stan działania 2). Zauważ, że robienie niczego nie jest uważane za działanie, ponieważ jest ruchem o zerowej długości. Agent przejdzie następnie do nowego stanu odczuwania (Sensing State 2), który obejmuje wyczuwalne działanie polegające na szukaniu ściany przed sobą. Będzie on wielokrotnie przechodzić przez stan roboczy (Stan działania 3), obracając się o 90 ° w kierunku przeciwnym do preferowanej strony i z powrotem do Czuły 2, dopóki nie będzie ściany naprzód. Następnie przejdzie do stanu działania (Stan działania 4) przesunięcia o 1 stopień do przodu i do początku. Jak wskazano, metoda działania "Rozważaj - myśl - działaj" ma ograniczenia w stosowaniu do modelowania prawdziwych, inteligentnych lub poznawczych zachowań, i zasugerowano alternatywne podejście obejmujące ucieleśnione, usytuowane poznanie. Pozostaje jednak pytanie o to, jak wdrożyć takie podejście, ponieważ skutecznie obejmuje ono wykrywanie, myślenie i działanie, wszystkie występujące jednocześnie, tj. Jednocześnie, a nie sekwencyjnie. Opracowano dwa modele NetLogo, aby zilustrować jeden sposób, w jaki można to symulować. Pierwszy model (nazywany Wall Following Example 2) jest modyfikacją modelu Wall Po Example opisanego w poprzednim rozdziale. Zmodyfikowany interfejs udostępnia selektor, który pozwala użytkownikowi wybrać standardowe zachowanie po ścianie lub zmodyfikowany wariant. Zmodyfikowany kod jest wyświetlany w kodzie NetLogo

turtles-own
[direction ;; 1 podąża za prawą ścianą, -1 podąża za lewą ścianą
way-is-clear? ;; reporter - prawda, jeśli nie ma przed sobą ściany
checked-following-wall?] ;; reporter - prawda, jeśli zaznaczona po ścianie
to go
if-else (behaviour = "Standard")
[ ask turtles [ walk-standard ]]
[ ask-concurrent turtles
[ walk-modified shuffle [1 2 3]]
]
tick
end
to walk-standard ;; standardowe zachowanie żółwia
;; w razie potrzeby skręć w prawo
if not wall? (90 * direction) and wall? (135 * direction)
[ rt 90 * direction ]
;; w razie potrzeby skręć w lewo (czasami więcej niż raz)
while [wall? 0] [ lt 90 * direction ]
;; pójść do przodu
fd 1
end
to walk-modified [order] ;; zmodyfikowane zachowanie podczas chodzenia żółwia
ifelse (choose-sub-behaviours = "Choose-all-in-random-order")
[
foreach order
[ if (? = 1) [ walk-modified-1 ]
if (? = 2) [ walk-modified-2 ]
if (? = 3) [ walk-modified-3 ]]
][
let ord one-of order
if (ord = 1) [ walk-modified-1 ]
if (ord = 2) [ walk-modified-2 ]
if (ord = 3) [ walk-modified-3 ]
]
end
to walk-modified-1 ;; zmodyfikowane zachowanie podchodzące do żółwia 1
;; w razie potrzeby skręć w prawo
if not wall? (90 * direction) and wall? (135 * direction)
[ rt 90 * direction ]
set checked-following-wall? true
end
to walk-modified-2 ;; zmodyfikowane zachowanie podchodzące do żółwia 2
;; w razie potrzeby skręć w lewo (czasami więcej niż raz)
ifelse (wall? 0)
[ lt 90 * direction
set way-is-clear? false ]
[ set way-is-clear? true ]
end
to walk-modified-3 ;; zmodyfikowane poddziałanie chodzenia żółwia 3
;; pójść do przodu
if way-is-clear? and checked-following-wall?
[ fd 1
set way-is-clear? false
set checked-following-wall? false ]
end

Aby zasymulować równoległy charakter zmodyfikowanego zachowania, oryginalne zachowania związane z zachowaniem ściany zostały podzielone na trzy pod-zachowania - są one określone w procedurach walk-modified-1, walk-modified-2 i walk-modified-3 powyższego kodu. Pierwsza procedura sprawdza, czy agent nadal podąża za ścianą i w razie potrzeby zmienia się na preferowaną stronę. Następnie ustawia zmienną agenta, checked-following-wall na prawdę, aby wskazać, że to zrobiło. Druga procedura sprawdza, czy ściana jest przed nami, skręca w przeciwnym kierunku do preferowanej strony, jeśli istnieje, a następnie ustawia nową zmienną agenta way-is-clear aby wskazać, czy ściana jest przed nami, czy nie. Trzecia procedura przesuwa się o 1 krok do przodu, ale tylko wtedy, gdy obie drogi są wyraźnie przed sobą i wykonano sprawdzenie podążania za ścianą. Zasadniczo ogólne zachowanie jest takie samo jak poprzednio, ponieważ wszystko, co zrobiliśmy, to podzielenie pierwotnego zachowania na trzy pod-zachowania - innymi słowy, samo zrobienie tego samo nie przynosi niczego nowego. Powodem tego jest umożliwienie nam wykonywania sub-zachowań w sposób niesekwencyjny, niezależnie od siebie, w celu symulowania zachowania "odczuwanie i myślenie i działanie", gdzie "i" wskazuje, że każdy jest wykonywany jednocześnie, w bez szczególnej kolejności. Można to zrobić w NetLogo za pomocą polecenia ask-concurrent, jak pokazano w procedurze go w kodzie. Zapewnia to, że każdy agent na zmianę wykonuje komendy procedury walk-modified. Główna różnica w porównaniu ze standardowym zachowaniem jest widoczna w tej procedurze. Interfejs do modelu zapewnia inny wybierak, który pozwala użytkownikowi ustawić zmienną choose-sub-behaviours, która kontroluje sposób wykonywania czynności podrzędnych. Jeśli ta zmienna jest ustawiona na " Choose-all-in-random order", wtedy wszystkie trzy sub-zachowania będą wykonywane jak przy standardowym zachowaniu, ale tym razem w losowej kolejności; w przeciwnym razie zmienna jest ustawiona na Choose-one-at-random" i wybierane jest tylko jedno zachowanie podrzędne. Oczywiście sposób, w jaki modyfikowane zachowanie jest wykonywane, jest teraz wyraźnie różny od standardowego zachowania - mimo że pierwszy wykonuje te same pod-zachowania tego drugiego, to jest to wykonywane w określonej kolejności, lub wybierane jest tylko jedno z trzech pod-zachowań. każdy tyk. A jednak podczas pracy z modelem uzyskuje się takie same ogólne wyniki, niezależnie od tego, który wariant modelu zostanie wybrany - każdy agent z powodzeniem udaje się podążać za ścianami, które znajdują się w środowisku. Występują niewielkie różnice między poszczególnymi wariantami, takie jak wielokrotne przechodzenie w tył i w dół w dół po krótkich ślepiach za zmodyfikowane warianty. Zdolność zmodyfikowanych wariantów do osiągnięcia podobnego rezultatu co oryginał jest interesująca, ponieważ zmodyfikowana metoda jest zarówno skuteczna, jak i niezawodna - niezależnie od tego, kiedy iw jakiej kolejności wykonywane są subkwarki, ogólny wynik jest nadal podobnie. Drugi model NetLogo, model Wall Following Events, został stworzony w celu konceptualizacji i wizualizacji zmodyfikowanego zachowania. Model ten uważa, że agent jednocześnie rozpoznaje i przetwarza wiele strumieni "zdarzeń", które odzwierciedlają to, co dzieje się z nim samym i w środowisku (w sposób podobny do tego przyjętego w procesie przetwarzania strumienia zdarzeń (ESP). mają różne typy, ale są traktowane jako równoważne sobie nawzajem pod względem sposobu ich przetwarzania. Zachowanie definiuje się poprzez łączenie szeregu zdarzeń w las drzew (jeden lub więcej acyklicznych kierowanych wykresów), jak pokazano na rysunku.



Drzewa łączą ze sobą serie zdarzeń (reprezentowane jako węzły na wykresie), które muszą występować w połączeniu ze sobą. Jeśli określone zdarzenie nie jest zarejestrowane w drzewie, to zdarzenie nie jest rozpoznawane przez agenta (tj. jest ignorowane i nie ma wpływu na zachowanie agenta). Przetwarzanie zdarzeń odbywa się w sposób reaktywny - to znaczy, że określona ścieżka w drzewie jest przesuwana przez sukcesywne dopasowywanie zdarzeń, które obecnie występują do agenta, w stosunku do wychodzących przejść z każdego węzła. Jeśli nie ma żadnych przejść wychodzących lub żadne nie pasują, ścieżka jest ślepym zaułkiem, w którym to momencie traversal się zatrzyma. Odbywa się to jednocześnie dla każdego zdarzenia; innymi słowy, istnieje wiele punktów początkowych, a zatem jednoczesne aktywacje w sieci leśnej. Na rysunku, drzewa zdarzeń zostały zdefiniowane w celu reprezentowania zmodyfikowanej ściany po zachowaniu określonym powyżej. Każdy węzeł na wykresie reprezentuje zdarzenie, które jest oznaczone przez identyfikator strumienia, oddzielone znakiem "=", po którym następuje identyfikator zdarzenia. Na przykład węzeł oznaczony [motor-event = moveforward-1] identyfikuje zdarzenie motoryczne dotyczące przesuwania do przodu o 1 stopień. W przypadku tego modelu zachowania istnieją cztery typy zdarzeń - wykrywanie zdarzeń, w których agent rozpoczyna aktywne wykrywanie konkretnego strumienia danych czuciowych (takiego jak widok, jak na rysunku); zdarzenia ruchowe, w których agent wykonuje pewien ruch lub działanie, zdarzenia określone przez obiekt, które występują, gdy dany obiekt jest rozpoznawany przez agenta; i zdarzenia abstrakcyjne, które są abstrakcyjnymi sytuacjami, które są wynikiem jednego lub więcej zdarzeń zmysłowych, motorycznych i abstrakcyjnych, i które mogą być również tworzone lub usuwane przez agenta z jego wewnętrznej pamięci (która rejestruje, które abstrakcyjne zdarzenia są obecnie aktywne). Jeśli w pamięci znajduje się określone abstrakcyjne zdarzenie, można go użyć do późniejszego dopasowywania przez agenta wzdłuż ścieżki drzewa. Na przykład węzeł oznaczony [sensing event = use-sight] w środkowym prawym rogu rysunku reprezentuje zdarzenie, w którym agent używa zmysłu wzroku. Na tym czuciowym kanale wejściowym może wystąpić wiele zdarzeń, ale tylko dwa zdarzenia są szczególnie istotne dla zdefiniowania zachowania na ścianie - są to zarówno zdarzenia ruchowe, z których jedno jest działaniem polegającym na patrzeniu w przyszłość, a drugim jest działaniem polegającym na patrzeniu w prawo. . Następnie, w zależności od tego, która ścieżka jest śledzona, w drzewku napotykane są różne zdarzenia sensed-object, albo obiekt ściany jest wykrywany, albo nic nie jest wykrywane. Ścieżki te są kontynuowane, dopóki nie zostanie wykonane ostatnie zdarzenie motoryczne (takie jak obrót o 90 ° w stronę preferowaną w prawym górnym rogu figury) lub zostanie utworzone zdarzenie abstrakcyjne (np. czy śledzenie ściany zostało sprawdzone w dole rysunku). Należy zauważyć, że w przeciwieństwie do modelu Sense - Think - Act, ten model zachowania nie ogranicza się do określonej kolejności zdarzeń. Każdy rodzaj zdarzenia może "podążać" za innym, a dwa tego samego typu są również możliwe - na przykład w ścieżce, która rozpoczyna się po lewej stronie rysunku, po sobie następują dwa abstrakcyjne zdarzenia. Należy również zauważyć, że użycie słowa "follow" jest mylące w tym kontekście. Chociaż odpowiednio opisuje, że jedno łącze przychodzi po drugim na określonej ścieżce w modelu drzewa, zdarzenie może faktycznie wystąpić jednocześnie, a kolejność określona przez ścieżkę drzewa jest dowolna i po prostu opisuje kolejność, w której agent rozpozna obecność wielokrotnie występujących zdarzeń. Na przykład, nie ma powodu, dla którego przeciwna kolejność nie może być obecna w drzewie; lub kolejność alternatywna, która doprowadzi do takiego samego zachowania (np. zamiana dwóch abstrakcyjnych zdarzeń na dole ścieżki lewej ręki na rysunku nie będzie miała wpływu na wynikowe zachowanie agenta). Kod służący do utworzenia zrzutu jest wyświetlany w kodzie NetLogo

breed [states state]
directed-link-breed [paths path]
states-own
[ depth ;; głębokość w drzewie
stream ;; nazwa strumienia zdarzeń sensorycznych lub motorycznych
event ;; zdarzenie sensoryczne lub motoryczne
]
globals
[ root-colour node-colour link-colour ]
;; określa sposób wizualizacji drzewa zdarzeń
to setup
clear-all ;; wyczyść wszystko
set-default-shape states "circle 2"
set root-colour sky
set node-colour sky
set link-colour sky
add-events (list ["sensing-event" "use-sight"]
(list "motor-event" "look-to-right")
(list "sensed-object-event" "wall")
(list "motor-event" "turn-90-to-preferred-side")
(list "create-abstract-event" "checked-following-wall"))
add-events (list ["sensing-event" "use-sight"]
(list "motor-event" "look-to-right")
(list "sensed-object-event" "nothing")
(list "create-abstract-event" "checked-following-wall"))
add-events (list ["sensing-event" "use-sight"]
(list "motor-event" "look-ahead")
(list "sensed-object-event" "wall")
(list "motor-event" "turn-90-to-non-preferred-side"))
add-events (list ["sensing-event" "use-sight"]
(list "motor-event" "look-ahead")
(list "sensed-object-event" "nothing")
(list "create-abstract-event" "way-is-clear"))
add-events (list ["abstract-event" "checked-following-wall"]
(list "abstract-event" "way-is-clear")
(list "motor-event" "move-forward-1")
(list "delete-abstract-event" "way-is-clear")
(list "delete-abstract-event" "checked-following-wall"))
reset-layout
end
to reset-layout
repeat 500
[ layout-spring states paths spring-constant spring-length
repulsion-constant ]
;; zostaw miejsce wokół krawędzi
ask states [ setxy 0.95 * xcor 0.95 * ycor ]
end
to change-layout
reset-layout
display
end
to set-state-label
;; ustawia etykietę dla stanu
set label (word "[" stream " = " event "] ")
end
to add-events [list-of-events]
;; dodaj zdarzenia z listy wydarzeń do drzewa wydarzeń.
;; każda pozycja listy wydarzeń musi składać się z dwóch pozycji.
;; na przykład [[odcień 0,9] [jasność 0,8]]
let this-depth 0
let this-stream ""
let this-event ""
let this-state nobody
let next-state nobody
let these-states states
let matching-states []
let matched-all-so-far true
foreach list-of-events
[ set this-stream first ?
set this-event last ?
;; sprawdź, czy stan już istnieje
set matching-states these-states with
[stream = this-stream and event = this-event]
ifelse (matched-all-so-far = true) and (count matching-states > 0)
[
set next-state one-of matching-states
ask next-state [ set-state-label ]
set these-states [out-path-neighbors] of next-state ]
[ ;; stan nie istnieje - utwórz got
set matched-all-so-far false
create-states 1
[
set size 8
set depth this-depth
set stream this-stream
set event this-event
set-state-label
ifelse (depth = 0)
[ set label-color root-colour ]
[ set label-color node-colour ]
ifelse (depth = 0)
[ set color root-colour ]
[ set color node-colour ]
set next-state self
]]
if (this-state != nobody)
[ ask this-state
[ create-path-to next-state [ set color link-colour ]]]
;; zejść z drzewa
set this-state next-state
set this-depth this-depth + 1
]
ask links [ set thickness 1.3 ]
end

Kod najpierw określa dwa typy, stany i ścieżki, które reprezentują przejścia między stanami. Każdy agent państwowy ma powiązane trzy zmienne - depth, która jest odległością od stanu głównego drzewa; stream, który identyfikuje nazwę określonego typu zdarzenia; i wydarzenie, które jest nazwą wydarzenia. Typ zdarzenia nazywany jest "strumieniem", ponieważ używamy analogii wyglądu zdarzeń jako podobnych do przepływu obiektów w strumieniu. Wiele wydarzeń może "przepływać" przeszłością, niektóre pojawiają się jednocześnie, ale jest też określona kolejność nadejścia wydarzeń, ponieważ jeśli zignorujemy konkretne wydarzenie, zostanie ono utracone - musimy sobie z nim w jakiś sposób poradzić. Procedura setup inicjalizuje drzewa zdarzeń, wywołując procedurę add-events dla każdej ścieżki. Ta procedura pobiera pojedynczy parametr jako dane wejściowe, które jest listą zdarzeń określonych jako pary nazw strumieni i nazw zdarzeń. Na przykład dla pierwszego wywołania add-events lista zawiera pięć zdarzeń: pierwsza to zdarzenie typu "use-sight" w strumieniu sensing-event ; drugie jest zdarzeniem look-to-right w strumieniu motor-event; i tak dalej. Kierowana ścieżka zawierająca wszystkie zdarzenia z listy zdarzeń jest dodawana do drzew zdarzeń. Jeśli pierwsze zdarzenie na liście nie występuje w katalogu głównym żadnego istniejącego drzewa, tworzony jest katalog główny nowego drzewa, a ścieżka bez rozgałęzień z katalogu głównego jest dodawana w celu uwzględnienia pozostałych zdarzeń na liście. W przeciwnym razie pierwsze zdarzenia na liście są porównywane z istniejącą ścieżką, z nowymi stanami dodanymi na końcu, gdy zdarzenia nie są już zgodne.

Algorytm stada
v W 1986 r. Craig Reynolds opracował rozproszony model do symulacji zachowań zwierząt, który obejmuje skoordynowany ruch, taki jak uciekanie się do ptaków, uczenie ryb i pasterstwo dla ssaków. Reynolds obserwował flockowe zachowanie kosów i zastanawiał się, czy możliwe jest przyciągnięcie wirtualnych stworów w ten sam sposób w symulacji komputerowej w czasie rzeczywistym. Jego hipoteza była taka, że istniały proste reguły odpowiedzialne za to zachowanie. Model, który opracował, wykorzystuje wirtualne agenty zwane boids, które mają ograniczoną formę przykładu wykonania podobną do tej stosowanej przez agentów w modelu Vision Cone. Zachowanie boidów jest podzielone na trzy warstwy - wybór akcji, sterowanie i lokomocja - jak pokazano na rysunku.

Wybór Akcji : Strategia, wyznaczanie celów, planowanie

Sterowanie : Określenie ścieżki

Lokomocja : Ruch, animacja, artykulacja

Najwyższa warstwa dotyczy selekcji działań, która kontroluje zachowania, takie jak strategia, ustalanie celów i planowanie. Te składają się z zachowań sterujących na kolejnym poziomie, które dotyczą bardziej podstawowych zadań wyznaczania ścieżki, takich jak podążanie ścieżką, poszukiwanie i ucieczka. Te z kolei składają się z zachowań lokomocyjnych związanych z ruchem, animacją i artykulacją wirtualnych stworzeń. Aby opisać swój model, Reynolds używa analogii kowbojów, którzy opiekują się stadem bydła, gdy krowa odlatuje od stada. . Szef szlaku odgrywa rolę selekcji działań - mówi kowbojowi, by sprowadził bezpańskie z powrotem do stada. Kowboj odgrywa rolę sterowania, rozkładając cel na serię pod-celów, które odnoszą się do indywidualnych zachowań sterujących wykonywanych przez zespół kowbojów i koni. Kowboj steruje swoim koniem za pomocą sygnałów sterujących, takich jak polecenia głosowe i użycie ostróg i stew, które powodują, że zespół porusza się szybciej lub wolniej lub skręca w lewo lub w prawo. Koń wykonuje lokomocję, która jest wynikiem złożonej interakcji między wizualnymi percepcjami konia, ruchami jego mięśni i stawów oraz poczuciem równowagi. Należy zauważyć, że warstwy wybrane przez Reynoldsa są arbitralne, a bardziej kwestią projektowania odzwierciedlającą naturę problem modelowania. Sam Reynolds zwraca uwagę, że alternatywne struktury są możliwe, a ten wybrany do modelowania prostych istot flokujących nie byłby odpowiedni dla innego problemu, takiego jak projektowanie agenta konwersacyjnego lub chatbota. Tak jak w przypadku prawdziwych stworzeń, to, co te boidy widzą w dowolnym jednym punkcie w czasie jest wyznaczany przez kierunek, w którym są skierowane i zakres ich widzenia peryferyjnego, jak określono przez stożek o określonym kącie i odległości. Kąt stożka określa, jak duży jest "ślepy" punkt - to znaczy część, która znajduje się poza ich zasięgiem widzenia bezpośrednio za ich głową przeciwną do kierunku, w którym się znajdują. Jeśli kąt stożka wynosi 360 °, wtedy będą mogli zobaczyć wszystko dookoła; jeśli jest mniejsza, to wielkość martwego punktu jest różnicą między kątem stożka a 360 °. Algorytm może być łatwo zaimplementowany w NetLogo za pomocą polecenia in-cone, jak w przypadku modelu Vision Cone. Rysunek jest zrzutem ekranu boidu zaimplementowanego w NetLogo



Zdjęcie przedstawia stożek widzenia w kolorze niebieskiego nieba o kącie 300 ° (rozmiar martwego pola wynosi 60 °). Żółw jest rysowany za pomocą kształtu "directional-circle" w środku obrazu i koloru niebieskiego, z białą linią promienia skierowaną w tym samym kierunku, co aktualny kurs żółwia. Szerokość stożka zależy od parametru długości przekazywanego do polecenia in-cone i rozmiaru patch dla środowiska. Zobaczymy teraz, jak niektóre z tych zachowań można wdrożyć w NetLogo. Zauważ, że tak jak w przypadku wszystkich implementacji, istnieją różne sposoby tworzenia każdego z tych zachowań. Na przykład, obserwowaliśmy już zachowanie się ściany, co zostało przedstawione w modelu "Ściana po przykładzie" opisanym w poprzedniej części oraz w modelu "Ściana po przykładzie 2" opisanym tu. Chociaż zachowanie nie jest dokładnie takie samo dla obu modeli, wynik jest faktycznie taki sam. Oba modele mają środki, które wykorzystują metodę stożka widzenia z przykładu wykonania z figury powyżej, która jest w sercu modelu behawioralnego boids. Opracowano dwa modele w celu wykazania unikania przeszkód. Niektóre zrzuty ekranu pierwszego modelu, o nazwie Unikanie przeszkód 1, przedstawiono na rysunku



Pokazują one pojedynczy boid poruszający się po otoczeniu, próbując uniknąć białych rzędów przeszkód - analogią byłaby ćma, starająca się uniknąć wpadnięcia na ściany podczas lotu. Zakres widzenia boidów jest pokazany przez halo w kolorze nieba otaczając boid - został ustawiony na długości 8 w modelu o kącie 300 °. Obraz po lewej pokazuje boid tuż po naciśnięciu przycisku setup w interfejsie w kierunku rzędów przeszkód. Po kilku kleszczach krawędź stożka wizji boida wpada na koniec środka północno-wschodniego, wskazujący przekątną rząd przeszkód (przedstawiony przez zmianę koloru przeszkody na czubku od białego do czerwonego), następnie obraca się w lewo o około 80 ° i kieruje się w stronę zewnętrznej przekątnej. Jego stożek widzenia również trafi w pobliżu końca tej przekątnej, a następnie w końcu boid ponownie się obraca i odsuwa się od przeszkód w kierunku północno-wschodnim, jak pokazano na drugim obrazku po prawej. Kod do tego jest pokazany w kodzie NetLogo

breed [wanderers wanderer] ; name of the breed of boids
to setup
clear-all
set-default-shape wanderers "directional-circle"; ustawia kształty boid
; stworzyć kolor, rozmiar i losową lokalizację pojedynczego wędrowca
create-wanderers 1 [default blue ]
draw-obstacles
end
to default [colour] ; worzy domyślne ustawienia boid
print "Got here"
set color colour ; ustawia kolor za pomocą przekazanego parametru
setxy random-xcor random-ycor ; ustawia początkową losową pozycję
set size 5 ; domyślny rozmiar żółwia
end
to draw-obstacles
ask patches with [pxcor = 0 and pycor <= 15 or
abs pxcor = (pycor + 40) and pycor < 40 or
abs pxcor = (pycor + 15) and pycor < 6]
[ set pcolor white ]
end
to make-obstacle
if mouse-down?
[ ask patches
[ if ((abs (pxcor - mouse-xcor)) < 1) and
((abs (pycor - mouse-ycor)) < 1)
[ set pcolor white ]
]
]
end
to go
ask wanderers ; nstrukcje wędrowców
[
rt random-float rate-of-random-turn
lt (rate-of-random-turn / 2)
; losowo obraca się w górę w lewo lub w prawo, zgodnie z definicją
; zmienna losowa stopa zwrotu w interfejsie
fd boid-speed
avoid-patches
]
end
to avoid-patches
ask patches with [pcolor = sky]
[ set pcolor black ]
ask patches in-cone radius-length radius-angle
[ if pcolor = black
[ set pcolor sky ]
if pcolor = white
[ set pcolor red ]]
if count patches in-cone radius-length radius-angle with
[pcolor = white or pcolor = red] > 0
[
ask wanderer 0
[
bk boid-speed
lt 90
]
]
end

Procedura setup umieszcza boid w losowym miejscu w otoczeniu i wywołuje procedurę draw-obstacles, aby narysować białe przeszkody w dolnej połowie środowiska. Polecenie ask-wanderers w procedurze go określa zachowanie boid. Boid wykona obrót w prawo i lewo o losową liczbę, a następnie przesunie do przodu o określoną wartość określoną przez zmienną boid-speed zdefiniowaną w interfejsie. Następnie boid wywołuje procedurę avoid-patches w celu uniknięcia kolizji. W tej procedurze najpierw zabarwiony na niebie halo otaczający boid zostaje skasowany poprzez ustawienie kolorowych plam na niebie na czarny. Następnie halo wzroku jest przerysowywane wokół boidu w oparciu o jego bieżące położenie - szybkie wymazanie, a następnie przerysowanie powoduje, że boid migocze jak motyl szybko macha skrzydłami. Boid następnie wykonuje unikanie kolizji, cofając dystans równy boid-speeed i wykonuje skręt w lewo. Ostatnia część procedury powoduje, że łatki, które zostały zderzone z kolorem czerwonym. Model Unikania Przeszkód 2 ilustruje unikanie przeszkód w tym samym środowisku, co model przewidywany z biblioteki modeli. Zrzut ekranu modelu pokazano na rysunku



Wężyk można zobaczyć w środkowym lewym rogu otoczenia. Ścieżka, którą podjął boid, jest wykreślona na czerwono. To wyraźnie pokazuje, że boid udało się uniknąć kolizji ze ścianami i przeszkodami. Długość stożka widzenia boida ustawiono na 1, a kąt 300 °. Kod jest podobny do modelu Unikania Przeszkód 1. Model "Podążaj za i unikaj" wdraża poszukiwania i ucieka przed zachowaniami. Trzy zrzuty ekranu tego modelu pokazano na rysunku



Lewy obraz pokazuje, kiedy jeden środek wędrowiec jest w kolorze czerwonym, a 100 osób naśladowców ma kolor zielony. Pokazuje większość agentów skierowanych w stronę agenta wędrownego. Podczas symulacji agenci naśladowcy aktywnie ścigają agenta wędrownego, gdy wędruje on wokół. Środkowy obraz pokazuje 100 środków zapobiegających powstawaniu koloru, które zabarwiają się na żółto, próbując uniknąć środka wędrownego. W tym przypadku większość czynników unikających jest odsunięta od środka wędrownego i aktywnie odsunie się od niego podczas symulacji. Odpowiedni obraz pokazuje sytuację, w której 50 agentów obserwujących i 50 agentów unikowych znajduje się w środowisku wraz z agentem wędrownym. Obraz pokazuje większość agentów obserwujących na zielono, wskazując na wędrowca, a większość środków zapobiegawczych na żółto wskazuje z niego. Na początku wszyscy agenci są losowo rozmieszczeni w całym środowisku, ale po przeprowadzeniu symulacji dla krótkiej liczby kleszczy, zwykle pojawia się, że zarówno zwolennicy, jak i czynniki unikające zaczną zbijać się razem, jak pokazano na obrazku. Kod modelu jest pokazany w kodzie NetLogo

breed [wanderers wanderer] ; wanders around
breed [followers follower] ;próbuje podążać za wędrowcem
breed [avoiders avoider] ; próbuje uniknąć wędrowca
to setup
clear-all
; ustawić kształty dla ras
set-default-shape wanderers "directional-circle"
set-default-shape followers "directional-circle"
set-default-shape avoiders "directional-circle"
; stwórz wędrowca, wyznawcę i unikającego w losowych miejscach
create-wanderers 1 [ default red ]
create-followers number-of-followers [ default green ]
create-avoiders number-of-avoiders [ default yellow ]
end
to-report number-of-agents
; używane, aby pokazać, że liczba żółwi jest stała, nawet gdy
; wszyscy obserwujący zbijają się jedna na drugiej
report count turtles
end
to default [colour] ; creates default settings for boid
set color colour ; sets colour using passed parameter
setxy random-xcor random-ycor ; sets an initial random position
set size 3 ; default turtle size
end
to go
ask wanderers ; instrukcje wędrowca
[
lt random 30 ; losowo skręć w lewo
rt 15
fd boid-speed ; zmienna prędkość zdefiniowana przez użytkownika
]
ask followers ;instrukcje obserwującego
[
fd boid-speed / speed-scale ; porusza się do przodu ze zdefiniowaną przez użytkownika prędkością
; obserwujący szuka wędrowca w promieniu
if any? wanderers in-radius radius-detection
[ set heading (towards wanderer 0) - random boid-random-heading
+ random boid-random-heading
; dostosowuje kurs do punktu wędrowca]
]
ask avoiders ; avoiders' instructions
[
fd boid-speed / speed-scale ; moves forward at user defined speed
; unikaj poszukiwań wędrowca w jego promieniu
if any? wanderers in-radius radius-detection
[ set heading (towards wanderer 0) + 180 - random boid-random-heading
+ random boid-random-heading ]
; dostosowuje kurs, aby wskazywał z dala od wędrowca
]
end

Zachowanie trzech typów agentów określają procedury wanderers, followers i avoiders. Pierwszy określa zachowanie agenta wędrownego, aby błąkał się w sposób półlosowy. Drugi definiuje zachowanie dla agenta obserwującego, który polega na tym, że agent najpierw przesuwa się do przodu o określoną przez użytkownika liczbę zgodnie ze zmiennymi boid-speed i speed -scale. Następnie używa reportera in-radius NetLogo, aby wykryć, czy wędrowiec jest w jego okrągłym polu widzenia, którego wielkość jest określona przez zmienną Interface radius-detection. Jeśli tak, to ruszy w jego kierunku. Zachowanie agenta unikającego definiuje się w podobny sposób, z tą różnicą, że kieruje się w przeciwnym kierunku (180 °) od wędrownego zamiast do niego. Model Flocking With Obstacles jest modyfikacją modelu Flocking dostępnego w bibliotece modeli NetLogo. Model biblioteki wykorzystuje standardową metodę implementacji zachowania flokowania opracowaną przez Craiga Reynoldsa. W tym podejściu flokowanie wyłania się z zastosowania trzech podstawowych zachowań sterujących. Są to: separacja, gdzie boid próbuje uniknąć zbytniego zbliżania się do innych boidów; wyrównanie, gdzie boid próbuje poruszać się w tym samym kierunku, co pobliskie boidy; i spójności, gdzie boid próbuje przejść w kierunku innych boidów, chyba że są zbyt blisko. Dzięki zmodyfikowanemu modelowi użytkownik ma dodatkową opcję dodawania różnych obiektów do otoczenia, takich jak rafa koralowa, trawa morska i rekin. Ma to na celu symulację tego, co dzieje się, gdy stado napotka jeden lub więcej obiektów i lepiej symuluje środowisko dla szkoły ryb. Niektóre zrzuty ekranu zmodyfikowanego modelu są pokazane na rysunku



Górny lewy obraz pokazuje model na początku po naciśnięciu przycisku konfiguracji w interfejsie. Środkowy górny obrazek pokazuje model po jego uruchomieniu na krótką chwilę i powstała szkoła agentów żółwi. Prawy górny obrazek pokazuje model z łatami kolizji dodanymi w środku w kształcie rekina załadowanego natychmiast po wykonaniu poprzedniego zdjęcia. Te plastry powodują oderwanie się agentów żółwia, gdy zderzają się z nimi. Lewy dolny obraz pokazuje obraz tła nałożony na ten sam obraz. Środkowe dolne zdjęcie pokazuje szkołę zbliżającą się do obiektu z innego kierunku. Obraz w prawym dolnym rogu pokazuje scenę niedługo po tym, jak szkoła podzieliła się na dwie podkategorie po kolizji i odchodzą od obiektu. Łatki zderzeniowe działają zgodnie z modelem, który zakłada, że należy unikać jakiejkolwiek łaty, która nie jest czarna; to znaczy, że wszystkie kolory, z wyjątkiem czarnego, zmuszają boidy do obrócenia się o 180 °, aby uniknąć kolizji. Inną zmianą w modelu jest to, że prędkość przenośnych boidów może być teraz kontrolowana z interfejsu, aby umożliwić większe testowanie poszczególnych ruchów, a także zapewnia możliwość analizowania reakcji boidów. Kod odpowiednich części zmodyfikowanego modelu, które definiują zachowanie agentów, znajduje się w kodzie NetLogo

turtles-own [
flockmates ;; zestaw agentów pobliskich żółwi
nearest-neighbor ;; najbliższy jeden z naszych stad
]
to setup
clear-all
crt population
[ set color blue - 2 + random 7
set size 1.5
setxy random-xcor random-ycor ]
end
to go
ask turtles [ flock ]
repeat 5 [ ask turtles [ fd set-speed / 200 ] display ]
tick
end
to flock
find-flockmates
if any? flockmates
[ find-nearest-neighbor
ifelse distance nearest-neighbor < minimum-separation
[ separate ]
[ align
cohere ] ]
avoid-obstacles
end
to avoid-obstacles
; unikaj w pobliżu wszystkiego, co nie jest czarne
if (any? patches in-cone 2 300 with [pcolor != black])
[ rt 180 ] ; skieruj się w przeciwnym kierunku
end
to find-flockmates
set flockmates other turtles in-radius vision
end
to find-nearest-neighbor
set nearest-neighbor min-one-of flockmates [distance myself]
end
to separate
turn-away ([heading] of nearest-neighbor) max-separate-turn
end
to align
turn-towards average-flockmate-heading max-align-turn
end
to-report average-flockmate-heading
report atan sum [sin heading] of flockmates
sum [cos heading] of flockmates
end
to cohere
turn-towards average-heading-towards-flockmates max-cohere-turn
end
to-report average-heading-towards-flockmates
report atan mean [sin (towards myself + 180)] of flockmates
mean [cos (towards myself + 180)] of flockmates
end
to turn-towards [new-heading max-turn]
turn-at-most (subtract-headings new-heading heading) max-turn
end
to turn-away [new-heading max-turn]
turn-at-most (subtract-headings heading new-heading) max-turn
end
to turn-at-most [turn max-turn]
ifelse abs turn > max-turn
[ ifelse turn > 0
[ rt max-turn ]
[ lt max-turn ] ]
[ rt turn ]
end

Procedura setup tworzy losową populację środków żółwia. Polecenie ask w procedurze go określa zachowanie agentów - po prostu wywołuje procedurę flock. W tym miejscu agent najpierw sprawdza, czy w jego polu widzenia znajdują się inne czynniki, a następnie, jeśli istnieją, szuka najbliższego sąsiada, a następnie stosuje kierowanie separacją określone w procedurze, separate jeśli jest zbyt blisko . W przeciwnym razie stosuje się zachowanie kierowania wyrównaniem, jak określono w procedurze dopasowywania, po której następuje kierowanie kohezją zgodnie z definicją procedury cohere. Te trzy procedury korzystają z procedur turn-away lub turn-towards, które powodują, że boid się odwraca lub w kierunku konkretnej pozycji odniesienia, biorąc pod uwagę aktualną pozycję boid's. Nagłówkiem odniesienia dla zachowania kierowania separacją jest nagłówek najbliższego sąsiada boida, dla zachowanie kierowania wyrównaniem to średnia pozycja wiązań stada boidów, a dla zachowania sterowności kohezji jest to średni kurs w kierunku węzłów stada boidów. W symulacji można zaobserwować wiele pojawiających się zjawisk. Stado szybko formuje się na początku, gdy nie ma żadnych przeszkód. Zauważalny efekt wirowania można również zaobserwować dla boidów w stadzie, jeśli początkowe parametry interfejsu są ustawione jako minimum-separation = 1,25 łaty, max-align-turn = 15,00 stopni, max-cohere-turn = 15,00 stopni i max-separate-turn = 4,00 stopni. Kiedy szkoła napotyka przeszkodę, zmienia kierunek jako grupa z indywidualnymi boidami, które bardzo szybko przejmują stado, jeśli się rozdzielą. Kiedy wystarczająca ilość boidów zmieniła kurs, reszta szkoły podąża za nią bez żadnego kolizji z przeszkodą. Czasami szkoła dzieli się na dwie odrębne szkoły kierując się w różnych kierunkach, jak pokazano w prawym dolnym obrazie na rysunku powyżej .Model śledzenia ścieżki tłumu implementuje zachowanie boidów w tłumie podążającym ścieżką. Zachowanie boidów w modelu może mieć dwie odmiany - podstawowe zachowanie po ścieżce tłumu i jedno z unikaniem kolizji (jest to ustawione za pomocą suwaka behaviour w interfejsie).



zawiera dwa zrzuty ekranu modelu dla dwóch różnych zachowań. Lewy obraz pokazuje "tłum" boidów zmierzających w dół w przybliżeniu w tym samym kierunku od lewej do prawej. Nastąpiło to po krótkiej chwili symulacji. Zauważ, że niektóre z agentów są bardzo blisko siebie - dzieje się tak, ponieważ nie ma unikania kolizji, w przeciwieństwie do drugiego pokazanego zachowania po prawej. Chociaż podstawowy kod dla tych zachowań jest podobny (dla kodu, odnośnik do odnośnika znajdujący się w dolnej części tego rozdziału) jest oparty na użyciu polecenia in-cone, tak jak w przypadku innych implementacji agentów boid, co jest widoczne, zachowanie wynikające z unikania przeszkód jest zauważalnie różne. Na przykład, więcej podgrup agentów próbuje teraz iść wbrew przepływowi, jak pokazano na prawym obrazie Wierne wdrożenie bojlerów Reynoldsa powinno uwzględniać pewną formę siły sterującej zaimplementowanej za pomocą aproksymacji masy punktowej, gdzie każdy boid ma masę i działa w stosunku do sił. Jednak te wdrożenia NetLogo pokazały, że przybliżenie podejścia Reynoldsa można osiągnąć stosunkowo łatwo, aw wielu przypadkach wynikowe zachowanie boidów jest zgodne z oczekiwaniami.

Podsumowanie

Sztuczna inteligencja oparta na zachowaniu (BBAI) przyjmuje behawioralne podejście do budowania inteligentnych systemów. To podejście rozkłada inteligencję na odrębne niezależne pół-autonomiczne moduły, które opisują różne zachowania. Zachowanie agenta to seria działań wykonywanych podczas interakcji ze środowiskiem. Określona kolejność lub sposób przeprowadzania ruchów i ogólny wynik, który pojawia się w wyniku działań, określają szczególny rodzaj zachowania. Różne perspektywy prowadzą do różnych wyjaśnień i różnych sposobów, w jakie rzeczy są tworzone. Ramy odniesienia dotyczą trudności w zrozumieniu zachowania różnych gatunków. Punkty widzenia różnią się nie tylko dla każdego agenta, lecz także dźwięk, odczucie, zapach i smak, z powodu odmiennej postaci wykonania czynnika obserwującego w porównaniu z obserwowanym czynnikiem. (Na przykład spróbuj wyobrazić sobie bycie mrówką.) Ważne jest, aby nie przypisywać błędnych wyjaśnień z obserwacji mechanizmom stojącym za zachowaniem ucieleśnionego czynnika znajdującego się w otoczeniu, a szczególnie ważne, aby uniknąć przypisywania skomplikowanych mechanizmów (np. "inteligencji") do zachowania obserwowanego agenta, gdy ma on inną ramę odniesienia, tj. inny przykład wykonania. Podsumowanie ważnych pojęć, które należy wyciągnąć z tego rozdziału, znajduje się poniżej:

o Proste zasady mogą leżeć u podstaw złożonych systemów.

o Proste reakcje reaktywne mogą być przyczyną złożonych zjawisk.

o Zachowanie adaptacyjne to zachowanie, w którym agent zmienił swoje zachowanie w odpowiedzi na zmianę środowiska.

o Zmieniające się zachowanie to zachowanie, które powstało w wyniku ewolucji genetycznej (to znaczy wymaga więcej niż jednego pokolenia, w którym cechy genetyczne są przekazywane potomstwu).

o Zachowanie wschodzące to pewna właściwość, która wyłania się z interakcji agent-agent lub interakcji między agentem a środowiskiem, które nie mogły powstać bez tych interakcji i nie jest wynikiem prostej liniowej kombinacji tych interakcji.

o Zachowanie samoorganizujące się w systemie z wieloma agentami występuje, gdy agenci stosujący reguły lokalne tworzą pewien wzorzec lub strukturę jako wschodząca właściwość.

o Stygmatyka występuje wtedy, gdy agenci wykorzystują środowisko do komunikowania się i interakcji. Na przykład używają mrówki i pszczoły środowiska, aby powiedzieć sobie, gdzie znaleźć źródła żywności. Ludzie używają go do budowania złożonych systemów informacyjnych i dzielenia się wiedzą, gdzie znaleźć źródła informacji.

o Inteligencja roju jest zbiorem agentów, które wykorzystują stigmergiczną lokalną wiedzę do samoorganizacji i koordynacji ich zachowania.

Komunikacja

Biorąc pod uwagę historię ludzkości, społeczność językowa jest bardzo naturalną jednostką. Języki, ze względu na swój charakter jako środek komunikacji, dzielą ludzkość na grupy; tylko przez wspólny język może grupa ludzi działać wspólnie, a zatem mają wspólną historię. Ponadto język, którym posługuje się grupa, jest właśnie medium, w którym można dzielić wspomnienia z ich wspólnej historii. języki umożliwiają zarówno życie wspólnej historii, jak i jej opowiadanie. - Nicholas Ostler, Nowa metoda szacowania entropii wykorzystuje fakt, że każdy, kto mówi językiem, posiada, nieodwołalnie, ogromną znajomość statystyk tego języka. Znajomość słów, idiomów, stereotypów i gramatyki pozwala mu uzupełnić brakujące lub niepoprawne litery w korekcie lub zakończyć niedokończone wyrażenie w rozmowie. - C.E. Shannon

Komunikacja, informacja i język

Komunikacja może być zdefiniowana jako proces wymiany informacji między agentami. Agent wykazuje zachowanie komunikacyjne, gdy próbuje przekazać informacje innemu agentowi. Agent lub agenci wysyłają wiadomość za pośrednictwem medium do agenta lub agentów odbiorcy. Termin komunikacja w powszechnym użyciu w języku angielskim może również odnosić się do interakcji między ludźmi, które obejmują dzielenie się informacjami, pomysłami i uczuciami. Komunikacja nie jest jednak wyjątkowa dla ludzi, ponieważ zwierzęta, a nawet rośliny, również mają zdolność komunikowania się ze sobą. Język można zdefiniować jako zestaw symboli, z którymi agenci komunikują się w celu przekazywania informacji. W Sztucznej Inteligencji język ludzki jest często nazywany "językiem naturalnym" w celu odróżnienia go od języków programowania komputerowego. Komunikacja za pomocą języka jest często uważana za unikalną cechę behawioralną człowieka. Język ludzki, taki jak mówiony, pisany lub znak, odróżnia się od zwierzęcych systemów komunikacyjnych tym, że jest uczony, a nie dziedziczony biologicznie. Chociaż różne zwierzęta wykazują zdolność komunikowania się, a niektóre zwierzęta, takie jak orangutany i szympansy, mają nawet zdolność posługiwania się pewnymi cechami ludzkiego języka, to stopień zaawansowania i złożoności w ludzkim języku odróżnia go od systemów komunikacji zwierzęcej. Język ludzki opiera się na wyjątkowej zdolności ludzi do abstrakcyjnego myślenia za pomocą symboli do reprezentowania koncepcji i pomysłów. Język definiowany jest przez zestaw reguł wspólnie określających powszechnie akceptowane symbole, ich znaczenie oraz ich związki strukturalne określone przez zasady gramatyki. Reguły te opisują sposób manipulowania symbolami w celu utworzenia potencjalnie nieskończonej liczby gramatycznie poprawnych sekwencji symboli. Wybrane symbole są arbitralne i mogą być związane z dowolnym konkretnym fonemem, grafemem lub znakiem. Lingwistyka jest naukowym badaniem języka, które można podzielić na odrębne obszary nauki: gramatyka jest nauką o strukturze języka; morfologia jest nauką o tym, jak słowa są formowane i łączone; fonologia to nauka o systemach dźwięków; Składnia dotyczy reguł rządzących tym, jak słowa łączą frazy i zdania; semantyka to badanie znaczenia; i pragmatyka dotyczy nauki języka i użytkowania oraz kontekstów, w których jest używany.

Różnorodność ludzkiego języka

We wszystkich językach naturalnych istnieje duża różnorodność zastosowań, a także często brak porozumienia między użytkownikami języka. Na przykład tabela zawiera przykłady dopuszczalnych zdań "angielskich" z różnych regionów świata. Każde z tych zdań jest uważane za "normalny" angielski dla regionu pokazanego po prawej stronie, a jednak większość ludzi spoza tych regionów argumentowałaby inaczej, a wiele spraw ma trudności w zrozumieniu ich znaczenia.

Let's buy some food home! : Singapur
Don't smoke without causing an explosion! : Południowa Walia
AIDS is very popular in Africa. : Hong Kong
My hair needs washed. : Szkocja, Północna Irlandia, część USA
Whenever my baby was born I was 26. : Północna Irlandia
Her outlook is very beautiful. : Hong Kong
John smokes a lot anymore. : Środkowy Zachód USA
I am difficult to study. : Hong Kong
I might could do it. : Szkocja, Północna Anglia, Indie, część USA
My name is spelt with four alphabets. : Singapur
You must beware of your handbag! : Hong Kong
We'll be there nine while ten. : Lancashire, Yorkshire
He loves his car than his girlfriend. : Indie, część Afryki
Come here till I punch you! Irlandia, Liverpool, Cumbria, część Szkocji
I'm after losing my ticket. Irlandia
My brother helps me with my studies and so do my car. : Hong Kong
I been know your name. : USA (Black)
I use to live there now. : Singapure
My grandfather died for a long time. : Hong Kong
I am having a nice car. : Indie, Singapur
I'll give it him. Północna Anglia(standard)
Robots can do people not like jobs. : Hong Kong (niski poziom zaawansowania)

Odnośnie języka angielskiego David Crystal (1988) stwierdza: "Język angielski rozciąga się na cały świat: od Australii po Zimbabwe, ponad 300 milionów ludzi mówi o nim jako o swoim ojczystym języku ... A jednak, pomimo jego zadziwiająco szerokiego zastosowania jako medium komunikacja, każdy zawód i każda prowincja - a nawet każda osoba - używa nieco innego wariantu. " Angielski ma wiele różnych regionalnych dialektów (takich jak amerykański, brytyjski, australijski i nowozelandzki angielski), a także wiele sub-dialektów w tych regionach. Istnieją również dialekty, które przecinają linie regionalne, na przykład "Public School English" w Wielkiej Brytanii, Black English in America i Maori English in New Zealand. A w każdym kraju istnieją niezliczone wariacje społeczne, które posiadają własną oszałamiającą różnorodność kantów, żargonów i lingoli" . Jednym z bardziej kolorowych przykładów jest słownik slangu Wall Street zatytułowany "Wysokie stepowniki, upadłe anioły i lizaki". Obrazuje, jak taki język może stać się prawie niezrozumiały dla niewtajemniczonych. (Na przykład, czym jest "wysoki stepper" lub "upadły anioł"?) . Hudson pisze o języku nastoletniej rewolucji, o urazie starszych ludzi do języka używanego przez współczesne nastolatki: … może nie lubią tego, że nastolatkowie mówią innym językiem, używając znacznej liczby wyrażeń, które sami uważają za niepojęte lub odrażające". Oprócz różnorodności językowej istnieje wiele różnych sposobów wyrażania i używania tego języka. Język ten różni się znacznie od języka pisanego, co ilustruje poniższy przykład zaczerpnięty z Crystala: "To część wykładu i wybrałem go, ponieważ pokazuje, że nawet profesjonalny mówca używa struktury, która rzadko by występowała w języku angielskim i wykazuje rozłączność przemówienia, którego w ogóle by tam brakowało. (Codzienna rozmowa zapewnia jeszcze bardziej uderzające różnice.) Kropka (.) Wskazuje krótką pauzę, kreska dłuższą pauzę, a erm jest próbą przedstawienia odgłosów, które wygłosił głośnik, gdy głośno się wahał. ... - i chcę . bardzo arbitralnie, jeśli mogę podzielić to na trzy pozycje - i zapytać .erm. trzy pytania. ocena dlaczego - ocena co - i ocena jak. więc to jest naprawdę. oznacza, że chcę o tym mówić. przede wszystkim w celach oceny - dlaczego w ogóle oceniamy - po drugie rodzaj funkcji i procesów, które są oceniane - i po trzecie chcę mówić o technikach ... " Baugh przypomina nam, że język to nie tylko "wydrukowana strona" stosunkowo jednolita i stała, jak wielu ludzi uważa, że tak jest. Język to "przede wszystkim mowa", a pisanie "tylko konwencjonalne" urządzenie do przekodowywania dźwięków. "Dalej stwierdza, że powtarzające się ruchy mięśni, które generują mowę, podlegają stopniowej zmianie głośnika: "Każda osoba nieustannie i zupełnie nieświadomie wprowadza niewielkie zmiany w swojej mowie. Nie ma czegoś takiego jak jednolitość w języku. Nie tylko mowa jednej społeczności różni się od mowy innej, ale mowa różnych osób z jednej wspólnoty, każdego z członków tej samej rodziny, charakteryzuje się indywidualnymi cechami osobowości. " Niektóre inne wyróżniające się formy języka to na przykład poezja, dokumenty prawne, reportaże prasowe, reklama, pisanie listów, korespondencja biurowa, telegramy, rozmowy telefoniczne, poczta elektroniczna, artykuły z Usenetu, artykuły naukowe i przemówienia polityczne. Każdy ma swój własny smak, dziwactwa i styl. I w każdej formie są indywidualni autorzy, którzy mają swój własny styl języka. Sztuka Szekspira i powieści science-fiction H. G. Wellsa to dwa przykłady bardzo wyraźnych stylów literackich. W rzeczywistości każda osoba ma własny styl języka lub idiolekt z własną unikatową charakterystyką, którą mogą łatwo rozpoznać inni ludzie. Podobnie jak standardowe dialekty, istnieje wiele niestandardowych w użyciu. Fromkin twierdzi, że "chociaż każdy język jest połączeniem dialektów, wiele osób mówi i myśli o języku tak, jakby był" dobrze zdefiniowanym "stałym systemem z różnymi dialektami odbiegającymi od tej normy". Twierdzą oni, że te niestandardowe dialekty są często uważane za "niedoskonałe, nielogiczne i niekompletne" w porównaniu ze standardowymi dialektami. Posługują się przykładem wybitnego autora na temat języka, Mario Pei, który kiedyś oskarżył redaktorów Trzeciego Nowego Międzynarodowego słownika Webstera o mylące do stopnia zatarcia starszego rozróżnienia między standardowym, niestandardowym, kolokwialny, wulgarny i slang ". , w lingwistyce, stwierdza, że " wiedza wielu ludzi na temat normalnego języka jest bardzo chwiejna; a ich zdolność do opisywania tego, co wiedzą, jest jeszcze gorsza. " Dość często nawet eksperci spierają się o lepsze aspekty używania języka. Istnieje wiele słowników objaśniających powszechne użycie lub mniej powszechne użycie, takie jak żargon, slang, klisze, idiomy i figury mowy, na przykład Up the boohai shooting pukekas: słownik slangu Kiwi. Znalezienie porządku w całym tym chaosie było celem wielu ludzi odkąd Samuel Johnson skompilował swój słownik języka angielskiego w 1755 roku, a pierwsze próby zostały wykonane, aby niedługo później skompilować gramatykę dla języka angielskiego.

Komunikacja za pośrednictwem społeczności agentów

Komunikacja jest z definicji prowadzona między dwoma lub więcej agentami. Ważnym aspektem ludzkiej komunikacji jest to, że jest ona prowadzona między społecznościami i grupami agentów. W przypadku agentów ludzkich rodzaj komunikacji za pośrednictwem języka ludzkiego, który jest uznawany za właściwy w każdej społeczności, często może być wykorzystany do identyfikacji i odróżnienia tej społeczności lub grupy. Przejawia się to w różnych językach, dialektach, sub-dialektach i socjolektach (język używany w danej grupie społecznej), które różnią się słownictwem, gramatyką i wymową, często przy użyciu odmian słownika, takich jak żargon i slang. .Sieć społeczna wśród społeczności agentów jest ważnym aspektem ludzkiego języka. Sieć społecznościowa to struktura społeczna złożona z agentów powiązanych ze sobą wspólną cechą. Sieć społecznościowa może być reprezentowana przez wykres, w którym węzły reprezentują agentów, a łącza między węzłami definiują relacje między agentami. Termin sieci społecznościowe stał się znacznie powszechniejszy w powszechnym użyciu w języku angielskim z powodu niedawnego pojawienia się serwisów społecznościowych takich jak Facebook, Myspace i Twitter. Język jest definiowany przez członków sieci społecznościowej obejmującej społeczność językową. W obrębie tej społeczności mogą istnieć podsieci dla każdego z dialektów, sub-dialektów i socjolektów. Języki "żyjące" w przeciwieństwie do "martwych" języków, takich jak łacina, również są dynamiczne, a nowe słowa i wyrażenia są stale tworzone w celu opisania nowych koncepcji i pomysłów, a te nowe słowa i wyrażenia są rozpowszechniane za pośrednictwem łączy w sieciach społecznościowych. Model zmiany języka dostępny w bibliotece modeli w NetLogo pokazuje, w jaki sposób struktura sieci społecznościowej w połączeniu z odmianami użytkowników języka może wpłynąć na zmianę języka. W tym modelu węzły w sieci reprezentują użytkowników języka i istnieją dwa warianty języka generowane przez dwie różne gramatyki (0 i 1) w konkurencji w sieci. Użytkownicy języka kontaktują się ze sobą w każdej iteracji symulacji, mówiąc najpierw gramatykę 0 lub 1 do sąsiadów, z którymi są połączeni w sieci społecznościowej. Podczas kolejnego słuchania .Następnie dostosowują swoją gramatykę w oparciu o to, co zostało odebrane podczas fazy mówienia. Zrzut ekranu przedstawiający przykładowe dane wyjściowe wytworzone przez model przedstawiono na rysunku



Dane wyjściowe zostały wygenerowane przy użyciu domyślnych ustawień i algorytmu aktualizacji nagrody. Białe węzły na rysunku reprezentują użytkowników języka, którzy uzyskują dostęp do gramatyki, czarne węzły mają dostęp do gramatyki 0. Czerwone zacienione węzły reprezentują użytkowników języka, którzy mają możliwość korzystania z obu gramatyk. Kolor reprezentuje prawdopodobieństwo, że uzyskają dostęp do gramatyki 1 lub 0, im większe prawdopodobieństwo, tym ciemniejsze cieniowanie. Wybór kodu w modelu jest pokazany w kodzie NetLogo

breed [nodes node]
nodes-own [
state ; obecny stan gramatyki - [0,1]
orig-state ; zapisz, aby zresetować oryginalne stany
spoken-state ; przechowuje wyniki mowy agenta - 1 lub 0
]
to communicate-via [ algorithm ] ; procedura węzła
;; *Probabilistic Grammar* ;;
;; mów i poproś wszystkich sąsiadów, aby słuchali
if (algorithm = "reward") [
speak
ask link-neighbors [
listen [ spoken-state ] of myself
]
end
;;; słuchanie wykorzystuje liniowy algorytm nagrody / kary
to listen [heard-state] ; node procedure
let gamma 0.01 ; for now gamma is the same for all nodes
;; wybierz stan gramatyki
ifelse (random-float 1.0 <= state) [
;; jeśli słychać gramatykę 1
ifelse (heard-state = 1) [
set state (state + (gamma * (1 - state)))
][
set state (1 - gamma) * state
]
][
;; jeśli słychać gramatykę 0
ifelse (heard-state = 0) [
set state (1 - gamma) * state
][
set state gamma + ((1 - gamma) * state)
]
]
end
to update-color
set color scale-color red state 0 1
end

Użytkownik języka jest zdefiniowany jako typ node na początku, a każdy węzeł jest właścicielem zmiennej state, liczby między 0 a 1, która jest wagą, która odzwierciedla prawdopodobieństwo uzyskania przez użytkownika gramatyki 0 lub 1. Procedura communicate-via listuje kod związany tylko z algorytmem aktualizacji nagrody (istnieją dwa inne algorytmy aktualizacji nieuwzględnione tutaj - indywidualne i próg - które mogą być używane do tworzenia różnych zachowań sieciowych). Za pomocą algorytmu aktualizacji nagrody bieżący agent węzła najpierw mówi, a następnie słucha wszystkich swoich sąsiadów w sieci. Algorytm wykorzystuje liniową nagrodę /schemat ważenia kary, jak pokazano w procedurze listen, aby ustawić zmienną state agenta węzła. W dolnej części listy kodów uwzględniono procedurę update-color, aby pokazać, w jaki sposób ustawiony jest kolor agenta węzła, w zależności od aktualnego wag gramatycznych przechowywanych w zmiennej state. Wiele przebiegów modelu pokazuje, że użytkownicy języka w symulacji mają skłonność do używania jednej gramatyki dominującej w sieci społecznościowej. Jednak często inna gramatyka wciąż pozostaje w kieszeniach w całej sieci, co odzwierciedla tworzenie dialektów i podtekstów w ludzkich sieciach społecznościowych w prawdziwym życiu.

Zachowanie komunikacyjne

Zachowanie komunikacyjne ma wiele postaci. Przez większość historii ludzka komunikacja była ograniczona do kilku podstawowych form, takich jak mówienie i pisanie, ale w ciągu ostatniego stulecia ludzkie zachowania komunikacyjne uległy szybkiej transformacji z powodu postępu technologicznego umożliwiającego nowe formy komunikacji, które wcześniej nie były możliwe. na przykład nadawanie, a ostatnio pisanie wiadomości i blogowanie. Technologia zaciera także charakter istniejącej komunikacji - podczas gdy bezpośrednia bezpośrednia dostawa była możliwa w niektórych formach, awans umożliwił nam rozszerzenie o wersje takie jak opóźnione dostawy jeden-do wielu - na przykład radio i telewizja jest teraz transmitowany przez transmisję strumieniową i dlatego nie ma już potrzeby natychmiastowego słuchania lub oglądania tych mediów, ponieważ dostępne są alternatywne środki komunikacji, w których możemy poczekać do dogodniejszego czasu. Aby zilustrować, w jaki sposób zachowania komunikacyjne wpływają na sposób rozprzestrzeniania się języka w sieci społecznościowej, możemy przeprowadzić symulacje przy użyciu modeli NetLogo. Pierwszy model komunikacji T-T, który jest dołączony do biblioteki modeli NetLogo, stanowi prostą ilustrację tego, jak komunikacja "szeptana" może być niezwykle skuteczna w rozpowszechnianiu wiadomości w sieci. Zrzut ekranu modelu w akcji pokazano na rysunku



Model działa najpierw tworząc liczbę agentów na losowych pozycjach w środowisku, z których jeden jest określony jako agent, który rozpoczyna rozprzestrzenianie wiadomości. Następnie, podczas symulacji, agenci poruszają się losowo, a ci, którzy otrzymają wiadomość, będą ją rozpowszechniać za pośrednictwem poczty pantoflowej do wszelkich agentów znajdujących się w pobliżu. Rysunek pokazuje symulację na wczesnym etapie - wiadomość została rozłożona tylko niewielkiemu odsetkowi czynników (te zabarwione na czerwono); w końcu wiadomość szybko rozprzestrzeni się na wszystkich agentów w środowisku. Jednak nawet na tym etapie symulacji widać wyraźnie, jak działa metoda komunikacji "szeptana" i dlaczego jest tak skuteczna. Wiadomość została przekazana do grup agentów, którzy są blisko siebie. Gromady te szybko rosną i przejmują całą sieć, podobnie jak falujący efekt fal rozprzestrzeniających się po stawie po wrzuceniu do niego kamienia. Kod modelu jest pokazany w kodzie NetLogo

turtles-own [
message? ;; prawda czy fałsz: czy ten żółw otrzymał już wiadomość?
]
to setup
clear-all
crt 400 [
set shape "Person"
set size 2
set message? false
setxy random-xcor random-ycor
]
ask one-of turtles
[ set message? true ] ;; przekaż wiadomość jednemu z żółwis
ask turtles [ recolor ]
end
to go
ask turtles [ move ]
ask turtles [ communicate ]
ask turtles [ recolor ]
tick
end
;; poruszać się losowo
to move ;; procedura żółwia
fd random 4
;; obróć losową kwotę między -40 a 40 stopni,
;; utrzymując średni obrót na poziomie 0
rt random 40
lt random 40
end
;; podstawowa procedura!
to communicate ;; procedura żółwia
if any? other turtles-here with [message?]
[ set message? true ]
end
; kolor żółwie z komunikatem czerwony, a te bez komunikatu niebieski
to recolor ;; procedura żółwia
ifelse message?
[ set color red ]
[ set color blue ]
end

Kod został nieznacznie zmodyfikowany do celów wizualizacji z tego udostępnianego przez bibliotekę modeli, zmniejszając liczbę utworzonych agentów i zmieniając rozmiar i kształt agentów. Procedura konfiguracji tworzy 400 agentów żółwia w losowych lokalizacjach, z których jeden jest oznaczony jako mający wiadomość na początku. Podczas procedury go każdy agent najpierw przemieszcza się w przypadkowym kierunku, a następnie każdy agent, który ma ten komunikat, przesyła komunikat do dowolnego innego agenta, który znajduje się w tej samej lokalizacji poprawki, a na końcu kolory każdego agenta są resetowane, aby odzwierciedlić, czy mają wiadomość, czy nie.

Zjawisko małego świata i algorytm Dijkstry

Kolejny model NetLogo, model Being Kevin Bacon, został stworzony, aby dowiedzieć się, w jaki sposób różne formy komunikowania się zachowują w rozpowszechnianiu informacji w sieci społecznościowej. Zanim jednak wytłumaczymy ten model, musimy poznać ważną cechę charakterystyczną sieci zwanych "zjawiskiem małego świata" i związaną z nim frazę "sześć stopni separacji". Zjawisko małego świata zostało po raz pierwszy zbadane przez Stanleya Milgrama, psychologa społecznego na Uniwersytecie Yale. Przeprowadził eksperyment, aby pokazać, że jesteśmy przeciętnie tylko o sześć "kroków" od kogokolwiek innego na Ziemi. W eksperymencie listy zostały wysłane do losowo wybranych osób w Omaha i Wichita w USA. Ludzie ci zostali zapytani, czy znali osobę X mieszkającą w Bostonie. Jeśli nie, poproszono ich o przesłanie tego listu do kogoś, kogo mogliby znać X. Wyniki eksperymentu były następujące: 64 z 256 wysłanych listów dotarło do celu; niektóre łańcuchy udanych listów miały tylko 1 lub 2 długości, podczas gdy inne miały ponad 10 długości. Co istotne, średnia długość ścieżki wynosiła około 5,5 do 6 - stąd pochodzi zdanie "sześć stopni separacji". Chodzi o to, że nawet w bardzo dużej sieci, prosta metoda rozprzestrzeniania wiadomości za pomocą ustnej wiadomości może być niezwykle skuteczna z powodu efektu marszczenia w miarę rozprzestrzeniania się wiadomości. Chociaż wiadomość zawarta w tym eksperymencie została spisana raczej niż mówiona, metoda ta może nadal być uważana za analogiczną do komunikacji ustnej w ludziach, ponieważ bezpośredni kontakt jest nadal wymagany, aby rozpowszechniać przesłanie, choćby za pośrednictwem trzeciego agenta przekazującego, listonosza. separacja jest użytecznym środkiem do pomiaru łączności sieci, niezależnie od tego, czy jest to sieć społecznościowa, czy sieć komputerowa. Wiele sieci zawiera tak zwane "super-węzły" - koncentratory, które są połączone z wieloma innymi węzłami w sieci. Tutaj liczba połączeń, które hub ma z innymi węzłami, jest znacznie większa niż średnia liczba połączeń na węzeł. Te koncentratory mogą pomóc w szybkości rozprzestrzeniania komunikacji w sieci, ponieważ po dotarciu komunikatu do koncentratora, wiadomość może natychmiast dotrzeć do większej części sieci bez konieczności przechodzenia przez kolejne węzły pośrednie. W dowolnej sieci możemy zidentyfikować koncentrator, a następnie określić stopień oddzielenia od niego danego węzła - czyli liczbę węzłów, które należy odwiedzić wzdłuż najkrótszej ścieżki od węzła do koncentratora. W sieci społecznościowej może to być pomocne w określeniu, jak "bliska" jest jedna osoba dla sławnej osoby - im bliżej celebryty, tym większa odzwierciedlona chwała. Matematycy używali w rzeczywistości liczby zwanej liczbą Erdösa, aby zmierzyć dystans współpracy znanego i płodnego węgierskiego matematyka, Paula Erdösa, który miał setki współpracowników i pracował w wielu dziedzinach, w tym w kombinatoryce, teorii grafów, teorii liczb, teoria mnogości i teoria prawdopodobieństwa. Liczba Erdösa jest obliczana rekurencyjnie w następujący sposób:

•  Jeśli masz artykuł współtworzony przez Erdösa, masz numer Erdös 1.
•  W przeciwnym razie, jeśli masz artykuł opublikowany ze współautorem, który ma numer Erdös 1, masz numer Erdös 2.
•  W przeciwnym razie, jeśli masz artykuł opublikowany ze współautorem, który ma liczbę Erdös n, masz liczbę Erdös n + 1.

Metryki odległości można łatwo zastosować w innych sieciach, a nie tylko w sieciach osób publikujących artykuły naukowe. Bardzo odmienną siecią jest sieć aktorów, którzy zagrają w filmach - tutaj jako "centrum" wszechświata aktorów filmowych zostało wybrane jako Kevin Bacon, amerykański aktor filmowy i teatralny, który zagrał w wielu filmach, takich jak JFK, Apollo 13 i Footloose. Liczba Kevina Bacona obliczana jest w następujący sposób:

•  Jeśli zagrałeś w filmie z Kevinem Baconem, masz numer Kevina Bacona 1.
•  W przeciwnym razie, jeśli zagrałeś w filmie z gwiazdą, który ma numer Kevina Bacona 1, masz numer Kevina Bacona 2.
•  W przeciwnym razie, jeśli zagrałeś w filmie z kimś, kto ma numer Kevin Bacon n, masz numer Kevina Bacona n + 1.

Liczby Erdösa i Kevina Bacona dostarczają przybliżonych miar stopnia przynależności danej osoby do konkretnej społeczności, takiej jak Matematycy i / lub aktorzy filmowi - im wyższe liczby, tym mniejsze zaangażowanie w tę społeczność. W każdej społeczności istnieją osoby, które są również członkami innych społeczności, i często te osoby mogą szybciej rozpowszechniać wiadomości, szczególnie między najbardziej rozłącznymi społecznościami, w których interakcja jest minimalna - to znaczy, gdy komunikacja między społecznościami jest znacznie mniejsza niż wewnątrz organizacji. komunikacja społeczna. Osoby z wieloma członkostwami służą do rozpowszechniania pomysłów lub wiadomości, które mogą być dobrze znane w ramach jednej społeczności innym społecznościom, w których ta sama wiadomość może być mniej znana lub nawet zupełnie nieznana. W badaniach akademickich często dokonano ważnych przełomów, na przykład dzięki interdyscyplinarnym badaniom. Ponieważ możemy zmierzyć stopień oddzielenia od jednej dobrze znanej osoby w danej społeczności, możemy zmierzyć połączone rozdzielenie z dwóch lub więcej społeczności. Dla społeczności matematyków i aktorów filmowych mamy numer Erdös-Bacon, który jest sumą liczby Erdösa plus liczba Kevina Bacona. Nie jest niespodziewanie, niewielu ludzi ma zarówno numer Erdösa, jak i numer Kevina Bacona, co świadczy o niewielkiej interakcji między matematykami a aktorami filmowymi. Istnieją jednak i są pewne godne uwagi wyjątki, takie jak astronom Carl Sagan i fizyk teoretyczny Stephen Hawking, a także Natalie Portman, aktorka znana z roli w filmach Gwiezdnych wojen. Natalie Portman ma numer 5 Erdös ze względu na autorstwo artykułów psychologicznych podczas studiów Harvard w dziedzinie psychologii. Ma również numer Kevina Bacona 1 (zagrała w filmie Nowy Jork, Kocham cię z Kevinem Baconem). Jej liczba Erdös-Bacon wynosi zatem 6 (5 + 1). Mamy teraz tło, aby przyjrzeć się modelowi Being Kevin Bacon NetLogo. Zrzut ekranu przedstawia model.



W środowisku NetLogo pokazana jest losowo wygenerowana sieć. Służy ona do symulacji skuteczności różnych metod komunikacyjnych, pomagając w rozprzestrzenianiu wiadomości w całej sieci. Sieć w tym przypadku zawiera 65 węzłów, z których dwa to supernody. Normalne węzły mają losowa liczba połączeń od jednego do 5, a super-węzły mają losową liczbę połączeń do 50. Kod używany do generowania sieci jest pokazany w NetLogo Code to create-network [number-of-nodes]

;; Tworzy liczbę nowych węzłów w sieci.
create-nodes number-of-nodes
[
set blackboard table:make ;; used by walkers if applying the blackboard
;; metoda dzielenia się wiedzą
ifelse (random 100 < percent-in-both)
[ set link-type 0 ;; zarówno erdos, jak i węzeł bekonowy
set color red
set label (word "eb" who " ") ]
;jeszcze
[ ifelse (random 2 = 0)
[ set link-type 1 ;; węzeł erdos
set color lime
set label (word "e" who " ") ]
[ set link-type 2 ;; węzeł boczek
set color blue
set label (word "b" who " ") ]]
]
set erdos-set nodes with [link-type = 1 or link-type = 0] ;; węzeł erdos
set bacon-set nodes with [link-type = 2 or link-type = 0] ;; węzeł boczek
end
to setup-network
clear-all
set-default-shape nodes "circle 2"
set-default-shape dwalkers "person"
;; utwórz losową sieć
reset-counts
set max-distance 999999
;; liczba ta musi być większa niż maksymalna długość ścieżki w sieci
if (network-update > 0)
[ set network-update-count random network-update ]
create-network no-of-nodes
set paul-erdos min-one-of erdos-set [ who ]
set kevin-bacon min-one-of bacon-set [ who ]
ask paul-erdos [ set color magenta set paul-erdos-no who ]
ask kevin-bacon [ set color orange set kevin-bacon-no who ]
create-network-links
reset-layout
end

Generowane są trzy typy węzłów - węzły należące do zestawu Paula Erdösa (są to kolorlimonki ), węzły należące do zestawu Kevina Bacona (kolor niebieski) i te, które należą do obu (kolor czerwony). Procent suwaka w obu przypadkach służy do określenia szansy, że węzeł zostanie losowo wygenerowany i będzie należał do obu zestawów; w przeciwnym razie węzeł zostanie losowo wybrany do jednego z zestawów Paula Erdösa lub zestawu Kevina Bacona. Etykiety węzłów są pokazane obok węzłów w środowisku z ich agentem, którego numer jest poprzedzany przez "e", jeśli są w zestawie Paula Erdösa, "b", jeśli są w zestawie Kevina Bacona i "eb", jeśli są są w obu. Węzeł powiązany z Paulem Erdösem został wybrany jako węzeł z zestawu Paula Erdösa z minimalną liczbą osób (jest to kolorowa magenta i oznaczona jako "e1" w środkowej prawej części otoczenia), podobnie jak dla węzła Kevina Bacona (kolorowego pomarańczowy i oznaczony "b0" blisko dołu po lewej). Po utworzeniu sieci możemy uzyskać agentów spacerowiczów, którzy "przeszukują" ją, wykonując różne zadania. Jednym z zadań może być znalezienie średniego stopnia rozdzielenia węzłów w sieci od określonego węzła; w modelu ten węzeł jest wyznaczony przez centrum suwaka wszechświata. Dobrze znanym algorytmem do wykonywania tych obliczeń jest algorytm Dijkstry. Algorytm został zaimplementowany w modelu Being Kevin Bacon - kod znajduje się w kodzie NetLogo

to initialise-distances [initial-node]
;; inicjuje najkrótsze odległości między węzłami sieci do 0
let number-of-nodes max [who] of nodes + 1
set dijkstra-distances array:from-list n-values number-of-nodes
[number-of-nodes + 1] ;; "nieskończoność"
set dijkstra-directions array:from-list n-values number-of-nodes [nobody]
array:set dijkstra-distances initial-node 0
;; (ustawia odległość na 0 dla początkowego węzła)
end
to perform-dijkstra [initial-node nodes-to-visit]
;; oblicza tablicę odległości dla algorytmu Dijkstra przy użyciu
;; węzeł początkowy jako punkt centralny
set nodes-visited 0
initialise-distances [who] of initial-node
let visited-set [] ;; this is the list of nodes that have been visited
let unvisited-set nodes-to-visit
;; jest to lista węzłów, które jeszcze nie zostały odwiedzone
let this-dwalker nobody
if (animate-dijkstra)
[ create-dwalkers 1
[ set color white
set size 2
set this-dwalker who ]]
let current-node initial-node
while [count unvisited-set > 0]
[
if (animate-dijkstra)
[ ask dwalker this-dwalker
[ setxy [xcor] of current-node [ycor] of current-node
display
wait 0.1 ]]
ask current-node
[
set nodes-visited nodes-visited + 1
set visited-set fput who visited-set
set unvisited-set other unvisited-set
ask link-neighbors
[
let dist-thru-here
(array:item dijkstra-distances [who] of current-node) + 1
let dist-thru-to-there array:item dijkstra-distances who
if (dist-thru-here < dist-thru-to-there)
[ array:set dijkstra-distances who dist-thru-here
array:set dijkstra-directions who [who] of current-node ]
]
;; ustaw bieżący węzeł na pozostały nie odwiedzony węzeł, który ma
;; najmniejsza odległość do początkowego węzła
set current-node min-one-of unvisited-set
[array:item dijkstra-distances who]
]
]
;;
print array:to-list dijkstra-distances
if (animate-dijkstra)
[ wait 0.2 ask dwalker this-dwalker [ die ]]
end
to go-dijkstra
;; Uruchom bezpośrednio za pomocą przycisku interfejsu - oblicza tablicę odległości
;; dla algorytmu Dijkstra
let initial-node nobody
ifelse (centre-of-the-universe = "Paul Erdos")
[ set initial-node paul-erdos ]
;; ustaw węzeł początkowy na węzeł powiązany z Paulem Erdosem
[ set initial-node kevin-bacon ]
;; ustaw węzeł początkowy na węzeł powiązany z Kevinem Baconem
initialise-distances [who] of initial-node
let nodes-to-visit []
;; (jest to lista węzłów, które jeszcze nie zostały odwiedzone))
ifelse (centre-of-the-universe = "Paul Erdos")
[ set nodes-to-visit erdos-set ]
[ set nodes-to-visit bacon-set ]
perform-dijkstra initial-node nodes-to-visit
dump-dijkstra-directions
plot-dijkstra
end

Algorytm działa, gdy agenci spacerujący indeksują sieć, aktualizując najkrótsze odległości ścieżek w trakcie ich działania. Odległości te są przechowywane w strukturze danych tablicy, która jest rozszerzeniem do NetLogo. Procedura perform-dijkstra wykonuje obliczenia zwracane w dijkstradystancjach tablicy odległości. Ta tablica ma licznik odległości skojarzony z każdym węzłem (indeksowany przez numer węzła), który jest stopniowo aktualizowany przez agentów spaceeujących podczas przeszukiwania sieci. Algorytm utrzymuje dwa zestawy - zestaw węzłów, które jeszcze nie odwiedził, oraz zestaw węzłów, które ma. Pierwszy odwiedzony węzeł jest wybierany jako węzeł powiązany z węzłem docelowym (to znaczy węzłem związanym z centrum Wszechświata lub Kevin Bacon w tym przykładzie). Dla każdego odwiedzanego węzła jest on najpierw dodawany do już odwiedzonego zestawu, aby nie był ponownie odwiedzany, a następnie algorytm aktualizuje liczniki odległości dla wszystkich jego sąsiadów łącza, w których odległość do węzła docelowego byłaby krótsza w stosunku do bieżącego węzła. Bieżący węzeł jest następnie ustawiony na węzeł w nieodwiedzonym zbiorze, który ma najmniejszą odległość od początkowego węzła docelowego. W modelu Being Kevin Bacon, algorytm Dijkstra jest wykonywany przez kliknięcie przycisku go-djijkstra w interfejsie. Po zakończeniu wyświetli się okno dialogowe z informacją, jaka jest średnia odległość najkrótszej ścieżki, następnie wykreśli najkrótszą ścieżkę, odległości dla każdego węzła na dolnym wykresie pokazanym w prawym dolnym rogu rysunku. Używanie agentów komunikacyjnych do wyszukiwania sieci Kolejnym zadaniem, które możemy wykonać dla agentów walkerów, jest symulowanie przeszukiwania sieci, takiego jak w rzeczywistych ludzkich sieciach społecznościowych lub komputerowych sieciach peer-to-peer. W tym miejscu wielu agentów przeszukuje sieć jednocześnie bez uprzedniej wiedzy, aby znaleźć różne węzły celu z różnych punktów początkowych w sieci. Na przykład w sieciach typu peer-to-peer występuje problem zwany wykrywaniem zasobów, gdy użytkownik musi znaleźć określony zasób w sieci typu peer-to-peer. Zasobem może być konkretny plik, który chce pobrać, lub komputer z niezbędną mocą obliczeniową lub pamięcią, który jest wymagany do zdalnego wykonania programu. Symulacja wdrożona przez model Being Kevin Bacon polega na stworzeniu agentów spacerowiczów, którzy chodzą po sieci, próbując dotrzeć do wybranego węzła celu wybranego losowo. Wiedza dotycząca lokalizacji węzłów w sieci jest przekazywana przy użyciu różnych metod komunikacji - model implementuje pięć: metoda o nazwie none, w której agenty nie komunikują niczego, gdy się krzyżują; metoda zwana "word-of-mouth", która jest analogiczna do zachowania komunikacji ustnej; metoda zwana blackboard która jest analogiczna do zachowania komunikacyjnego która wykorzystuje stygmergię, jak omówiono w sekcji wcześniej ; oraz dwie metody (combined 0 i combined 1), które łączą metody komunikacji w mowie i na tablicy. Metoda Blackboard opiera się na architekturze sztucznej inteligencji o tej samej nazwie, w której agenci współdzielą i aktualizują wspólną bazę wiedzy. Architektura tablicy jest analogiczna do tego, w jaki sposób tablice używane są w klasach i podczas wykładów. Tablica służy jako medium, za pośrednictwem którego przekazywane są idee. W komunikacji ludzkiej osoby w klasie lub w teatrze wykładowym mają możliwość czytania w czasie wolnym (lub ignorowania) tego, co zostało napisane na tablicy. Odmiana architektury tablicowej użytej w symulacji polega na tym, że zamiast używać jednej tablicy, każdy węzeł ma własną tablicę. Każdy przechodzący agent spacerowy może wybrać odczytanie informacji zapisanych na tablicy węzła lub może zignorować to; jednak w modelu agenci piechurów zawsze wybierają odczyty i aktualizują tablice węzłów. Przechowywane informacje to odległość, jaką trzeba pokonać, aby dostać się do innego węzła w sieci, wybierając określoną ścieżkę z bieżącego węzła. Jest on aktualizowany, gdy walker zwraca ścieżkę do węzła, z którego zaczął. Żadne inne informacje nie są przechowywane na tablicy - na przykład pełna ścieżka dostępu do węzła celu nie jest przechowywana - tylko informacja, ile czasu zajęło, aby wybrać konkretną ścieżkę. Jeśli późniejszy piechur znajdzie krótszą trasę za pomocą innej ścieżki, wówczas mniejsza wartość odległości zostanie zapisana na tablicy. Jeśli na tablicy nie ma żadnych wcześniejszych informacji, agenci piechoty dokonają losowego wyboru, gdzie dalej iść. Kod do aktualizacji tablic jest pokazany w NetLogo Code Procedura update-along-path aktualizuje tablice wzdłuż ścieżki walkera, this-walker jeśli ścieżka do celu jest krótsza.

to update-along-path [this-walker value]
;; aktualizuje informacje wzdłuż ścieżki, gdy metoda dzielenia się wiedzą
;; to „Tablica” lub kombinacja
let p 0
let val 0
let val1 0
let key-dist ""
let key-path ""
if knowledge-sharing = "Blackboard" or
knowledge-sharing = "Combined 1" or
knowledge-sharing = "Combined 2"
[
ask this-walker
[
;;wpisz „goal =” wpisz goal wpisz ”path = " show path
let this-goal goal
let prev first path
foreach but-first path
[
set key-dist (word this-goal " dist")
set key-path (word this-goal " path")
ifelse (value = "F")
[ set val max-distance ] ;; failure - node was not found
[ set val p + 1 ] ;; calculate the position in the path
if is-turtle? ? ;; does the node exist? (it may have been deleted)
[
ask ?
;; aktualizuj tablice wzdłuż ścieżki, jeśli droga do celu jest krótszar
[ ifelse (not table:has-key? blackboard key-dist)
[ set val1 max-distance + 1 ]
;; (żaden wpis nie istnieje - upewnij się, że dodano nowy wpis)
[ set val1 table:get blackboard key-dist ]
if (val < val1)
[ table:put blackboard key-dist val
table:put blackboard key-path prev ]]
]
set prev ?
set p p + 1
]]
]
end

Kod używa rozszerzenia tabeli do NetLogo, gdzie wartości powiązane z kluczami wyszukiwania mogą być przechowywane i pobierane w tabeli mieszania. Istnieją dwa rodzaje kluczy używanych do tablicy, klucz do przechowywania wyboru ścieżki i klucz do przechowywania jej odległości. Przycisk dump-blackboards można kliknąć w interfejsie, aby zrzucić zawartość wszystkich tablic węzłów. Zrzut tablicy z wpisami dla dwóch węzłów docelowych może wyglądać następująco: Kluczowy ciąg zawiera najpierw listę zawierającą ciąg "węzeł", po którym następuje numer docelowego węzła, który można znaleźć, podążając za odnośnikiem określonym przez klucz ścieżki. W przykładzie, dwoma węzłami docelowymi są węzły 59 i 52. Pierwszy z nich można osiągnąć wzdłuż ścieżki z odległością 8, podążając za łączem do węzła 11, ten ostatni wykonuje 6 kroków, jeśli następuje to samo łącze z węzłem 11. Symulacja modelu rozpoczyna się od kliknięcia przycisku go-walkers. Pojedyncza iteracja symulacji może zostać wykonana poprzez kliknięcie przycisku go-walkers-once. Wielokrotne symulacje pokazują, że metoda komunikacji w Tablicy zaimplementowana w symulacji konsekwentnie przewyższa metodę komunikacji "z ust do ust". Odzwierciedla to wyniki eksperymentalne symulacje dla problemu wykrywania zasobów w sieciach peer-to-peer. Podczas symulacji modelu NetLogo, ścieżka, którą poruszają się spacerowicze, jest pokazana poprzez zwiększenie szerokości przekierowanego połączenia, jak pokazuje grubsze białe linie na Rysunku. Po prawej stronie zauważ, istnieją pewne statystyki, które zostały zebrane podczas symulacji. W prawym dolnym rogu znajdują się cztery monitory, które wyświetlają liczbę węzłów (65 na rysunku), aktualną liczbę agentów (12), liczbę węzłów odwiedzonych przez spacerowiczów (30) i procentowy sukces, jaki mieli spacerowicze. w znalezieniu węzła celu (67,34%). Wykres w prawym górnym rogu wykresu pokazuje liczbę walkerów w stosunku do tick. Agenci wędrują dalej, dopóki nie znajdą węzła celu lub przekroczą czas, jaki time-to-live (w tym przypadku ustawiono 20 ticków). Wykres pokazuje, że początkowo liczba spacerowiczów rośnie do momentu przekroczenia przez agentów spacerujących zmiennej time-to-ive, a następnie nadal spada, ponieważ coraz więcej agentów spacerowych zaczyna znajdowanie węzła celu bardziej regularnie, niż wiedza zawarta w tablicach i / lub transmitowane przez słowo z ust staje się bardziej skuteczny w ograniczaniu poszukiwania nowych agentów. Środkowy wykres przedstawia odsetek udanych wyszukiwań w porównaniu z całkowitą liczbą wyszukiwań; niewielki wzrost nachylenia wskazuje na efekt uczenia się, ponieważ większa wiedza jest przechowywana lub przesyłana. Dolny wykres jest wynikiem działania algorytmu Dijkstra, jak omówiono powyżej. Kod, który zostanie wykonany po kliknięciu przycisku go-walkers, jest wyświetlany w kodzie NetLogo

to go-walkers
;; zmusić spacerowiczów do kontynuowania wyszukiwania
if (simulation-ticks > 0) and (ticks > simulation-ticks)
[ stop ]
update-network
setup-walkers
ask links [ set thickness 0 ]
ask walkers
[
set nodes-visited nodes-visited + 1
ifelse (ticks-alive >= time-to-live)
;;żył zbyt długo bez sukcesu - zabij to
[ set unsuccessful-searches unsuccessful-searches + 1
update-along-path self "F"
;; w razie potrzeby zaktualizuj informacje wzdłuż ścieżki; „F” oznacza awarię
]
[ ;; utwórz nowych spacerowiczów, aby przenieść się do nowej lokalizacji
expand-walkers (next-locations location)
]
die ;; zawsze umieraj - stwory zostały już wysłane
;; kontynuuj poszukiwanie mnie
]
plot-walkers
tick
end
to expand-walkers [new-locations-list]
let new-walkers-count length new-locations-list
let new-location 0
hatch-walkers new-walkers-count
[ ;; utwórz nową walker w miejscu, aby kontynuować wyszukiwanie
;; i przenieś się do nowej lokalizacji
set ticks-alive ticks-alive + 1
;; zjedź z następnej lokalizacji do odwiedzenia:
set new-location first new-locations-list
set new-locations-list but-first new-locations-list
ifelse (not revisits-allowed and member? new-location path)
[ die ] ;; nie odwiedzaj ponownie węzłów, które już odwiedziłeś, chyba że masz na to zgodę
[
if (new-location != nobody) and
([link-with new-location] of location != nobody)
[
;; podświetl link jaki pzekraczam
ask [link-with new-location] of location [ set thickness 0.4 ]
face new-location
move-to new-location
set location new-location
set path fput new-location path
if new-location = goal ;; success-no need to hang around any longer
[ set successful-searches successful-searches + 1
;; w razie potrzeby zaktualizuj informacje wzdłuż ścieżki; „S” oznacza sukcess
update-along-path self "S"
die ] ;; die happy
]]
]
end

Procedura go-walkers najpierw aktualizuje sieć, dodając lub usuwając losowe węzły w sieci, jeśli sieć jest dynamiczna. Ma to na celu symulację sieci, w których węzły nieustannie się zmieniają; szybkość zmian można kontrolować za pomocą suwaków network-update, nodes-to-ad i nodes-to-delete modelu interfejsu . Jeśli network-update jest ustawiona na 0, sieć staje się statyczna bez dodawania nowych węzłów lub usuwania każdego tiku.Procedura go -walkers zeruje następnie grubość linii wszystkich linków do 0, a następnie pyta każdego aktualnie aktywnego agenta, czy trwa zbyt długo (tj. time-to-live). Jeśli tak, tablice na ścieżce odwiedzonej przez spacerówki są aktualizowane przez zapisanie dużej liczby max-distance w celu odzwierciedlenia, że ścieżka została uszkodzona (ta liczba została zainicjowana w kodzie NetLogo, i musi być liczbą znacznie większą niż maksymalna długość dowolnej ścieżki w sieci). W przeciwnym razie wyszukiwanie zostanie rozszerzone poprzez wywołanie procedury expand-walkers, która wykluczy nowych spacerowiczów w celu przeniesienia do nowych lokalizacji w sieci i zaktualizuje tablice, jeśli ścieżka wyszukiwania zakończyła się powodzeniem. Następnie bieżący piechur może umrzeć, ponieważ już przekazał pozostałą część poszukiwań spacerowiczom stworzonym przez procedurę expand-walkers. Przyjrzymy się teraz probabilistycznemu podejściu do charakteryzowania komunikacji opartej na teorii informacji, aby pomóc nam w dalszym badaniu natury komunikacji i języka.

Entropia i informacje

W teorii informacji, entropia zapewnia środki do pomiaru informacji przesyłanych między środkami przekazującymi w kanale komunikacji. Entropia to średnia liczba bitów wymaganych do przekazania komunikatu między dwoma agentami w kanale komunikacji. Zasadnicze twierdzenie o kodowaniu (Shannon, 1948) stwierdza, że dolna granica do średniej liczby bitów na symbol potrzebnych do zakodowania wiadomości (tj. sekwencji symboli, takich jak tekst) przesłanych kanałem komunikacyjnym, jest określona przez jej entropię):



gdzie jest k możliwych symboli z rozkładem prawdopodobieństwa i gdzie prawdopodobieństwa są niezależne i sumują się do 1. Jeśli podstawa logarytmu wynosi 2, to jednostka miary jest podana w bitach. Załóżmy na przykład, że alfabet zawiera pięć symboli: biały, czarny, czerwony, niebieski i różowy prawdopodobieństwa 2/7. 2/7, 1/7 , 1/7 i 1/7 . Następnie średnia liczba bitów potrzebnych do zakodowania każdego symbolu jest określona przez:



Entropia jest miarą ilości niepewności związanej z wyborem symbolu - im większa entropia, tym większa niepewność. Może być również uważana za miarę "treści informacyjnej" komunikatu - bardziej prawdopodobne komunikaty przekazują mniej informacji niż mniej prawdopodobne. Entropia może być bezpośrednio związana z kompresją. Entropia jest dolną granicą średniej liczby bitów na symbol wymaganą do zakodowania długiego ciągu tekstu wyciągniętego z określonego języka źródłowego, co oznacza, że kodowanie arytmetyczne, metoda przypisywania kodów do symboli o znanym rozkładzie prawdopodobieństwa, pozwala uzyskać średni kod długość arbitralnie zbliżona do entropii. Zatem kompresję można stosować bezpośrednio do oszacowania górnej granicy entropii w następujący sposób. Biorąc pod uwagę sekwencję n symboli x1 x2…xn, entropię można oszacować, sumując długości kodu wymagane do kodowania każdego symbolu:



Tutaj długość kodu dla każdego symbolu xi jest obliczana za pomocą wzoru -log2p(xi). Entropia obliczona w ten sposób jest istotna, ponieważ zapewnia miarę tego, jak dobrze model statystyczny robi w porównaniu do innych modeli. Odbywa się to poprzez obliczenie entropii dla każdego modelu statystycznego, a model o najmniejszej entropii jest oceniany jako "najlepszy"

Obliczanie entropii w NetLogo

W NetLogo stworzono model gier z odgadywaniem samochodów, aby zilustrować, jak obliczane są długości kodu entropii i kompresji. Zrzut ekranowy interfejsu modelu pokazano na rysunku



Model reprezentuje odmianę gry, w którą ludzie mogą grać podczas podróży samochodem. Ludzie wybierają kolor z góry - zwykle biały, czarny, czerwony lub niebieski - a następnie liczą, ile samochodów z wybranym kolorem przejeżdża obok nich w przeciwnym kierunku. Osoba, która ma największą liczbę na koniec gry, wygrywa. Odmiana gry zawarta w modelu polega na tym, że zamiast każdej osoby wybierającej pojedynczy samochód, określają one z góry liczbę każdego koloru w celu zdefiniowania rozkładu prawdopodobieństwa. Ich wyniki mierzone są poprzez kodowanie przybycia samochodów do ich własnej dystrybucji. Osoba, która ma najmniejszą całkowitą długość kodu (suma dziennika prawdopodobieństw kolorów samochodów, które się pojawiają) jest tą, która wygrywa. Na rysunku są rozkłady prawdopodobieństwa dla trzech agentów, które symulują trzy różne osoby grające w tę grę. Są one definiowane za pomocą suwaków po lewej stronie, które są używane do zmiany liczby dla każdego koloru w rozkładzie, a liczby są używane do obliczenia prawdopodobieństw przez podzielenie przez całkowitą liczbę. Dodatkowo istnieją liczniki, które definiują dystrybucję źródłową, która jest używana do generowania kolorów samochodów, które pojawiają się w animacji. Czwarty agent komputerowy również gra w grę, aktualizując w sposób automatyczny liczbę poszczególnych kolorów w miarę pojawiania się samochodów. Liczby te są pokazane w białych polach pod nagłówkiem "Dystrybucja agenta adaptacyjnego" na środku figury. Ponieważ dystrybucja źródła jest w tym przypadku równie prawdopodobna - każdy z kolorów ma taką samą liczbę 1 - wtedy znajduje to odzwierciedlenie w liczbach adaptacyjnych, które są bardzo podobne, 214 lub 215. Oznacza to, że było 214 lub 215 samochodów z obserwowanym kolorem, który został wygenerowany przez model od momentu uruchomienia animacji. Obliczenia entropii i długości kodu pokazano w prawej ramce na rysunku. Entropia dla wszystkich rozkładów pozostaje taka sama, z wyjątkiem rozkładu adaptacyjnego do momentu użycia suwaka do zmiany liczby po lewej stronie, a następnie entropia jest natychmiast ponownie obliczana, aby odzwierciedlić zmianę w rozkładzie prawdopodobieństwa. Entropia dla rozkładu adaptacyjnego zmienia się nieustannie, aby odzwierciedlić fakt, że wartości adaptacyjne są ciągle aktualizowane. Długość kodu po prawej stronie figury stanowi sumaryczne sumy kosztów kodowania informacji o kolorze rzeczywistego samochodu według rozkładu każdego agenta. Zazwyczaj całkowita długość kodu źródłowego jest mniejsza niż reszta, ponieważ odzwierciedla rzeczywisty rozkład, który jest używany do generowania wyglądu samochodów. Długość kodu adaptacyjnego jest również zwykle bliska, ale nieco większa niż długość kodu źródłowego, co wskazuje na użyteczność strategii dopasowania twojego rozkładu do rzeczywistych obserwacji, zamiast wcześniejszego zdefiniowania predefiniowanego prawdopodobieństwa. W niektórych okolicznościach jednak, z powodu losowości używanej do generowania sekwencji samochodów, które się pojawiają, w różnych momentach rzeczywisty rozkład nie pasuje dokładnie do rozkładu źródła, w którym to przypadku strategia adaptacyjna może przewyższać prognozy źródłowe przy odgadywaniu koloru samochody W przypadku trzech agentów używających częściowo ustalonej strategii (tj. Użytkownik może używać suwaków do zmiany liczby w locie, więc dystrybucja jest ustalana tylko do następnej zmiany liczby), długości kodu odzwierciedlają, jak podobne są liczby do źródła się liczy. Jeśli istnieje odmiany, spowoduje to większe kodowanie kosztów. Na przykład na rysunku liczba agentów 01 jest najbliżej liczby źródeł, przy czym tylko liczba białych i czarnych jest różna. Powoduje to nieznaczny spadek entropii - od 2,32 do 2,24, ponieważ entropia wskazuje średni koszt kodowania koloru pojedynczego samochodu, a niektóre kolory mają obecnie występować częściej niż terapeuty. Jednak nie jest to odzwierciedlone w obserwacje, ponieważ rozkłady prawdopodobieństwa obecnie nie są zgodne, a zatem w wyniku tego zwiększa się całkowita długość kodu (z 2479.82 do 2571.26). Kiedy liczba jest znacząco niedopasowana, tak jak w przypadku agentów 02 i 03, sumy długości kodu są w rezultacie dużo większe niż długość kodu źródłowego. Wybrane części kodu modelu zostały wymienione w kodzie NetLogo. (Pełny kod można pobrać za pomocą linku URL pokazanego na dole tego rozdziału). Pierwsza lista kodów zawiera procedurę setup-configuration i dystrybucji, w której rozkłady są ustalane na podstawie liczby suwaków. Rozkłady są reprezentowane jako lista pięciu liczb - w kolejności białej, czarnej, czerwonej, niebieskiej i różowej. Rozkład adaptacyjny inicjowany jest tak, że wszystkie liczby wynoszą 1 na początku. Pod koniec procedury ustawiania obliczono całkowitą liczbę dist-total i dist-entropy i obliczoną dla rozkładu. Procedura neg-log-prob oblicza wartość ujemną logu prawdopodobieństwa dla każdego koloru, wykorzystując liczbę i liczbę całkowitą, i jest używana do obliczenia entropii dla rozkładu.

to setup-distributions
;; ustawia rozkłady dla każdego agentat
ask agents with [agent-id = 0]
[ set distribution
(list source-white source-black source-red source-blue source-pink) ]
ask agents with [agent-id = 1]
[ set distribution
(list agent-01-white agent-01-black agent-01-red agent-01-blue
agent-01-pink) ]
ask agents with [agent-id = 2]
[ set distribution
(list agent-02-white agent-02-black agent-02-red agent-02-blue
agent-02-pink) ]
ask agents with [agent-id = 3]
[ set distribution
(list agent-03-white agent-03-black agent-03-red agent-03-blue
agent-03-pink) ]
if (ticks = 0)
[ ask agents with [agent-id = 4] ; initialise the adaptive distribution
[ set distribution (list 1 1 1 1 1) ]]
;; wszystkie kolory są dostępne na początku dla środka adaptacyjnego
;; liczby dystrybucji agenta adaptacyjnego są następnie aktualizowane
;; gdzie indziej w aktualizacji-adaptacyjnej-liczbie
ask agents
[ set dist-total 0
set dist-entropy 0
foreach distribution
[ set dist-total dist-total + ?] ; calculate total first
foreach distribution
[ set dist-entropy dist-entropy + neg-log-prob ? dist-total]]
end
to-report neg-log-prob [p q]
;; zwraca ujemną wartość logarytmu do podstawy 2 prawdopodobieństwa p / q.
report (- log (p / q) 2)
end
Obliczanie długości kodu odbywa się za pomocą procedury encode-this-car w kodzie NetLogo. Łączna długość kodu do tej pory, codelength-total, jest aktualizowana poprzez dodanie ujemnego logu prawdopodobieństwa dla koloru zakodowanego samochodu. Prawdopodobieństwo to liczba kolorów zapisanych na liście distribution agenta podzielona przez całkowitą liczbę, dist-total.
to encode-this-car [colour]
;; zwraca koszt kodowania koloru tego samochodu zgodnie z
;; dystrybucja agenta
let codelength 0
ask agents
[
set codelength 0
ifelse colour = white
[set codelength neg-log-prob (item 0 distribution) dist-total]
[ifelse colour = 1 ;almost black to make the car doors & windows visible
[set codelength neg-log-prob (item 1 distribution) dist-total]
[ifelse colour = red
[set codelength neg-log-prob (item 2 distribution) dist-total]
[ifelse colour = blue
[set codelength neg-log-prob (item 3 distribution) dist-total]
[set codelength neg-log-prob (item 4 distribution) dist-total]]]]
set codelength-total codelength-total + codelength
]
end

Możemy reprezentować stan wewnętrzny agentów w tej symulacji za pomocą ich dystrybucji. Jeśli zmienimy listę liczników dystrybucji na jeden numer, stosując procedurę raportowania wymienioną w kodzie NetLogo, wówczas możemy określić, w jaki sposób każda dystrybucja zmienia się w zależności od czasu. Celem tego jest pokazanie, w jaki sposób rozkłady prawdopodobieństwa mogą być przedstawione jako pojedyncze punkty w przestrzeni n-wymiarowej i jak ich zmiana w czasie reprezentuje ruch w tej przestrzeni. Rysunek 7.5 pokazuje dwa zrzuty ekranów, które model wytworzył dla dwóch konfiguracji - jeden, w którym liczy się źródło były wszystkie 1 (lewy wykres) i jeden, w którym źródłem były wszystkie 1000 (prawy wykres).



Tylko dystrybucja adaptacyjna jest zmienna, a czerwone linie na wykresie odzwierciedlają to. Ponieważ liczniki adaptacyjne stale rosną, musimy się upewnić, że maksymalna liczba nie jest nigdy przekroczona, więc robi się to za pomocą reportera remainder w kodzie. Pozostałe rozkłady są statyczne, a ich linie są poziome. Jeśli użytkownik były zmienić licznik na jedną z tych dystrybucji, działki będzie odzwierciedlać zmiany przez zmiany w pozycji odpowiedniej linii.

to-report distribution-as-a-point [agent]
; zwraca rozkład agenta reprezentowany jako pojedynczy punkt
report ;; note that the maximum count for non-adaptive distributions is
;; 1000, więc upewnij się, że max. liczba nie przekracza 1000 dla
;; rozkład adaptacyjny
(remainder (item 0 [distribution] of agent) 1000) +
(remainder (item 1 [distribution] of agent) 1000) * 1000 +
(remainder (item 2 [distribution] of agent) 1000) * 1000 * 1000 +
(remainder (item 3 [distribution] of agent) 1000) * 1000 * 1000 * 1000 +
(remainder (item 4 [distribution] of agent) 1000) * 1000 * 1000 * 1000 *
1000
end

Ten model pokazuje, w jaki sposób agenci mogą porównywać jakość różnych modeli statystycznych. Modele te mogą pomóc przewidzieć prawdopodobne przyszłe zdarzenia w celu podjęcia świadomych decyzji. Ważne jest, aby pamiętać, że jeśli nie masz pewnej wiedzy na temat procesu tworzenia przyszłych zdarzeń, to nigdy nie możesz upewnij się, który model statystyczny jest "najlepszy" do przewidywania, co może się wydarzyć w przyszłości, szczególnie w dynamicznym środowisku, w którym siły generujące zdarzenia mogą się zmieniać z jednej chwili na następną.

Modelowanie języka

Metoda podejmowania decyzji na podstawie tego, który model statystyczny był najlepszy w przewidywaniu przeszłych sekwencji zdarzeń (na przykład przy użyciu obliczeń długości kodu kompresji, jak powyżej) ma szeroki zakres aplikacji do podejmowania decyzji przez agentów. W tym rozdziale koncentrowaliśmy się na komunikacji i języku, możemy też przyjrzeć się kolejnym przykładom, które to ilustrują, szczególnie w dziedzinie modelowania języka. W statystycznym (lub probabilistycznym) modelu języka przyjmuje się, że symbole (na przykład słowa lub znaki) można scharakteryzować za pomocą zestawu prawdopodobieństw warunkowych. Model językowy to komputerowy mechanizm służący do określania prawdopodobieństw warunkowych. Przypisuje prawdopodobieństwo wszystkim możliwym ciągom symboli. Najbardziej udane typy modeli językowych dla sekwencji symboli, które występują w językach naturalnych, takich jak angielski i walijski, to słowa modele n-gramowe (które bazują na prawdopodobieństwie słowa w poprzednich n wyrazach) i część mowy w gramach modele (które opierają prawdopodobieństwo na poprzednich słowach i częściach mowy, są również nazywane modelami n-pos). Modele n-gramowe (modele oparte na znakach) również zostały wypróbowane, chociaż nie są tak wyraźnie widoczne w literaturze, jak pozostałe dwie klasy modelu. Prawdopodobieństwa dla modeli są szacowane poprzez zbieranie statystyk częstotliwości z dużego zbioru tekstów, zwanego tekstem szkolenia, w procesie zwanym treningiem. Rozmiar tekstu szkolenia jest zwykle bardzo duży i zawiera wiele milionów (aw niektórych przypadkach miliardów) słów. Modele te są często określane jako "modele Markowa", ponieważ opierają się na założeniu, że język jest źródłem Markowa. Model n-gramowy nazywany jest rzędem modelu n-1 Markowa (na przykład model trygramowy to model 2 Markowa rzędu). W modelu n-gramowym prawdopodobieństwa są uwarunkowane poprzednimi słowami w tekście. Formalnie prawdopodobieństwo wystąpienia sekwencji S, n słów, w1 w2 … wn, jest podana przez:



Tutaj wi nazywa się przewidywanie i w1 w2 … wi-1 historii. Budowanie modelu języka, który wykorzystuje pełną historię, może być kosztowne obliczeniowo. n-gramowe modele językowe przyjmują założenie, że historia jest odpowiednikiem poprzednich słów n - 1 (zwanych kontekstem warunkowania). Na przykład modele bigram przedstawiają następujące przybliżenie:



Innymi słowy, tylko poprzednie słowo służy do warunkowania prawdopodobieństwa. Modele Trigram określają prawdopodobieństwo dwóch poprzednich słów:



Założenia, na których oparte są te przybliżenia, nazywane są "założeniami Markova". Na przykład model bigram zakłada następujące założenie Markowa:



Mogłoby się wydawać, że takie drastyczne założenia miałyby niekorzystny wpływ na wydajność modeli statystycznych, ale w praktyce modele bigram i trygram zostały z powodzeniem zastosowane w wielu dziedzinach, w szczególności w zakresie tłumaczenia maszynowego i rozpoznawania mowy. Kuhn i De Mori wskazują, dlaczego to podejście jest tak skuteczne: "Nowością tego podejścia jest to, że uważa za ważniejsze trzymanie informacji zawartych w ostatnich kilku słowach, niż koncentrowanie się na składni, która z definicji obejmuje całość zdanie. Wysoki procent wypowiedzi i pisania w języku angielskim składa się z zwrotów akcji, które pojawiają się ponownie; jeśli ktoś jest w połowie jednego z nich, wiemy z niemal pewnością, jakie będą jego następne słowa ". Decyzja co do tego, które założenia dają lepsze wyniki, jest kwestią empiryczną, a nie teoretyczną

Entropia Języka

Ilość informacji na słowo w jakimś zbiorze słów wynosi:



Można to wykorzystać do oszacowania entropii języka, w którym do oszacowania prawdopodobieństw używany jest model języka M opisany w poprzedniej sekcji, a im większa jest liczba słów n w korpusie, tym lepsza jest ocena. , H (S, M) jest określana jako entropia krzyżowa języka, ponieważ jest estymatem opartym na modelu M, a nie na prawdziwej entropii.) W klasycznym artykule zatytułowanym "Prediction and entropia of printed English" opublikowanym w 1951, Shannon oszacował entropię angielskiego na około 1 bit na znak. Metoda szacowania entropii przez Shannona polegała na tym, aby badani ludzie odgadywali nadchodzące postacie na podstawie bezpośrednio poprzedzającego tekstu. Wybrał 100 losowych próbek pobranych od Jeffersona z Virginii Dumasa Malone&primela. Z liczby domysłów dokonanych przez każdego badanego, Shannon wyprowadził górną i dolną granicę szacunkową 1,3 i 0,6 bitów na znak (skrót "bpc" w skrócie). Cover & King zauważyli, że procedura odgadywania Shannona dawała tylko częściową informację o prawdopodobieństwach nadchodzącego symbolu. Prawidłowe odgadnięcie mówi nam tylko, który symbol, który podmiot uważa za najbardziej prawdopodobny, a nie o wiele bardziej prawdopodobny niż inne symbole. Rozwinęli podejście hazardowe, w którym każdy podmiot uprawiał część obecnego kapitału na następny symbol. Korzystając ze średniej ważonej wszystkich schematów zakładów podmiotów, udało im się uzyskać górną granicę 1,25 bpc. Wydajność poszczególnych osób wahała się od 1,29 pz do 1,90 pz. Okładka i King omawiają znaczenie wyrażenia "entropia angielskiego": "Należy zdać sobie sprawę, że język angielski jest generowany przez wiele źródeł, a każde źródło ma własną charakterystyczną entropię. Operacyjne znaczenie entropii jest jasne. Jest to minimalna oczekiwana liczba bitów / symboli potrzebnych do scharakteryzowania tekstu. "Podejścia Shannona, Cover'a i Kinga opierały się na ludziach zgadujących tekst. Inne podejścia zostały oparte na statystycznej analizie częstotliwości znaków i słów pochodzących z tekstu oraz na wydajności modeli komputerowych z wykorzystaniem algorytmów kompresji. Model Guessing Game Shannona został stworzony w NetLogo, aby zilustrować, jak to działa. Model pozwala użytkownikowi najpierw załadować tekst treningowy, aby przygotować swój model statystyczny, a następnie wybrać tekst testowy, aby zagrać w grę Shannon's Guessing Game. Odbywa się to po wybraniu maksymalnej głębokości drzewa i maksymalnego rozmiaru tekstu, do ćwiczenia na podstawie suwaków max-tree-depth i max-text-size, a następnie za pomocą wybieracza which-text, który znajduje się w połowie po lewej stronie NetLogo wniosek o wybranie szkolenia lub testowania tekstu, a następnie kliknięcie przycisku tekstowego load-training-text lub load-testing-text. Następnie użytkownik uruchamia grę Zgadywanie Shannona, klikając przycisk predict-text. Aplikacja następnie wielokrotnie przewiduje każdy nadchodzący znak po kolei. Na przykład, możemy najpierw załadować Jane Austen's Pride and Prejudice jako tekst treningowy. W tym przypadku tekst szkolenia jest następującymi postaciami zaczerpniętymi z początku książki Jane Austen: "Jest to prawda powszechnie uznana, że jeden człowiek w posiadaniu szczęścia musi być w potrzebie żony. Jakkolwiek mało znane uczucia i poglądy takiego człowieka mogą być na jego pierwszym wejściu do sąsiedztwa, prawda ta jest tak dobrze umiejscowiona w umysłach otaczających rodzin, że uważany jest za prawowitą własność jakiejś jednej lub drugiej z ich córek. "Jeśli następnie wybierzmy zmysł i wrażliwość Jane Austen jako tekst testowy, aplikacja NetLogo będzie przewidywać nadchodzące postacie jeden po drugim, używając następującej sekwencji zaczerpniętej z początku tej książki:" Rodzina Dashwood od dawna osiadała w Sussex. Ich majątek był duży, a ich rezydencja znajdowała się w Norland Park, w centrum ich posiadłości, gdzie od wielu pokoleń żyli tak szanowanym sposobem, by wzbudzić ogólną dobrą opinię o otaczającej je znajomości. Późnym właścicielem tej posiadłości był samotny mężczyzna, który żył do bardzo zaawansowanego wieku i który przez wiele lat życia miał stałą towarzyszkę i gospodynię w swojej siostrze. "Aplikacja wymienia prognozy dla wszystkich postaci, które ma widoczne wcześniej, w tym ich liczniki częstotliwości i szacowane prawdopodobieństwa, zgodnie z aktualnym kontekstem (tj. natychmiastowy tekst poprzedzający) i wynikającą z tego głębią w modelu drzewa tekstowego szkolenia. Na przykład, na początku nie ma wcześniejszego kontekstu, więc tylko predykcje w górnej części drzewa (głębokość 0) są wymienione, jak pokazano na rysunku



W tym przykładzie maksymalna głębokość drzewa została ustawiona na 3. Znak spacji został zakodowany jako pierwszy, a następnie zakodowany jest następny znak, znak "T", a następnie znak "h", a następnie "e". i tak dalej. Sytuację po przetworzeniu pierwszego znaku (spacja) pokazano na rysunku. Wszystkie prognozy są wymienione na głębokości 1 i 0, ale nie głębiej, ponieważ nie mamy dalszego kontekstu, na którym można oprzeć nasze prognozy. Przewidywania głębi 1 zawierają listę wszystkich znaków, które wystąpiły po kontekście pojedynczego znaku zawierającego spację. Ponieważ spacja jest często występującą postacią w tekście angielskim, istnieje wiele przewidywań - na przykład po spacji znak "o" pojawił się 11 razy po spacji w tekście szkoleniowym, znak "t" pojawił się 10 razy, znak "a" wystąpił 7 razy i tak dalej. Te prognozy zostały wymienione w porządku malejącej częstotliwości. Sytuacja, która pojawia się w tym przykładzie, polega na tym, że musimy zakodować znak "T", ale to nigdy wcześniej nie miało miejsca w tekście szkoleniowym. (Spójrz w powyższy akapit treningowy zaznaczony kursywą - znak "T" nigdy nie podąża za znakiem spacji, co jest wynikiem krótkości tekstu treningowego użytego w tym przykładzie, w rzeczywistości, w większym tekście treningowym, może wiele wystąpień, gdy "T" podąża za spacją, na przykład na początku zdania zaczynającego się od słowa "The".) Problem w tym przykładzie polega na tym, że bez prognozy w naszym modelu musimy przypisać zerowe prawdopodobieństwo, które spowoduje w nieskończonej długości kodu od log (0) = ?. Ten problem nazywa się problemem z zerową częstotliwością i aby przezwyciężyć ten problem, musimy przypisać pewne prawdopodobieństwo zdarzeniom, które nigdy wcześniej nie miały miejsca. Jedna metoda nazywa się "ucieczką" lub "wycofaniem się" - cofamy się do krótszego kontekstu, w którym zwykle jest więcej prognoz. Aby to zrobić, przypisujemy małe prawdopodobieństwo w sytuacjach, w których będziemy musieli uciec - tj. Gdy napotkamy sekwencję, której nigdy wcześniej nie widzieliśmy. Proces ten jest również nazywany "wygładzaniem", ponieważ powoduje to, że rozkład prawdopodobieństwa jest bardziej jednolity (stąd powód jego nazwy), z niskimi (w tym zerowymi) prawdopodobieństwami zwykle korygowanymi w górę i wysokimi prawdopodobieństwami skorygowanymi w dół. Celem wygładzania jest dwojakie: po pierwsze, aby zapewnić, że prawdopodobieństwo nigdy nie jest zerowe; a po drugie, mając nadzieję poprawić dokładność modelu statystycznego. Metodą stosowaną do oszacowania prawdopodobieństwa ucieczki w przykładzie (jak zakodowano w modelu gry w odgadywanie gry Shannon′s NetLogo) jest oparcie go na liczbie typów, które wystąpiły w kontekście. Dla danej sekwencji symboli liczba typów jest liczbą niepowtarzalnych symboli, które miały miejsce, podczas gdy liczba tokenów to całkowita liczba symboli. Na przykład w sekwencji znaków "aaaa bbb cc d" istnieje 5 typów znaków - "a", "b", "c", "d" i spacja - w przeciwieństwie do 13 znaków żetonowych; dla palindromicznej sekwencji słów "człowiek planem panamskim kanału" jest 5 typów słów - "a", "człowiek", "plan", "kanał" i "panama" - i łącznie 7 tokenów słownych. Na powyższym rysunku dla kontekstu składającego się z pojedynczej przestrzeni widzimy 22 typy i 69 tokenów. Dlatego szacuje się, że prawdopodobieństwo ucieczki wynosi 22/91, a prawdopodobieństwa dla pozostałych znaków zostały dostosowane odpowiednio do ich liczby podzielonej przez 91, a nie 69. Formalnie, prawdopodobieństwo dla symbolu s w konkretnym kontekście C jest obliczane jako następuje:



Ta metoda wygładzania, wynaleziona przez Alistaira Moffata dla schematu kompresji PPMC, nazywa się wygładzaniem Witten-Bell w literaturze dotyczącej modelowania języka. W tym przykładzie model statystyczny musi cofnąć się do domyślnego modelu, w którym wszystkie postacie są równie prawdopodobne, aby móc zakodować znak "T", ponieważ w tym przypadku nigdy nie był widziany w sekwencji treningowej. Dlatego koszt kodowania znaku "T" jest 22/91 × 28/400 × 1/256 o współczynniku 28/400 przeznaczonym do kodowania wyjścia dla kontekstu zerowego (tj. Po prostu przy użyciu częstotliwości znaku zlicza się na głębokości 0 w drzewie) i 1/256 dla modelu domyślnego ( gdzie 256 to wielkość alfabetu). Wymaga to 13,88 bitów do kodowania jako

-Log 2 (22/91 × 28/400 × 1/256) = 13,88 bitów.

Rysunek pokazuje dane wyjściowe po zakodowaniu pierwszych dziesięciu znaków w sekwencji testowej ("Rodzina").





Kolejny znak, jaki musimy zakodować jest "y", a ponieważ nie było widać w kontekście głębi 3 w sekwencji treningowej, musimy uciec z kontekstu, który znajduje się na głębokości 3 w drzewie (gdzie było tylko jedno poprzednie wystąpienie, więc prawdopodobieństwo wynosi 1/2), a następnie przez głębokość 2 (gdzie ponownie wystąpiło tylko jedno poprzednie wystąpienie, więc prawdopodobieństwo wynosi 1/2) do głębokości 1 (gdzie widzieliśmy znak "y" przed , a jego prawdopodobieństwo to 1/16). Kosztuje to 6 bitów, aby kodować od -log 2 (1/2 × 1/2 × 1 16) = 6. Kolejny model Netlogo o nazwie Language Modeling został opracowany w celu wizualizacji modeli treemodeli. Rysunek pokazuje zrzut ekranu modelu drzewa, który został przeszkolony na 32 znakach na początku Sensu i wrażliwości Jane Austen pokazanego powyżej.



W tym przykładzie maksymalna głębokość drzewa została ustawiona na 2. Rysunek pokazuje, że większość dwuznakowych sekwencji jest unikatowych (tj. Najbardziej zewnętrzne liczby to wszystkie 1), czego można się spodziewać ze względu na krótkość tekstu szkolenia, oprócz sekwencja "d", która występuje dwukrotnie (można ją znaleźć w lewym górnym rogu lub w kierunku NNW na rysunku). Niektóre pojedyncze znaki występują więcej niż jeden raz, powodując efekt rozwijania na głębokości 2 - na przykład, "" występuje 5 razy (patrz środkowe prawe położenie), po którym następuje 5 różnych znaków ("f", "o", " D "," h "i" l "). Aplikacja do modelowania języka została opracowana w celu obsługi modelowania zdarzeń na różnych strumieniach wejściowych przy użyciu podejścia podobnego do stosowanego w modelu Wall Following Events. W przykładzie przedstawionym na rysunku modelowane są tylko zdarzenia postaci. To wyjaśnia ponowne pojawienie się ciągu znaków "char" na całej figurze. Model pozwala także na ładowanie zdarzeń słownych, jak również zdarzeń znakowych, dłuższy rozmiar tekstu do trenowania i ustawienie maksymalnej głębokości drzewa do 8, chociaż wizualizacja tych drzew staje się znacznie bardziej problematyczna ze względu na ograniczenia NetLogo środowisko i złożoność produkowanych drzew

Znaczenie komunikacyjne

Ta część koncentruje się na komunikacji agenta, różnych typach komunikacji i ważnej roli, jaką musi pełnić komunikacja agentów w interakcji między agentami. Rozdział ten miał mniej do powiedzenia na temat treści komunikatów przesyłanych między agentami. Język służy do definiowania symboli, które przekazują znaczenie tych komunikatów. Celem komunikacji dla nadawcy jest przekazanie znaczenia wiadomości w taki sposób, aby odbiornik mógł ją zdekodować i odpowiednio zareagować. Jeśli odbiornik nie jest w stanie tego zrobić, komunikacja nie powiodła się i komunikat został zmarnowany. Znaczenie można zdefiniować w następujący sposób. Znaczenie ma znaczenie lub znaczenie komunikatu przekazanego przez jakiś język, który agent chce przekazać innemu agentowi. Podobnie jak w przypadku wszystkich definicji, dokładniejsza analiza tej roboczej definicji ujawni pewne niedociągnięcia. Można zadać dalsze pytania dotyczące definicji, takie jak "Jakie jest znaczenie słowa" wiadomość "?" Oraz "Jakie jest znaczenie" ?? Kontynuacja tej linii pytań prowadzi do nieskończonego regresu definicji, w których znaczenie czegokolwiek nigdy nie wydaje się być przypięte dokładnie w taki sposób, że możemy na przykład określić znaczenie symboli matematycznych. Charakter znaczenia (i związane z nim studium semantyki w językoznawstwie) był dyskutowany i debatowany przez stulecia, i jest przedmiotem wielu zbiorów prac pisemnych i badań naukowych. Jako ludzie, możemy łatwo zrozumieć znaczenie tych słów, abyśmy mogli przyjąć pragmatyczny punkt widzenia, tak jak Turing, sugerując test Turinga dla inteligencji, że chociaż uzyskanie precyzyjnych definicji znaczenia słów i języka jest interesującą filozoficzną pogoń, nie jest to konieczne, ponieważ ludzie mogą bez niej osiągnąć udaną komunikację. Dzieje się tak, pomimo tego, że ludzie nigdy nie są całkowicie zgodni co do dokładnych znaczeń symboli, z którymi się komunikują. Ale co by było, gdybyśmy musieli przekazać znaczenie wiadomości komuś lub czemuś, co nie było ludzkie? Jest to temat Eksperymentu Myślowego

Eksperyment Myślowy: Komunikacja z kosmitami

Rozważmy problem, jak przekazać wiadomość obcemu. W tym ustawieniu przyjmijmy, że nie ma wspólnej podstawy dla zrozumienia znaczenia wiadomości. Oznacza to, że musimy przekazać znaczenie symboli w komunikacie, a także same symbole. Na przykład, możemy chcieć przekazać następujący komunikat: "Nie otwieraj". Tak taki scenariusz wystąpił w filmie Alien Hunter, ale z lekkim akcentem - my (ludzie) byliśmy tymi, którzy potrzebowali rozszyfrować wiadomość, kosmici byli tymi, którzy chcieli to przekazać. Grupa naukowców odkryła duży metalowy przedmiot pochodzenia obcego, zamrożony w lodzie na Antarktydzie, który wysyłał jakąś wiadomość radiową. Jeden z naukowców ostatecznie rozszyfrował wiadomość, ale dopiero po tym, jak niektórzy inni naukowcy właśnie otworzyli obiekt - fraza "Nie otwieraj" była powtarzana w kółko w wiadomości radiowej. Pytanie jest następujące. Jak możemy przekazać nawet tak prostą wiadomość, jak "Nie otwieraj", gdy nie wiemy, w jakim języku stwór otrzymujący wiadomość będzie w stanie ją zrozumieć? Możemy nie znać zdolności poznawczych odbiorców, ich tła kulturowego, a nawet ich zdolności zmysłowych, a zatem mają bardzo mało wspólnych ram odniesienia, z którymi można się komunikować. Język wymaga komunikacji pojęć - to znaczy znaczenia symboli przekazywanych w wiadomości. W szczególności, w jaki sposób możemy przekazać koncepcję "otwartego", na przykład, lub pojęcia "nie"? Astronomowie Carl Sagan i Frank Drake stanęli twarzą w twarz z tym problemem na początku lat siedemdziesiątych, kiedy zdecydowali, jakie wiadomości umieścić na statku kosmicznym Pioneer - pierwszych przedmiotach ludzkiej produkcji, które opuściły Układ Słoneczny. Postanowili wykorzystać obrazkową wiadomość zawierającą nagie postacie istot ludzkich wraz z kilkoma symbolami, aby przekazać informacje o tym, skąd wziął się statek kosmiczny. Przesłania zostały skrytykowane przez innych ludzi za zbyt humanistyczne i trudne do zrozumienia, nawet dla ludzi. Nawet części najłatwiejszych do zrozumienia dla ludzi - strzałka pokazująca trajektorię statku kosmicznego - mogą być nieczytelne dla obcej kultury, ponieważ symbol strzałki jest wytworem społeczności łowiecko-zbierackich powszechnych na Ziemi. Komunikacja z kosmitami jest oczywiście hipotetyczną sytuacją. Nie jest pewne, czy istnieją jakieś istoty pozaziemskie, czy też istnieją, czy potrafią się z nami komunikować - w końcu znaleźliśmy bardzo mało dowodów na istnienie istot pozaziemskich w innych częściach wszechświata, nawet po dziesięcioleciach. wyszukiwania za pomocą zaawansowanych komputerów. Seti @ home to projekt przetwarzania rozproszonego, który wykorzystuje bezczynne komputery w Internecie do wyszukiwania dowodów na pozaziemską inteligencję. Od daty premiery 17 maja 1999 r. Rejestruje ponad 10 milionów lat czasu komputerowego i obecnie korzysta z ponad 300 000 komputerów w ponad 200 krajach. Jednak projekt nie dostarczył żadnych dowodów, mimo że działał przez ponad dziesięć lat. Jednakże wszelką komunikację między ludźmi można uznać za posiadającą pewien stopień "obcości" w następującym sensie. Kiedykolwiek rozmawiamy z innym człowiekiem, często musimy wyjaśniać znaczenia pojęć, które są nam nieznane lub obce, lub wyjaśniać pojęcia, które są rozumiane na różne sposoby. Jeśli języki nadawcy i odbiorcy są różne - na przykład rozmowa między kimś z Walii, który głównie mówi po walijsku i kimś z Afryki, który głównie mówi po suahili, lub głuchym, który zna język migowy, a osobą, która tego nie robi - to dłużej wyjaśnienia są wymagane częściej w trakcie rozmowy. Trudność z kosmitami polega jednak na tym, że możemy stanąć przed problemem wyjaśnienia znaczenia wszystkiego, co chcemy przekazać. Problem komunikacji z obcym jest podobny do problemu komunikacji z nowo odkrytym plemieniem, na przykład w Papui Nowej Gwinei, które zostało odizolowane od reszty ludzkości. Problem ten został rozważony przez XX-wiecznego filozofa W. Quine'a, który nazwał to radykalnym tłumaczeniem. Powstaje trudność w komunikowaniu się, czy to z izolowanym plemieniem, czy obcym gatunkiem, kiedy być może nawet jedno słowo języka, którego używa nadawca, nie jest zrozumiane z góry. Zasadniczo jest to problem, z którym stykają się projektanci systemów rozumienia tekstu i mowy, ponieważ możemy uważać "obcego" agenta za system komputerowy, a ludzki agent - tego, który wytworzył tekst lub mowę, które należy zrozumieć. Jak stwierdzono wcześniej, znaczna część języka składa się z metafory pojęciowej i analogii. Lakoff i Johnson w swojej książce "Metafory, w której żyjemy", podkreślają ważną rolę, jaką metafora pojęciowa odgrywa w języku naturalnym i jak jest ona związana z naszymi fizycznymi doświadczeniami. Twierdzą, że metafora to nie tylko urządzenie poetyckiej wyobraźni, ale "jest wszechobecna nie tylko w języku potocznym, ale w naszych myślach i działaniu", będąc podstawową cechą ludzkiego systemu pojęciowego. Twierdzą oni, że "Istotą metafory jest zrozumienie i doświadczanie jednego rodzaju rzeczy w kategoriach innego". Twierdzą oni, że większość naszego systemu przetwarzania myśli ma charakter pojęciowy i że ludzie używają metaforycznych pojęć znacznie częściej niż im się wydaje. Metafory są związane z naszym fizycznym ucieleśnieniem w prawdziwym świecie. Celem urządzenia metaforycznego jest podkreślanie podobieństw i ukrywanie różnic między pokrewnymi pojęciami. Dla tych ludzi pojęcie, że argument jest związany z aktem wojny, jest obce - zamiast tego nacisk w jakiejkolwiek konfrontacji lub argumentacji jest położony na aktywną współpracę uczestników. Celem nie jest niszczenie nawzajem swoich argumentów, ale aktywne rozwijanie swoich punktów widzenia i / lub ich własnej wiedzy i zrozumienia. Podobnie jest w przypadku, gdy dwoje ludzi tańczy razem, jest artystycznie bardziej pociągająca niż dwoje ludzi tańczących oddzielnie i niezależnie. W rozmowach ci ludzie mogliby powiedzieć takie rzeczy jak: "W połączeniu z jego argumentem", "Nasze argumenty były nie na miejscu" i "Podjąłem jego krytykę i przetoczyłem je dalej". Dla nas początkowo wydawałoby się to dziwne, dopóki nie zrozumieliśmy podstawowej metafory pojęciowej Język ludzki ma zdolność przekazywania wielu znaczeń na kilku poziomach. Każdy z nich współdziała, aby zapewnić coś, co jest większe niż suma jego części. Czasami czytelnik lub słuchacz znajduje znaczenie, którego nie zamierzali nawet autor (autorzy). Język również ujawnia wiele informacji o myślach zachodzących w umysłach autora (-ów) - tego, co wiedzą i czego nie wiedzą; ich wierzenia; ich upodobania lub antypatie; ich opinie; ich nadzieje i lęki; co szanują i wysoko cenią, lub czego nie okazują szacunku i mają pogardę; na co oni popierają lub są przeciwni; ich pragnienia / potrzeby / potrzeby; i ich intencje.

Podsumowanie

Agenty wykazują zachowania komunikacyjne, gdy próbują przekazać informacje innym agentom. Język to zbiór symboli używanych przez agentów do przekazywania informacji. Ludzie używają wielu form komunikowania się, a ich język jest różnorodny i bogaty w znaczenie. Komunikacja między ludźmi rozprzestrzenia się za pośrednictwem sieci społecznościowych. Podsumowanie ważnych pojęć, które należy wyciągnąć z tego rozdziału, pokazano poniżej:

•  Entropia jest sumą prawdopodobieństw pomnożonych przez log prawdopodobieństw rozkładu prawdopodobieństwa. Może być stosowany jako środek do pomiaru treści informacyjnej w wiadomościach.
•  Język jest definiowany przez zestaw reguł współużytkowanych społecznie, które definiują powszechnie akceptowane symbole, ich znaczenie i ich związki strukturalne określone przez zasady gramatyki.
•  Język ludzki występuje w wielu formach i jest niezwykle różnorodny.
•  Modelowanie języka to mechanizm określania prawdopodobieństw warunkowych dla symboli w języku.
•  Entropię języka można oszacować na podstawie dużego korpusu tekstu reprezentatywnego dla danego języka.
•  Sieci społecznościowe odgrywają kluczową rolę w rozpowszechnianiu komunikacji między ludźmi.
•  Zjawisko małego świata jest ważną cechą charakterystyczną sieci społecznych i komputerowych.

•  Celem komunikacji jest przekazanie znaczenia przekazywanej wiadomości. Znaczenie przekazywane w wiadomościach dla ludzi jest złożone i wielowarstwowe oraz stanowi obszar, który stanowi ciągłe wyzwanie dla badań nad sztuczną inteligencją.

Wyszukiwanie

"Poszukiwanie jest fundamentalne dla inteligentnego zachowania, nie jest to tylko inna metoda czy mechanizm kognitywny, ale fundamentalny proces." Jeśli jest coś, co sztuczna inteligencja przyczyniła się do naszego zrozumienia inteligencji, odkrywa, że wyszukiwanie to nie tylko jedna metoda pośród wielu, które mogą być użyte do osiągnięcia celów, ale jest najbardziej podstawową metodą ze wszystkich. " - Allen Newell (1994).

Zachowanie wyszukiwania

W badaniach nad sztuczną inteligencją powszechnie uznaje się, że wyszukiwanie ma kluczowe znaczenie dla budowy inteligentnych systemów i projektowania inteligentnych agentów. Na przykład Newell stwierdził, że poszukiwanie jest fundamentalne dla inteligentnego zachowania. Z perspektywy behawioralnej wyszukiwanie może być uznane za meta-zachowanie, w którym agent podejmuje decyzję, które zachowanie należy do zestawu możliwych zachowań do wykonania w danej sytuacji. Innymi słowy, można go zdefiniować jako proces behawioralny, który agent stosuje, aby podejmować decyzje dotyczące wyboru działań, które powinien wykonać, aby wykonać określone zadanie. Zadanie może obejmować wyższe poziomy zachowań poznawczych, takie jak uczenie się, strategia, wyznaczanie celów, planowanie i modelowanie (nazywane były wyborem akcji w modelu Boynów Reynoldsa). Jeśli nie ma decyzji do podjęcia, wyszukiwanie nie jest wymagane. Jeśli agent już wie, że określony zestaw działań lub zachowania jest odpowiedni dla danej sytuacji, nie ma potrzeby poszukiwania odpowiedniego zachowania, a zatem działania można zastosować bez podejmowania jakiejkolwiek decyzji. Wyszukiwanie może być uważane za zachowanie, które agent wykazuje, gdy ma niewystarczającą wiedzę, aby rozwiązać problem. Problem jest określony przez aktualną sytuację agenta, która jest określona przez warunki środowiskowe, własne okoliczności i wiedzę, którą agent obecnie ma do dyspozycji. Jeśli agent nie ma wystarczającej wiedzy, aby rozwiązać dany problem, może zdecydować się na poszukiwanie dalszej wiedzy na temat problemu. Jeśli ma już wystarczającą wiedzę, nie będzie musiał stosować zachowania w celu rozwiązania problemu. Agent używa zachowania związanego z wyszukiwaniem, aby odpowiedzieć na pytanie, na które nie zna odpowiedzi lub ukończyć zadania, którego nie potrafi wykonać. Agent musi eksplorować środowisko, podążając za więcej niż jedną ścieżką, aby uzyskać tę wiedzę. Eksploracja środowiska odbywa się w sposób analogiczny do wczesnych odkrywców kontynentów amerykańskich lub australijskich lub osób odkrywających labirynt w ogrodzie, takich jak Labirynt Pałacu Hampton Court lub Labirynt Chevening House. W przypadku dwóch labiryntów ogrodowych, osoby próbujące dostać się do środka labiryntu muszą zastosować zachowanie poszukiwawcze, jeśli nie mają wiedzy o tym, gdzie to jest. Jeśli jednak wykonają z nimi mapę, nie muszą już korzystać z wyszukiwania zachowanie, gdy mapa dostarcza im informacji o tym, które ścieżki pokonać, aby dotrzeć do centrum. Pierwsi amerykańscy odkrywcy, Lewis i Clark, zostali poinstruowani przez Thomasa Jeffersona, by zbadał Missouri i znalazł drogę wodną przez kontynent do Pacyfiku. Nie wiedzieli już, jak duży jest kontynent lub co tam było i potrzebowali fizycznie zbadać kraj. Wybrali kierunek w kierunku zachodnim, północno-zachodnim, wzdłuż ścieżki wzdłuż rzeki Missouri. Podobnie australijscy odkrywcy Burke i Wills poprowadzili ekspedycję rozpoczynającą się od Melbourne w celu dotarcia do Zatoki Carpentaria. Ziemia w tym czasie musiała zostać zbadana przez europejskich osadników. Wyprawa uniemożliwiała osiągnięcie ostatecznego celu, zaledwie trzy mile od północnej linii brzegowej z powodu bagien namorzynowych, a co gorsza, przywódcy ekspedycji zginęli w drodze powrotnej. Podczas wyszukiwania agent może przyjąć różne zachowania, które określają sposób wyszukiwania. Przyjęte zachowanie wyszukiwania może mieć znaczący wpływ na skuteczność wyszukiwania. Na przykład złe przywództwo zostało obwiniane za nieudaną wyprawę Burke'a i Willsa. Zachowanie może być uważane za strategię przyjętą przez agenta podczas przeprowadzania wyszukiwania. Te zachowania związane z wyszukiwaniem możemy rozpatrywać z perspektywy ucieleśnionego agenta. Typ zachowania wyszukiwania jest określany zarówno przez przykład wykonania agenta, jak i to, czy agent stosuje reaktywne lub bardziej poznawcze zachowanie podczas wykonywania wyszukiwania. Widzieliśmy już wiele przykładów tego, w jaki sposób agent może przeprowadzić wyszukiwanie w środowisku jako efekt uboczny zastosowania czysto reaktywnego zachowania. Możemy określić te typy zachowań wyszukiwania jako reaktywne wyszukiwanie. Możemy również użyć terminu wyszukiwanie poznawcze w przypadkach, w których agent ma zdolność rozpoznania, że istnieje wybór, gdy wybór pojawia się w środowisku (np. Gdy agent osiąga skrzyżowanie w labiryncie). Ten akt rozpoznawania jest podstawową częścią poznawczych zachowań poszukiwawczych i jest związany z sytuacją, w której znajduje się agent, sposobem poruszania się jego ciała i interakcji ze środowiskiem. Jest to również związane z tym, co dzieje się w środowisku zewnętrznym i / lub co dzieje się z innymi agentami w tym samym środowisku, jeśli takie istnieją. Ponadto do wykonania dowolnego wyszukiwania można użyć pojedynczego agenta, ale nic nie powstrzymuje nas przed użyciem więcej niż jednego agenta do wykonania wyszukiwania. Możemy przyjąć perspektywę z wieloma agentami, aby opisać, w jaki sposób można przeprowadzić poszczególne wyszukiwania, aby wyjaśnić, w jaki sposób różnią się wyszukiwania. W tym przypadku skuteczność określonego wyszukiwania można ocenić, porównując liczbę agentów potrzebnych do przeprowadzenia wyszukiwania i ilość informacji, które są między nimi przekazywane.

Problemy z wyszukiwaniem

Istnieje wiele problemów wymagających wyszukiwania o różnym stopniu trudności. Uproszczone lub "zabawkowe" problemy to w większości problemy syntetyczne i niezwiązane z rzeczywistym życiem. Jednak problemy te mogą być przydatne dla projektantów w uzyskaniu wglądu w problem wyszukiwania. Po zbadaniu właściwości różnych zachowań dotyczących wyszukiwania w przypadku problemów z zabawkami, można je dostosować i / lub dostosować do rzeczywistych problemów. Aby zilustrować różne problemy z wyszukiwaniem, w tej sekcji opisano trzy problemy, które zostały w szczególności symulowane w NetLogo - są to model Mazury, model Misjonarzy i Cannibal oraz model Wyszukiwanie Kevina Bacona. Są to problemy z zabawkami nie dlatego, że są sztucznymi problemami, ale z powodu ich względnej prostoty. Zapewniają one jednak użyteczne stanowiska testowe podczas opracowywania i oceny skuteczności różnych zachowań związanych z wyszukiwaniem, ponieważ możemy ich użyć do porównania skuteczności każdego z nich. Następnie dzięki tym informacjom możemy przystąpić do rozwiązywania znacznie większych lub trudniejszych problemów związanych z wyszukiwaniem. Klasycznym problemem z zabawkami, często wykorzystywanym do zademonstrowania aspektów poszukiwań, jest problem misjonarzy i kanibali. W tym dylemacie jest trzech misjonarzy i trzech kanibali. Chcą, aby wszyscy przeszli przez rzekę, używając kajaka, który ma tylko dwie osoby, ale problem polega na tym, że jeśli kanibale kiedykolwiek będą przewyższać liczbę misjonarzy na dowolnym etapie, wtedy kanibale zjedzą misjonarzy. Rysunek poniżej pokazuje kilka zrzutów ekranu z animacji dostarczonych przez misjonarzy i model Cannibals NetLogo , który demonstruje rozwiązanie problemu.



Górny obraz przedstawia stan początkowy, z trzema misjonarzami, trzema kanibalami i czółnem po lewej stronie rzeki. Osoby w szarym kolorze reprezentują misjonarzy, a osoby w czerwonych barwach reprezentują kanibali. Środkowy obraz przedstawia stan pośredni, w którym po lewej stronie znajduje się jeden misjonarz i jeden kanibal, w połowie drogi przez rzekę jest dwóch misjonarzy, a po prawej stronie rzeki są dwaj kanibale. Dolny obraz przedstawia ostateczny stan pożądany lub docelowy, w którym wszyscy trafiają na prawą stronę. Szukanie ludzi to problem, który często pojawia się w prawdziwym życiu. Ma to również wpływ na wiele problemów sieci komputerowych, na przykład wykrywanie zasobów w sieciach typu peer-to-peer, w których musi znajdować się określony zasób, taki jak plik lub komputer o określonych wymaganiach procesora. Model wyszukiwania Kevina Bacona symuluje ten problem, tworząc sieci losowe, jak pokazano na rysunku poniżej



Określony węzeł w sieci jest określony jako stan pożądany lub docelowy - jest to pokazane przez węzeł narysowany jako gwiazda na środku obrazu. Wyszukiwanie rozpoczyna się od losowego węzła w sieci - dla pokazanego obrazu węzłem początkowym był węzeł b154 w środkowym prawym rogu obrazu. W tym scenariuszu analogią do prawdziwego problemu z życiem jest sala pełna studentów, w której celem jest przekazanie określonego przedmiotu, np. Notatki od osoby do osoby, aż dotrze ona do zamierzonego odbiorcy. Rozbieżność w rzeczywistym problemie pojawia się, gdy agenci w symulacji (reprezentowani jako węzły w sieci) mają określone ograniczenia dotyczące ich zdolności sensorycznych, które sprawiają, że symulacja jest bardziej analogiczna do wyszukiwania w sieciach komputerowych. W tym przypadku agenci są "ślepi" w tym sensie, że nie mają pojęcia o globalnej konfiguracji sieci i mają jedynie lokalną wiedzę o tym, co jest bezpośrednio wokół nich (tj. Znają tylko łącza do sąsiednich węzłów). Ponadto agenci nie wiedzą, gdzie znajduje się węzeł gwiazdy. Problem wyszukiwania można scharakteryzować jako czynnik eksplorujący automat skończony w przestrzeni n-wymiarowej. Jeden lub więcej stanów jest określanych jako stany początkowe - to jest lokalizacja, w której agenci wykonujący wyszukiwanie najpierw wybierają się na swoje poszukiwania. Te stany początkowe są połączone z innymi stanami pośrednimi, które z kolei są połączone z kolejnymi stanami itd. ostatecznie połączenia będą prowadzić do pożądanych lub docelowych stanów po zakończeniu wyszukiwania, w przeciwieństwie do sytuacji modelowanej w poszukiwaniu modelu Kevina Bacona. Wyszukiwanie jest wymagane, gdy agenci nie wiedzą, jak dostać się do pożądanych stanów lub chcą znaleźć najkrótszą ścieżkę do żądanych stanów. Jeśli znają już ścieżkę, wyszukiwanie nie jest wymagane. W przeciwnym razie muszą zbadać automat skończony, dopóki nie znajdą pożądanego stanu lub dopóki nie znajdą najkrótszej ścieżki.

Niedoinformowane (ślepe) wyszukiwanie

Wyszukiwanie niedoinformowane lub ślepe następuje, gdy agent nie ma informacji o szukanym środowisku. Prawdziwą analogią do tego typu poszukiwań jest ślepa osoba szukająca labiryntu, w którym nigdy wcześniej nie był, bez wcześniejszej znajomości jego wymiarów czy miejsca pobytu w centrum lub wyjścia z labiryntu. Jednym podejściem, które może podjąć "ślepy" agent wyszukiwania, jest kontynuowanie dokonywania jednego konkretnego wyboru na każdym skrzyżowaniu, z którym się spotyka, i kontynuowanie aż do momentu, gdy dotrze do wyjścia lub centrum (celu) lub dopóki nie osiągnie ślepego zaułka. Jeśli to drugie, może on następnie wrócić do ostatniego skrzyżowania, które odwiedził, ma ścieżki, których jeszcze nie przeszukiwał, a następnie wybiera jedną z nich. Wielokrotnie stosuje to zachowanie, dopóki cel nie zostanie osiągnięty. Ten agent ma jeszcze jedną możliwość wyboru - kolejność, którą wybiera, by podążać ścieżkami. Mógł na przykład wybrać losowe ścieżki, albo mógł zawsze najpierw podążać za pierwszą gałęzią po swojej prawej stronie, a następnie śledzić kolejne gałęzie zgodnie z ruchem wskazówek zegara. Ten typ wyszukiwania nazywa się najpierw głębokim wyszukiwaniem. Aby uprościć poniższą dyskusję oraz wyjaśnić rozwiązania oparte na wielu agentach, które zostały opracowane dla modeli NetLogo opisane poniżej, odejdziemy od rzeczywistej analogii pojedynczego agenta wykonującego wyszukiwanie w następujący sposób. Na każdym skrzyżowaniu lub punkcie decyzyjnym w wyszukiwaniu, zamiast samego agenta, który kontynuuje wyszukiwanie wzdłuż pojedynczej ścieżki, zapewniamy agentowi możliwość wysyłania własnych klonów wzdłuż wszystkich ścieżek, które znajdzie. W procesie klonowania się on następnie umrze. W przypadku pierwszego wyszukiwania, jeden z nowo sklonowanych agentów zostanie wybrany, aby kontynuować wyszukiwanie, podczas gdy pozostali siedzą i czekają, na wypadek, gdyby byli potrzebni w późniejszym czasie. Ten proces tworzenia klonów, a następnie wybieranie jednego z klonów w celu dalszego wyszukiwania trwa do momentu osiągnięcia celu lub ślepego zaułka. Jeśli to drugie, klon zginie bez tworzenia kolejnych klonów, a wyszukiwanie będzie kontynuowane z klonem, który czekał najkrócej. Zilustrowano to na rysunku , który pokazuje pierwsze wyszukiwanie Głębokiego Modelu Bacinonu



W prawym górnym rogu pojedynczy agent zaczyna od lewego dolnego węzła oznaczonego etykietą b26 i próbuje wyszukać węzeł celu narysowany jako biała gwiazda. Agent ten następnie przechodzi do węzła b14 po klonowaniu się jeden raz, a następnie tworzy dwa własne klony, ponieważ istnieją kolejne dwie możliwe ścieżki do naśladowania (do węzłów b5 i b23), jak pokazano w prawym górnym obrazie. Następnie umiera i wyszukiwanie jest kontynuowane przez jeden z agentów, w tym przypadku agent w węźle b5. Wyszukiwanie kontynuuje wzdłuż nagłówka gałęzi b5 przez szczęście w kierunku węzła celu, aż osiągnie węzeł b3, jak pokazano w lewym dolnym obrazie. Następnie wybierany jest jeden klon, aby przeszukać boczną ścieżkę, która kieruje się na północ w punkcie b8, ale gdy ta ścieżka zostanie całkowicie przeszukana, klon na b1 przejmuje i ostatecznie węzeł celu zostaje osiągnięty, jak pokazano na prawym dolnym obrazie. Oczywistą modyfikacją tego typu wyszukiwania jest umożliwienie przeszukiwania jednocześnie więcej niż jednego klonu agenta. Innymi słowy, zamiast pojedynczego klona wykonującego wyszukiwanie samodzielnie, możemy wysłać wszystkie klony, aby równolegle wyszukiwać razem. Ten rodzaj wyszukiwania nazywa się najpierw szerokim wyszukiwaniem. Sposób przeszukiwania sieci w poszukiwaniu modelu Kevina Bacona przy użyciu pierwszego wyszukiwania szerokości pokazano na rysunku



Lewy obraz to zrzut ekranu podczas pośredniej części wyszukiwania. Prawy obrazek pokazuje wyszukiwanie po zakończeniu. Aby zrozumieć fundamentalne różnice między tymi dwoma różnymi rodzajami poszukiwań, możemy pomyśleć o analogii wyprawy Lewisa i Clarka badającej amerykański kontynent po rzece Missouri i jej dopływach. W miarę postępów "granica" ich wiedzy "rozwijałaby się". Gdyby ta ekspedycja przyjęła pierwsze poszukiwania w zakresie głębokości, granica rozszerzyłaby się, podążając za jednym konkretnym odgałęzieniem rzeki - coraz głębiej w dół w jednym oddziale. Jeśli dopływ zatrzymał się, ekspedycja powróciłaby do ostatniego skrzyżowania i zaczęła szukać alternatywnej ścieżki. Nawiązując do powyższej analogii, klony mogą być uważane za lokalizacje przeszłych jaźni, do których powracają, gdy jedna ścieżka zakończyła się niepowodzeniem. Z drugiej strony wyprawa przyjmuje politykę dzielenia zespołu, aby przeszukiwać alternatywne gałęzie w tym samym czasie. W tym przypadku granica rozszerza się na zewnątrz tym samym tempie, podobnie jak falowanie rozszerza się równomiernie na zewnątrz, gdy kamyk wrzuca się do stawu. Używając innej analogii, poszerzającą się granicę można uważać za "drzewo", z korzeniami coraz głębiej wnikającymi w glebę. W przypadku pierwszego wyszukiwania jeden root jest narastający naraz, a to staje się coraz głębsze (stąd dlaczego ten szczególny rodzaj wyszukiwania nazywany jest wyszukiwaniem od początku do głębokości), dopóki nie zablokuje go podłoże skalne. W przypadku pierwszego wyszukiwania wszystkie korzenie rosną w podobnym tempie i równomiernie rosną w dół. Możemy przyjrzeć się modelowi Searching Mazes, aby dokładniej zilustrować różnice między tymi dwoma wyszukiwaniami. Możemy wybrać pusty labirynt do przeszukania, a następnie ustawić move-forward-behaviour i move-forward- behaviour-after-turning, choosera na move-forward-n-steps-unlesshit- wall a także ustawienie suwaka move-forward-step-amount na 2. Zapewni to, że wyszukiwanie rozszerzy się do pustej przestrzeni tylko o 2 kroki naraz, jak pokazano na zrzutach ekranu z rysunku



Graficznie ilustrują różnice między dwoma wyszukiwaniami. Głębokie pierwsze wyszukiwanie jest oportunistyczne, zmierzając w dowolnie wybranym przez siebie kierunku, podczas gdy pierwsze wyszukiwanie jest dokładniejsze, a każda możliwość jest przeszukana, zanim przejdzie dalej. Terminy "granica", "drzewo" i "rozszerzenie wyszukiwania" są często używane do opisu wyszukiwania. Możliwe ścieżki w wyszukiwaniu mogą być traktowane jak drzewo wyszukiwania przy użyciu analogii gałęzi i liści - to znaczy, analogia do drzewa rosnącego nad ziemią, a nie do korzeni rosnących w glebie jak wyżej. W tym przypadku granica wyszukiwania może być traktowana jako węzły liścia drzewa. Są to węzły drzewa, które należy następnie przeszukać. Dla każdego węzła liści istnieje zdefiniowany zestaw możliwych węzłów, które można rozszerzyć. Na przykład dla lewego górnego obrazu na powyższym rysunku zbiór rozszerzonych węzłów dla węzła b14 to {b5, b23, b26}. Mimo że pochodzi on właśnie z węzła b26, nic nie stoi na przeszkodzie, aby wyszukiwanie powróciło do miejsca, z którego pochodzi, chyba że wyszukiwanie wyraźnie uniemożliwia ponowne odwiedzanie węzłów. Zaletą nie ponownego odwiedzania węzłów jest to, że wyszukiwanie nie będzie marnowało czasu przeszukiwania na coś, co już przeszukało; jednak wadą jest to, że musi rejestrować, gdzie był. W niektórych aplikacjach, w których występuje bardzo duża liczba węzłów do odwiedzenia (na przykład roboty indeksujące muszą odwiedzać miliardy węzłów), przechowywanie zestawu już odwiedzonych węzłów może być kosztowne i stanowić poważne problemy inżynieryjne. Wszystkie trzy modele NetLogo zapewniają przełącznik interfejsu, który ustawia zmienne allow-revisited-states, aby włączyć lub wyłączyć ponowne odwiedzanie węzłów. Modele również utrzymują globalną zmienną o nazwie visited-nodes, która jest listą wszystkich już odwiedzonych węzłów. To, czy ponowne odwiedzanie węzłów jest dozwolone czy nie, jest ważnym czynnikiem wpływającym na skuteczność różnych wyszukiwań. Jest to widoczne na przykładzie modelu Misjonarzy i Kanibali, na przykład w przypadku niektórych wyszukiwań wymagających znacznie większej liczby agentów wyszukujących, aby ukończyć wyszukiwanie lub w niektórych przypadkach wyszukiwanie nie zakończyło się w ogóle. Rysunek 8.6 pokazuje zrzut ekranu modelu Misjonarzy i Cannibal dla pierwszego wyszukiwania z dozwolonym powtórką.



Model pokazuje wykonanie wyszukiwania w miarę jego kontynuacji - każda iteracja jest wyświetlana po naciśnięciu przycisku go once" w interfejsie. W tym przypadku możemy przedstawić stan, w którym wyszukiwanie osiągnęło za pomocą krotki zawierającej trzy liczby - liczbę misjonarzy po lewej stronie rzeki (0 do 3), liczbę kanibali po lewej stronie (od 0 do 3) ), a liczba kajaków po lewej stronie (1 lub 0). Na przykład stan początkowy jest reprezentowany przez krotkę (3, 3, 1), ponieważ na początku jest 3 misjonarzy, 3 kanibali i 1 kajak po lewej stronie rzeki. Pożądany lub docelowy stan jest reprezentowany przez krotkę (0, 0, 0) ze wszystkimi i czółnem teraz po prawej stronie. Istnieje 32 możliwych stanów, do których może dotrzeć wyszukiwanie, ale nie wszystkie z nich będą dozwolone - na przykład krotka (1, 3, 0) nie jest stanem dozwolonym, ponieważ reprezentuje przypadek, gdy liczba kanibali jest większa niż liczba misjonarzy o 2. Ta reprezentacja pozwala nam wizualizować wyszukiwanie przy użyciu równoległego układu współrzędnych, jak pokazano na powyższym rysunku. Iteracja przeszukiwania za każdym razem jest pokazywana na osiach równoległych, z początkiem wyszukiwania pokazanym w ticku t = 0 po lewej stronie. Następnie wyszukiwanie przenosi się do trzech możliwych stanów w ticku t = 1: do (3, 2, 0), po tym jak jeden kanibal przepłynął na prawo w kajaku; do (3, 1, 0), po dwóch kanibali wioślarzy w kajaku; i do (2, 2, 0) po tym, jak jeden misjonarz i jeden kanibal przemaszerowali. Na rysunku przedstawiono ścieżki, którymi zajmuje się po raz pierwszy wyszukiwanie w środowisku przestrzeni stanów. Liczba czynników znacząco rośnie wraz z każdym tikkiem. Zrzut ekranu pokazuje również jedno możliwe rozwiązanie narysowane na czerwono. Jest to rysowane od lewej do prawej podczas animacji pokazanej na dole po naciśnięciu przycisku go-animacji w interfejsie. Możemy zatrzymać wyszukiwanie od ponownego stawiania stanów, ustawiając przełącznik allowed-revisited-states w interfejsie na Off. Ma to dramatyczny efekt, eliminując większość ścieżek z wyszukiwania, jak pokazano na rysunku



Podobny efekt widać po pierwszym wyszukiwaniu. Rysunek poniższy pokazuje, co dzieje się z pierwszą głębią wyszukiwania w modelu Misjonarzy i Cannibal z dozwolonym powtórką.



Zrzut ekranu pokazuje wyszukiwanie wielokrotnie wybierające te same złe ścieżki, które nigdy nie doprowadziły do rozwiązania. W końcu wyszukiwanie zostaje przerwane, ponieważ trwa zbyt długo. Rysunek ponizje pokazuje, co dzieje się z pierwszym wyszukiwaniem głębokości, gdy ponowne odwiedzanie jest niedozwolone.



Wyszukiwanie niemal natychmiast znajduje poprawną ścieżkę, ponieważ alternatywne złe ścieżki są eliminowane jako możliwości.

Wdrażanie wyszukiwania niedoinformowanego w NetLogo

Kod rozszerzania granicy wyszukiwania dla modelu wyszukiwania Kevina Bacona pokazany jest w NetLogoCode

to expand-paths [searcher-agent]
;; rozwija wszystkie możliwe ścieżki dla wyszukiwarki-agenta
foreach sort [link-neighbors] of [location] of searcher-agent
[ expand-path searcher-agent ? ]
end
to expand-path [searcher-agent node]
; agent wyszukiwania tworzy nowy agent wyszukiwania, który rysuje ścieżkę w pliku
; sieć od bieżącej pozycji do węzła
let xcor1 0
let ycor1 0
if not search-completed
[ ; utwórz nową ścieżkę, tworząc agenta do jej przeszukiwania
; sprawdź, czy ścieżka została już odwiedzona
if allow-revisited-nodes or not member? node visited-nodes
[
set path-found true
if not allow-revisited-nodes
[set visited-nodes fput node visited-nodes]
; dodaj do przodu zestawu odwiedzonych węzłów
hatch-searchers 1
[ ; wyszukiwarka klonów
set searchers-used searchers-used + 1
set size 2
set pen-size 5
set color magenta
set shape "person"
set xcor [xcor] of searcher-agent
set ycor [ycor] of searcher-agent
set xcor1 xcor ; copy xcor
set ycor1 ycor ; copy ycor
set heading [heading] of searcher-agent
set time [time] of searcher-agent + 1
set path-cost [path-cost] of searcher-agent
pen-down
; move to the node
set location node
move-to location
set xcor [xcor] of self
set ycor [ycor] of self
; przyrost ścieżki ścieżki przy wykonywaniu zachowania za pomocą
; Odległość euklidesowa
set path-cost path-cost +
euclidean-distance xcor1 ycor1 xcor ycor
set estimated-cost (heuristic-function xcor ycor)
set height hill-height xcor ycor
stamp ]
]
if goal-node node
[ set search-completed true ]
]
end
to-report goal-node [this-node]
;; zwraca true, jeśli agent wyszukiwarki osiągnął cel
report this-node = kevin-bacon-node
end
Procedura expand-paths wywołuje podporcedurę expand-path dla każdego węzła sąsiadującego z węzłem w bieżącej lokalizacji agenta wyszukującego, tj. każdy węzeł w zbiorze link-neighborough węzła agenta wyszukującego. Ta pod-procedura tworzy nową ścieżkę do każdego sąsiedniego węzła (przekazanego jako parametr), tworząc agenta do przeszukania. Najpierw sprawdza jednak, czy ścieżka została już odwiedzona, a ponowne odwiedzanie węzłów jest niedozwolone, a jeśli jest to prawdą, nie utworzy nowego agenta. Ścieżki rozwinięcia procedury wywołują ścieżkę rozszerzającą pod procedurą dla każdego węzła sąsiadującego z węzłem w bieżącej lokalizacji agenta wyszukującego, tj. Każdy węzeł w zestawie węzłów-sąsiadów węzła agenta wyszukującego. Ta pod-procedura tworzy nową ścieżkę do każdego sąsiedniego węzła (przekazanego jako parametr), tworząc agenta do przeszukania. Najpierw sprawdza jednak, czy ścieżka została już odwiedzona, a ponowne odwiedzanie węzłów jest niedozwolone, a jeśli jest to prawdą, nie utworzy nowego agenta. Po utworzeniu nowego agenta jest on początkowo umieszczany w lokalizacji bieżącego agenta wyszukiwania, a następnie jest przenoszony do sąsiedniego węzła. Ta pod-procedura utrzymuje również koszt ścieżki - odległość przebytą do tej pory podczas wyszukiwania wzdłuż aktualnej ścieżki; w tym modelu obliczany jest koszt ścieżki za pomocą odległości euklidesowej. Kiedy nowy agent zostanie sklonowany, skopiuje on dotychczasowe koszty ścieżki, a liczba ta zostanie zwiększona po przeniesieniu agenta klonów do nowej lokalizacji. Szacowany koszt dotarcia do celu i wysokości są również obliczane (są one wykorzystywane do wyszukiwania informacji i wspinaczki górskiej. Pod koniec procedury podrzędnej wykonywane jest sprawdzenie, czy węzeł celu został osiągnięty przez wywołanie procedury goal-node. Ta procedura po prostu sprawdza, czy węzeł jest węzłem bocznym Kevina zdefiniowanym podczas instalacji (reprezentowanym przez gwiazdę na zrzutach ekranu). Procedury wyszukiwania od pierwszego do najmniejszego i pierwszego wg głębokości są definiowane za pomocą procedury expand-paths, jak pokazano w kodzie NetLogo. Kod jest taki sam dla wszystkich trzech modeli - do wyszukiwania. Model Kevina Bacona oraz modele Searching Maze and Missionaries and Cannibals. Różnica występuje dla każdego modelu w sposobie rozszerzania ścieżek - czyli sposobu definiowania procedury expand-paths - ponieważ zależy to od natury problemu i sposobu definiowania ścieżek w środowisku.
to expand-breadth-first-search
; rozszerz wyszukiwanie, dodając więcej agentów wyszukiwania
ask searchers
[
expand-paths (searcher who)
die ; odetnij agentów nadrzędnych używanych w niższych odstępach czasu
]
end
to expand-depth-first-search
; rozwiń wyszukiwanie, postępując zgodnie z najnowszą ścieżką
; nie podążaj równolegle innymi ścieżkami; po prostu wykonaj jedną z nich
set path-found false
ask first (sort-by [[time] of ?1 > [time] of ?2] searchers)
[
expand-paths (searcher who)
die ; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]
end

Najpierw wyszukiwanie rozszerza ścieżki dla wszystkich obecnych agentów wyszukujących za pomocą polecenia ask, wywołując procedurę expand-paths przed zabiciem każdego z nich. Polecenie ask searchers zapewnia, że wyszukiwanie jest każdorazowo rozszerzane w przypadkowej kolejności. W przeciwieństwie do tego, pierwsze wyszukiwanie głębi rozszerza ścieżki dla pojedynczego agenta, najnowszego wyszukiwacza, który ma najwyższą zmienną czasową określaną przez sort-by reporter, zanim go zabije. Proste odmiany tych dwóch procedur prowadzą do różnych zachowań związanych z wyszukiwaniem. Jedną z odmian jest najpierw rozszerzenie ścieżki najniższego kosztu. Jest to tak zwane jednolite wyszukiwanie kosztów, którego kod jest pokazany w kodzie NetLogo. Kolejność rozwijania agentów wyszukujących jest określana przez raport sort-by, który zamawia agentów w kolejności rosnącej według path-cost

to expand-uniform-cost-search
; rozszerz wyszukiwanie, postępując najpierw ścieżkami o najniższych kosztach
set path-found false
ask first (sort-by [[path-cost] of ?1 < [path-cost] of ?2] searchers)
[
expand-paths (searcher who)
die ; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]

end

W przypadku pierwszego wyszukiwania w głąb możemy zmniejszyć ograniczenie, że jeden agent przeprowadza wyszukiwanie, i umożliwia więcej niż jednemu agentowi jednoczesne wyszukiwanie w tym samym czasie. W limicie, w którym nie ma ograniczeń co do liczby agentów, które mogą wyszukiwać w tym samym czasie, będzie to równoznaczne z szerokim wyszukiwaniem. Wariant wielo-agentowy wyszukiwania z głębokim pierwszym pokazano w NetLogo Code poniżej. Jedyne zmiany z powyższego pierwszego kodu to użycie zmiennej globalnej max-agents-to-expand, aby określić, ilu agentów powinno jednocześnie wyszukiwać w każdej iteracji (można to zmienić w interfejsie) i korzystać z n-reporter zamiast first reportera w poleceniu ask. Polecenie let przed poleceniem ask jest wymagane, gdy liczba agentów jest mniejsza niż max-agent-to-expand, który zwykle występuje na początku wyszukiwania, w przeciwnym razie n-of reportera spowoduje błąd wykonania.

to expand-MA-depth-first-search
; rozszerz wyszukiwanie, podążając najdłuższą ścieżką
; podążaj równolegle innymi ścieżkami; ale nie podążaj za nimi wszystkimi
false
let agents ifelse-value (count searchers < max-agents-to-expand)
[ count searchers ]
[ max-agents-to-expand ]
ask n-of agents turtle-set
(sort-by [[time] of ?1 > [time] of ?2] searchers)
[
expand-paths (searcher who)
die ; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]
end

Inną odmianą pierwszego wyszukiwania jest ograniczenie głębi wyszukiwania do określonej maksymalnej głębokości. Może to być przydatne, gdy maksymalna głębokość drzewa wyszukiwania jest nieznana i chcielibyśmy, aby wyszukiwanie najpierw rozpoczęło alternatywne krótsze ścieżki. W tym przypadku ścieżki są rozszerzane tylko dla tych agentów, których zmienna czasowa jest mniejsza lub równa temu limitowi. Jest to nazywane wyszukiwaniem z ograniczeniem głębokości, a kod jest wyświetlany w kodzie NetLogo

to expand-depth-limited-search
; rozszerz wyszukiwanie, podążając najdłuższą ścieżką
; nie podążaj równolegle innymi ścieżkami; po prostu wykonaj jedną z nich
; ogranicz głębokość wyszukiwania do maksymalnej głębokości
expand-depth-limited-search-1 max-depth
end
to expand-depth-limited-search-1 [maxdepth]
;rozszerz wyszukiwanie, podążając najdłuższą ścieżką
; nie podążaj równolegle innymi ścieżkami; po prostu wykonaj jedną z nich
; ogranicz głębokość wyszukiwania do maxdepth
set path-found false
ask first (sort-by [[time] of ?1 > [time] of ?2] searchers)
[
if (time <= maxdepth)
[ expand-paths (searcher who) ]
; rozwinąć tylko, jeśli nie zostanie przekroczony limit głębokości
umrzeć; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]
end

Procedura expand-depth-limited-search wywołuje podprocedurę expand-depth-search-1 z parametrem max-depth, która jest zmienną zdefiniowaną w interfejsie. Podprocedura jest po prostu odmianą standardowej procedury wyszukiwania z głębokim pierwszym zatrzymaniem ekspansji ścieżek, jeśli zostanie osiągnięte ,max-depth głębokości. Problem z wyszukiwaniem ograniczonym do głębi jest taki, że nie ma gwarancji, że wyszukiwanie zakończy się powodzeniem. Jeśli wybieramy konkretną maksymalną głębokość, wówczas pożądany lub docelowy stan może znajdować się tuż poza maksymalną głębokością odcięcia. Wariantem rozwiązania tego problemu jest "Iteracyjne pogłębianie wyszukiwania". W tym przypadku, ograniczone wyszukiwanie ograniczone jest do coraz większych maksymalnych głębokości, jak pokazano w kodzie NetLogo

to expand-iterative-deepening-search
; rozszerz wyszukiwanie, wykonując iteracyjnie wyszukiwanie z ograniczoną głębokością
; na coraz większe głębokości
set IDS-depth 1
set person-colour magenta
while [ IDS-depth <= max-depth ]
[
while [count searchers != 0]
[ expand-depth-limited-search-1 IDS-depth ]
set IDS-depth IDS-depth + 1
; change colour of person to reflect the increased maxdepth of search
if (person-colour > 5)
[ set person-colour person-colour - 5 ]
create-searchers 1 [ setup-searcher ]
]
set person-colour magenta ; przywróć domyślny kolor
end

Zmienna IDS-depth rejestruje, jaka jest bieżąca maksymalna głębokość dla wyszukiwania z ograniczeniem głębokości. Na początku ustawiona jest na 1, a następnie kod wykorzystuje pętlę while do wykonania wyszukiwania z ograniczeniem głębokości poprzez wielokrotne wywoływanie procedury expand-depth-limited-search-1, dopóki nie będzie więcej wyszukiwań (dzieje się tak, gdy głębokość ograniczone wyszukiwanie osiągnęło maksymalną głębokość). Maksymalna głębokość każdej iteracji jest zwiększana, gdy zmienna IDS-depth jest zwiększana o 1. Pojedynczy wyszukiwarka jest również odtwarzana w każdej iteracji, aby ponownie uruchomić wyszukiwanie ograniczające głębokość od zera, a kolor agentów wyszukujących został zmieniony w celu wyświetlenia wyszukiwania w miarę postępu poprzedniego wyszukiwania, które jest wyświetlane w innym kolorze. Wyszukiwanie zostanie ostatecznie zatrzymane, gdy IDS -depth przekroczy max-depth. Modele NetLogo umożliwiają również łączenie zachowań związanych z wyszukiwaniem. Strategię wyszukiwania można łatwo przełączać w połowie wyszukiwania. Na przykład wyszukiwanie może rozpocząć się jako pierwsze wyszukiwanie głębi, a następnie użytkownik może przełączyć strategię na alternatywną strategię, taką jak wyszukiwanie wszerz w trybie wyszukiwania za pomocą search-behaviour

Wyszukiwanie jako wybór zachowania

Możemy myśleć o procesie wyszukiwania jako o agencie poruszającym się po środowisku, które reprezentuje przestrzeń poszukiwań. W każdym punkcie, w którym istnieją alternatywne ścieżki do zbadania, agent musi podjąć decyzję, którą ścieżkę zbadać. Po wybraniu konkretnej ścieżki, doprowadzi to do "drzewa" przyszłych oddziałów. Ten abstrakcyjny widok wyszukiwania opiera się na analogii z eksploracją nieznanego terytorium poprzez wybór alternatywnych ścieżek. Możemy rozszerzyć ten abstrakcyjny widok, zauważając, że proces wyszukiwania zwykle obejmuje wybór zachowań, a nie tylko wybór ścieżki. Agent wyszukuje sekwencję zachowań, które po uruchomieniu doprowadzą do pożądanego celu. Wykonanie zachowania spowodują, że agent przejdzie określone ścieżki jako wynik. Możemy zastosować ten widok procesu wyszukiwania do scharakteryzowania trzech opisanych powyżej problemów z wyszukiwaniem. Na przykład w problemie wyszukiwania labiryntów proces wyszukiwania to coś więcej niż poszukiwanie zestawu ścieżek, które pozwolą agentowi dotrzeć do wyjścia lub centrum labiryntu. Aby podążać ścieżkami, agent musi wykonywać określone zachowania, takie jak skręcanie w lewo i prawo, poruszanie się do przodu i odwracanie. W związku z tym wyszukiwanie można scharakteryzować jako poszukiwanie sekwencji zachowań, które po wykonaniu w określonej kolejności doprowadzą do pożądanego celu. W szczególności zachowanie skrętu w lewo lub w prawo wymaga pojedynczego działania, ale zachowanie ruchu do przodu pociąga za sobą wiele działań, jeśli mamy wziąć pod uwagę perspektywę wykonania i usytuowania. Ruch w przód musi być połączony z wykrywaniem, na przykład agent może zastosować inne zachowanie, gdy tylko wyczuwa przed nim ścianę lub gdy odkryje otwartą przestrzeń przed lub na boku. W modelu Searching Mazes, aby zilustrować to behawioralne podejście do scharakteryzowania procesu wyszukiwania, agenci otrzymali możliwość wykonania trzech różnych zachowań reaktywnych - (i) posuwania się naprzód, (ii) skręcania w lewo, a następnie poruszania się do przodu, oraz ( iii) skręcając w prawo, a następnie w przód. Agenci mogą również wykonywać różne typy zachowań w ruchu do przodu. Są one kontrolowane przez dwa wybory w interfejsie: [1] zachowanie w ruchu do przodu; i [2] przeniesienie do przodu -po włączeniu. Pierwszy określa ruch do przodu dla zachowania reaktywnego (i), a drugi określa ruch do przodu dla zachowań reaktywnych (ii) i (iii). Rodzaje ruchu do przodu są następujące: (a) "Przejdź do przodu n kroków, chyba że uderzył w ścianę", gdzie agent porusza się do przodu o n kroków, a n jest liczbą zdefiniowaną przez zmienną Interface move-forwardstep- amount; (b) "Poruszaj się do przodu, aż trafisz ścianę", gdzie agent będzie kontynuował ruch do przodu, aż uderzy o ścianę; (c) "Przejdź do przodu, aż do dowolnej otwartej przestrzeni", gdzie agent będzie poruszać się do przodu, dopóki nie znajdzie się ściana lub jest otwarta przestrzeń po obu jej stronach; i (d) "Posuwaj się naprzód do otwartej przestrzeni za ścianą boczną", gdzie agent będzie poruszał się do przodu, aż na ścianie jest ściana lub jest otwarta przestrzeń po ścianie bocznej.

Wyszukiwanie jako wybór zachowania

Możemy myśleć o procesie wyszukiwania jako o agencie poruszającym się po środowisku, które reprezentuje przestrzeń poszukiwań. W każdym punkcie, w którym istnieją alternatywne ścieżki do zbadania, agent musi podjąć decyzję, którą ścieżkę zbadać. Po wybraniu konkretnej ścieżki, doprowadzi to do "drzewa" przyszłych oddziałów. Ten abstrakcyjny widok wyszukiwania proces opiera się na analogii z eksploracją nieznanego terytorium poprzez wybór alternatywnych ścieżek. Możemy rozszerzyć ten abstrakcyjny widok, zauważając, że proces wyszukiwania zwykle obejmuje wybór zachowań, a nie tylko wybór ścieżki. Agent wyszukuje sekwencję zachowań, które po uruchomieniu doprowadzą do pożądanego celu. Wykonanie zachowania spowodują, że agent przejdzie określone ścieżki jako wynik. Możemy zastosować ten widok procesu wyszukiwania do scharakteryzowania trzech opisanych powyżej problemów z wyszukiwaniem. Na przykład w problemie wyszukiwania labiryntów proces wyszukiwania to coś więcej niż poszukiwanie zestawu ścieżek, które pozwolą agentowi dotrzeć do wyjścia lub centrum labiryntu. Aby podążać ścieżkami, agent musi wykonywać określone zachowania, takie jak skręcanie w lewo i prawo, poruszanie się do przodu i odwracanie. W związku z tym wyszukiwanie można scharakteryzować jako poszukiwanie sekwencji zachowań, które po wykonaniu w określonej kolejności doprowadzą do pożądanego celu. W szczególności zachowanie skrętu w lewo lub w prawo wymaga pojedynczego działania, ale zachowanie ruchu do przodu pociąga za sobą wiele działań, jeśli mamy wziąć pod uwagę perspektywę wykonania i usytuowania. Ruch w przód musi być połączony z wykrywaniem, na przykład agent może zastosować inne zachowanie, gdy tylko wyczuwa przed nim ścianę lub gdy odkryje otwartą przestrzeń przed lub na boku. W modelu Searching Mazes, aby zilustrować to behawioralne podejście do scharakteryzowania procesu wyszukiwania, agenci otrzymali możliwość wykonania trzech różnych zachowań reaktywnych - (i) posuwania się naprzód, (ii) skręcania w lewo, a następnie poruszania się do przodu, oraz ( iii) skręcając w prawo, a następnie w przód. Agenci mogą również wykonywać różne typy zachowań w ruchu do przodu. Są one kontrolowane przez dwa wybory w interfejsie: [1] zachowanie w ruchu do przodu; i [2] przeniesienie do przodu - po włączeniu. Pierwszy określa ruch do przodu dla zachowania reaktywnego (i), a drugi określa ruch do przodu dla zachowań reaktywnych (ii) i (iii). Rodzaje ruch do przodu są następujące: (a) "Przejdź do przodu n kroków, chyba że uderzył w ścianę", gdzie agent porusza się do przodu o n kroków, a n jest liczbą zdefiniowaną przez zmienną Interface move-forwardstep- amount; (b) "Poruszaj się do przodu, aż trafisz ścianę", gdzie agent będzie kontynuował ruch do przodu, aż uderzy o ścianę; (c) "Przejdź do przodu, aż do dowolnej otwartej przestrzeni", gdzie agent będzie poruszać się do przodu, dopóki nie znajdzie się ściana lub jest otwarta przestrzeń po obu jej stronach; i (d) "Posuwaj się naprzód do otwartej przestrzeni za ścianą boczną", gdzie agent będzie poruszał się do przodu, aż na ścianie jest ściana lub jest otwarta przestrzeń po ścianie bocznej. Pomimo tego, że są w stanie wykonać trzy podstawowe zachowania reaktywne, agenci szukający labiryntu mogą w rezultacie wywołać zaskakującą różnorodność ruchów. Rysunek 8.10 przedstawia kilka z nich na zrzutach ekranu z modelu Searching Mazes, korzystając z pierwszego wyszukiwania w pustym labiryncie.



Odwołując się do cyfr i liter w poprzednim akapicie, aby opisać cztery konfiguracje: w lewym górnym obrazie agenci stosują zachowania [1] (a) i [2] (a), obie za pomocą kroku 10; w prawym górnym rogu zachowania są [1] (a), z krokiem 1 i [2] (b); w lewym dolnym obrazie zachowanie to [1] (a), z krokiem 10 i [2] (c); aw prawym dolnym obrazie zachowaniem są [1] (c) i [2] (a), z krokiem 10. Na przykład efekt siatki w lewym górnym rogu jest spowodowany przez powtarzające się 10 kroków ruchy agentów w trzech kierunkach - do przodu, w lewo i w prawo. Sposób, w jaki siatka jest zbudowana, najlepiej widać po ciągłym naciśnięciu przycisku jednorazowego użycia w interfejsie na początku każdego wyszukiwania. Ważnym rozróżnieniem jest to, że wyszukiwanie zaimplementowane w modelu Searching Mazes to nie tylko poszukiwanie alternatywnych ścieżek - jest to poszukiwanie sekwencji zachowań, które agent musi wykonać, aby przejść do stanu celu. To rozróżnienie jest najbardziej widoczne w definicji procedury expand-paths dla modelu, jak pokazano w kodzie NetLogo, gdzie każda "ścieżka", która jest rozszerzona, obejmuje wykonanie określonego zachowania ruchu - do przodu, do przodu, do tyłu, do przodu lub do prawej-naprzód.

to expand-paths [searcher-agent]
;; rozwija wszystkie możliwe ścieżki dla wyszukiwarki-agenta
expand-path searcher-agent "Move forward"
; nowy agent wyszukiwarki przesuwa się do przodu, aż uderzy w ścianę
expand-path searcher-agent "Move left"
; nowy agent wyszukiwania skręca w lewo, a następnie przesuwa się do przodu
expand-path searcher-agent "Move right"
; nowy agent wyszukiwania skręca w prawo, a następnie przesuwa się do przodu
end

Pozostałe dwa problemy z wyszukiwaniem można również scharakteryzować jako proces wyboru zachowań, a nie proces wyboru ścieżki. W przypadku modelu Kevin Bacon agenci stosują pojedyncze zachowanie - "rozglądają się" wokół nich, aby wyczuć otaczające węzły, a następnie przechodzą do każdego z nich po kolei. W procesie wyszukiwania zaimplementowanym w modelu zachowanie stosowane przez agenty jest takie samo, jak każdy węzeł jest traktowany jako równoważny, ale nie ma powodu, dla którego nie moglibyśmy zmieniać wyszukiwania, wybierając między zachowaniami, które uwzględniają różne właściwości węzły w sieci, takie jak to, czy był to super-węzeł czy nie, lub odległość od sąsiednich węzłów. W przeciwieństwie do modelu misjonarzy i ludożerców, proces wyboru zachowania jest bardziej widoczny. W procedurze rozszerzania ścieżek modelu pokazanej w kodzie NetLogo rozwijanych jest pięć "ścieżek". Odpowiadają one alternatywnym działaniom polegającym na tym, że dwóch misjonarzy dostanie się do łodzi wiosłowej, dwóch kanibali w łodzi wiosłowej, jeden misjonarz i jeden kanibal wsiadają do łodzi wiosłowej, jeden misjonarz sam i jeden kanibal sam. Aby jeszcze bardziej podkreślić behawioralny aspekt tych działań, wyobraźmy sobie na przykład scenariusz, w którym misjonarze wykazują osobliwe zachowanie, że sami nigdy nie wsiadają do łodzi wiosłowej. Możemy to zasymulować, po prostu komentując linię "expand-path searcher-agent 1 0" w procedurze rozszerzenia-ścieżka. W rezultacie w przypadku każdej z metod wyszukiwania przeprowadzane są znacząco różne wyszukiwania, niektóre z nich kończą się niepowodzeniem, podczas gdy inne, jak na przykład wyszukiwanie wszerz, być może zaskakujące, wciąż udaje się znaleźć rozwiązanie, choć różniące się od poprzedniego

to expand-paths [searcher-agent]
;; rozszerza wszystkie możliwe ścieżki dla agenta wyszukiwanit
expand-path searcher-agent 2 0 ; two missionaries in row-boat
expand-path searcher-agent 0 2 ; two cannibals in row-boat
expand-path searcher-agent 1 1
; jeden misjonarz i jeden kanibal w łódce wiosłowej
expand-path searcher-agent 1 0 ; jeden misjonarz w łódce wiosłowej
expand-path searcher-agent 0 1 ; jeden kanibal w łódce wiosłowej
end

Świadome wyszukiwanie

Świadome wyszukiwanie następuje, gdy agent używa informacji specyficznych dla problemu, aby pomóc w wyszukiwaniu. Informacje te są wykorzystywane do określenia, które ścieżki należy zastosować, gdy istnieją alternatywy. Jedną z postaci, jaką może przyjąć informacja, jest agent używający heurystycznej funkcji oceny, która szereguje alternatywne ścieżki. Zwykle wybiera się ścieżkę o najniższej wartości zgodnie z funkcją heurystyczną, aby rozszerzyć następne wyszukiwanie. Celem funkcji heurystycznej jest dokładne zorientowanie się, która ścieżka jest najlepsza. Agent musi zgadnąć, ponieważ jeśli agent wiedział już, która ścieżka była najlepsza z góry, nie ma już potrzeby wykonywania żadnych wyszukiwań. Jaka jest jednak dobra funkcja heurystyczna? Funkcja powinna zapewnić oszacowanie kosztu najtańszej ścieżki z bieżącego węzła do węzła celu. Na przykład, jedna z możliwych heurystycznych metod poszukiwania modelu Kevina Bacona jest odległością prostą (euklidesową), jeśli mierzymy koszt w kategoriach odległości przebytej w środowisku. Cechą tej heurystyki jest to, że nigdy nie przeszacuje faktycznego kosztu, ponieważ najkrótsza droga pomiędzy dwoma punktami jest zawsze linią prostą. Uważa się, że funkcja heurystyczna jest dopuszczalna, jeśli, tak jak w przypadku odległości euklidesowej, nigdy nie przecenia ona kosztu osiągnięcia węzeł celu od bieżącego węzła. Kolejną funkcją heurystyczną, kiedy mierzymy koszt w kategoriach odległości przemieszczanej w środowisku, jest odległość na Manhattanie. Tutaj analogią jest poruszanie się między dwoma punktami, tak jakbyśmy byli zmuszeni poruszać się po ulicach Manhattanu - możemy poruszać się tylko w pionie i poziomie, ale nigdy po skosie. Rysunek 8.11 pokazuje zrzut ekranu modelu odległości Manhattan w NetLogo, który ilustruje sposób obliczania miary i jej porównanie z odległością euklidesową.



Długość przekątnej czerwonej linii to odległość euklidesowa, która na zrzucie ekranu jest równa



Odległość na Manhattanie można obliczyć na podstawie odległości wielu różnych kombinacji ścieżek poziomych i pionowych prowadzących od punktu początkowego (dolne białe kółko) do celu (prawy górny okrąg). Na zrzucie ekranu widać dwie możliwości, ale wszystkie takie ścieżki będą miały taką samą całkowitą odległość 36. Odległość Manhattan nie jest dopuszczalną heurystyczną metodą poszukiwania modelu Kevina Bacona (w przypadkach, gdy dwa punkty nie są pionowe lub horyzontalne niezależnie od siebie odległość na Manhattanie jest większa niż najkrótsza odległość między dwoma punktami, czyli odległość euklidesowa). Jest to jednak dopuszczalna heurystyka modelu Searching Mazes, ponieważ ruch w trzech labiryntach dostarczonych przez model (pusty labirynt, labirynt Hampton Court Palace i labirynt Chevening Court) jest zawsze w kierunku poziomym lub pionowym, więc długość najkrótszej przejezdnej ścieżki pomiędzy dwoma punktami w labiryncie to zawsze odległość na Manhattanie. Kod pokazany w kodzie NetLogo pokazuje, w jaki sposób obliczana jest funkcja heurystyczna dla modelu Wyszukiwanie Kevina Bacona przy użyciu odległości euklidesowej lub odległości Manhattanu.

to-report euclidean-distance [x y x1 y1]
;; zgłasza odległość euklidesową między punktami (x, y) i (x1, y1)
report sqrt ((x1 - x) ^ 2 + (y1 - y) ^ 2)
end
to-report manhattan-distance [x y x1 y1]
;; zgłasza odległość euklidesową między punktami (x, y) i (x1, y1))
report abs (x1 - x) + abs (y1 - y)
end
to-report heuristic-function [x y]
;; zgłasza wartość funkcji oceny heurystycznej
let goalx kevin-bacon-xcor
let goaly kevin-bacon-ycor
if (heuristic = "Zero")
[ report 0 ]
if (heuristic = "Euclidean distance")
[ report euclidean-distance x y goalx goaly ]
if (heuristic = "Manhattan distance")
[ report manhattan-distance x y goalx goaly ]
end

Trzecia funkcja heurystyczna o nazwie Zero, która zawsze zwraca wartość 0, została również uwzględniona w modelach w celach porównawczych. Funkcja zerowa jest dopuszczalną heurystyczną, ponieważ wyraźnie nie przecenia kosztów ścieżki. Opracowanie odpowiedniej funkcji heurystycznej jest bardziej sztuką niż nauką. Chcemy, aby heurystyka zapewniała dobry ranking alternatywnych ścieżek, ale w najlepszym przypadku jest to tylko wykształcone przypuszczenie oparte na wcześniejszej wiedzy o tym, co działa dobrze w danej domenie wyszukiwania. Oczywiście, funkcja Zero nie zapewni dobrego rankingu alternatywnych ścieżek, ponieważ koszt będzie zawsze niedoceniany (chyba że węzeł celu zostanie osiągnięty) i każda ścieżka będzie miała taką samą pozycję. (Jest jednak użyteczne, aby zapewnić porównanie bazowe, ponieważ w przypadku pierwszego najlepszego wyszukiwania w chciwości opisanego poniżej, zachowanie przeszukiwania domyślnie dotyczy losowego rozszerzenia granicy, ponieważ wszystkie ścieżki alternatywne są równo klasyfikowane). Funkcje heurystyczne muszą być dostosowane do każdego problemu wyszukiwania. To, co może dobrze działać w jednej domenie problemowej, może nie działać tak dobrze w innej. Na przykład heurystyka heurystyczna na Manhattanie jest odpowiednia dla problemu Searching Mazes, ale nie byłaby odpowiednia dla problemu Kevin Bacon z powodów wymienionych powyżej. Ani heurystyka dystansu Manhattanu, ani metryka odległości euklidesowej nie byłaby odpowiednia dla problemu misjonarzy i Cannibalów w jej obecnej formie, ponieważ poprzednie rozwiązania były odpowiednie tylko dla przestrzeni dwuwymiarowej, problem misjonarzy i kanibali jest bardziej naturalnie reprezentowany w trójwymiarowym przestrzeni poszukiwań, gdzie wymiary to liczba misjonarzy po lewej stronie rzeki, liczba kanibali po prawej stronie rzeki i czy łódź rządowa znajduje się po lewej stronie, czy też nie. Możemy łatwo zwiększyć odległość euklidesową oraz funkcje odległościowe na Manhattanie w celu uwzględnienia 3 (lub więcej) wymiarów, jak pokazano w NetLogo Code

to-report euclidean-distance [x y z x1 y1 z1]
;; zgłasza odległość euklidesową między punktami (x, y, z) i (x1, y1, z1)
report sqrt ((x1 - x) ^ 2 + (y1 - y) ^ 2 + (z1 - z) ^ 2)
end
to-report manhattan-distance [x y z x1 y1 z1]
;; podaje odległość manhattan między punktami (x, y, z) i (x1, y1, z1))
report abs (x1 - x) + abs (y1 - y) + abs (z1 - z)
end
to-report heuristic-function [mcount ccount rcount]
;; zgłasza wartość funkcji oceny heurystycznej
if (heuristic = "Zero")
[ report 0 ]
if (heuristic = "People on the left side")
[ report mcount + ccount ]
if (heuristic = "Min. no. boat trips needed")
[ report (mcount + ccount) / 2 ] ; 2 is the capacity of the boat if (heuristic = "Euclidean distance") ; celem jest punkt (0,0,0)
[ report euclidean-distance mcount ccount rcount 0 0 0 ]
if (heuristic = "Manhattan distance") ; celem jest punkt (0,0,0)
[ report manhattan-distance mcount ccount rcount 0 0 0 ]
end

Zdefiniowane są również dwie dalsze dopuszczalne funkcje heurystyczne, które można zastosować w tym problemie. Pierwsza, oznaczona jako "Ludzie po lewej stronie", po prostu liczy liczbę osób znajdujących się po lewej stronie rzeki. Jest to związane z drugim, oznaczonym "Min. Nie. wymagane rejsy statkiem ", które określają minimalną liczbę rejsów, które będą potrzebne do przeniesienia ludzi. Te dwa są nierealistycznymi szacunkami prawdziwego kosztu ścieżki, ponieważ ignorują one dodatkowe podróże potrzebne po pierwsze, aby upewnić się, że kanibale nigdy nie przewyższają liczebnie misjonarzy na żadnym etapie, a po drugie, że zwracają kajak, aby podnieść pozostałych ludzi. Jednak wyraźnie nigdy nie przeszacowują liczby wymaganych wycieczek łodzią, więc są one dopuszczalnymi heurystykami. Możemy teraz przyjrzeć się, w jaki sposób możemy użyć tych heurystycznych funkcji oceny jako podstawy różnych zachowań wyszukiwania. Wyszukiwanie "Najpierw" odnosi się do wyszukiwań, które najpierw rozszerzają "najlepsze" ścieżki według oceny heurystycznej. Jeden rodzaj najlepszego pierwszego wyszukiwania, zwany pierwszym najlepszym wyszukiwaniem chciwym, zamawia ekspansje ścieżek wyszukiwania według szacunkowego kosztu do celu. Analogia jest taka, że agent wyszukujący jest "chciwy" i krótkowzroczny, chcąc wybrać to, co wydaje się najlepsze w tej chwili, stąd nazwa. Kod wyszukiwania jest zdefiniowany w poniższym kodzie NetLogo (szacowany koszt jest obliczany przez funkcję heurystyczną w procedurze expand-paths w kodzie NetLogo).

to expand-greedy-best-first-search
; rozszerz wyszukiwanie, używając najlepszej chciwej pierwszej metody wyszukiwania
set path-found false
ask first (sort-by [[estimated-cost] of ?1
[estimated-cost] of ?2] searchers)
[ vexpand-paths (searcher who)
die ; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]
end

Kod tego wyszukiwania jest bardzo dobry podobnie jak kod do pierwszego wyszukiwania w kodzie NetLogo, jedyną różnicą jest to, że ścieżki są uporządkowane według estimed-cost, a nie czasu. Prostą modyfikacją pierwszego najlepszego wyszukiwania jest ponowne uporządkowanie wyszukiwania według sumy szacunkowego kosztu i kosztu ścieżki. To wyszukiwanie nazywa się A * search (wymawiane "A star"); kod jest zdefiniowany w kodzie NetLogo

to expand-A-star-search
; rozwiń wyszukiwanie za pomocą metody wyszukiwania A *
set path-found false
ask first (sort-by [[estimated-cost + path-cost] of ?1 <
[estimated-cost + path-cost] of ?2] searchers)
[
expand-paths (searcher who)
die ; ten agent wykonał swoją pracę; to dzieci wykonują teraz pracę
]
end

Rysunek pokazuje, w jaki sposób zarówno chciwe najlepsze pierwsze wyszukiwanie, jak i wyszukiwanie A * przeszukuje sieć pokazaną wcześniej na rysunkach w celu znalezienia modelu Kevina Bacona. W takim przypadku oba wyszukiwania kończą się na tych samych ścieżkach. Jednak w przypadku bardziej skomplikowanych sieci zwykle tak nie jest, ponieważ A * zwykle wybiera bardziej bezpośrednią drogę do celu niż najlepsze pierwsze wyszukiwanie.



Pokazują to dwa wyszukiwania w pustym labiryncie dla modelu Searching Mazes na rysunku



W tej konfiguracji funkcja heurystyczna jest odległością euklidesową, a agent przesuwa się do przodu o 2 kroki naraz, jak miało to miejsce w przypadku rysunku 8.5. Lewy obraz pokazuje nieco bardziej błędną ogólną ścieżkę do wyjścia przez agentów wyszukujących dla chciwego najlepszego pierwszego wyszukiwania, ale ogólnie rzecz biorąc, poszukiwacze są "kierowani" w stronę celu przez funkcję heurystyczną, która lepiej pozycjonuje cele bliżej celu. Podobne zachowanie można zaobserwować, gdy używana jest funkcja heurystyczna na Manhattanie, a nie odległość euklidesowa. Kiedy funkcja Zero jest używana jako heurystyka, agenci wyszukujący ekspandują na zewnątrz w sposób losowy, niekoniecznie w kierunku wyjścia. Odpowiedni obraz pokazuje bardziej bezpośredni i uporządkowany postęp podejmowany przez agentów wyszukujących A *, gdy używany jest euklides. Pięć środkowych kolumn armii agentów poszukiwawczych maszeruje bezpośrednio z dołu labiryntu w kierunku wyjścia na szczyt. Jednak nagle zatrzymują się kilka kroków od wyjścia, a lewa kolumna zewnętrzna przesuwa się do przodu, z prawą stroną zewnętrzną. kolumna dołączająca do wyszukiwania nie długo po. Powodem tego jest sposób pozycjonowania pozycji przez sumę kosztu ścieżki w połączeniu z szacunkowym kosztem obliczonym na podstawie odległości euklidesowej. W przypadku środkowych kolumn suma ta jest nieco większa niż pionowa długość labiryntu, ponieważ bezpośrednia linia do wyjścia jest pionowa, a pozycja celu używana do obliczenia odległości euklidesowej jest pojedynczym punktem na lewo od wyjścia. Ta suma dla zewnętrznej kolumny przekracza sumę dla wewnętrznych kolumn przez większość czasu, podczas gdy agenci maszerują do przodu, ale gdy agenci z wewnętrzną kolumną zbliżają się do celu, nie jest to już prawdą, a więc agenci z zewnętrznej kolumny przyjmują koniec. Ostatecznie środkowe kolumny dochodzą do wyjścia. Rysunek pokazuje, co dzieje się z przeszukiwaniem A * w pustym labiryncie za pomocą odległości na Manhattanie heurystyczny (lewy obraz) i heurystyczny dystans zerowy (prawy obraz). Zachowanie agentów wyszukujących z heurystyką odległości na Manhattanie polega na marszu w stronę punktu celu po lewej stronie wyjścia, ale ruch do przodu jest bardziej kikutowy niż dla metryki odległości euklidesowej. Współrzędna x dla punktu celu dla przypadku pokazanego na obrazie jest ustawiona na -5 w kodzie podczas konfiguracji, więc wiodący agent przeszukiwania na końcu marszowej kolumny agentów ma tendencję do tego samego x współrzędnej . Natomiast zachowanie agentów wyszukujących, gdy używana jest heurystyka Zero distance, jest podobne do zachowania szerokiego wyszukiwania po raz pierwszy



Lokalne wyszukiwanie i optymalizacja

Inna rodzina zachowań związanych z wyszukiwaniem opiera się na "lokalnym" wyszukiwaniu, w którym agenci przeprowadzający wyszukiwanie stosują reguły zgodnie z lokalną sytuacją, w której się znaleźli, badając alternatywne ścieżki tylko w odniesieniu do najbliższego sąsiedztwa. W związku z tym nie muszą rejestrować żadnych informacji, takich jak, które lokalizacje już odwiedzili, ścieżek, które podjęli, ani drogi kosztowej. Ten typ wyszukiwania można opisać za pomocą analogii osoby krótkowzrocznej z bardzo umiejscowionym polem widzenia. Wyszukiwanie wykorzystuje meta-heurystykę, która może być zastosowana do rozwiązywania ogólnych problemów, a nie do specyficznej heurystyki dostosowanej do domeny problemowej. Jedną z form tego typu wyszukiwania, zwaną wspinaczką górską (zwaną również chciwym wyszukiwaniem lokalnym), jest dokonanie wyboru gdzie przejść do opartej na maksymalizacji (lub równoważnej minimalizacji) niektórych kryteriów. Kod tego wyszukiwania jest pokazany w kodzie NetLogo

to expand-hill-climbing-search
; rozszerz wyszukiwanie za pomocą metody wyszukiwania podczas wspinaczki
set path-found false
ask searchers ; na tym etapie zawsze powinien znajdować się tylko jeden wyszukiwarka
[ expand-paths (searcher who) ] ; zobacz, gdzie mogę iść dalej
foreach but-first (sort-by [[height] of ?1 < [height] of ?2] searchers)
[ ; zabij wszystko oprócz pierwszego
ask ? [ die ]; pozwól, aby najlepsi z nowych wyszukiwarek kontynuowali
]
end

W przypadku wyszukiwania na wzniesieniach w dowolnym momencie aktywny jest tylko jeden agent wyszukujący. Agent ten utworzy nowych agentów wyszukujących dla każdej ścieżki, którą może rozwinąć, ale tylko jedna z nich zostanie wybrana do kontynuowania wyszukiwania, a reszta zostanie usunięta. Wybrany agent wyszukujący będzie miał minimalną wartość dla zmiennej wysokości przechowywanej z każdym agentem. Jest to obliczane w procedurze expand-paths. W przypadku modułu Searching Mazes i modelu Search for Kevin Bacon wysokość jest obliczana za pomocą funkcji heurystycznej zdefiniowanej w kodzie NetLogo

to-report hill-height [x y]
;;zgłasza „wysokość” aktualnej pozycji wyszukiwania
;; celem jest zerowa wysokość
report heuristic-function x y
end

Wykorzystanie odległości euklidesowej lub odległości Manhattanu od punktu celu jako meta-heurystyki dla obu modeli zapewnia, że krajobraz otoczenia jest gładki w całym tekście i składa się z pojedynczej depresji, przy czym najniższym punktem (zero) jest epicentrum. Przeszukiwanie wspinaczki próbuje się poruszyć agent w kierunku epicentrum. Rysunek poniższy przedstawia dwa zrzuty ekranu z wyszukiwania wznoszenia w pustym labiryncie dla modelu Searching Mazes.



Lewy obraz pokazuje, co się dzieje, gdy odległość euklidesowa jest używana jako meta-heurystyczny, właściwy obraz, gdy używana jest odległość Manhattan. Wyjaśnienie wyraźnego odwrócenia kolumn agentów wyszukujących na początku i na końcu jest takie, że jak omówiono powyżej, współrzędna x punktu celu jest ustawiona na -5, która jest nieco na lewo od x -region pierwszego agenta wyszukiwarki, gdy wejdzie do labiryntu. Dlatego, dla odległości euklidesowej, środek rozszerzony w kierunku do przodu będzie zawsze bliżej punktu celu, aż do prawej na końcu (w przeciwieństwie do dwóch innych czynników rozszerzonych w lewym i prawym kierunku). W przypadku odległości na Manhattanie veering występuje na początku zamiast ze względu na sposób, w jaki odległość jest obliczana jako suma długości pionowych i poziomych, a nie po przekątnej. W przypadku modelu Missionaries and Cannibals potrzebujemy innej metody obliczania zmiennej wysokości, ponieważ przestrzeń poszukiwań jest trójwymiarowa. Odnosząc się do rysunku 8.6, oczywistym sposobem przedstawienia wysokości w środowisku jest położenie każdego stanu na równoległych osiach y. Na przykład najwyższy punkt to stan początkowy w (3, 3, 1), a najniższy (zero) punkt to stan celu na (0, 0, 0). Możemy zatem obliczyć wysokość proporcjonalnie do liczby misjonarzy i kanibali oraz aktualnej pozycji łodzi rządowej, jak pokazano w kodzie NetLogo

to-report hill-height [mcount ccount rcount]
;; zgłasza "wysokość" aktualnej pozycji wyszukiwania
;; celem jest zerowa wysokość; maksymalna wysokość to początek
report mcount * 8 + ccount * 2 + rcount
end

Problem z przeszukiwaniem wspinaczkowym polega na tym, że może łatwo utknąć w lokalnych maksimach. Innym problemem jest przeszkoda blokująca drogę. Ilustruje to zrzut ekranu z wykresu 8.16 wyszukiwania wznoszenia stosowanego w labiryncie Pałacu Hampton Court.



Poszukiwacze kierują się bezpośrednio w kierunku globalnego minimum w centrum labiryntu, ale potem uniemożliwia im poruszanie się do przodu przez długą poziomą ścianę na drodze. Co musi zrobić wyszukiwanie, to udać się w kierunku nie do minimalizacji, aby ominąć przeszkodę. Jednym ze sposobów na to jest włączenie losowego chodzenia, gdy wyszukiwanie nie zrobiło żadnego postępu. Jednak środowisko Hampton Court Palace Maze jest nadal problematyczne nawet w przypadku takiego rozwiązania, ponieważ ściany przedstawiają szereg przeszkód równoległych do siebie, które są bardzo szerokie i trudne do znalezienia. Podobnie, wyszukiwanie przy wspinaczce używane do Poszukiwanie modelu Kevina Bacona może również utknąć w węzłach, gdzie sąsiednie węzły znajdują się w kierunkach oddalonych od węzła celu. Dzieje się tak na ekranie pokazanym na rysunku 8.17, gdzie wyszukiwanie rozpoczyna się w węźle b33, ale nie może być kontynuowane poza węzłem b21, ponieważ odległości od węzła celu (białej gwiazdy) od sąsiednich węzłów są dłuższe niż odległość od węzła b25.



Ten sam problem występuje w przypadku wspinania się po górach na problem misjonarzy i kanibali. Wyszukiwanie bardzo szybko utknie, gdy tylko przyszłe ścieżki oddalą się od stanu docelowego. Wspinaczka wzgórzowa jest przykładem szerszej klasy rozwiązywania problemów zwanej optymalizacją. Metody optymalizacyjne polegają na odgadywaniu, a następnie stopniowaniu precyzji, dopóki dalsze udoskonalenia nie będą możliwe. Niektóre inne formy optymalizacji są symulowane wyżarzania, wyszukiwania wiązki, wyszukiwania genetycznego i optymalizacji roju cząstek. W przypadku tych dwóch ostatnich dwóch modeli udostępnia Biblioteka modeli NetLogo - Proste wyszukiwanie genetyczne i Optymalizacja roju cząstek. (Modele te zostaną omówione w Tomie 2 tej serii książek.) Wyszukiwanie optymistyczne w poszukiwaniu rój cząstek wykorzystuje inteligencję roju i stygmergię. Używanie tablic przez komunikowanie agentów w celu wyszukiwania sieci komputerowych w ramach modelu Being Kevin Bacon, opisanego w poprzednim rozdziale, jest kolejnym przykładem agentów rozproszonych wykorzystujących stigmergiczne informacje lokalne w celu usprawnienia wyszukiwania. Innym przykładem wyszukiwania lokalnego jest również metoda komunikacji "z ust do ust", ale w odróżnieniu od metody tablicowej nie wykorzystuje stygmatyki.

Porównywanie zachowań wyszukiwania

Jak możemy porównać opisane powyżej zachowania związane z wyszukiwaniem? Innymi słowy, jakie są odpowiednie kryteria, które możemy zastosować w celu obiektywnej oceny, które z wyszukiwarek jest "lepsze"? Jednym z oczywistych kryteriów jest ustalenie, czy wyszukiwanie jest zakończone, czy nie. W niektórych przypadkach nie możemy być pewni, że wyszukiwanie gwarantuje znalezienie rozwiązania. Kolejnym kryterium jest to, czy wyszukiwanie znajduje optymalne rozwiązanie - to jest rozwiązanie, które ma najniższy koszt ścieżki wzdłuż ścieżki od stanu początkowego do stanu celu. Dalsze kryteria odnoszą się do czasu i pamięci wymaganej do znalezienia rozwiązania. Tabela 8.1 zawiera listę kilku kryteriów oceny wydajności wyszukiwania.

Opis : Kryterium

Kompletność. : Czy wyszukiwanie gwarantuje znalezienie rozwiązania, jeśli takie istnieje?

Optymalność. : Czy wyszukiwanie znajduje optymalne rozwiązanie?

Złożoność czasu : Ile czasu potrzeba na znalezienie rozwiązania dla wszystkich agentów?

Złożoność przestrzeni : Ile pamięci całkowitej dla wszystkich agentów jest wymagane, aby znaleźć rozwiązanie?

Złożoność komunikacji : Ile komunikacji między agentami jest konieczne, aby znaleźć rozwiązanie?

Pierwsze cztery kryteria pochodzą od Russella i Norviga. Ostatnie kryterium zostało zaproponowane przez Yao i odnosi się do ilości komunikacji wymaganej między agentami rozproszonymi podczas przeprowadzania wyszukiwania. Złożoność czasu i przestrzeni jest zwykle mierzona w odniesieniu do długości przeszukiwanych ścieżek. Jeśli wyszukiwanie jest scharakteryzowane za pomocą agentów rozproszonych zaimplementowanych przez kod w tym rozdziale, wówczas złożoność czasu odnosi się do całkowitej liczby agentów wyszukujących utworzonych podczas wyszukiwania, a złożoność przestrzeni odnosi się do maksymalnej liczby agentów wyszukujących, którzy są "aktywni" podczas wykonanie wyszukiwania. Dla każdego z trzech modeli NetLogo opisanych w tym rozdziale (Wyszukiwanie Kevina Bacona, Wyszukiwanie Mazur i Misjonarzy oraz Kanibali) te dwie liczby są wyświetlane w interfejsie Maximum Active Searcher Agents i Total Searcher Agents. Zauważ, że w wielu przypadkach złożoności są idealizacją wyszukiwania lub mogą nie odzwierciedlać rzeczywistej wydajności. Na przykład złożoność czasu i przestrzeni dla chciwych najlepszych pierwszych wyszukiwań opiera się na analizie najgorszego przypadku - dzięki dobrej heurystyce można znacznie zmniejszyć wyszukiwanie. Należy również zauważyć, że w niektórych przypadkach złożoności te nie odpowiadają różnym zachowaniom wyszukiwania. Korzystanie z sortowania według reporterów w wielu procedurach wyszukiwania rozszerzonego - na przykład w rozszerzeniu - nie jest najskuteczniejszym możliwym wdrożeniem. Powodem, dla którego zostały one wdrożone w ten sposób, jest zwrócenie uwagi na istotne różnice między poszczególnymi przeszukaniami, poprzez umieszczenie ich we wspólnych ramach. Złożoność komunikacji jest również ważnym czynnikiem, który należy wziąć pod uwagę, szczególnie w przypadku stosowania rozwiązań wieloagentowych. Jeśli występuje koszt związany z komunikowaniem stanu wyszukiwania między agentami - na przykład, gdy agenci klonują się tak, jak powyżej - należy to również uwzględnić w ocenie. Złożoność komunikacji wiąże się z kosztami przesyłania informacji między agentami; można to zmierzyć za pomocą entropii, jak opisano w poprzednim rozdziale (tj. za pomocą długości kodu kompresji). Wszystkie powyższe zachowania przeszukiwania mają podobną złożoność komunikacyjną do złożoności przestrzeni, ponieważ informacje o stałym rozmiarze są przesyłane z agenta macierzystego do agentów klonów - to znaczy, gdy hatch-seaches command jest wywoływane jak w Kodzie NetLogo 8.1, Agent macierzysty przesyła tę samą informację o stałej wielkości do nowo wyklutego klonu (na przykład bieżąca path-cost i czas wyszukiwania). Złożoność komunikacji może być jednak ważnym czynnikiem, który należy uwzględnić w innych rodzajach wyszukiwania, takie jak wyszukiwanie ustne i wyszukiwania typu tablicowego. Różne złożoności są również związane z informacjami gromadzonymi przez agenta lub agentów podczas wyszukiwania, a także z informacjami przesyłanymi między agentami. Oczywistą informacją, którą agent może zebrać, jest to, czy agent już odwiedził określony stan, czy też znalazł się na określonej ścieżce. Dalsze informacje mogą dotyczyć tego, czy jeden kraj prowadzi do innego państwa, czy też do najkrótszej ścieżki z danego stanu do innego państwa. Agent może wykorzystywać te informacje do kierowania wyszukiwaniem, ale koszt przetwarzania informacji również jest uwzględniany w złożoności. Czasami koszt uzyskania informacji może być zbyt wysoki - może to oznaczać, że wymagane jest zbadanie całej przestrzeni poszukiwań. Ewentualnie przechowywanie informacji może być zbyt kosztowne pod względem pamięci zewnętrznej.

Podsumowanie i dyskusja

Standardowe algorytmy wyszukiwania, takie jak pierwszy na początku, pierwszy, chciwy najlepszy pierwszy i A *, zostały zaimplementowane przy użyciu ucieleśnionej, usytuowanej struktury z wieloma agentami. W tym kontekście wyszukiwanie jest przekształcane jako proces wykonywany przez zespoły agentów współpracujących ze sobą w celu znalezienia pożądanej lokalizacji w przestrzeni n-wymiarowej. Wiele zachowań wyższego rzędu, często związanych z inteligencją, może być przekształconych jako wyszukiwanie w ten sposób. Rozwiązywanie problemów może być traktowane jako poszukiwanie w przestrzeni rozwiązania - istnieje wiele możliwych rozwiązań konkretnego problemu, które są rozproszone w n-wymiarowej przestrzeni, którą należy przeszukać w celu rozwiązania problemu. Podobnie procesy podejmowania decyzji, planowania i uczenia się można przekształcić w wyszukiwania w przestrzeniach n-wymiarowych obejmujących decyzje, plany i poznane koncepcje. Rozmowy wymagają również wyszukiwania - podczas rozmowy agenci muszą nieustannie szukać najbardziej odpowiednich odpowiedzi. Następny rozdział pokazuje, jak rozumowanie może być przekształcone jako problem z wyszukiwaniem. Wyszukiwanie można uznać za zachowanie, które ucieleśniony, położony agent pokazuje w celu zdobycia wiedzy, której jeszcze nie ma. Wyszukiwanie jest zasadniczo związane z wiedzą - można je traktować jako dwie strony tej samej monety. Znajduje to odzwierciedlenie w języku, którego używamy do opisu wyszukiwania. Na przykład wspólne angielskie wyrażenie, którego używamy, to "poszukiwanie wiedzy" (jak w cytacie na początku tego rozdziału). Często mówimy również, gdy nie "wiemy", czy coś jest prawdą, że musimy "znaleźć", czy jest to prawda, jak w wyrażeniu "Muszę się dowiedzieć, czy X jest prawdą", gdzie X jest dowolnym stwierdzeniem . W następnym rozdziale omówimy, czym jest wiedza, a także związek między wyszukiwaniem a wiedzą.

* Następujące wyszukiwania są niedoinformowanymi wyszukiwaniami: depth-first - w tym miejscu aktywny jest tylko jeden agent, który często musi cofnąć śledzenie; ograniczone do głębokości - w tym przypadku maksymalna głębokość odcięcia jest nakładana na pierwsze wyszukiwanie głębi; multi-agent depth-first - jest to pierwsze wyszukiwanie głębi, ale z więcej niż jednym agentem aktywnym; w pierwszej kolejności - to tutaj zespoły agentów rozchodzą się równolegle; jednolity koszt - jest to pierwsze wyszukiwanie, ale ścieżki o najniższych kosztach są najpierw rozszerzane; Iteracyjne pogłębianie - wykorzystuje powtarzające się egzekucje ograniczonego wyszukiwania w celu zwiększenia maksymalnej głębokości;

* Świadome wyszukiwanie wykorzystuje informacje do kierowania wyszukiwaniem. Informacje mają formę odgadnięcia, w którą stronę jest najlepszy.

* Funkcja używana do odgadnięcia jest nazywana funkcją heurystyczną.

* Dopuszczalna funkcja heurystyczna to taka, która nigdy nie przecenia kosztów osiągnięcia celu.

* Następujące wyszukiwania są świadomymi wyszukiwaniami: chciwy najlepiej-pierwszy - tutaj jest ścieżka o najniższym szacowanym koszcie do celu (obliczona przez funkcję heurystykę) jest następna;

* - tutaj następuje ścieżka o najniższym (szacowany koszt do celu + koszt ścieżki).

* Lokalne wyszukiwanie i optymalizacja pozwalają zgadnąć, którą ścieżkę wybrać, wyłącznie na podstawie informacji lokalnych.

* Następujące wyszukiwanie to wyszukiwanie lokalne: wspinaczka górska - tam pojedynczy agent zawsze prowadzi "pod górę".

* Wyszukiwanie w górach często utknęło w lokalnej optimie.

* Do oceny wyników można zastosować następujące kryteria: kompletność, optymalność, złożoność czasu, przestrzeń złożoność i złożoność komunikacji.

Wiedza
v Pytanie, w jaki sposób zdefiniować wiedzę, jest być może najważniejszą i najtrudniejszą z trzech [(1) definicja wiedzy, (2) danych, (3) metod wnioskowania], którymi będziemy się zajmować. Może się to wydawać zaskakujące: na pierwszy rzut oka można sądzić, że wiedzę można zdefiniować jako wiarę zgodną z faktami. Kłopot w tym, że nikt nie wie, czym jest wiara, nikt nie wie, co to jest fakt, i nikt nie wie, jaki rodzaj porozumienia między nimi uczyniłby wiarę prawdziwą. - Bertrand Russell. 1926.

Wiedza i systemy oparte na wiedzy

Wiedza jest niezbędna do inteligentnego zachowania. Bez wiedzy inteligentny agent nie może podejmować świadomych decyzji, a zamiast tego musi polegać na stosowaniu pewnego rodzaju zachowania typu wyszukiwania obejmującego eksplorację i / lub komunikację w celu zdobycia brakującej wiedzy. Ludzie polegają na wiedzy w każdym momencie swojego życia - wiedza o tym, jak komunikować się z innymi ludźmi, wiedza o tym, gdzie i jak ludzie żyją i pracują, wiedza o tym, gdzie są rzeczy, wiedza o tym, jak się zachować w różnych sytuacjach, wiedza o tym, jak wykonywać różne zadania i tak dalej. Bez zdolności do przechowywania i przetwarzania wiedzy, zdolności poznawcze człowieka są poważnie ograniczone. Choroba, na przykład choroba Alzheimera, może wyniszczać, gdy występuje utrata pamięci, taka jak trudność w zapamiętywaniu ostatnio poznanych faktów. Wszyscy wiemy (lub uważamy, że wiemy), co mamy na myśli, gdy używamy terminu "wiedza". Ale czym dokładnie jest wiedza? Bertrand Russell uznał trudne pytanie, w jaki sposób zdefiniować znaczenie "wiedzy":

"Być może nierozsądne jest rozpoczynanie od definicji tematu, ponieważ, jak wszędzie w dyskusjach filozoficznych, definicje są kontrowersyjne i będą z konieczności różne dla różnych szkół".

Definicja wiedzy jest przedmiotem toczącej się debaty filozoficznej i obecnie istnieje wiele konkurencyjnych teorii bez wspólnej, wspólnej definicji. W konsekwencji, traktowanie wiedzy z perspektywy Sztucznej Inteligencji często świadomie unikało definicji tego, czym jest wiedza. Jednak to unikanie podawania definicji wiedzy z góry powoduje brak dokładności w literaturze i badaniach. Poniższy argument ilustruje, dlaczego. System oparty na wiedzy jest terminem używanym w Sztucznej Inteligencji do odwoływania się do systemu, który przetwarza wiedzę w pewien sposób. Możemy uczynić analogię systemu opartego na wiedzy jako repozytorium wiedzy, podczas gdy baza danych jest repozytorium danych. Jednak w tej definicji zaniedbaliśmy zdefiniowanie znaczenie terminu "wiedza" i jego odmienność w stosunku do danych. Na przykład możemy zadać sobie następujące pytanie: "Co to jest system oparty na wiedzy i czym różni się on od systemu baz danych?" Jest to trudne pytanie, na które nie można łatwo odpowiedzieć w prosty sposób. Powszechnie stosowane podejście w literaturze jest takie, że system oparty na wiedzy może przeprowadzać rozumowanie za pomocą jakiejś formy inferencji (opartej na regułach, ramowych, patrz poniżej). Jednak nowoczesne systemy baz danych wykorzystują obecnie większość tych standardowych "opartych na wiedzy" technik i więcej. Oczywiste jest, że samo dodanie zdolności inferencyjnych nie jest wystarczające do zdefiniowania systemu opartego na wiedzy. Jednak wiele z literatury A.I. tworzy takie założenie. Unikając definicji wiedzy, problemem staje się to, że nie jest już jasne, że to, co budujemy, faktycznie jest "oparte na wiedzy". W części 1 stwierdzono, że wczesne systemy A.I. w latach 70. i 80. XX wieku cierpiały na brak oceny - istniało pęd do budowy nowych systemów, ale często przeprowadzono bardzo niewiele oceny tego, na ile systemy działają. Bez działającej definicji wiedzy ten sam problem występuje obecnie w przypadku obecnych systemów opartych na wiedzy - w jaki sposób możemy ocenić, jak skuteczny może być nasz system oparty na wiedzy, jeśli nie mamy definicji tego, co powinno być (lub nawet osiągnąć lub osiągnąć) )? Możemy jednak uniknąć filozoficznych pułapek i zamiast próbować zdefiniować wiedzę, i twierdząc, że ta definicja jest "właściwa", zamiast tego możemy zaproponować zasady projektowania naszego systemu opartego na wiedzy. W związku z tym możemy zdecydować, jakie zasady chcielibyśmy stosować w naszym systemie opartym na wiedzy, a my, jako projektanci, możemy dowolnie je zmieniać w zależności od wiedzy, którą zdobywamy podczas procesu projektowania. Poza tym nie stoimy już na niepewnym gruncie w tym sensie, że nie musimy podawać jednej konkretnej definicji wiedzy, która jest otwarta na debatę filozoficzną, chociaż wciąż jesteśmy otwarci na krytykę, czy nasze zasady są opłacalne z perspektywy inżynierskiej ( tj. czy produkują "dobre" programy lub nie są tak dobre, jak inne podejścia). Ale ocena staje się znacznie prostsza - wszystko, co musimy zrobić, to ocenić, czy nasze zasady projektowania są spełnione. Poniżej przedstawiono niektóre zasady projektowania systemów opartych na wiedzy.

Zasada projektowania 9.1: System oparty na wiedzy musi być systemem zorientowanym na agenta. System oparty na wiedzy musi być systemem zorientowanym na agenta, który jest zgodny z następującymi zasadami projektowania agenta - jest autonomiczny; jest reaktywny; jest proaktywny (przynajmniej). Argumentem za tą zasadą projektowania jest to, że jeśli projektujemy z wcielonej, usytuowanej perspektywy agenta, wówczas cała wiedza nie może istnieć niezależnie od agentów. Oznacza to, że wiedza nie może istnieć sama z siebie - można ją znaleźć jedynie w "umysłach" agentów, które są ucieleśnione i usytuowane w otoczeniu. My również chcemy zdefiniować i używać terminu "wiedza" w sposób podobny do terminu używanego w języku naturalnym. Źródło słowa "wiedza" pochodzi od czasownika "wiedzieć". Z perspektywy języka naturalnego "wiedza" i "wiedza" są ze sobą powiązane. Na przykład kamień nie "niczego" nie "zna". Ale pies może "wiedzieć", gdzie zakopał kość; i ma sens powiedzieć w języku naturalnym, że pies ma "wiedzę" o miejscu pochówku kości. Pies, w tym przypadku, jest agentem, a skała jest obiektem w środowisku. Innymi słowy, zachowanie wiedzy jest powiązane z agentem, który ma wiedzę. System oparty na wiedzy może być wówczas uważany za agenta, którego rolą jest przekazywanie wiedzy, którą zawiera on użytkownikom systemu. Interakcja między agentem użytkownika i agentem systemu może być scharakteryzowana przez działania, które determinują zachowanie każdego agenta i czy agent użytkownika postrzega agenta systemu jako działającego w sposób kompetentny. Prowadzi to do kolejnej zasady projektowania.

Zasada projektowania 9.2: System oparty na wiedzy musi być w stanie odpowiedzieć na nasze pytania lub wykonać zadanie w sposób, który uznajemy za kompetentny. System oparty na wiedzy musi mieć wiedzę na temat wykonywanego zadania. Poniższe zasady projektowania opierają się na właściwościach "dobrych" systemów opartych na wiedzy zaproponowanych przez Russella i Norviga

Zasada projektowania 9.3: System oparty na wiedzy musi być zwięzły. Równowaga powinna być obowiązującą zasadą.

Zasada projektowania 9.4: System oparty na wiedzy musi być jednoznaczny. Wiedza musi mieć wyraźne znaczenie i nie może być otwarta na więcej niż jedną interpretację

Zasada projektowania 9.5: System oparty na wiedzy musi być poinformowany i aktualny. System oparty na wiedzy nie może być nieaktualny.

Zasada projektowania 9.6: System oparty na wiedzy musi dążyć do jak największej poprawności. Wiedza nie powinna być błędna, błędna, niedokładna ani nieprecyzyjna

Zasada projektowania 9.7: System oparty na wiedzy musi być tak kompletny, jak to tylko możliwe. Wiedza nie powinna być niekompletna ze szczegółami brakującymi.

Behawioralne podejście do wiedzy kładzie nacisk nie na budowanie konkretnego, niezależnego systemu, ale na budowanie agentów, które wykazują zachowania, które pokazują, że mają wiedzę o swoim środowisku i innych agentach. W tym podejściu akt "poznania" występuje, gdy agent ma informacje, które mogą potencjalnie pomóc w wykonaniu działania podjętego przez niego lub przez innego agenta. Ponadto, można uznać, że agent ma "wiedzę", jeśli wie, jakie są prawdopodobne wyniki działania, które może wykonać, lub działania, które wykonuje inny agent, lub co może się zdarzyć z obiektem w środowisku. W tej definicji wiedzę można uważać analogicznie za brak potrzeby poszukiwania; Oznacza to, że agent nie musi stosować zachowań w wyszukiwaniu, aby dowiedzieć się, co może się wydarzyć, ponieważ ma już wiedzę o tym, co się wydarzy.

Wiedza jako uzasadnione prawdziwe przekonanie

Standardową definicją wiedzy, przypisaną Platonowi, jest to, że istnieją trzy warunki wymagane, aby agent mógł posiadać wiedzę - wiedza musi być uzasadniona, prawdziwa i wairygodna. Wiarę można zdefiniować jako stan psychologiczny agenta, który utrzymuje konkretne stwierdzenie za prawdziwe, które nie jest jeszcze w pełni poparte dowodami. Aby przekonanie mogło stać się wiedzą, stwierdzenie, w które wierzy agent, musi być prawdziwe, a agent musi również być uzasadniony w swoich przekonaniach - innymi słowy, muszą mieć powód, dla którego myślą (tj. dlaczego "wiedzą"). konkretne oświadczenie za prawdziwe. Na przykład agent może sądzić, że stolicą Zjednoczonego Królestwa jest Londyn, z pewnym uzasadnieniem. Zamiast tego może być inny agent , który fałszywie wierząy, że stolicą Zjednoczonego Królestwa jest Edynburg, a nie Londyn. Jednak wiadomo, że nie jest to prawda, a poparcie dla wiary jest bardzo niewielkie. Znaczna część literatury - w dziedzinie filozofii, matematyki, w dziedzinie Sztucznej Inteligencji i węższej poddziedzinie systemów opartych na wiedzy - często sprawia, że pragmatyczne założenie, że określenie, czy coś jest prawdziwe czy fałszywe, jest użyteczną rzeczą do zrobienia. W rzeczywistości jednak, absoluty są rzadkie i bardzo niewiele z naszej wiedzy jest zawsze całkowicie prawdziwe lub całkowicie fałszywe. Odnosi się to do naszego istnienia jako umiejscowionych, ucieleśnionych agentów, które zapewniają każdemu agentowi unikalną perspektywę świata, w którym żyje, i które powoduje, że każdy agent nigdy nie jest w pełnej zgodności z sobą nad znaczeniem pojęć stanowiących podstawę wiedza, umiejętności . Eksperyment Myślowy ilustruje niektóre problemy z prawdami absolutnymi.

Eksperyment Myślowy : Spacer po lesie.

"Wszyscy kłamią. Policjanci kłamią. Prawnicy kłamią. Świadkowie kłamią. Ofiary kłamią. Proces jest konkursem kłamstw. I wszyscy na sali sądowej o tym wiedzą. Nawet jsąd to wie." -Michael Connelly w The Brass Verdict. Wyobraźmy sobie następujący scenariusz. Mężczyzna o imieniu Bill stoi u podnóża dużego wzgórza na obrzeżach małego miasta. Wczesnym wieczorem wybrał się na wycieczkę po lesie i zatrzymał się na kilka chwil obok polany na drzewach, aby spojrzeć na krajobraz. Kiedy on tam jest, jest świadkiem zbrodni w mieście, gdzie ktoś włamuje się do czerwonego samochodu, który później jest używany w napadzie. Kilka miesięcy później zostaje wezwany do złożenia zeznań w sądzie. Na początku pytają się go, aby powiedział"prawdę, całą prawdę i tylko prawdę". Oczekuje się, że udzieli prawdziwych odpowiedzi na pytania oparte na faktach, a nie na spekulacjach. Zbadajmy ewentualne pytania, które mogą mu zadać obrońca (który broni osoby oskarżonej o zbrodnie i kradzieże samochodów). Co ważne, jak "prawdomówny" może być Bill i jak łatwo mu to zapewnić tylko "fakty" w jego odpowiedziach?

Pytanie 1: Gdzie w lesie stałeś? Obszar, w którym szedł, był stosunkowo płaski i nie był pewien dokładnego miejsca. Odkąd zszedł ze szlaku, mógłby spróbować opisać, gdzie stoi "gdzieś niedaleko skrzyżowania głównego szlaku i mniejszego szlaku u podnóża wzgórza, około 200 do 300 metrów". W rzeczywistości jest to więcej niż 400 jardów, ponieważ jest złym sędzią dystansu. W okolicy jest wiele wzgórz, których nie można odróżnić od innych, z wyjątkiem tego, że lokalni mieszkańcy lubią odróżniać jedno konkretne wzgórze, skoro szlaki zaczynają się obok miasta i łatwo można dojść na szczyt. "Noga" wzgórza nie znajduje się nigdzie, ponieważ wzgórze jest okrągłe, a miasto rozpościera się nad najniższym punktem po jednej stronie wzgórza, a pod względem technicznym Bill stał pośrodku wzgórza. Węzeł szlaku jest również wielopłaszczyznowy, z wieloma małymi ścieżkami, spowodowanymi przez tysiące osób, które na przestrzeni lat stosowały skróty, więc niemożliwe jest podanie dokładniejszej odległości, ponieważ niemożliwe jest precyzyjne określenie "faktów". "Gdzie to skrzyżowanie w rzeczywistości jest (do kilkunastu metrów).

Pytanie 2: Na której polanie w drzewa patrzyłeś? Okazuje się, że jest wiele polanek, żadna w szczególności odróżnialna od innych. Podobnie jak wszyscy, którzy kiedykolwiek przekazywali wskazówki zagubionym podróżnikom, Bill skupił się na cechach, które uważał za ważne dla niego, i ignorował inne cechy, które były tak samo widoczne. (które inni mogą zauważyć).

Pytanie 3: Jak długo się zatrzymałeś? Nie ma absolutnej odpowiedzi na to pytanie, ponieważ czas jest ciągły. Potrafi odpowiedzieć "5 minut", "kilka minut", "kilkaset sekund" i "nie długo". Jeśli wymagana jest bardziej precyzyjna odpowiedź, wówczas "4 minuty 56,4" sekundy mogą być bliższe "prawdy", a nawet bardziej precyzyjnie "296.4317817819 ... sekundy". W pewnym sensie wszystkie te odpowiedzi odzwierciedlają prawdę i można je uznać za prawdziwe.

Pytanie 4: Kiedy przestałeś? Bill nie miał przy sobie zegarka, więc nie może ustalić dokładnego czasu. "Czasem wczesnym wieczorem, tuż przed zmierzchem, 30 minut przed zachodem słońca" (wszystkie trzy są "prawdziwe").

Pytanie 5: Jak było ciemno? Jak ciemno jest cokolwiek? To był początek zmierzchu, w lesie, ale miasto wciąż było w słońcu. W pewnym sensie był "względnie" ciemny (w lesie), ale "względnie" jasny (w mieście), a więc miał "względnie" dobry obraz postępowania, którego był świadkiem. Obiektywnie mówiąc.

Pytanie 6: W jakim kierunku wyglądałeś? "W stronę miasta przez lukę między drzewami." Ale miasto to wielkie miejsce - trudno jest określić dokładny kierunek, w którym patrzy, a pole widzenia Billa jest dość duże.

Pytanie 7: Jakiego koloru był samochód, w którym się pojawił? Bill myśli, że kolor był czerwony, ale jego definicja "zaczerwienienia" jest subtelnie różna od definicji wszystkich innych, a ponieważ był to początek zmierzchu, a wraz z pochyleniem kierunku promieni słonecznych, zaczerwienienie przesunęło się bardziej w stronę czerwono-pomarańczowej

Oczywiście, w przypadku wszystkich tych pytań bardzo trudno jest udzielić precyzyjnej odpowiedzi. Sąd domaga się, aby tylko fakty z sprawa powinna być rozważona, ale jakie są "fakty"? Nie wie dokładnie, gdzie się znajduje ani gdzie się znajduje szukałem, albo jak ciemno było, albo dokładnie jaki kolor był samochodem. W tej sytuacji, jak mogą istnieć jakiekolwiek "fakty" w ogóle? Oczekuje się od niego jednak, że dostarczy tylko prawdziwe odpowiedzi. Jest jeszcze jeden ważny czynnik, który należy wziąć pod uwagę. Kolor skradzionego samochodu opisuje się jako "czerwony". Ale jaki kolor jest "czerwony"? Spróbuj opisać to osobie niewidomej. Lub spróbuj grać w grę zgadywania samochodów opisaną w sekcji 7.8. W tej grze każda osoba w samochodzie wybiera kolor, z którym chce się bawić - biały ma dobry kolor, ale czerwony i niebieski są również dobre. Grę wygrywa osoba, która liczy największą liczbę samochodów jadących w przeciwnym kierunku w tym samym kolorze, co wybrane. Najbardziej interesującą rzeczą w tej grze jest liczba argumentów powoduje to, na przykład, jak długo gra się gra, czy samochody "zatrzymały się" przy poboczu drogi, oraz czy kolor ten był "czerwony", a nie "różowy" lub "fioletowy", które się nie liczą. Istnieje bardzo dobry powód, dla którego istnieją argumenty dotyczące koloru niektórych samochodów. Żadne dwie osoby nie mają dokładnych danych ta sama definicja tego, co "czerwony" lub "niebieski" oznacza w ich umysłach

Różne rodzaje wiedzy

Zamiast próbować określić, czym jest wiedza, możemy alternatywnie spróbować zdefiniować różne rodzaje wiedzy, które czasami mogą być łatwiejsze. Na przykład gepard i tygrys to dwa rodzaje zwierząt o wyraźnych cechach, które są względnie łatwiejsze do zdefiniowania w porównaniu do próbowania określenia co to za zwierzę .Definiowanie różnych rodzajów wiedzy może pomóc nam uzyskać pewien wgląd w to, jak możemy budować agentów, które wykazują wiedzę (w tym systemy oparte na wiedzy, uważane za agentów). Możemy zdefiniować agenta jako posiadającego deklaratywną wiedzę, jeśli deklaruje, że pewne stwierdzenie jest prawdziwe. Aby określić, czy określona wiedza jest deklaratywna, czy nie, agent może zadać następujące pytanie: "Czy ta wiedza może być prawdziwa czy fałszywa?"; lub umieścić w inny sposób: "Czy to prawda czy fałsz, że X?", gdzie X jest danym stwierdzeniem. Jeśli pytanie ma charakter gramatyczny, można go uznać za wiedzę deklaratywną. Na przykład następujące pytanie ma sens: "Czy to prawda czy fałsz, że moa nowozelandzki wymarły?"; dlatego wiedza, że moa Nowej Zelandii wyginęła, jest deklaratywna. Poniższe pytania nie mają sensu: "Czy jazda na rowerze może być prawdą czy fałszem?" Oraz "Czy to prawda czy fałsz, że jedzie się na rowerze?". Porównaj to pytanie z następującymi, które są gramatyczne, a zatem deklaratywna wiedza, jeśli agent wiedział to: "Czy to prawda czy fałsz, że moa nowozelandzkie może jeździć na rowerze?" Innymi słowy, kiedy agent deklaruje, że coś jest albo prawdą o kłamstwie, to mówi się, że ta wiedza jest deklaratywna, i czy ta wiedza jest Fałszywe lub nie ma sensu w realnym świecie wciąż nie powstrzymuje go od deklaratywnej wiedzy. Odnośnie prawdy (czy deklaracja jest prawdziwa, czy fałszywa), należy zauważyć, że w rzeczywistości absoluty są rzadkością i bardzo małą częścią naszego wiedza jest zawsze całkowicie prawdziwa lub całkowicie fałszywa (jak wskazano w poprzedniej sekcji). W jaki sposób ta definicja deklaratywnej wiedzy pasuje do wiedzy zdefiniowanej powyżej jako brak potrzeby poszukiwania? Rozważmy następujące: agent bez uprzedniej wiedzy o tym, czy deklaracja jest prawdą lub fałszem, musi najpierw skonsultować się z innym agentem, albo musi zgłębić lub dokonać obserwacji środowiska, aby dowiedzieć się, co jest prawdziwe lub fałszywe. Obie są czynnościami, które agent musi podjąć, aby znaleźć odpowiedź. Mówi się, że agent zna już odpowiedź, jeśli nie musi wykonywać akcji przeszukiwania. Możemy zdefiniować agenta jako posiadającego wiedzę proceduralną, jeśli wie, jak wykonać sekwencję czynności, aby zapewnić, że deklaracja X stanie się prawdziwa. Aby ustalić, czy konkretna wiedza jest proceduralna, czy nie, agent może zadać następujące pytanie: "Jakie działania muszę wykonać, aby móc zadeklarować, że X jest prawdziwe?" Jeśli pytanie ma sens, można uznać, że być wiedzą proceduralną. Na przykład następujące pytanie ma sens: "Jakie działania muszę wykonać, aby móc stwierdzić, że jeżdżę na rowerze jest prawdą". Pytanie, czy wiedza w systemach opartych na wiedzy powinna być deklaratywna czy proceduralna, było wściekłą debatą w dziedzinie sztucznej inteligencji. Jak to często bywa w przypadku debat typu "Czy dziobak jest ssakiem?", Po obu stronach argumentacji jest zasługa, ponieważ pewna wiedza jest z natury deklaratywna, a inna wiedza jest z natury proceduralna - na przykład, gdy ludzie liczą, że stosują procedura, ale faktyczne informacje dotyczące nazwisk osób i nazw lokalizacji na mapie mają charakter deklaratywny. Debata dostarczyła wgląd w niektóre kwestie dotyczące kategoryzacji wiedzy, ale z pragmatycznej perspektywy projektowania, badacze AI skupili się bardziej na budowaniu przydatnych systemów, a zatem wybiorą najbardziej odpowiednie narzędzie dla danego zadania. Wiedza na temat zadań czasami różni się od wiedzy proceduralnej. Wiedzę o zadaniu można uznać za wyspecjalizowaną formę wiedzy proceduralnej, w której celem działań jest rozwiązanie zadania (np. Znalezienie odpowiedzi na konkretne pytanie). Wiedza behawioralna to wiedza, którą agent ma o prawdopodobnych wynikach zachowań (swoich i innych agentów). Agent ma wiedzę epizodyczną, jeśli wie, kiedy stwierdzenie X stało się prawdą. Agent ma wiedzę wyjaśniającą, jeśli potrafi wyjaśnić, co spowodowało sekwencję działań, które doprowadziły do tego, że oświadczenie X stało się prawdziwe. Wreszcie możemy stwierdzić, że agent wywnioskował wiedzę, jeśli wykorzystał istniejącą wiedzę do określenia nowej wiedzy, która nie była dostępna w żaden inny sposób. Możemy rozróżnić różne rodzaje wiedzy według typów pytań, na które agent może poprawnie odpowiedzieć, korzystając z ich wiedzy. Deklaracyjna wiedza może być wykorzystana do odpowiedzi na pytanie "Co to jest ...?" I "Gdzie jest ...?"; wiedzę epizodyczną można wykorzystać do odpowiedzi na pytania: "Kiedy się ... zdarzyło?"; wiedzę procesową i zadaniową można wykorzystać w celu udzielenia odpowiedzi na pytania "Jak mogę / ty ...?"; wiedza behawioralna może być wykorzystana do odpowiedzi na pytania "Co, jeśli ja / ty ...?"; a wnioskowa wiedza może być użyta do odpowiedzi na pytania "Jeśli ... jest prawdą, to jest ... prawda?" i "Co, jeśli ... było prawdą?". Możemy również rozszerzyć znaczenie wywnioskowanej wiedzy poza tradycyjną definicję opartą na logice, która wiąże się z wnioskiem, czy pewne stwierdzenie jest prawdziwe, czy fałszywe. Rozważ sytuację, w której agent prowadzi rozmowę z innym agentem, na przykład gdy jedna osoba rozmawia z inną osobą lub gdy ktoś rozmawia z chatbotem. Powiedzmy, że ta rozmowa jest obserwowana przez zewnętrznego agenta (np. Trzecia osoba, a może osoba obserwująca osobę-rozmowę chatbotową w ramach testu Turinga). Ten obserwator będzie mógł ocenić, jak dobrze sądzi każdy z agentów, którzy wykonali swoją część rozmowy. Będzie to zależało od tego, czy obserwator uzna, że odpowiedzi są odpowiednie. W pewnym sensie obserwator wykorzystał swoją własną wiedzę na temat tego, co jest właściwe do wydania takiego osądu. Agenci zrobili to samo, próbując utrzymać rozmowę. Można to uznać za przykład wywnioskowanej wiedzy. W takim przypadku znajomość właściwej odpowiedzi nie może zostać uzyskana bezpośrednio poprzez przejrzenie tabeli odnośników odpowiednich odpowiedzi, ponieważ liczba stwierdzeń językowych może być uważana za nieograniczoną (liczbę rzeczy, które dana osoba może powiedzieć, oraz liczbę odpowiedzi, jest zasadniczo nieskończony). Zamiast tego, odpowiednia odpowiedź musi być skonstruowana (to jest wywnioskowana) w pewien sposób. Niektóre podejścia do reprezentacji wiedzy i sztucznej inteligencji Reprezentacja wiedzy dotyczy problemu, w jaki sposób wyrazić wiedzę w bazie wiedzy. Podstawowym celem reprezentacji wiedzy jest modelowanie inteligentnego zachowania przy założeniu, że inteligentne zachowanie agenta wymaga wiedzy o nim samym i innych agentach, obiektach i ich relacjach, sposobie rozwiązywania zadań i prawach, które rządzą środowiskiem, w którym agent znajduje samo w sobie. "Hipoteza reprezentacji wiedzy" (przypisywana Smithowi, 1985) zakłada przypuszczenie, że dla inteligentnych agentów behawioralnych wykorzystuje się bazę wiedzy, która w pewien sposób reprezentuje wiedzę o świecie. "Spór o reprezentację wiedzy" dotyczy tego, w jaki sposób wiedza powinna być reprezentowana, niezależnie od tego, czy należy ją wykorzystywać przede wszystkim w oparciu o symbole, czy też za pomocą podejścia nie symbolicznego. Podejście symboliczne to klasyczne podejście do sztucznej inteligencji, czasami nazywane "dobrą staroświecką sztuczną inteligencją" lub GOFAI. Opiera się na hipotezie "fizycznego systemu symboli", która stwierdza, że system oparty na przetwarzaniu symboli ma "niezbędne i wystarczające środki dla ogólnego inteligentnego działania". Symbole w tym przypadku są rzeczami, które reprezentują lub reprezentują coś innego przez skojarzenie. Język ludzki składa się z symboli; na przykład słowo "moa" jest symbolem reprezentującym koncepcję nowozelandzkiego ptaka przedstawionego powyżej. W dziedzinie reprezentacji wiedzy symbole są zwykle oznaczone przez identyfikator w języku programowania. Symboliczne podejście do sztucznej inteligencji jest podejściem opartym na wiedzy, wymagającym budowania baz wiedzy o znacznej wiedzy na temat każdej dziedziny problemowej. Wykorzystuje filozofię projektowania odgórnego składającą się z kilku poziomów: "poziomu wiedzy" na górze, który określa całą wiedzę potrzebną systemowi; "poziom symbolu", w którym wiedza jest określona w symbolicznych strukturach i identyfikatorach w niektórych językach programowania (na przykład przy użyciu list lub tabel w NetLogo); oraz "poziom implementacji", które są faktycznie wykonywanymi operacjami przetwarzania symboli. Natychmiast pojawiają się problemy z symbolicznym podejściem do reprezentowania wiedzy. Na przykład spróbuj użyć symboli (na przykład słów), aby opisać:

* jak wygląda obraz Mona Lisa po prawej stronie (dla osoby niewidomej od urodzenia);

* dźwięk dudy (dla osoby głuchej);

* smak mleka;

* jak wygląda papier ścierny;

* jak pachnie kawa. Słowa wydają się niewystarczające do tego zadania. Zwróć uwagę, że wszystkie pięć zmysłów jest tutaj reprezentowanych - wzrok, słuch, smak, uczucie i zapach; i używanie słów do opisania tego, co odczuwamy, może być problematyczne - często zostawiamy "walkę o słowa", to często spotykane angielskie wyrażenie. Inne popularne angielskie wyrażenie mówi "obraz rysuje tysiąc słów". Jeśli chodzi o problem wyrażania twarzy osoby za pomocą jedynie symboli, na przykład twarzy na obrazie Mony Lisy, żadna ilość słów nie wystarcza, mimo że obraz był przedmiotem niezliczonych esejów i książek. Przeciwstawne podejście, zwane "połączeniem", odrzuca klasyczne podejście symboliczne, i zamiast tego zaleca, aby inteligentne zachowanie było wynikiem przetwarzania pod-symbolicznego - to znaczy przetwarzania bodźców zamiast symboli; na przykład przy użyciu sztucznych sieci neuronowych, które zawierają połączone ze sobą sieci prostych jednostek przetwarzania. Tutaj wiedza jest przechowywana jako wzorzec znajomości masy neuronu. W tym podejściu stosuje się oddolną filozofię projektu lub podejście "animat", najpierw próbując zduplikować zdolności przetwarzania bodźców i systemy kontroli prostszych zwierząt, takich jak owady, a następnie próbując stopniowo podnosić drabinę ewolucyjną ze wzrastającą złożonością. Podejście to podkreśla "problem uziemienia symbolu" - problem, w jaki sposób symbole nabierają znaczenia i postuluje "hipotezę o fizycznym podłożu", która stwierdza, że znaczenie symboli musi być ugruntowane w fizycznym ucieleśnionym doświadczeniu agenta poprzez jego interakcję ze środowiskiem. Kwestia, czy wiedza i inteligentne zachowanie powinny być reprezentowane symbolicznie lub niesymbolicznie, była trwającą debatą w dziedzinie Sztucznej Inteligencji od czasu, gdy w połowie lat osiemdziesiątych pojawił się podsymboliczny sposób podejścia do sztucznej inteligencji wraz z odrodzeniem się połączenia z ideami Brooksa dotyczącymi dolnej granicy. w górę, ucieleśnione, usytuowane, oparte na zachowaniu podejście do sztucznej inteligencji. Jak to często bywa w przypadku tego typu debat, podobnie jak wspomniana powyżej debata na temat deklaracji i procedur, nie ma za co obu stron argumentu, ponieważ niektóre zadania, takie jak odpowiadanie na pytania i rozumowanie oparte na regułach, są bardziej dostosowane do podejście symboliczne, a niektóre rodzaje wiedzy stwarzają trudności dla obu podejść, takich jak rozpoznawanie twarzy dla przetwarzania symbolicznego, oraz informacje o języku naturalnym dla przetwarzania pod symbolami za pomocą sztucznych sieci neuronowych . Opracowano wiele innych podejść, niektóre proponują połączenie przetwarzania symbolicznego i podsystemu, na przykład automatów usytuowanych. Przyjrzymy się temu drugiemu podejściu bardziej szczegółowo, ponieważ jest on przydatny do podkreślenia niektórych ważnych kwestii dotyczących reprezentacji wiedzy. Gärdenfors postuluje, że to, co jest fundamentalne dla naszych ludzkich zdolności poznawczych, to nasza zdolność do przetwarzania pojęć, a te wyłaniają się z rozproszonej reprezentacji syndykalistów na najniższym poziomie, gdzie przetwarzane są bodźce z receptorów, i połączyć, tworząc struktury symboliczne na najwyższym poziomie, jak pokazano w Tabeli

Poziom modelu : Reprezentacja : Opis

Symboliczny : Zadaniowy Oparty na danym zbiorze predykatów o znanej denotacji. Reprezentacje są oparte na operacjach logicznych i składniowych

Pojęciowy : Geometryczny : Na podstawie zbioru "wymiarów jakości". Reprezentacje są oparte o pojęcia topologiczne i geometryczne.

Asocjacjonizm : Konekcjonistyczny : W oparciu o (niezinterpretowane) dane wejściowe od receptorów. Rozpowszechniane reprezentacje według dynamicznych wag połączeń

Koncepcje stanowią podstawę wiedzy. Pojęcie to jednostka znaczenia reprezentująca abstrakcyjną ideę lub kategorię. Możemy myśleć o koncepcjach jako analogicznych do atomów - atomy są podstawowymi elementami budującymi materię, podobnie jak pojęcia są podstawowymi elementami wiedzy. W podejściu Gärdenfors pojęcia są reprezentowane jako regiony w przestrzeni n-wymiarowej, w analogiczny sposób, jak mapa topograficzna przedstawia ukształtowanie terenu, z podobnymi pojęciami reprezentowanymi w regionach geometrycznych, które są usytuowane przestrzennie blisko siebie, jak pokazano na rysunku.



W tym przykładzie różne rodzaje zwierząt, takie jak ssaki, gady i ptaki, znajdują się w różnych regionach w przestrzeni. Gärdenfors wykorzystuje szeroki zakres eksperymentalnych dowodów z wielu dziedzin, aby wesprzeć swoje argumenty. Na przykład z dziedziny psychologii poznawczej istnieją dowody empiryczne, że ludzie wykorzystują prototypy, aby zapewnić kognitywny punkt odniesienia dla każdej koncepcji. Podejście Gärdenfor w naturalny sposób pozwala na przedstawienie prototypów - prototypowa koncepcja, na przykład robin, używana jako punkt odniesienia dla koncepcji ptaka, będzie umiejscowiona centralnie w geometrycznej przestrzeni rodzica. Koncepcje, które nie są używane jako prototypy, będą coraz bardziej oddalone, na przykład pingwiny i emu. Możemy zilustrować ten prosty eksperyment myślowy. Pomyśl o ptaku. Który ptak sobie wyobrażałeś? Eksperymenty wykazały, że większość ludzi pomyśli o robinie, wróblu lub podobnym ptaku, a nie o emu czy pingwina. Mechanizm, który Gärdenfors proponuje do konstruowania pojęć, wykorzystuje proces oparty na tesselacji Voronoi za pomocą prototypów w celu rozbicia przestrzeni w regiony wypukłe, jak pokazano za pomocą linii prostych na powyższym rysunku. Wielowymiarowa geometria dla przestrzeni pojęciowej skonstruowana jest z tego, co Gärdenfors nazywa "wymiarami jakościowymi", które odpowiadają różnym sposobom oceniania bodźca agenta jako podobnego lub innego. Podstawową funkcją wymiarów jakościowych jest reprezentowanie różnych cech lub cech obiektów. Niektóre przykłady to temperatura, waga, jasność, wysokość i wymiary przestrzenne, takie jak wysokość, szerokość i głębokość. Gärdenfors nazywa te "domeny". Używa pojęcia "jabłka", aby zilustrować rozróżnienie między domeną a regionem:

Domena : Region

Owoce : Wartości dla skóry, ciała i rodzaju nasion.


: Czerwony, zielony, żółty.

Smak : Wartości dla słodyczy, kwaskowatości itp.

Kształt : "Okrągły" obszar przestrzeni kształtu.

Odżywcze : Wartości dla cukru, witaminy C, włókien itp.

Jako kolejny przykład, eksperymenty z ludzkim postrzeganiem domeny koloru pokazują, że przestrzeń pojęciowa koloru jest opisana za pomocą trzech wymiarów jakości - jasności, barwy i nasycenia. (Dla porównania smak dla ludzi ma cztery wymiary jakości - słodycz, kwaskowatość, gorycz i zasolenie). Model Color Cylinder NetLogo pokazuje, jak wygląda ta przestrzeń. Ten model rysuje kolorowy okrąg zawierający różne wartości odcienia i nasycenia dla określonej wartości jasności, którą można regulować za pomocą suwaka Interfejs między zakresem całkowitym od 0 do 255, jak pokazano na rysunku



W celu obniżenia wartości jasności (patrz lewy obraz na rysunku) kolory stają się coraz bardziej ciemniejsze, a cały okrąg staje się czarny, gdy wartość jasności jest ustawiona na 0, podczas gdy kolory zwężają się w kierunku białego w środku okręgu, gdy suwak jasności ustawiony jest na 255 (jak na prawym obrazku). Cylinder koloru wyświetla pełny zakres możliwych kolorów we wszystkich wartościach barwy, stauracji i jasności. Ludzie używają szerokiego zakresu słów w języku, aby opisać kolor. Dowody empiryczne pokazują, że w różnych kulturach i grupach etnicznych ludzie zgadzają się na podobne obszary przestrzeni barw, aby odnieść się do podstawowych pojęć dotyczących koloru, takich jak czerwony, zielony i niebieski. Jednak model butli kolorowej wyraźnie pokazuje, że nie ma wyraźnych granic między kolorami, a jeden kolor stopniowo łączy się z innym. Dlatego niemożliwe jest, aby móc dokładnie wytyczać region powiązany z konkretnym kolorem. Na przykład spróbuj narysować granicę dla koloru żółtego na prawym obrazku powyższego rysunku. Możemy wyraźnie zobaczyć, gdzie jest kolor żółty, ale granice z sąsiednimi kolorami - czerwonymi i zielonymi po obu stronach i białymi w środku - są niewyraźne. Zadanie określania tego, co jest żółte, staje się jeszcze trudniejsze w trzech wymiarach, gdy uwzględniamy również zmianę jasności. Właśnie dlatego występują nieporozumienia (tak jak w przypadku gry polegającej na oddywaniu samochodów opisanej w sekcji wcześniejszej i wspomnianej w eksperymencie myślowym 9.1), ponieważ każdy człowiek będzie miał niewielką zmienność w tym, co postrzega żółty region do zrobienia. Dowody empiryczne pokazują, że różnice w regionach pojęciowych występują nie tylko dla kategorii kolorów, ale także dla wielu innych podstawowych kategorii, takich jak smak. Gärdenfors pozwala również na abstrakcyjne koncepcje i dostarcza przekonującego wyjaśnienia, dlaczego definiowanie wiedzy kategorialnej jest tak trudne, i dlaczego podejście czysto symboliczne nigdy nie będzie całkowicie zadowalające. Dziobak, nietoperz i archeopteryks na przykład na rysunku 2 występują trudności z kategoryzacją, przy czym ta ostatnia jest szczególnie trudna, ponieważ znajduje się na granicy między kategorią gadów a kategorią ptaków. Gärdenfors wyjaśnia również, jak ważne są kombinacje pojęć takich jak "drewniana łyżka" określane na podstawie korelacji między domenami, które są wspólne dla oddzielnych pojęć "drewno" i "łyżka". W tym przypadku domeny są wielkością i materiałem, a to powoduje, że myślimy o drewnianej łyżce jako dużej, a nie małej, gdy wyobrażamy sobie, jak może wyglądać. W niektórych przypadkach znaczenie pojęcia zależy od kontekstu, w którym występuje. Na przykład woda z kranu o tej samej letniej temperaturze może być postrzegana jako gorąca, jeśli zostanie umieszczona w szklance, a zimna, jeśli zostanie umieszczona w wannie. Łatka niebieskiego nieba będzie się różnić "błękitem" w zależności od pory dnia, jasności, zachmurzenia nieba, deszczu w ciągu ostatniego miesiąca i tak dalej. Gärdenfors ilustruje także ważną rolę, jaką kontekst odgrywa w określaniu znaczenia na podstawie poniższego przykładu. Kolor czerwony ma różne znaczenia w następujących kombinacjach koncepcji: "czerwona książka" (kolor, który naszym zdaniem jest bliski do standardowej definicji koloru czerwonego); czerwone wino (zbliżone do koloru fioletowego?); rude włosy (zbliżone do koloru miedzi?); czerwona skóra (tawny?); czerwona ziemia (ochra?); i sekwoja (różowawy brąz?). Model przestrzeni konceptualnej pokonuje niektóre niedobory wcześniej odmiennych symbolicznych i sub-symbolicznych podejść do reprezentacji wiedzy i sztucznej inteligencji, postulując średni poziom reprezentacji. Zapewnia wiarygodne wyjaśnienie aspektów reprezentacji wiedzy człowieka, takich jak kategoryzacja za pomocą prototypów, kombinacja koncepcji i rola kontekstu w formowaniu pojęcia znaczenia, które przedstawia trudności innym modelom. Ma również znaczenie dla projektowania ucieleśnionych, usytuowanych agentów, ponieważ pokazuje, w jaki sposób możemy budować wiedzę bez potrzeby stosowania semantyki uziemienia symboli. Odnosi także wiedzę do miejsc w przestrzeniach n-wymiarowych, abyśmy mogli scharakteryzować inteligentne zachowanie (na przykład myślenie) jako ruch w tej przestrzeni w sposób analogiczny do używania map do nawigowania i reprezentowania topograficznego terenu.

Problemy z inżynierią wiedzy

Inżynieria wiedzy to proces budowania systemów opartych na wiedzy. Model NetLogo Knowledge Representation został opracowany w celu zilustrowania i porównania różnych metod reprezentacji wiedzy oraz pokazania, w jaki sposób można je zastosować do różnych typów rozumowania w dziedzinie problemu klasyfikacji. Model zapewnia trzy przykładowe problemy inżynierii wiedzy. Zoo Animals jest uproszczeniem klasycznego przykładu z Winstona (1977). Problem New Zealand Birds został wprowadzony wcześniej jak również drzewo decyzyjne związane z problemem . Problem Sailing Boats jest przykładem opisanym przez Negnevitsky'go

Nazwa problemu : Opis problemu

Zoo Animals : Zidentyfikować nazwę zwierzęcia w zoo.
New Zealand Bird : Zgadnij nazwę ptaka nowozelandzkiego.
Sailing Boats : Określają rodzaj łodzi, która płynie obok w paradzie wielkich żaglowców

Te trzy przykładowe problemy to problemy "zabawkowe", a nie rzeczywiste problemy. Wymienienie pełnej wiedzy i skalowanie do nietrywialnego problemu w świecie rzeczywistym przedstawia wiele trudności i nadal jest aktywnym obszarem badań w Sztucznej Inteligencji. Jednak zaletą tych przykładów jest ich prostota i przydatność do zilustrowania tego, jak modele różnią się..

Wiedza bez reprezentacji

W pozostałych sekcjach omówimy różne metody reprezentowania wiedzy - za pomocą map, reguł i logiki, ram, drzew decyzyjnych i sieci semantycznych. Zanim jednak to zrobimy, musimy najpierw zadać ważne pytanie: "Czy możliwe jest posiadanie wiedzy bez reprezentacji?" Innymi słowy, czy agent lub agenci mogą uzyskać wiedzę bez żadnego wyraźnego mechanizmu reprezentowania wiedzy uzyskanej w baza wiedzy? Jeśli jest to możliwe, wydaje się to początkowo sprzeczne z hipotezą o reprezentacji wiedzy. Jednak ta hipoteza zakłada, że dla inteligentnego zachowania agent lub agent musi reprezentować wiedzę o świecie; dlatego też, jeśli agent lub agenci mogą zdobywać wiedzę bez reprezentacji, to według tej definicji nie wykazują inteligentnego zachowania. Widzieliśmy już, jak wiedza bez reprezentacji jest możliwa w wielu modelach NetLogo, w których agenci wykorzystują stygmergię - model Ants i modele termitów. W tych przypadkach "wiedza" jest przechowywana w środowisku wewnątrz kompleksu struktury powstające, gdy system agentów i środowisko samoorganizują się. Chociaż każdy agent nie posiada wiedzy indywidualnie, cała kolonia agentów posiada wiedzę. Ale czy możemy powiedzieć, że ci agenci używający stygmergii naprawdę zdobyli wiedzę? Zgodnie z definicją, że wiedza to brak potrzeby poszukiwania, to na przykład mrówki zdobyły wiedzę na temat położenia pobliskich źródeł żywności, które następnie mogą przekazać kolonii, a zatem inni agenci są w stanie podążać ścieżką z powrotem do źródła pożywienia bez podejmowania decyzji, którą drogę wybrać. Można argumentować, w zależności od twojej definicji inteligencji, że te mrówki również wykazują szczątkową formę sztucznej inteligencji, ponieważ działają i zachowują się w inteligentny sposób, aczkolwiek w ograniczonym sensie.

Reprezentowanie wiedzy za pomocą map

Mapy są jedną z najstarszych metod wykorzystywanych przez ludzi do reprezentowania wiedzy. Na przykład najwcześniejsze mapy świata stanowią ilustrację postępu ludzkiej wiedzy geograficznej na przestrzeni wieków. Najstarszą znaną na świecie mapą jest Imago Mundi, czyli tablica z gliny z VI wieku pne, datowana na około 600 r. Pne, zamieszkała w British Museum, przedstawiająca znany świat babiloński z Asyrią, Babilonią i Armeni (patrz zdjęcie po prawej). Obraz pokazuje, że znajomość geografii świata w tamtym czasie była wyraźnie ograniczona, podobnie jak jakość mapowania. Rysunek 9.4 przedstawia dwie dalsze wczesne mapy świata.



Ten po lewej to mapa sporządzona przez Posidoniusa (150-130 pne) przedstawiająca mapę obejmującą głównie Morze Śródziemne, Europę południową, południowo-zachodnią Azję i północną Afrykę. Ten po prawej jest autorstwa Abrahama Orteliusa w 1570 roku. Pokazują one postęp w zakresie wiedzy i jakości mapowania, z mapą "Typvs orbis terrarvm" wyprodukowaną przez Orteliusa najbliżej kształtu do współczesnych map świata. Wszystkie trzy przykłady ilustrują ważną cechę tego rodzaju map geograficznych. Z samej swej natury, jako dwuwymiarowej reprezentacji świata 3D, wszystkie mapy mają błędy w reprezentacji - to znaczy, że nie w pełni odzwierciedlają rzeczywistość. Jest to widoczne, gdy mapy pokazane na obrazach są porównywane z mapami współczesnego świata. Na przykład mapa Orteliusa odbiega w znacznym stopniu od rzeczywistości w jej obrazie kontynentu północnoamerykańskiego, odzwierciedlając stan wiedzy w chwili, gdy Krzysztof Kolumb odkrył Amerykę dopiero w 1492 roku. Mapy również odbiegają od rzeczywistości, jeśli są statyczną reprezentacją środowiska, które reprezentuje mapa - na przykład świat jest dynamicznym i ciągle zmieniającym się miejscem, które zostało przemienione przez ludzi przez wieki, odkąd wczesne mapy zostały najpierw narysowane. Każda mapa staje się bardziej użyteczna, jeśli jest rzetelnym odbiciem prawdziwego życia, ale w wielu przypadkach stylizowane obrazy pojawiają się, gdy relacje między sąsiednimi obiektami na mapie są wypaczone, aby odzwierciedlić celowe podkreślanie części programu odwzorowującego lub z powodu innych elementów. takie powody, jak brak wiedzy, celowe stronniczość lub niedopatrzenie. Ten nieodłączny błąd mapowania powinien być brany pod uwagę w poniższej dyskusji na temat tradycyjnych form reprezentacji wiedzy. Reprezentatywną wiedzę można uważać za analogiczną do mapowania w tym sensie, że podejmowana jest próba dokładnego odzwierciedlenia abstrakcyjnego n-wymiarowego środowiska kosmicznego, ale proces mapowania spowoduje powstanie nieodłącznych błędów mapowania spowodowanych zniekształceniami, błędami, celowym naciskiem, nastawieniem, nadzorem i brakiem wiedzy . Znaczenie map jako metody reprezentowania wiedzy jest często pomijane w obszarze Sztucznej Inteligencji w tradycyjnej dyskusji na temat tego, jak reprezentować wiedzę. Bezdyskusyjnie jednak mapy zawierają bogactwo wiedzy. Pojawienie się Google Maps i Google Earth ilustruje zdolność map internetowych do reprezentowania szerokiej gamy wiedzy. Mapa Central Park South w Nowym Jorku pokazana na rysunku 9.5 wykonana za pomocą modelu NetLogo Map Drawing zawiera również bogactwo wiedzy w tym sensie, że osoba odwiedzająca Central Park po raz pierwszy może korzystać z mapy, aby znaleźć drogę bez wiedzy gdzie wszystko jest z góry. Wiedza faktyczna lub deklaratywna jest wyraźnie reprezentowana przez nazwy miejsc na mapie, takie jak Tavern on the Green, Sheep Meadow, Cherry Hill i Wollman Rink. Przedstawione są także relacje tych lokalizacji z innymi lokalizacjami, takie jak lokalizacje sąsiadujące ze sobą i względne odległości między nimi. Ścieżki narysowane na mapie zapewniają również wyraźną wiedzę o tym, jak to zrobić aby dostać się między różnymi miejscami. Ścieżki te można traktować jako zapewniające wiedzę proceduralną o krokach, które należy wykonać (np. Czy skręcić w lewo lub w prawo, czy iść prosto), aby uzyskać między dwoma lub więcej punktami. Ścieżki przedstawione na mapie również zapewnić dalszą wiedzę, taką jak ich szerokość oraz to, czy są one proste czy kręte, tj. mogą być wykorzystane do wnioskowania, czy są łatwiejsze, czy szybsze do naśladowania. Każdy, kto odwiedza Central Park lub korzysta z Google Earth, aby powiększyć tę samą lokalizację, wkrótce zorientuje się, że brakuje wielu informacji i zawiera wiele nieścisłości z mapy pokazanej na rysunku.



Jednakże, tak jak mapy Hampton Court Palace i Chevening House pokazane w poprzednich częściach mogą być używane do poruszania się po prawdziwych labiryntach ogrodowych, mapa Central Park South może być również przydatna, aby pomóc ludziom odnaleźć się i nie zgubić się pomimo te niedociągnięcia. Mapa przedstawia również przede wszystkim informacje topograficzne, w których brakuje innych informacji - na przykład mapa nie uwzględnia faktów historycznych, takich jak wypasanie owiec na łące owiec do 1934 r. (Stąd nazwa), a Tavern on the Green została przekształcona z owcze pióro, w którym mieści się trzoda. Flake (1998, strony 416-423) w swojej książce "Computational Beauty of Nature" zauważa, że środowiska, modele dla środowiska i wyszukiwania są nierozerwalnie ze sobą powiązane. Zwracając uwagę, że termin "model" może oznaczać różne rzeczy w różnych kontekstach, definiuje go jako dobrze zdefiniowany proces, który mapuje dane wejściowe na wyjścia, które można dostroić za pomocą parametrów. Poszukiwanie jest wtedy procesem wyboru najlepszych parametrów, aby model mógł być zbliżony do otoczenia. Używa przykładu wzoru matematycznego f (x; a, b, c) = asin (bx - c), który może być użyty do modelowania procesu okresowego. Ta funkcja fal sinusoidalnych może, ale nie musi być dobrym modelem do tego, co dzieje się w środowisku, w którym odbywa się proces okresowy. Oczywiście taki model byłby całkowicie niewystarczający jako reprezentacja większości środowisk, które zwykle są znacznie bardziej złożone. Jednak ten prosty model fali sinusoidalnej można dostroić, szukając trzech parametrów a, b i c, które odzwierciedlają amplitudę, częstotliwość i fazę fali sinusoidalnej, która najlepiej pasuje do okresowego środowiska procesowego. Używając analogii ścieżki w prawdziwym życiu, proces okresowy generuje określoną ścieżkę przez środowisko graficzne 2D. Sama ścieżka może być przybliżonym przybliżeniem do ścieżki generowanej przez rzeczywiste obserwacje, które odnoszą się do bezwładności wahadła, średniej temperatury sezonowej lub cyklu księżycowego na przykład. Modele zdefiniowane przez Flake można uznać za analogiczne do map topograficznych. Myślenie o modelu jako o mapie środowiska ściślej wiąże używany język angielski, który opiera się na metaforze topograficznej kryjącej się za koncepcją środowiska. Możemy rozważyć wyszukiwanie, które Flake odwołuje się do procesu próbowania narysowania mapy, która ściśle odzwierciedla to, co obserwuje się w środowisku. Formuła reprezentuje klasę map ścieżki, a parametry a, b i c po wyliczeniu określają konkretną instancję klasy - czyli jedną konkretną mapę, która może pasować do rzeczywistej ścieżki dobrze, lub może nie. Jeśli mapa dobrze pasuje, możemy użyć jej jako użytecznej pomocy, aby pomóc nam modelować środowisko i przewidywać na jego temat. Jednak użycie terminu "środowisko" wywołuje myśl mentalną, że jesteśmy w stanie go w jakiś sposób przeszukać, co może powodować zamieszanie. Jeśli użyjemy analogii mapy topograficznej, możliwe jest mniejsze zamieszanie w porównaniu z tymi dwoma rodzajami wyszukiwania, które są możliwe - z których jednym jest poszukiwanie dobrego modelu środowiska lub tego, co dzieje się w środowisku, a drugie to poszukiwanie samo środowisko. Oznaczymy te dwa rodzaje wyszukiwania w następujący sposób: wyszukiwanie map i wyszukiwanie eksploracji (lub po prostu "mapowanie" i "eksploracja"), aby podkreślić analogie tworzone z ich rzeczywistymi odpowiednikami. Podczas eksploracji agent może odwoływać się do mapy podczas wykonywania wyszukiwania. Mapa może, ale nie musi być dobrym odzwierciedleniem tego, co istnieje w środowisku w czasie wykonywania nawigacji. Dlatego agent musi nieustannie poprawiać lub aktualizować swoją wewnętrzną mapę, aby osiągnąć postęp do jej celu. Koncepcyjnie mapy mogą być używane do reprezentowania wielu różnych rodzajów wiedzy, nie tylko wiedzy topograficznej, ponieważ mapy mogą być używane do wizualizacji wiedzy reprezentowanej przez wielowymiarowe dane w n-wymiarowym środowisku przestrzeni. Jednym z takich przykładów są diagramy Venna opracowane przez Johna Venna około roku 1880. Diagramy Venna zapewniają sposób reprezentowania logicznych relacji między zestawami, gdzie regiony na wykresie reprezentują zbiory lub klasy, a obszary nakładające się - przecięcia między zestawami. Regiony te można zidentyfikować za pomocą etykiet, jak pokazano na rysunku



Diagram Venna na tej figurze przedstawia wiedzę dotyczącą czterech zwierząt z ogrodów zoologicznych, gepardów, tygrysów, zebry i żyraf, niezależnie od tego, czy są to ssaki, zwierzęta mięsożerne, czy zwierzęta kopytne, oraz cech, które je odróżniają, na przykład od tego, czy zwierzęta mają ciemne plamy, ciemnobrązowy kolor czy długa szyja. Chociaż na diagramie przedstawiono przedstawione są miejsca występowania pojęć takich jak ssaki i ich logiczne relacje zamiast tradycyjnych cech geograficznych, takich jak kraje, drogi i miejsca, podobnie jak w przypadku mapy południowej w Central Parku i na świecie, można ją jednak uznać za mapa w sensie topologicznym. Istnieje również oczywista korelacja między tym sposobem reprezentowania wiedzy a podejściem do przestrzeni koncepcyjnych Gärdenfors Reprezentowanie wiedzy za pomocą map zdarzeń Tematem całego tomu było wykorzystanie map do przedstawiania tego, co dzieje się w różnych środowiskach, zarówno rzeczywistych, wirtualnych, jak i abstrakcyjnych (tj. N-wymiarowe środowisko kosmiczne). Omawiając różne metody reprezentowania wiedzy (takie jak reguły, logika, ramki i drzewa decyzyjne) w kolejnych sekcjach, każdą z metod można uważać za analogiczną do procesu reprezentowania topograficznego terenu za pomocą map. Model NetLogo, który został opracowany w celu zilustrowania i porównania różnych modeli, modelu reprezentacji wiedzy, wykorzystuje środowisko wyświetlania NetLogo do wizualizacji w dwóch wymiarach wiedzy dotyczącej każdego z trzech problemów z zabawkami. Jak wspomniano powyżej, wizualizacje te mogą być uważane za jako mapy abstrakcyjnego środowiska, które reprezentuje opisywaną wiedzę. Aby pomóc w wizualizacji różnych typów reprezentacji wiedzy, model reprezentacji wiedzy korzysta z kodu NetLogo, który był również używany w przypadku wydarzeń następujących po Wall. oraz modele zdarzeń modelowania języka. Przekształca różne formy reprezentacji wiedzy w ramach wspólnej struktury opartej na "zdarzeniach", gdzie zdarzenie może być wydarzeniem zmysłowym (dane wejściowe od jednego ze zmysłów), wydarzeniem motorycznym (ruch ciała agenta) lub wydarzeniem abstrakcyjnym ( połączenie zdarzeń zmysłowych, motorycznych lub abstrakcyjnych). Podejście jest podobne do podejścia przyjętego dla przetwarzania strumienia zdarzeń (ESP) i złożone przetwarzanie zdarzeń (CEP). Ramy stosowane tutaj uważają, że agent jednocześnie rozpoznaje i przetwarza wiele strumieni zdarzeń, które odzwierciedlają to, co dzieje się z samym sobą i otoczeniem. Każde zdarzenie jest reprezentowane przez stan w skończonym komputerze stanu, który jest oznaczony nazwą strumienia, po którym następuje nazwa zdarzenia. Przejścia między stanami nie są oznaczone - po prostu wskazują, że jedno zdarzenie następuje po drugim. Zdarzenia występują w określonej kolejności (ścieżce) zdefiniowanej przez przejścia stanu przez sieć zdarzeń. Jeśli określone zdarzenie nie występuje po innym zdarzeniu, wówczas nie ma szczególnego przejścia między stanami, a zatem zdarzenie to nie jest rozpoznawane przez agenta (tj. Jest ignorowane i nie ma wpływu na zachowanie agenta). Przetwarzanie zdarzeń odbywa się w sposób reaktywny - to znaczy, że określona ścieżka przechodzi przez sukcesywne dopasowywanie zdarzeń, które obecnie występują do agenta, w stosunku do wychodzących przejść z każdego węzła. Jeśli nie ma żadnych przejść wychodzących lub żadne nie pasują, ścieżka jest ślepym zaułkiem, w którym to momencie traversal się zatrzyma. Odbywa się to jednocześnie dla każdego zdarzenia; innymi słowy, istnieje wiele punktów początkowych, a zatem jednoczesne aktywacje w całej sieci. Możemy uznać, że sieć jest "mapą zdarzeń" - stany reprezentują punkty w przestrzeni n-wymiarowej, a wielowymiarowość punktów w przestrzeni jest zredukowana do dwóch wymiarów. Odbywa się to przez to, że każdy stan reprezentuje jeden wymiar i jego wartość, a następnie zapewnia łącza do dalszych stanów wzdłuż uporządkowanej ścieżki przez stany reprezentujące każdy z pozostałych wymiarów. Redukcja z N-wymiarowa przestrzeń do dwuwymiarowej przestrzeni dla wizualizacji dodaje dalsze informacje, ponieważ narzuca konkretny porządek wymiarów wyznaczony przez ścieżki, aby osiągnąć stan końcowy, który reprezentuje punkt wielowymiarowy. Trójwymiarowy punkt, reprezentowany przez krotkę (D1 = wartość1, D2 = wartość2, D3 = wartość3) można na przykład przedstawić na mapie zdarzeń jako trzy połączone stany o etykietach [D1 = wartość1], [D2 = wartość2] i [D3 = wartość3], przy czym trzeci stan odpowiada trójwymiarowi. punkt, ale osiągalny tylko przez dwa poprzednie stany. Ta specyficzna kolejność wymiarów nie istniała z oryginalnymi danymi n-wymiarowymi. Jednakże stany drogi są ze sobą powiązane, daje nam szansę reprezentowania rentowności określonej ścieżki - w podobny sposób, jak realny zestaw ścieżek łączących ze sobą dwie lokalizacje, takie jak Fontanna Bethesda i Koło Kolumba na mapie South Central Park. Nie ma też powodu, abyśmy nie mogli reprezentować alternatywnych ścieżek na mapie zdarzeń z innymi ścieżkami, które nie zostały zilustrowane jako po prostu ignorowane. Podczas korzystania z prawdziwej mapy do nawigacji, takiej jak mapa South Central Park, dana osoba często tworzy "mentalną mapę" w swoim umyśle, która jest uproszczeniem z rzeczywistej mapy sposobu wykonywania nawigacji. Na przykład, rzut oka na rysunek 9.5 pokaże, że najprostszą drogą pomiędzy Zoo a Stawem Łodzi jest wyjście w kierunku najbliższych wieżowców na 65. Ulicę, skręcanie w lewo, następnie kontynuowanie aż do 74. ulicy, a następnie skręt w lewo do parku. Ta mentalna mapa koncentruje się na zadaniu w ręku - jak najlepiej dotrzeć do Stawu Łodzi - i ma znacznie mniej szczegółów i mniejszą dokładność niż rzeczywiste mapy, ale wciąż jest wystarczająco dobra, aby pomóc osiągnąć cel. Reprezentację mapy mentalnej tego odwzorowania na mapie zdarzeń pokazano na rysunku



Mapa zdarzeń przedstawia uporządkowaną sekwencję zdarzeń, które muszą wystąpić przed osiągnięciem celu dotarcia do Stawu Łodzi. Ta sekwencja zakończy się sukcesem niezależnie od punktu początkowego w ZOO, dopóki agent będzie zmierzać w kierunku najbliższych wieżowców i nie będzie wymagać, aby agent ustalił jej aktualną orientację względem północy. Mapa zdarzeń wiedzy dla problemu klasyfikacji Zoo Zoo jest pokazana na rysunku



Wiedza w tym przypadku jest określona jako drzewo decyzyjne. Na rysunku przedstawiono sieć zdarzeń rozwijających się z centralnego stanu z prawej o nazwie animal = "Tak". Różne węzły liści są stanami reprezentującymi, kiedy określony typ zwierzęcia został rozpoznany, na przykład drapieżnik (środkowe dno) lub kopytny (np. Środkowy wierzchołek), lub określone zwierzę, takie jak gepard (u góry po lewej) lub żyrafa (u dołu po prawej) . Stany te reprezentują wielowymiarowe punkty w przestrzeni n-wymiarowej, które reprezentują pojęcia "mięsożerca", "ungulate", "gepard" i "żyrafa", podobnie jak w przestrzeniach koncepcyjnych Gärdenforsa. Teraz jest już jasne, dlaczego ta reprezentacja jest nazywana "mapą" zdarzenia - tak jak mapa topograficzna przedstawia trójwymiarowy teren w 2D, mapa zdarzeń reprezentuje również punkty w przestrzeni n-wymiarowej w 2D. Model NetLogo oparty na reprezentacji wiedzy wygenerował tę konkretną mapę zdarzeń, ustawiając interfejs wyboru interfejsu KR na "drzewo decyzyjne", a selektor interfejsu wyboru "problem" na "zwierzęta z zoo". Możemy animować mapy zdarzeń, pokazując, w jaki sposób agenci poruszają się po mapie podczas wnioskowania, podobnie w jaki sposób animowane są algorytmy przeszukiwania w częściach 7 i 8. Poniżej znajduje się opis bardziej tradycyjnych form reprezentacji wiedzy, ale z ucieleśnionej, usytuowanej perspektywy za pomocą mechanizmu mapowania zdarzeń do wizualizacji wiedzy i animowania procesu rozumowania wiedzy.

Reprezentowanie wiedzy za pomocą reguł i logiki

Klasyczne metody reprezentowania wiedzy używają reguł lub logiki. Tabela przedstawia wiedzę na temat problemu zwierząt w zoo w dwóch formatach - za pomocą reguł po lewej stronie, zaimplementowanych w modelu NetLogo opartym na wiedzy i przy użyciu logiki pierwszego rzędu po prawej.



Reguły są często używane w systemach eksperckich opartych na regułach i są albo wyraźnie określone przez inżyniera wiedzy (zwykle w procesie zwanym "pozyskiwaniem wiedzy" od eksperta człowieka), albo pochodzą z danych przy użyciu algorytmu uczenia maszynowego lub algorytmu eksploracji danych . Reguły wykorzystują logiczną formę do wnioskowania. Logika jest użyciem technik symbolicznych i matematycznych do rozumowania dedukcyjnego, a wywodzi się z dyscypliny Arystotelesa. Oparta na regułach metoda reprezentacji wiedzy używa reguł IF-THEN (nazywanych czasami regułami warunkowania) w celu określenia wiedzy. Wszystkie zasady dotyczące określonego problemu tworzą podstawę reguł, a baza wiedzy obejmuje trzy elementy: listę reguł w bazie reguł; lista znanych faktów w bazie faktów; i system inferencji, który przetwarza reguły, aby wyprowadzić nowe fakty za pomocą jakiejś formy rozumowania. Reguła składa się z części IF, która jest zbiorem warunków (zwanych antecedentami), które muszą zostać spełnione zanim zasada zostanie określona jako "ogień", aby wykonać zestaw czynności w TEJ części (zwanej następnikami). Na przykład w przypadku reguły R1 w tabeli 9.5, jeśli spełniony jest warunek "zwierzę ma włosy" - to znaczy, że w bazie wiedzy jest znany fakt, że zwierzę klasyfikowane ma włosy, to zasada jest zwalniana, a działanie jest dodanie do bazy wiedzy kolejnego "gatunku ssaka". W części IF reguły może występować wiele warunków. Na przykład reguła R4 ma trzy warunki, które muszą zostać spełnione, zanim będzie można wystrzelić. Warunki te są oddzielone słowem kluczowym AND i dlatego te warunki są nazywane "spójnikami". Jeśli zostałyby rozdzielone słowem kluczowym OR, nazwano by je "disjunctions". W przypadku modelu NetLogo opartego na reprezentacji wiedzy reguły dotyczą tylko koniunkcji zostały wdrożone. Zestaw reguł i sposób ich zdefiniowania dla problemu zwierząt w zoo i Nowej Zelandii pokazano w Kodzie NetLogo

if (select-problem = "Zoo animals")
[
setup-rule ;; rule: IF animal has hair
;; THEN species is mammal
[["has hair" "Yes"]]
[["species" "mammal"]]
setup-rule ;; rule: IF animal gives milk
;; THEN species is mammal
[["gives milk" "Yes"]]
[["species" "mammal"]]
setup-rule ;; rule: IF animal eats meat
;; THEN species type is carnivore
[["eats meat" "Yes"]]
[["species type" "carnivore"]]
setup-rule ;; rule: IF animal has pointed teeth AND animal has claws
;; AND animal has forward eyes
;; THEN species type is carnivore
[["has pointed teeth" "Yes"] ["has claws" "Yes"]
["has forward eyes" "Yes"]]
[["species type" "carnivore"]]
setup-rule ;; rule: IF animal is mammal AND animal has hooves
;; THEN mammal group is ungulate
[["species" "mammal"] ["has hooves" "Yes"]]
[["species type" "ungulate"]]
setup-rule ;; rule: IF species is mammal AND animal chews cud
;; THEN mammal group is ungulate
[["species" "mammal"] ["chews cud" "Yes"]]
[["species type" "ungulate"]]
setup-rule ;; rule: IF species is mammal
;; AND species type is carnivore
;; AND animal has tawny colour
;; AND animal has dark spots
;; THEN animal is cheetah
[["species" "mammal"] ["species type" "carnivore"]
["has tawny colour" "Yes"] ["has dark spots" "Yes"]]
[["animal" "cheetah"]]
setup-rule ;; rule: IF species is mammal
;; AND species type is carnivore
;; AND animal has tawny colour
;; AND animal has black stripes
;; THEN animal is tiger
[["species" "mammal"] ["species type" "carnivore"]
["has tawny colour" "Yes"] ["has black stripes" "Yes"]]
[["animal" "tiger"]]
setup-rule ;; rule: IF species is ungulate AND animal has dark spots
;; AND animal has long neck
;; THEN animal is giraffe
[["species type" "ungulate"] ["has dark spots" "Yes"]
["has long neck" "Yes"]]
[["animal" "giraffe"]]
setup-rule ;; rule: IF species is ungulate
;; AND animal has black stripes
;; THEN animal is zebra
[["species type" "ungulate"] ["has black stripes" "Yes"]]
[["animal" "zebra"]]
]
if (select-problem = "New Zealand birds")
[
setup-rule ;; rule: IF bird can fly AND bird is a parrot
;; AND bird is alpine
;; THEN bird is a kea
[["can fly" "Yes"] ["parrot" "Yes"] ["alpine" "Yes"]]
[["bird" "Kea" ]]
setup-rule ;; rule: IF bird can fly AND bird is a parrot
;; AND bird is not alpine
;; THEN bird is a kaka
[["can fly" "Yes"] ["parrot" "Yes"] ["alpine" "No"]]
[["bird" "Kaka"]]
setup-rule ;; rule: IF bird can fly AND bird is not a parrot
;; AND bird has white throat
;; THEN bird is a tui
[["can fly" "Yes"] ["parrot" "No"] ["has white throat" "Yes"]]
[["bird" "Tui"]]
setup-rule ;; rule: IF bird can fly AND bird is not a parrot
;; AND bird does not have a white throat
;; THEN bird is a pukeko
[["can fly" "Yes"] ["parrot" "No"] ["has white throat" "No"]]
[["bird" "Pukeko"]]
setup-rule ;; rule: IF bird cannot fly AND bird is an extinct bird
;; AND bird is large
;; THEN bird is a moa
[["can fly" "No"] ["extinct" "Yes"] ["large" "Yes"]]
[["bird" "Moa"]]
setup-rule ;; rule: IF bird cannot fly AND bird is extinct
;; AND bird is not large
;; THEN bird is a huia
[["can fly" "No"] ["extinct" "Yes"] ["large" "No"]]
[["bird" "Huia"]]
setup-rule ;; rule: IF bird cannot fly AND bird is not extinct
;; AND bird has long beak
;; THEN bird is a kiwi
[["can fly" "No"] ["extinct" "No"] ["has long beak" "Yes"]]
[["bird" "Kiwi"]]
setup-rule ;; rule: IF bird cannot fly AND bird is not extinct
;; AND bird does not have a long beak
;; THEN bird is a weta
[["can fly" "No"] ["extinct" "No"] ["has long beak" "No"]]
[["bird" "Weta"]]
]

Reguły są definiowane za pomocą procedury reguły ustawiania, która jest wymieniona w poniższym kodzie NetLogo.

breed [rules rule]
rules-own
[
antecedents ; if part of rule - list of necessary propositions for
; rule to be true consequents ; then part of rule - list of propositions that are
; the conclusions of the rule
]
to setup-rule [alist clist]
;; Creates a new rule with the specified antecedents (alist)
;; and consequents (clist)
create-rules 1
[ hide-turtle ; make invisible
set antecedents alist
set consequents clist ]
end

Reguły są zdefiniowane jako oddzielny typ agentów, które zawierają dwie zmienne: poprzednicy, która jest listą niezbędnych zdań lub faktów, aby reguła była prawdziwa (jest to część IF reguły); i następniki, które są listą wniosków (to jest TO część zasady). Procedury setup-rule pobiera dwie listy zdań jako argumenty - alist jako listę poprzedzających i clist jako listę następników. Propozycje są reprezentowane za pomocą dwuelementowej listy, która zawiera atrybut i jego wartość. Ta lista dwuelementowa może zostać przekonwertowana na opis angielski poprzez wstawienie "is" między dwoma elementami na liście. Na przykład lista ["może latać" "Tak"] reprezentuje propozycję "może latać to Tak"; to jest propozycja, że ptak może latać. Podobnie, lista ["typ gatunku" "ssak"] jest twierdzeniem, że typem gatunku dla zwierzęcia jest ssak. Określenie reguł w tym formacie pozwala nam na ich wizualizację za pomocą map zdarzeń. Reprezentacja Wiedzy robi to, wykorzystując procedurę dodawania zdarzeń, jak pokazano w NetLogo Code
to add-rule-to-event-map [this-rule]
; adds the rule as a set of linked states to the event map network
let events []
foreach [consequents] of this-rule
[
set events lput ? ([antecedents] of this-rule) vadd-events events white white white
]
end
to setup-rules-event-map [problem]
;; setups an event map network of states from the rules
foreach sort rules
[
add-rule-to-event-map ?
]
repeat 5 [ change-layout ]
display
end

Procedura add-rule-to-event-map dodaje jako listę zdarzeń do mapy zdarzeń listę poprzedników w określonej regule dla każdego z jej następników. Dodaje on konkretny wynik jako zdarzenie na końcu listy poprzedzających, tak, że konsekwencja zakończy się na końcu ścieżki na mapie zdarzeń. Reguły instalacyjne-event-map robi to dla wszystkich reguł. Proces ten będzie oznaczał, że reguły z typowymi poprzednikami trafią do tej samej gałęzi. Wynik dla problemu ptaków nowozelandzkich pokazano na rysunku



Ta metoda wizualizacji reguł pozwala nam dostrzec związki między regułami - pokazuje, że reguły dzielą się na dwie sieci, jak na rysunku, z ptakami, które może latać po prawej, a ptaki po lewej nie. Zasady te można łatwo przekształcić w logikę pierwszego rzędu. Na przykład zasady pokazane po lewej w tabeli powyżej są również określone jako "zdania" w logice pierwszego rzędu po prawej stronie. Zdania w logice pierwszego rzędu reprezentują stwierdzenia o świecie zawierającym obiekty o określonych właściwościach. Zdania mogą składać się z wielu składników: stałych symboli, które odnoszą się do określonego obiektu na świecie; terminy będące wyrażeniami logicznymi odnoszącymi się do określonego obiektu; symbole predykatów odnoszące się do określonej relacji (takie jak "Has_hair" i "Mammal"); logiczne połączenia ?, ?, ? i ? (wymawiane jako "implikuje", "i", "lub" i "jest równoznaczne z" odpowiednio "); kwantyfikator uniwersalny pron (wymawiane jako "dla wszystkich"); i kwantyfikator egzystencjalny ? (wymawiane jako "istnieje"). Na przykład wyrażenie "Wszystkie ssaki mają włosy" może być przedstawione w logice pierwszego rzędu za pomocą zdania ?x Has_hair (x) ?Mammal (x). To zdanie można odczytać jako "dla wszystkich x, jeśli x ma włosy, to oznacza, że x jest ssakiem". Kwantyfikator uniwersalny służy do stwierdzenia, że ogólny stan zachowuje się dla wszystkich obiektów na świecie, a kwantyfikator egzystencjalny służy do stwierdzenia określonego warunku dla co najmniej jednego obiektu na świecie. Symbol ? służy do stwierdzenia implikacji (reguły), z założeniem lub poprzednikami po lewej stronie symbolu, a także wnioskami lub poprzednikami z prawej strony symbolu. Symbol równoważności (?) określa, że lewa strona symbolu jest odpowiednikiem prawej strony symbolu. Negacja jest określona za pomocą - symbolu (wymawiane "nie").

Powody używania reguł i logiki

Możemy wykorzystać wiedzę określoną przez reguły i zdania logiczne do wnioskowania nowej wiedzy w procesie zwanym rozumowaniem. Istnieją różne "reguły wnioskowania", które pozwalają nam to zrobić. Na przykład, jeśli wiemy, że zwierzę A1 ma wskazane zęby, ma skierowane do przodu oczy i ma szpony, tj. Has_pointed_teeth (A1) i Has_forward_eyes (A1) i Has_claws (A1) są prawdziwe, to możemy wywnioskować z reguły R4, że zwierzę A1 jest drapieżnikiem, tj. Carnivore (A1) Ta szczególna zasada wnioskowania nazywa się "Modus Ponens" lub eliminacją Imienia, ponieważ tworzy nowe zdanie poprzez usunięcie symbolu implikacji, ?. Zasady te są oczywiste i wynikają bezpośrednio z znaczenia różnych symboli. Na przykład zasada Modus Ponens wynika bezpośrednio ze znaczenia symbolu ?. Zasady Eliminacji i Wprowadzania, Wprowadzania i Eliminacji Podwójnej Negacji wynikają bezpośrednio ze znaczeń symboli ?, ? i -. Podobnie pozostałe trzy reguły wynikają z znaczenia symboli ? i ?. Dalsze zasady i więcej szczegółów można znaleźć w Russell i Norvig. Na początku odnotowano pewne obserwacje dotyczące zwierząt obserwowanych na afrykańskiej sawannie. Celem jest ustalenie, które zwierzę jest obserwowane. Dowód zaczyna się od konwersji obserwacji w formę logiczną pierwszego rzędu przy użyciu egzystencjalnego kwantyfikatora (P1). P2 do P5 używa eliminacji egzystencjalnej do wnioskowania indywidualnych predykatów dotyczących zwierzęcia oznaczonego jako A1. Pozostała część dowodu wykorzystuje Universal Elimination i Modus Ponens, aby dojść do wniosku, że zwierzę to zebra - to znaczy, że Zebra (A1) okazała się prawdziwa. W Knowledge Representation kliknięcie przycisku go-reasoning rozpoczyna proces wnioskowania. Jeśli suwak KR-type jest ustawiony na "rules", użytkownik zostanie poproszony o wybranie typu rozumowania, którego chce użyć - do przodu lub do tyłu. Oba te typy rozumowania używają wyszukiwania zbadać n-wymiarową przestrzeń, która reprezentuje wiedzę. Ta n-wymiarowa przestrzeń jest pokazana na mapie zdarzeń przedstawionej w środowisku NetLogo po kliknięciu przycisku "setup - knowledge" w interfejsie . Gdy proces wnioskowania przebiega,mapa wydarzeń jest animowana przez agrafki przedstawione za pomocą kształtu osoby (w ten sam sposóbże przedstawiano agentów walkerów badających przestrzenie wyszukiwania związane z różnymi problemami wyszukiwania). Ta animacja procesu wnioskowania wyraźnie wzmacnia analogię rozumowania jako proces wyszukiwania.Rysunek 9.10 zawiera dwa zrzuty ekranu pokazujące, jak to wygląda w przypadku problemu klasyfikacji ptaków nowozelandzkich.



Obraz po lewej pokazuje zrzut ekranu po zakończeniu wnioskowania do przodu, co doprowadziło do wniosek, że klasyfikowany ptak to Kea. Zrzut ekranu pokazuje ścieżkę procesu wnioskowania osiągnął cel, używając grubszych linków. W tym przypadku ścieżka była bezpośrednia. Pierwszy odwiedzony stan był stan [can fly = "Yes"] w środkowym prawym rogu obrazu. Powoduje to następujące pytanie użytkownika - "Czy ptak może latać?". Ścieżka przechodzi następnie do następnego stanu oznaczonego [parrot = "Yes"]. Widać to po tym, że łącze jest nieco szersze niż inne łącza, które nie zostały przetestowane. Pada pytanie "Czy ptak to papuga?". Ścieżka następnie przechodzi do stanu oznaczonego [alpine = "Yes"], który generuje pytanie "Czy ptak jest ptakiem alpejskim?". Ostatecznie ścieżka kończy się na stanie końcowym oznaczony [bird = "Kea"], który jest stanem docelowym, a zatem wniosek jest taki ptak to Kea. Ta ścieżka jest przestrzegana, ponieważ dopasowywana jest jedna reguła - w tym przypadku regułą jest pierwszą regułą w bazie wiedzy zdefiniowanej we wcześniejszym NetLogo Code, z listą poprzedników ["can fly" "Tak"] ["parrot" "Tak"] ["alpine" "Tak"] i kolejne listy ["bird" "Kea"]. Obraz po prawej stronie na rysunku pokazuje, jak przebiega rozumowanie wstecz. Na początku użytkownik jest pytany, który cel chce udowodnić. Jeśli użytkownik wybierze [bird kea], agent spacerowy zostanie narysowany w stanie oznaczonym [bird = "Kea"], aby pokazać, że jest to stan celu. Proces rozumowania następnie próbuje udowodnić cel, zadając te same pytania, co w przypadku dalszego procesu wnioskowania. Na obrazie ścieżka została przetransportowana aż do stanu [alpine = "Yes"], a jeszcze jedno łącze, które trzeba przejść, potrzebne do udowodnienia celu. Obraz prawej ręki na rysunku pokazuje, jak przebiega rozumowanie wstecz. Na początku użytkownik jest pytany, który cel chce udowodnić. Jeśli użytkownik wybierze [bird kea], agent spacerowy zostanie narysowany w stanie oznaczonym [bird = "Kea"], aby pokazać, że jest to stan celu. Proces rozumowania następnie próbuje udowodnić cel, zadając te same pytania, co w przypadku dalszego procesu wnioskowania. Na obrazie ścieżka została przetransportowana aż do stanu [alpine = "Yes"], a jeszcze jedno łącze, które trzeba przejść, potrzebne do udowodnienia celu. Ten konkretny przykład jest stosunkowo prosty. W przypadku bardziej skomplikowanego przykładu, takiego jak klasyfikowanie zwierzęcia z zoo jako geparda, proces wnioskowania spowoduje animację przeskakującą wokół mapy zdarzenia. W szczególności proces przekazywania argumentów może spowodować, że wiele zapytań zostanie zapytanych, zanim dojdzie do wniosku, jak pokazano na rysunku



W przypadku rozumowania naprzód, proces rozpoczyna się od znanych faktów i postępuje naprzód, próbując znaleźć regułę w bazie reguł, dla której poprzednicy pasują do faktów. Za każdym razem, gdy reguła się zgadza, jest "wystrzeliwana", a następniki dodawane są do bazy wiedzy jako nowe fakty. Reguła może być dopasowana tylko pewnego razu. Pełny cykl "match-fire" ma miejsce, gdy wszystkie reguły w bazie reguł zostały przetworzone. Jeśli co najmniej jedna reguła została uruchomiona, rozpoczyna się nowy cykl przy pierwszej regule bazy reguł. Proces trwa, dopóki w cyklu nie zostaną uruchomione żadne inne reguły. Kod, który to wykonuje, jest pokazany w NetLogo

to go-rules-forward-reasoning
;; dokonuje dalszego rozumowania problemu
let fired-count length fired-rules
print selected-problem
let goal-attrib [goal-attribute] of selected-problem
set cycle-count cycle-count + 1
output-number "Cycle " cycle-count
loop
[
foreach sort rules
[ ; dla każdej reguły w bazie reguł
if not member? ? fired-rules
[
if (match-rule? selected-problem ?)
[
fire-rule ?
output-fired-rule ? ]
if (attribute-found? goal-attrib)
[ user-message (word "The " goal-attrib " is a "
fact-get goal-attrib ".")
stop ]
]
]
if (fired-count = length fired-rules)
[ user-message
"No new rules fired this cycle. Sorry - I can't help you."
stop ]
]
end

Procedura go-rules-forward-reasoning ma pętlę, która wykonuje cykl dopasowywania ognia. Ta pętla przetwarza w porządku posortowanym każdą regułę w bazie reguł (tj. zestaw rules agentów ). Najpierw sprawdza, czy reguła została wcześniej uruchomiona, a jeśli nie, to próbuje dopasować regułę, wywołując regułę dopasowania? reporter (pokazany w kodzie NetLogo). Jeśli ten reporter zwróci wartość true, uruchomi regułę, wywołując procedurę reguły ognia. Procedura output-fired-rule wyświetli informacje w obszarze Output w interfejsie jako ślad procesu wnioskowania, jeśli przełącznik trace-on został ustawiony na On.

to-report match-rule? [problem this-rule]
; tries to match this-rule to facts in the facts-base
; otherwise asks user for data if attribute is not in non-input-attributes list
let attribute ""
let val ""
let value ""
let question ""
let choices []
let this-walker nobody
set this-walker start-new-walker nobody "" ""
foreach [antecedents] of this-rule
[
set attribute first ?
set value last ?
update-walker this-walker attribute value
if not attribute-found? attribute
; not found, so need to ask user if we can
[ ifelse (member? attribute [non-input-attributes] of problem)
[ report false ] ; no we can't ask user
[ ; zadaj użytkownikowi pytanie
set question get-input-question problem attribute value
set choices get-input-choices problem attribute
set val user-one-of question choices
fact-put attribute val
]
]
if not fact-found? attribute value
[ report false ]
]
report true
end
to fire-rule [this-rule]
; odpala dopasowaną regułę ta zasada
let attribute ""
let value ""
let new-walker nobody
foreach [consequents] of this-rule
[
set attribute first ?
set value last ?
ask active-walker
[ hatch-walkers 1 [ set new-walker self ]] ; klon aktywnego chodzika
update-walker new-walker attribute value
fact-put attribute value
set fired-rules fput this-rule fired-rules
]
end
Reporter match-fire? przetwarza każdy z poprzedników reguły. Najpierw wyodrębnia atribute i jego value z bieżącego elementu na poprzedniej liście; na przykład dla ["can fly" "Yes"], atrybut "can fly", a wartość to "Yes". Attribute w połączeniu z jego value reprezentuje konkretną propozycję, która musi być prawdziwa - w tym przypadku propozycja, że ptak może latać. Reprezentując propozycję jako zdarzenie w mapie zdarzeń, nazwa strumienia jest ustawiona na attribute, a zdarzenie, które występuje w strumieniu, jest ustawione na value. Reporter match-fire? sprawdza następnie, czy wartość atrybutu nie została jeszcze przydzielona wartości w bazie faktów. Jeśli nie, zapyta użytkownika, jaka jest wartość, jeśli atrybut jest atrybutem wejściowym. Potem wreszcie zgłosi się reporter aby sprawdzić, czy wartość atrybutu jest zgodna z wartością określoną przez regułę. Procedura fire-rule przetwarza każdy z następstw reguły. Najpierw wykluwa nowy odtwarzacz, który przechodzi do nowego stanu zdarzenia w mapie zdarzeń opartej na update-walker. Odbywa się to w celu animacji wizualizacji mapy zdarzeń, aby pokazać, jak przebiega proces wnioskowania. Następnie procedura wprowadza nowy fakt składający się z atrybutu i jego wartości do podstawy faktów, a na koniec, dodaje regułę do listy uruchomionych reguł, aby nie wystartować ponownie. Baza faktów jest zaimplementowana przy użyciu rozszerzenia tabeli, jak pokazano w kodzie NetLogo
to-report attribute-found? [attribute]
; zgłasza wartość true, jeśli atrybut znajduje się w bazie danych faktów
; zgłasza fałsz inaczej
report (table:has-key? facts-base attribute)
end
to-report fact-found? [attribute value]
; zgłasza wartość true, jeśli atrybut i wartość znajdują się w bazie danych faktów
; zgłasza fałsz inaczej
report (value = table:get facts-base attribute)
end
to-report fact-get [attribute]
; pobiera wartość powiązaną z atrybutem z bazy faktów.
report table:get facts-base attribute
end
to fact-put [attribute value]
; umieszcza parę wartości atrybutu w bazie faktów.
table:put facts-base attribute value
end

Kod implementuje trzy reportery: attribute-found?, który zgłasza prawdę, jeśli sam atrybut znajduje się w bazie faktów (tj. niezależnie od tego, jaka wartość jest z nim związana); fact-found?, który zgłasza prawdę, jeśli zarówno atrybut, jak i określona wartość znajduje się w bazie faktów; i fact-get, który zwraca wartość powiązaną z atrybutem. Procedura fact-put wstawia konkretny atrybut i jego wartość do tabeli. Problem z dalszym rozumowaniem polega na tym, że poszukiwanie konkretnego celu może być nieskuteczne, ponieważ może wywołać wiele reguł niezwiązanych z celem. W takim przypadku bardziej odpowiednie może być rozumowanie oparte na wstecznym lub celowym. Rozumowanie odwrotne wykorzystuje proces "znajdowania dowodów", a nie proces "zapałek", jak w przypadku rozumowania wybiegowego. Biorąc pod uwagę konkretny cel, proces wnioskowania wstecznego najpierw przeszukuje bazę reguł, aby znaleźć reguły, które mają cel w swoich NAWET częściach (tj. Jako następniki). Jeśli zostanie znaleziona reguła i część IF zostanie dopasowana, wówczas reguła zostanie zwolniona, a cel zostanie udowodniony. W przeciwnym razie możesz spróbować nowego celu podrzędnego udowodnić, że część IF nie pasuje. Proces rekurencyjnie powtarza proces wnioskowania z nowym celem podrzędnym, który może generować kolejne podprogramy, które muszą zostać udowodnione, dopóki nie udowodni wszystkich części IF dla pierwotnego celu i kolejnych podprogramów. Kod do wnioskowania wstecznego zaimplementowany w modelu reprezentacji wiedzy jest pokazany w kodzie NetLogo

to go-rules-backward-reasoning
;; dokonuje wstecznego rozumowania problemu
let goal-choices []
let goal-attrib ""
let goal-value ""
let attribute ""
let value ""
set goal-attrib [goal-attribute] of selected-problem
foreach sort rules
[ ; dodaj każdy cel we wszystkich regułach do wyborów celu
foreach [consequents] of ?
[
set attribute first ?
set value last ?
if (attribute = goal-attrib) and
(not member? value goal-choices)
[ set goal-choices lput ? goal-choices ]
]
]
let goal user-one-of "Which goal do you wish to proove?" goal-choices
set goal-value (last goal)
start-new-walkers goal-attrib goal-value
ifelse not find-prove? selected-problem goal-attrib goal-value
[ user-message "No more rules found. The goal is not proven." ]
[ update-walker active-walker goal-attrib goal-value
user-message (word "The goal is proven! The " goal-attrib " is a "
goal-value ".")]
end

Kod najpierw generuje goal-choice czyli listę wszystkich celów ze wszystkich reguł. Użytkownik jest następnie pytany, który cel chce udowodnić. Następnie gracz narysowany jest na mapie wydarzenia w wybranym stanie celu, a proces rozumowania rozpoczyna się od find-prove? reporter. To zwraca wartość true, jeśli można znaleźć regułę, aby udowodnić cel lub fałsz, jeśli nie, a procedura następnie informuje użytkownika o wyniku. Kod znaleziskafind-prove? reporter jest pokazany w kodzie NetLogo

to-report find-goal? [this-rule goal-attrib goal-val]
;; reports if the goal is in the consequents of this_rule
let attribute ""
let val ""
let value ""
let response ""
foreach [consequents] of this-rule
[
set attribute first ?
set value last ?
if (attribute = goal-attrib) and (value = goal-val)
[ report true ]
]
report false
end
to-report prove-goal? [problem this-rule goal-attrib goal-val]
; próbuje udowodnić tę zasadę na podstawie faktów w bazie faktów
; w przeciwnym razie prosi użytkownika o dane, jeśli atrybutu nie ma na liście atrybutów innych niż wejściowe
; w przeciwnym razie rekurencyjnie wywołuje procedurę znajdź-udowodnij? sprawdzić, czy
; atrybuty inne niż wejściowe można udowodnić
let attribute ""
let val ""
let value ""
let question ""
let choices []
let this-walker nobody
set this-walker start-new-walker nobody "" ""
foreach [antecedents] of this-rule
[
set attribute first ?
set value last ?
update-walker this-walker attribute value
if not attribute-found? attribute
; nie znaleziono, więc zapytaj użytkownika, czy możemy
[ ifelse (member? attribute [non-input-attributes] of problem)
[ ifelse not find-prove? problem attribute value
[ report false ] ; no we can't ask user
[ fact-put attribute value ]
]
[ ; zadaj użytkownikowi pytanie
set question get-input-question problem attribute value set
choices get-input-choices problem attribute
set val user-one-of question choices
fact-put attribute val
]
]
if not fact-found? attribute value
[ report false ]
]
update-walker this-walker goal-attrib goal-val
report true
end
to-report find-prove? [problem goal-attrib goal-val]
;; procedura rekurencyjna wywoływana przez procedurę wnioskowania wstecznego
let this-walker nobody
output-goal goal-attrib goal-val
foreach sort rules
[ ; dla każdej reguły w bazie reguł
if (find-goal? ? goal-attrib goal-val)
[
if (prove-goal? problem ? goal-attrib goal-val)
[
start-new-walkers goal-attrib goal-val
output-fired-rule ?
report true
]
]
to-report find-prove? [problem goal-attrib goal-val]
;; procedura rekurencyjna wywoływana przez procedurę wnioskowania wstecznego
let this-walker nobody
output-goal goal-attrib goal-val
foreach sort rules
[ ; dla każdej reguły w bazie reguł
if (find-goal? ? goal-attrib goal-val)
[
if (prove-goal? problem ? goal-attrib goal-val)
[
start-new-walkers goal-attrib goal-val
output-fired-rule ?
report true
]
]
]
report false
end
]
report false
end

Reportr find-prove? wywołuje dwóch kolejnych reporterów, find-goal? i prove-goal?. Dla każdej reguły w bazie reguł najpierw sprawdza, czy cel został znaleziony przez wywołanie reportera find-goal? jeśli zostanie znaleziony, spróbuje to udowodnić, nazywając reporter prove-goal?. Reporter find-goal? zwraca wartość true, jeśli atrybut i wartość określona przez goal-attrib? i goal-val? została znaleziona w jednym z następstw określonej reguły - ta reguła przekazana przez parametr. Reportert prove-goal próbuje najpierw udowodnić konkretną zasadę, że ta zasada jest prawdziwa z faktów w bazie faktów. W przeciwnym razie sprawdza każdy z poprzedników reguły, aby sprawdzić, czy są one prawdziwe, pytając użytkownika o dane, jeśli atrybut nie jest atrybutem wejściowym, w przeciwnym razie rekursywnie wywołuje find-okazać reportera? aby sprawdzić, czy atrybut nie-wejściowy może zostać udowodniony. Procedury start-new-walker, start-new-walkers i update-walker służą do animowania mapy zdarzeń, aby pokazać, jak przebiega proces wnioskowania. Jakiego rodzaju rozumowania należy użyć przy projektowaniu systemu eksperckiego opartego na regułach? Najlepszą odpowiedzią na to pytanie jest dla inżyniera wiedzy obserwowanie eksperta, aby zobaczyć, jakiego rodzaju rozumowania używają. Jeśli ekspert najpierw przyjrzy się danym, a następnie wnioskuje z niego nową wiedzę, wówczas najodpowiedniejszy jest proces wnioskowania. Z drugiej strony, jeśli ekspert zaczyna najpierw od hipotetycznego rozwiązania, a następnie próbuje znaleźć fakty, które pomogą udowodnić hipotezę, wówczas najwłaściwsze może być wnioskowanie zwrotne. Problemy z analizą i interpretacją nadają się do przekazania rozwiązań logicznych, podczas gdy problemy z typem diagnozy nadają się do wnioskowania wstecznego. Przykładem tego pierwszego jest DENDRAL, system ekspercki, który określa strukturę molekularną nieznanej gleby, podczas gdy MYCIN, system ekspercki do diagnozy zakaźnych chorób krwi, jest przykładem tego ostatniego. Obecnie większość systemów ekspertowych używa teraz rozumowania zarówno do przodu, jak i do tyłu. Podstawową metodą wnioskowania jest ta ostatnia, ponieważ minimalizuje liczbę niepotrzebnych zapytań, które są błędem naprzód podejście do rozumowania. Jednak system ekspercki może przejść do przekazywania argumentów, gdy do podstawy faktów zostanie dodany nowy fakt w celu maksymalnego wykorzystania nowych danych. Systemy ekspertowe, takie jak DENDRAL i MYCIN, wymagają dużych nakładów finansowych i wysiłku (szacunkowo na 20 do 40 lat pracy). Czynnikiem, który przyczynia się do tego, jest szeroko uznała trudność w zdobywaniu wiedzy od ekspertów ludzkich - problem ten nazywany jest "wąskim gardłem gromadzenia wiedzy". Jednak obecnie istnieją zaawansowane powłoki systemu eksperckiego i skrzynki narzędziowe dla inteligentnych systemów wykorzystujących technologie takie jak uczenie maszynowe, sieci neuronowe i obliczenia ewolucyjne, które radykalnie skracają czas opracowywania od lat do miesięcy. Aby uzyskać pełniejszą dyskusję na temat opartych na regułach systemów eksperckich i ogólnie systemów inteligentnych, czytelnik powinien odnieść się do Negnevitsky'ego.

Wiedza i rozumowanie za pomocą ramek

Ramki są formą reprezentacji wiedzy zaproponowaną przez Marvina Minsky′ego. Ramka jest strukturą danych przechowującą prototypowe informacje dotyczące konkretnej koncepcji. Ramki składają się z "gniazd", które mogą mieć "wartości", które są jawnie zadeklarowane, gdy ramka jest zadeklarowana, lub są dziedziczone z ramki nadrzędnej. Ta forma reprezentacji wiedzy jest najbardziej podobna do modelu przestrzeni konceptualnej Gärdenforsa, a szczeliny są analogiczne do wymiarów jakościowych. Istnieją dwa rodzaje ramek: ramka klasy; i ramkę indywidualną lub instancję. Pojęcia klasy, instancji i dziedziczenia są analogiczne do tych używanych w programowaniu obiektowym opisanym w sekcji 2.2 Dziedziczenie jest zwykle określane za pomocą "ako" (oznacza to "rodzaj"). Na przykład w przypadku problemu klasyfikacji zwierząt w zoo gepard jest rodzajem ssaka, a ssak jest rodzajem zwierzęcia. Jako kolejny przykład, ramy dla problemu klasyfikacji łodzi żaglowych przedstawiono w tabeli 9.8. Tabela pokazuje osiem ramek łodzi żaglowych w osobnych kolumnach, z nazwami i wartościami w wierszach. W przypadku tego szczególnego problemu wiedza jest stosunkowo regularna, a jedynie kilka komórek tabeli z brakującymi wartościami. Zwykle brakujące wartości są normą, gdy ramki są wyświetlane w formie tabelarycznej, ponieważ nie ma wymogu, aby każda klatka miała te same szczeliny, ponieważ ramki reprezentują różne koncepcje o różnych właściwościach i mogą dziedziczyć informacje z różnych ramek nadrzędnych. Reprezentację mapy zdarzeń dla tej wiedzy pokazano na rysunku



Dla jasności, liczba pokazuje mapę zdarzeń tylko dla pierwszych czterech ramek dla problemu łodzi żaglowej - noża z głowicą z występem (lewy górny róg), slup na czele Gaffa (na dole po lewej), kecz z Jigsem (u góry po prawej) i Gaff na czele ketch (prawy dolny róg). Każda klatka jest przedstawiona jako osobna ścieżka, zaczynając od stanu zdarzenia oznaczonego przez nazwę ramki (na przykład nazwa = "jib-headed-cutter" w lewym górnym rogu), a następnie przechodzenie do stanu, który deklaruje, jaki rodzaj ramki reprezentuje ścieżka (ten stan jest zawsze oznaczony etykietą as ako = "[boat]", ponieważ wszystkie ramki są ramami łodzi w tym przykładzie). Ścieżka następnie kontynuuje przez stany reprezentujące poszczególne przedziały i wartości każdej klatki.



Zamiast deklarować ramki oddzielnie od wiedzy opartej na regułach, model reprezentacji wiedzy zamiast tego stosuje podejście polegające na przekształcaniu wiedzy opartej na regułach w formacie ramek. Ma to na celu zilustrowanie zgodności między tymi dwoma podejściami, gdy zdania w regułach są określone przy użyciu par wartości atrybutu. Umożliwia to również wizualizację różnych metod za pomocą map zdarzeń. Kod do tego jest pokazany w kodzie NetLogo

to convert-rules-to-frames-base [problem]
;; Konwertuje bazę reguł na bazę klatek
let this-rule nobody
let this-frame nobody
let attribute ""
let value ""
ask frames [ die ] ; kill off any previous frames
foreach sort rules
[ ; dla każdej reguły w bazie reguł
set this-rule ?
foreach [consequents] of this-rule
[
set attribute (first ?)
set value (last ?)
set this-frame find-frame? attribute value
if (this-frame = nobody)
[ ; ramka nie istnieje z tą nazwą i typem
create-frames 1
[
hide-turtle ; uczynić niewidocznym
set this-frame self
set name value
set ako-list (list attribute)
set slots-table table:make
]
]
foreach [antecedents] of this-rule
[
ask this-frame
[
set attribute (first ?)
set value (last ?)
ifelse (member? attribute [input-attributes] of
problem)
[ table:put slots-table attribute value ]
[ set ako-list
(lput value ako-list) ] ; dodaj wartość do listy ako
]
]
]]
end
to-report find-frame? [this-ako this-name]
;; zgłasza ramkę, która ma wartość boksu „ako” = ako i „name” = name.
;; nikt nie zgłasza inaczej
report one-of frames with
[member? this-ako ako-list and name = this-name]
end

Procedura konwersji najpierw zabija wszystkie istniejące ramki, a następnie przetwarza każdą z reguł w bazie reguł po kolei. Dla następstw każdej reguły sprawdza, czy ramka o tej samej nane i wartościach ako nie istnieją, wywołując find-frame? reporter. Jeśli nie istnieje, utworzy nową ramkę, w przeciwnym razie użyje tego, który został znaleziony. Następnie wstawi szczeliny i ich wartości do slot-table dla ramki, jeśli atrybut proposition jest atrybutem wejściowym, w przeciwnym razie dodaje wartość proposition do ako-list dla ramki. Mapa zdarzeń jest tworzona z tych ramek przy użyciu procedury dodawania zdarzeń, jak pokazano w kodzie NetLogo

to-report slots-events [table]
;; zwraca listę zdarzeń dla tabeli gniazd
let events []
let keys []
let value ""
set keys table:keys table
foreach keys
[
set value table:get table ?
set events lput (list ? value) events
]
report events
end
to setup-frames
;; konfiguruje sieć stanów z ramek
init-problem ; zainicjuj wybrany problem
let events []
convert-rules-to-frames-base selected-problem
foreach sort frames
[
set events slots-events [slots-table] of ?
set events fput (fput "ako" (list [ako-list] of ?)) events
set events fput (list "name" [name] of ?) events
add-events events white white white
]
repeat 5 [ change-layout ]
display
end

Ten kod definiuje procedurę setup-frames, która wywołuje procedurę convert-rules-to-frames zdefiniowaną powyżej, a następnie dla każdej z nowo utworzonych ramek generuje listę zdarzeń dla każdego z otworów w ramce w jej tabeli slotów (przez wywołanie reportera s;ots-events), a następnie dodaje dwa kolejne zdarzenia na początku listy zdarzeń, jeden dla ako-list i drugi dla nazwy ramki, przed wywołaniem procedury add-events . Istnieją dwa główne typy rozumowania z ramami - rozumowanie przez dziedziczenie i rozumowanie przez dopasowanie. Ten pierwszy wypełnia brakujące wartości szczelin dla klatek, jeśli dla ramki nadrzędnej określono wartość szczeliny. Na przykład w przypadku problemu z żaglówką, macierzysta "łódź" może określić, że liczba żagli dla łodzi wynosi domyślnie dwa. Przypomnijmy, że celem ramki jest przedstawienie prototypowej koncepcji, więc przy określaniu, że rama łodzi ma dwa żagle, oznacza to, że prototypowa łódź będzie miała dwa żagle. Oczywiście zawsze są wyjątki od reguły, dlatego domyślna wartość ramki nadrzędnej może być łatwo nadpisana w ramce podrzędnej przez wstawienie określonej wartości. Samochody, na przykład, mają najczęściej cztery koła, ale niektóre samochody mają trzy koła, takie jak Reliant Robin wyprodukowany w Anglii w latach 70. ubiegłego wieku, a ostatnio samochody hybrydowe i elektryczne, które przyjmują trójkołowe rozwiązanie z powodów aerodynamicznych i wydajności. Tak więc ramka rodzica "samochód" może ustawić wartość szczeliny dla "liczby kół" na 4, ale zamiast tego ustaw na przykład wartość 3 dla ramki "Reliant Robin car". Druga forma rozumowania ramek opartych na dopasowywaniu polega na przeszukiwaniu ramek-podstawy dla ramki, której szczeliny i wartości pasują do aktualnych znanych faktów. Zostało to zaimplementowane w modelu reprezentacji wiedzy. Rysunek 9.12 to zrzut ekranu, który przedstawia pośredni etap procesu wnioskowania, aby pokazać, jak przebiega.



Na zrzucie ekranu ścieżki, które zostały zastosowane, są przedstawione grubszymi białymi łączami. Pierwszym pytaniem, które zadecydowało, że głowica z głowicą Jib jest pierwszą dopasowaną ramą, jest "Ile jest masztów?", Ponieważ dopasowywano gniazdo "liczba masztów". Użytkownik odpowiedział "dwoma", co spowodowało, że ramka obcinarki z kierownicą z przegubem i następna rama, slup z głowicą Gaffa, nie dorównały. Jest to pokazane przez agentów walkerów zatrzymujących się tuż przed końcem dwóch ścieżek pokazanych po lewej stronie ekranu. Proces rozumowania następnie próbował dopasować następną klatkę w podstawie ramki - ramkę Ketch z nagłówkiem Jib. Zrzut ekranu pokazuje etap po tym, jak pytanie "Jaka jest główna pozycja masztu?" Zostało odebrane "przed krótkim masztem", a użytkownik ma odpowiedzieć na następne pytanie "Jaka jest krótka pozycja masztu?" wyświetlane na środku ekranu. Kod, który wykonuje proces dopasowywania ramek, jest zdefiniowany przez procedurę go-frames-reasoning modelu Kowledge Representation w NetLogo. Zamiast odtwarzać tutaj kod, czytelnik może sprawdzić kod bezpośrednio w NetLogo, wybierając przycisk Procedures. Kod składa się z reportera, matcg-frame?, który zwraca wartość true, jeśli ramka pasuje do bieżących faktów. Reporter match-frame?r najpierw tworzy nowego agenta spacerowego i przesuwa go wzdłuż początku ścieżki ramki w mapie zdarzeń poprzez nazwę i inne stany. Następnie przetwarza każdą z nazw znajdujących się na liście ako ramki, aby upewnić się, że każda z ramek macierzystych jest zgodna z rekursywnie wywołującą funkcję match-frame?. Będzie to również oznaczać, że ramki typu grandparent (i ramki typu "great-grandparent" itd.) Będą również musiały być dopasowane, zanim ramka sama się dopasuje. Po dopasowaniu wszystkich tych ramek macierzystych, reporter wyodrębnia listę nazw slotów ze slot-tables a następnie dla każdego z nich wyodrębnia ich wartości i używa kodu podobnego do tego, którego użyto w rozumowaniu opartym na regułach. powyżej w sekcji , spróbuje sprawdzić, czy fakt z nazwą i wartością slotów już istnieje w bazie faktów. Jeśli nie, poprosi użytkownika o wprowadzenie, jeśli slot jest atrybutem wejściowym, w przeciwnym razie zwróci false (ramka nie została dopasowana). Czy procedura go-frames-reasoning wywołuje match-frame? reporter dla każdej ramki, która ma atrybut cel w swojej ako-list, która jest ustawiana podczas tworzenia ramek - na przykład dla ramki żaglówek atrybut bramki jest ustawiony na łódź, a dla klatek zwierząt w zoo- podstawa atrybut cel jest ustawiony na animal, dlatego tylko te ramki są dopasowane do problemu. Istnieje wiele odmian metody reprezentacji wiedzy opartej na ramkach. Rozszerzeniem podstawowej reprezentacji typu szczeliny jest umożliwienie, aby sloty miały "ścianki" zapewniające rozszerzoną wiedzę o atrybucie opisywanym przez szczelinę. Facetów można używać do kontrolowania zapytań użytkowników i prowadzenia procesu wnioskowania, na przykład wyszczególniając sposób dopasowania gniazda. Metody (zwane "demonami") można również powiązać z atrybutami jako aspektami, które zapewniają systemowi ramowemu mechanizm wyrażania wiedzy proceduralnej. Te metody wykonują akcje uruchamiane w określonych warunkach. Na przykład dwa typowe typy metod to: KIEDY ZMIENIONO I GDY POTRZEBUJESZ, które są wyzwalane, gdy wartość gniazda zostanie zmieniona lub kiedy zostanie on udostępniony. Obecnie wiele specjalistycznych i inteligentnych systemów to systemy hybrydowe, które łączą dwie lub więcej technologii; na przykład wiele systemów używa zarówno ramek, jak i reguł do reprezentowania wiedzy i do wnioskowania. Terminem często używanym do opisu tych systemów hybrydowych jest "miękkie przetwarzanie", które dotyczy systemów zdolnych do wnioskowania z niepewnością i dynamicznymi środowiskami z wieloma agentami. Negnevitsky przedstawia kilka przykładów hybrydowych inteligentnych systemów, które łączą różne technologie, nie tylko oparte na symbolach technologie, takie jak reguły i ramki, ale także technologie pod-symboliczne, takie jak sieci neuronowe i ewolucyjne obliczenia.

Znajomość i rozumowanie przy użyciu drzew decyzyjnych

Inną metodą reprezentowania wiedzy są drzewa decyzyjne. Widzieliśmy już kilka przykładów drzew decyzyjnych w dziale wcześniej, a na powyższym rysunku, który zawiera zrzut ekranu drzewa decyzyjnego dla problemu zwierząt w zoo. NetLogo Code. pokazuje, w jaki sposób reguły można przekształcić w drzewo decyzyjne za pomocą reprezentacji odwzorowania zdarzeń omawianej w sekcji wcześniej.

to convert-rules-to-decision-tree
;; Konwertuje bazę reguł na drzewo decyzyjne
init-problem ; initialise the selected problem
let this-rule nobody
let attribute ""
let value ""
let events []
foreach sort rules
[ ; dla każdej reguły w bazie reguł
set this-rule ?
set events (list (list [goal-attribute] of selected-problem "Yes"))
foreach [antecedents] of this-rule [
ask this-rule
[
set attribute (first ?)
set value (last ?)
set events lput (list attribute value) events
]
]
foreach [consequents] of this-rule
[
set attribute (first ?)
set value (last ?)
add-events (lput (list attribute value) events) white white white
]
]
repeat 5 [ change-layout ]
display
end

Ta procedura przetwarza każdą regułę w bazie reguł, najpierw inicjując listę zdarzeń, aby zawierało pojedyncze zdarzenie zawierające atrybut celu ze słowem "Yes". Na przykład problem z jachtami żaglowymi ustawi listę zdarzeń na [[boat "Tak"]]. Efektem tego jest to, że wszystkie reguły będą połączone z centralnym węzłem w centrum drzewa decyzyjnego. Procedura następnie dołącza wszystkie poprzedniki jako zdarzenia do listy zdarzeń, a następnie dla każdego z następstw doda następnik na końcu tej listy i wywoła osobno add-events. Spowoduje to utworzenie osobnej ścieżki zdarzenia dla każdego kolejnego wyniku. Wynik dla problemu łodzi żaglowych pokazano na rysunku.



Zwróć uwagę, że drzewo ma osiem węzłów listków, które odpowiadają ośmiu regułom w bazie reguł. Proces rozumowania działa na zewnątrz od centralnego węzła, zadając pytania i podążając za odpowiednim odsyłaczem, aż do uzyskania liścia w taki sam sposób, jak nowozelandzki model NetLogo pt. Omówiony w części 4. Postęp procesu wnioskowania na etapie pośrednim jest pokazano na rysunku powyżej. Proces rozpoczął się w węźle centralnym oznaczonym jako boat = "Yes". Podkreślono dwa możliwe połączenia, które mógł nastąpić - link do stanu oznaczony number of mast = "one" i link do stanu oznaczony number of mast = "two". Wewnętrzna kolejność linków (w wyniku ich utworzenia) spowodowała, że proces wnioskowania przeniósł się do pierwszego z tych stanów i spowodował pytanie "Ile masztów tam jest?". Użytkownik odpowiedział "dwójką", co oznacza, że przejście bieżącej ścieżki zostało zatrzymane, a proces wnioskowania rozpoczął się po drugiej ścieżce. Następne pytanie brzmiało: "Jaka jest główna pozycja masztu?", A odpowiedź "naprzód z masztu krótkiego" zmusiła proces wnioskowania do przeniesienia do stanu oznaczonego jako main mast position = "forward of the short mast". Następne pytanie brzmiało: "Jaka jest krótka pozycja masztu?", A odpowiedź "naprzód steru" zmusiła proces wnioskowania do stanu pokazanego na rysunku. Odpowiedź na aktualne pytanie "Jaki jest kształt grota?" Spowoduje, że proces wnioskowania zakończy się wnioskiem, że łódka jest kranem z przewężeniem, jeśli odpowiedź była "trójkątna", i z wnioskiem, że w przeciwnym razie był to kecz z Gaffem. Kod wykonujący proces rozumowania drzewa decyzyjnego jest zdefiniowany przez procedurę go-decision-tree-reasoning w modelu reprezentacji wiedzy w NetLogo. Ten kod wywołuje procedurę match-tree, aby przejść drzewo. Robi to, nazywając siebie rekursywnie dopasowując stany drzew do faktów w bazie faktów, aż do momentu, gdy nie będzie już żadnych sąsiadów poza ścieżką - to znaczy, gdy zostanie osiągnięty węzeł liścia. Cel zostaje osiągnięty, gdy do bazy faktów dodano fakt, że atrybut celu (w tym przypadku boat) został dodany.

Znajomość i rozumowanie za pomocą sieci semantycznych

Ostateczna metoda reprezentacji wiedzy, którą zbadamy, nazywa się sieciami semantycznymi. Sieci semantyczne składają się z połączonych ze sobą węzłów połączonych łukami. Węzły reprezentują obiekty i łukują relacje między obiektami. Przykład sieci semantycznej dla problemu zwierząt w zoo pokazano na rysunku



Istnieje wiele wariantów sieci semantycznych, których początki sięgają 1909 r. Wraz z "wykresami egzystencjalnymi" Pierce'a. Sieci semantyczne stały się popularne w latach 70. XX wieku, przy czym Collins i Quillian wykonali ważną pracę (na przykład w 1969 r.). Ważna debata w AI dotycząca sieci semantycznych dotyczy względnych zalet w porównaniu z logiką. Russell i Norvig zwracają jednak uwagę, że sieci semantyczne można również uznać za formę logiki, tak jak w przypadku innych form reprezentacji wiedzy omówionych powyżej. Nowszym przykładem sieci semantycznej jest WordNet, który jest dużą leksykalną bazą danych angielskich słów pogrupowanych według synonimów. Kod NetLogo pokazuje, jak zadeklarowana jest sieć semantyczna dla problemu zwierząt w zoo w modelu KnowledgeRepresentation.

to-report create-state [state-label]
;; tworzy i zwraca nowy węzeł semantyczny
let this-state nobody
create-states 1
[
set this-state self
set color sky
set label-color white
set label state-label
set size 8
set stream "state name"
set event state-label
]
report this-state
end
to create-slink [state1 slink-label state2]
;; tworzy łącze między dwoma węzłami state1 i state2 w
;; sieci semantycznej
ask state1
[ create-path-to state2
[ set label slink-label
set label-color yellow
set color blue
]
]
end
to setup-animals-semantic-network
;; ustawia węzły i łącza w sieci semantycznej Zoo Animals
let animal-state create-state "animal"
set goal-state animal-state
let mammal-state create-state "mammal"
let ungulate-state create-state "ungulate"
let carnivore-state create-state "carnivore"
let hair-state create-state "hair"
let milk-state create-state "milk"
let meat-state create-state "meat"
let pointed-teeth-state create-state "pointed teeth"
let claws-state create-state "claws"
let forward-eyes-state create-state "forward eyes"
let hooves-state create-state "hooves"
let cud-state create-state "cud"
let tawny-colour-state create-state "tawny colour"
let dark-spots-state create-state "dark spots"
let black-stripes-state create-state "black stripes"
let long-neck-state create-state "long neck"
let cheetah-state create-state "cheetah"
let tiger-state create-state "tiger"
let giraffe-state create-state "giraffe"
let zebra-state create-state "zebra"
create-slink cheetah-state "is a" animal-state
create-slink tiger-state "is a" animal-state
create-slink giraffe-state "is a" animal-state
create-slink zebra-state "is a" animal-state
create-slink ungulate-state "is a" mammal-state
create-slink cheetah-state "is a" mammal-state
create-slink tiger-state "is a" mammal-state
create-slink cheetah-state "is a" carnivore-state
create-slink tiger-state "is a" carnivore-state
create-slink giraffe-state "is a" ungulate-state
create-slink zebra-state "is a" ungulate-state
create-slink mammal-state "has" hair-state
create-slink mammal-state "gives" milk-state
create-slink carnivore-state "eats" meat-state
create-slink carnivore-state "has" pointed-teeth-state
create-slink carnivore-state "has" claws-state
create-slink carnivore-state "has" forward-eyes-state
create-slink ungulate-state "has" hooves-state
create-slink ungulate-state "chews" cud-state
create-slink cheetah-state "has" tawny-colour-state
create-slink cheetah-state "has" dark-spots-state
create-slink tiger-state "has" tawny-colour-state
create-slink tiger-state "has" black-stripes-state
create-slink giraffe-state "has" dark-spots-state
create-slink giraffe-state "has" long-neck-state
create-slink zebra-state "has" black-stripes-state
end
setup-animals-semantic-network wykorzystuje reporter, create-state, do tworzenia stanu w sieci i zwracania go oraz procedurę, create-slink, do tworzenia połączenia między dwoma stanami. Pierwsza z nich przyjmuje pojedynczą stste - label która określa etykietę powiązaną ze state , a następnie tworzony jest pojedynczy agent państwowy z określoną etykietą, która następnie jest zwracana. Ta ostatnia przyjmuje trzy argumenty: stan początkowego state1, etykietę znacznika końca slink-label dla łuku i stan state2, a następnie tworzony jest agent pojedynczego łącza, który łączy state1 z state2. Sieć semantyczną tworzy się najpierw, tworząc stan dla typów zwierząt (ssaków, zwierząt kopytnych, drapieżnych), dla cech zwierząt (np. Włosów, mleka, mięsa, ostrych zębów, pazurów) i dla każdego ze zwierząt ( tygrys, gepard, żyrafa i zebra). Następnie łącza między tymi stanami są ustawiane jeden po drugim. Chociaż sieci semantyczne są stosunkowo łatwe do ustawienia, głównym problemem jest podejmowanie decyzji o rodzaju wiedzy, która trafia do sieci - czyli jaki rodzaj wiedzy powinien być reprezentowany przez państwa i jaki rodzaj wiedzy przez łuki. Zasadą jest, że etykiety stanu powinny być rzeczownikami, a etykiety etykiet powinny być czasownikami. Dwie etykiety powszechnie używane w łukach to "is a" i "has". Na przykład w środku rysunku 9.14 znajduje się znakowany "tygrys" i ma on dwa łuki oznaczone "ma" i trzy łuki oznaczone jako "jest" łączące pięć stanów. To reprezentuje wiedzę, że tygrys ma czarne pasy i brązowy kolor oraz że tygrys jest zwierzęciem, amammal i mięsożercą. Etykieta łukowa "jest a", podobnie jak w przypadku ramek, służy do wykonywania dziedziczenia i domyślnego rozumowania stylu. Należy zauważyć, że wielokrotne dziedziczenie jest dozwolone, w przeciwieństwie do niektórych języków programowania obiektowego, takich jak Java, które obsługują tylko dziedziczenie pojedyncze. Ramki mogą być uważane za odmianę sieci semantycznych, ponieważ każdy węzeł może reprezentować pojedynczą ramkę, a łuki, które wychodzą poza węzeł, są jego gniazdami, przy czym wartości szczelin są węzłami, do których prowadzą wartości szczelin. Sieć semantyczną można również przekształcić w równoważną mapę zdarzeń. Można to zrobić w modelu reprezentacji wiedzy, ustawiając wybierak KR-type w interfejsie na "semantic event network", a model początkowo narysuje sieć semantyczną, a następnie zastąpi ją równoważną siecią semantycznych zdarzeń. Ważna forma rozumowania sieci semantycznych polega na dopasowaniu stanów do aktualnych faktów w sposób analogiczny do dopasowania ramek. Rysunekprzedstawia etap pośredni procesu dopasowywania stanu. W tym przypadku proces rozumowania rozpoczął się od docelowego stanu animal w środkowym prawym rogu obrazu. Jeden z sąsiadujących w tej drodze sąsiadów tego stanu został wybrany losowo, aby być następnym stanem odwiedzanym - w przypadku pokazanym na obrazie wybranym stanem był stan zebry. Proces rozumowania następnie próbował dopasować wszystkie stany związane z tym stanem - pierwszy wybrany był stan black stripe, który spowodował pytanie "Czy prawdziwe jest następujące stwierdzenie: Zwierzę ma czarne paski?", Które należy zadać. Jako że odpowiedź była twierdząca, proces rozumowania zaczął się dopasowywać do stanu ungulate, przy czym stan przytulenia został wybrany do następnej wizyty, co skutkowało pytaniem "Czy prawdziwe stwierdzenie jest prawdziwe: zwierzę przeżuwa?", Jak pokazano na obrazie. Kod, który wykonuje semantyczny proces rozumowania sieci, jest zdefiniowany przez procedurę go-semantic-network- reasoning w modelu Knowledge Repreentation w NetLogo. Ten kod wykorzystuje reprotera match-network-state?, który zwraca wartość true, jeśli określony stan w sieci semantycznej pasuje do bieżących faktów. Reporter działa przez przetwarzanie wszystkich sąsiadujących z zewnątrz ścieżek do momentu znalezienia dopasowania. Najpierw klonuje agenta spacerowego, aby przejść do określonego stanu sąsiedniego. Jeśli etykieta dla łącza do tego stanu jest równa "is a", wówczas wywoła się rekursywnie z nowo sklonowanym walkerem, aby sprawdzić, czy sąsiednie państwo również dopasowuje się jako pierwsze, ponieważ jest to stan "jest" (macierzysty). W przeciwnym razie użyje etykiety łącza i etykiety sąsiedniego stanu do skonstruowania zdania w celu sprawdzenia, czy jest ono prawdziwe, czy też nie, w procesie, w razie potrzeby pytając użytkownika, czy atrybut propozycji nie jest jeszcze znany (tj. baza faktów). Ta konkretna implementacja pozwala na umieszczanie w etykietach linków słowa kluczowego "nie" (na przykład "nie jest" może być użyte zamiast "jest", "nie może" zamiast "może" i "nie ma" zamiast "ma" "). Dokonano tego, aby dostosować się do konkretnego stylu wiedzy w problemach ptaków nowozelandzkich, aby forma sieci semantycznej mogła być bezpośrednio porównywana z innymi formami reprezentacji. Twierdzenie jest sprawdzane przez sprawdzenie, czy istnieje w aktualnej bazie faktów, a reporter zwróci wartość false, jeśli nie jest. Główna procedura go-semantic-network-reasoning działa poprzez wywołanie funkcji match-networkstate? dla wszystkich sąsiadujących w drodze sąsiadów stanu celu, którego link do niego ma etykietę "jest a". Kontynuuje dopóki nie znajdzie jednego z sąsiadujących państw, które pasują do siebie. Na przykład dla problemu zwierząt z ogrodów zoologicznych, spróbuje (w dowolnej kolejności) każdego z czterech stanów - tiger, cheetah, giraffe i zebra - które są połączone ze stanem zwierzęcia z etykietą łącza "jest a". Jeśli nie może znaleźć sąsiedniego stanu "jest", który pasuje, zwróci wartość false. Ta konkretna implementacja powoduje, że za każdym razem, gdy uruchamiana jest procedura, żądany jest inny zestaw pytań (w wyniku polecenia ask używającego in-path-neighbours). Jeśli takie zachowanie wprawia w zakłopotanie użytkownika, można uzyskać bardziej spójne zachowanie systemu eksperckiego za pomocą polecenia foreach-sort, aby zapewnić, że sąsiednie stany są odwiedzane w określonej kolejności. Problem z rozumowaniem opartym na sieci semantycznej, widoczny podczas uruchamiania modelu reprezentacji wiedzy, polega na tym, że często przeskakuje on w sieci, zadając pozornie niepowiązane pytania, aw rezultacie mylenie użytkownika systemu. Istnieje także utrata kontekstu, ponieważ proces wnioskowania przechodzi z jednego stanu do następnego. W przeciwieństwie do drzewa decyzyjnego lub reprezentacji mapy zdarzeń, które podążają za zdefiniowanymi ścieżkami, gdzie lokalizacja stanu odzwierciedla stan rozumowania na podstawie wcześniejszej sekwencji odwiedzonych stanów.

Podsumowanie i dyskusja

Reprezentacja wiedzy jest podstawowym zadaniem wymaganym do inteligentnego zachowania. W niniejszym rozdziale przedstawiono różne sposoby reprezentowania wiedzy, takie jak mapy, reguły, logika, ramki, drzewa decyzyjne i sieci semantyczne. Reprezentacja oparta na mapach zdarzeń została wykorzystana do wizualizacji różnych typów reprezentacji i pokazania, w jaki sposób można je przekształcić z jednej formy w drugą. Celem było omówienie wiedzy z ucieleśnionej, usytuowanej perspektywy poprzez pokazanie, że wiedza i rozumowanie są związane z ruchem agenta wokół otoczenia. Wiedza została przekształcona z wykorzystaniem reprezentacji mapy zdarzeń jako punktów w abstrakcyjnych n-wymiarowych środowiskach kosmicznych, a rozumowanie jako przeszukiwanie tej przestrzeni. Możemy również powiązać wiedzę z zachowaniem w następujący sposób. Można powiedzieć, że agenci posiadający wiedzę wykazują świadome zachowanie, podczas gdy agenci bez wiedzy muszą wykazywać jakąś formę poszukiwania zachowanie zamiast tego. Od punktu odniesienia obserwatora, jeśli widzimy agenta szukającego czegoś, możemy wywnioskować, dlaczego tak się dzieje z powodu braku wiedzy o tym, gdzie można znaleźć to, czego szukają. Dlatego możemy powiedzieć, że zachowanie wiedzące jest przeciwieństwem poszukiwań (lub użycia innej analogii, dwóch stron tej samej monety). Na przykład, osoba wykazuje się świadomym zachowaniem, gdy przechodzi prosto z ogrodu zoologicznego do stawu łódkowego w nowojorskim Central Parku, bez konieczności patrzenia na mapę. Inna osoba, może antylopoński gość z dołu, będzie musiał użyć mapy, aby "znaleźć" drogę zamiast niej (zwróć uwagę na użycie metafory wyszukiwania, aby opisać ten proces). Nieuchronnie będzie musiał fizycznie szukać na pewnym etapie, gdy zgubi się po drodze, gdy mapa nie pasuje do rzeczywistości. Podsumowanie ważnych pojęć, które można wyciągnąć z tej części, pokazano poniżej:

•  Symboliczne podejście odgórne do AI zakłada, że możemy reprezentować wiedzę za pomocą symboli.
•  Pod-symboliczne podejście "oddolne" do sztucznej inteligencji kładzie nacisk na przetwarzanie bodźców, a nie symboli.
•  Koncepcyjna teoria przestrzeni zakłada pośrednie środowisko, w którym pojęcia reprezentowane jako regiony w przestrzeni n-wymiarowej są centralną cechą ludzkiej wiedzy i rozumowania.
•  Mapy reprezentują wiedzę topograficzną, ale mogą być również wykorzystywane do reprezentowania innych form wiedzy w sposób abstrakcyjny.
•  Mapy zdarzeń mogą być używane do reprezentowania i wizualizacji danych n-wymiarowych w dwóch wymiarach.
•  Reguły są formą reprezentacji wiedzy, która używa instrukcji IF-THEN (warunku-działania).
•  Istnieją dwa główne typy rozumowania na podstawie reguł: przekonanie do przodu, które rozpoczyna się od faktów i próbuje udowodnić konkretny cel, jest prawdziwe; i rozumowanie wsteczne, które zaczyna się od celu w pierwszej kolejności i działa wstecz, aby pokazać, że fakty potwierdzają hipotezę celu. •  Ramki reprezentują wiedzę za pomocą koncepcji prototypowych, a dziedziczenie i dopasowywanie stanowią dwa rodzaje rozumowania.
•  Drzewa decyzyjne przedstawiają graficznie wiedzę jako drzewo skierowane, z pytaniami lub decyzjami związanymi z każdym węzłem w drzewie oraz wnioski w węzłach liści. Rozumowanie opiera się na wykorzystaniu faktów, aby wskazać, do której gałęzi drzewa należy podążać.
•  Sieci semantyczne wykorzystują również formę graficzną do reprezentowania wiedzy, z węzłami reprezentującymi pojęcia i łukami reprezentującymi relacje między koncepcjami. Sieci semantyczne są ściśle związane z ramami

Inteligencja

Natura inteligencji

Jaka jest natura inteligencji? To jest pytanie, które było rozważane i dyskutowane przez tysiące lat. Wiele osób na przestrzeni wieków przedstawiło swoją opinię na ten temat, co ilustrują cytaty poniżej

Lao Tzu (Nieznany; VI wiek p.n.e.) , Chiński kronikarz : "Poznanie innych to inteligencja; poznanie siebie jest prawdziwą mądrością. Opanowanie innych jest siłą; opanowanie siebiejest prawdziwą mocą. Jeśli zdajesz sobie sprawę, że masz dość, jesteś naprawdę bogaty."

Socrates , 469-399 p.n.e. , Grecki filozof : "Wiem, że jestem inteligentny, bo wiem, że nic nie wiem "

Leonadoda Vinci, 1452-1519, Włoski naukowiec, rzeźbiarz : "Każdy, kto prowadzi spór, odwołując się do autorytetu nie wykorzystuje swojej inteligencji, po prostu używa swojej pamięci."

Abigail Adams ,1744-1818 ,Amerykańska Pierwsza Dama : "Zawsze czułam, że inteligencja osoby jest bezpośrednio odzwierciedlona przez liczbę sprzecznych punktów widzenia, które mgą bawić się jednocześnie na ten sam temat. "

Albert Einstein, 1879-1955 , Niemiecki fizyk : "Prawdziwym znakiem inteligencji nie jest wiedza, ale wyobraźnia."

Bertolt Brecht ,1898-1956 ,Niemiecki poeta i dramaturg : "Inteligencja nie polega na tym, by nie popełniać błędów, ale szybko to widzieć jak uczynić je dobrymi."

Arthur Samuel, 1901-1990, Amerykański pionier AI : "Chodzi o to, aby maszyny pokazywały zachowania, które, jeśli zostałyby wykonane przez ludzi, zakładałyby wykorzystanie -inteligencji".

Alan Turing ,1912-1954, Brytyjski naukowiec, matematyk : "Komputer zasługuje na miano inteligentnego jeśli może oszukać człowieka, aby uwierzył, że jest człowiekiem. "

Susan Sontag , 1933-2004, Amerykańska pisarka : "Inteligencja to naprawdę rodzaj smaku: smak pomysłów"

Carl Sagan ,1934-1996, Amerykańsji astronom pisarz , naukowiec : "Poznanie wielkiej sprawy nie jest tym samym, co bycie mądrym; inteligencja to nie tylko informacje, ale także osąd, sposób, w jaki gromadzone i wykorzystywane są informacje. "

Linus Torvalds , 1969 - , Fiński inżynier : "Inteligencja to umiejętność unikania pracy, a jednak zdobywania możliwości ukończenia pracy"

Wydaje się, że każdy ma własną opinię na temat tego, czym jest inteligencja. Inteligencja to koncepcja, o której wszyscy wiedzą, ale rozumie ją inaczej. Jak widzieliśmy w poprzednim rozdziale, sposób, w jaki każda osoba rozumie określoną koncepcję, będzie miał swój niepowtarzalny "smak". Być może jednym z najciekawszych cytowań powyżej jest Susan Sontag, która używa analogii między smakiem i inteligencją. Smak to złożona sensacja w czterech wymiarach - słodyczy, kwaskowości, goryczy i słoności. Podobnie inteligencja jest złożoną koncepcją o wielu wymiarach. Inteligencja ma wiele aspektów - jej natury nie da się zdefiniować za pomocą jednego z tych cytatów; wymaga ich wszystkich. Jako analogię, spróbuj opisać Mona Lisa. Opis malowania jednej osoby może być anatemą dla innej osoby. Wyobraźmy sobie, że możemy oddać Mona Lisa do kilku napisanych słów, a potem naiwnie uwierzyć, że inni ludzie zgodzą się z nami, że jest to jedyny ostateczny opis, jest jak wierzenie, że ludzie powinni tylko jeść jeden rodzaj jedzenia, lub cieszyć się oglądaniem jednego rodzaju obrazu lub czytać jeden rodzaj książki. Obraz Mona Lisa nadal inspiruje ludzi do pisania coraz więcej słów na ten temat. Podobnie, inteligencja nie jest czymś, co możemy definitywnie wyjaśnić. Ale to nie powstrzyma ludzi przed kontynuowaniem tego, ponieważ dzięki temu można uzyskać głębszy wgląd w jego naturę. Chociaż definicje inteligencji są obarczone problemami, możemy poszukiwać pożądanych właściwości inteligencji, aby pomóc nam opisać naturę inteligencji. Innymi słowy, możemy pomóc zdefiniować naturę inteligencji, opisując, jak ona wygląda lub jak smakuje. Używając analogii smaku, możemy pomyśleć o tych właściwościach jako o "składnikach" w przepisie na inteligencję - musimy je połączyć, aby nadać określony smak, który niektórzy polubią, podczas gdy inni nie, preferując alternatywne smaki . Na przykład możemy posłużyć się analogią afrykańskich i australijskich odkrywców, próbujących opisać, jak żyrafa lub dziobak wygląda na kogoś, kto nigdy jej nie widział. Badacze będą używać słów (pojęć), które są im znane, takich jak "długa szyja" i "rybopodobny ogon", ale ich opis będzie "doprawiony" własną unikalną perspektywą. Bez względu na to, jakie słowa wymyślą, będą nadmiernie podkreślać pewne cechy i zignorować inne ważne składniki. Podobnie, badacze AI z doświadczeniem w inżynierii wiedzy i symbolicznym podejściu do sztucznej inteligencji będą opisywać inteligencję używając składników takich jak:

•  zdolność do zdobywania i stosowania wiedzy;
•  umiejętność rozumowania; i
•  umiejętność podejmowania decyzji i planowania w celu osiągnięcia określonego celu.

Naukowcy zajmujący się sztuczną inteligencją, którzy preferują podejście behawioralne, opisują inteligentne zachowanie ucieleśnionych, usytuowanych agentów, używając składników takich jak:

•  zdolność do działania, które zewnętrzny inteligentny agent uznałby za inteligentny;
•  umiejętność zademonstrowania wiedzy na temat konsekwencji swoich działań; i
•  umiejętność zademonstrowania wiedzy o tym, jak wpływać na środowisko lub zmieniać jego otoczenie, aby wpływać na wyniki i osiągać założone cele.

Jeśli myślimy o inteligencji za pomocą analogii mapowania, jak omówiono w poprzednim rozdziale, możemy użyć następujących składników do opisania inteligencji:

•  zdolność ucieleśnionego, usytuowanego agenta do mapowania środowisk, zarówno rzeczywistych, jak i abstrakcyjnych (tj. Rozpoznawanie wzorców w celu dostarczenia użytecznych uproszczeń i / lub charakterystyk ich środowisk);
•  umiejętność korzystania z map w celu poruszania się po otoczeniu;
•  możliwość aktualizacji map, gdy uzna, że nie pasują one do rzeczywistości; i
•  możliwość przekazywania szczegółów swoich map innym agentom.

Ważne jest jednak, aby zdać sobie sprawę, że nie są to ostateczne opisy, tylko składniki alternatywnych recept na inteligencję. W poprzednich częściach widzieliśmy różne przykłady (implementowane jako modele w NetLogo), które wykazały niektóre z tych składników. Pod pewnymi względami modele te wykazywały niewielki stopień inteligencji w tym sensie, że gdybyśmy zaobserwowali czynnika ludzkiego o tym samym zachowaniu, uznalibyśmy to za znak inteligencji. W następnym tomie tej serii książek zobaczymy także inne modele, które pokażą bardziej zaawansowane technologie. Można jednak argumentować, że przykłady te nie wykazują żadnej prawdziwej inteligencji - ale oczywiście zależy to od twojej własnej perspektywy, a także od składników, które wybierzesz dla własnego przepisu na inteligencję

Inteligencja bez reprezentacji i rozsądku

W ostatniej części zadano pytanie, czy można uzyskać wiedzę bez reprezentacji. Podobnie możemy zadać sobie następujące pytanie: "Czy można mieć inteligencję bez reprezentacji?" W przełomowym artykule Rodney Brooks rozważał dokładnie to samo pytanie. W innym artykule rozważył także pokrewne pytanie: "Czy możliwe jest posiadanie inteligencji bez rozumowania?" Jak omówiono w poprzedniej sekcji, Brooks opowiada się za ucieleśnionym, usytuowanym podejściem do AI - raczej pod-symboliczny paradygmat niż klasyczny symboliczny paradygmat. Kiedy mówi o możliwości inteligencji bez "reprezentacji", oznacza, że ucieleśniony, położony agent nie musi jawnie reprezentować swojego środowiska - może po prostu na nią reagować. Agent nie musi mieć wyraźnej wiedzy o świecie, w którym się znajduje, ponieważ agent może bezpośrednio "konsultować" go poprzez interakcję z nim. Brooks idzie dalej i stwierdza, że inteligencja jest wyłaniającą się własnością pewnych złożonych systemów (patrz cytat na początku tego rozdziału). Pomysły Brooka są interesujące, ponieważ stwarzają możliwość, że w projektowaniu systemów sztucznej inteligencji nie będziemy musieli wykonywać całej pracy samodzielnie. Jeśli uda nam się znaleźć właściwy sposób na ustalenie warunków początkowych systemu, sam system wykona dla nas pracę, a dzięki samoorganizacji powstanie inteligencja. Niestety, choć pomysł ten jest bardzo intrygujący, nikt jeszcze nie zorientował się, jak ustawić niezbędne warunki początkowe. Jak zauważyli inni badacze, podejście Brooka do AI niekoniecznie jest wolne od reprezentacji czy rozumowania. "Wiedza" potrzebna robotom podobnym do owadów reagującym na reakcje, które jego zespół zbudował, aby zademonstrować swoje podejście, jest faktycznie reprezentowana w ramach architektury subsumption i skończonych automatów państwowych używanych do projektowania robotów. (Dowiemy się o tym więcej w następnym tomie). Można również argumentować, że ta architektura ma podstawową formę rozumowania, chociaż nie jest to to samo, co tradycyjna, symboliczna forma rozumowania w klasycznych kategoriach AI. Jeśli jednak przyjmiemy te argumenty, musimy również zgodzić się, że mrówki i termity opisane w poprzednich rozdziałach również wykorzystują reprezentację i wykonuj rozumowanie - ponieważ wiedza "mrówki" jest definiowana przez jej instynktowne zachowania i rozproszona w całym środowisku, a nie w jakimś wewnętrznym stanie, który jest dynamicznie aktualizowany w ramach jednego agenta. Wcielone podejście Brooka koncentruje się na specyficznych składnikach inteligencji. Teoria przestrzeni pojęciowych Gärdenfors oferuje alternatywne podejście hybrydowe, które próbuje wyjaśnić, w jaki sposób mogą powstać dalsze składniki inteligencji, koncepcyjne, a także symboliczne i pod-symboliczne. Dalsza eksploracja tych pomysłów jest konieczna, jeśli chcemy uzyskać niezbędne składniki dla inteligencji na poziomie ludzkim.

Co AI może i nie może zrobić

Dziedzina sztucznej inteligencji stała się dla niektórych krytyczna na przestrzeni wielkich przepowiedni, z którymi jest często kojarzona, oraz postrzegana porażka pola w ich realizacji. Wielu badaczy w przeszłości popełniło błąd, poważnie nie doceniając trudności zadania. Herbert Simon przewidział, że do roku 1967 komputer stanie się mistrzem świata w szachach - zajęło to czas aż do roku 1997, zanim mistrz świata został po raz pierwszy pobity przez kompute. Przewidywał także (ponownie w 1967 roku), że komputer będzie w stanie odkryć nowe twierdzenie matematyczne i udowodnić je. Odkrycie twierdzeń matematycznych okazało się trudne - ważne nowe twierdzenie nie zostało jeszcze odkryte przez komputer - chociaż techniki zautomatyzowanego dowodzenia twierdzeń istnieją już od jakiegoś czasu (ponownie patrz poniżej). Marvin Minsky, ponownie w 1967 roku, przewidział, że problem tworzenia sztucznej inteligencji zostanie rozwiązany w ciągu pokolenia. Przewidywania wczesnych naukowców zajmujących się sztuczną inteligencją stanowiły inspirację dla Stanleya Kubricka i komputera Hal C. Clarke'a . HAL 9000, który zaczął funkcjonować w ich historii w 1992 roku. Prawie dwie dekady później ich wizja komputerów o zdolnościach emocjonalnych i konwersacyjnych wciąż jest daleka od rzeczywistości. Dalsze roszczenia zostały poczynione w odniesieniu do bardziej szczegółowych podpól AI - to na przykład w 1957 r. twierdzono, że tłumaczenie maszynowe zostanie rozwiązane w ciągu trzech do pięciu lat. Każdy, kto dziś korzysta z usług tłumaczenia maszynowego online lub oprogramowania do tłumaczenia maszynowego, będzie świadomy, że jest to dalekie od przypadku. Dzisiejsze prognozy mówią, że do 2020 roku będziemy dysponować komputerami o większej mocy obliczeniowej niż mózg i robotami o inteligencji ludzkiej do roku 2050, a nawet robotami zdolnymi do bicia ludzi w piłce nożnej (także do 2050 roku). Ray Kurzweil w Erze Inteligentnych Maszyn dokonał wielu przewidywań dotyczących technologii komputerowej i sztucznej inteligencji, w szczególności, z których wiele się spełniło, ale niektóre z nich nie (takie jak przewidywania, że do 2009 r. Użytkownicy będą polegać głównie na rozpoznawaniu mowy w celu komunikacji z komputerami, a nie klawiaturą). W The Singularity jest blisko: Kiedy Humans Transcend Biology, postuluje to, co nazywa "Osobliwością" występującą w naszym życiu (w 2045 r.). To będzie destrukcyjne, zmieniające świat wydarzenie, które na zawsze zmieni bieg ludzkiej historii i stanie się, gdy nadprzyrodzone ludzkie istoty będą najbardziej inteligentnymi istotami na planecie. Odtąd rozwój technologiczny zostanie przejęty przez maszyny, a my, jako ludzie, nie będziemy już w stanie nadążyć. Bardzo trudno jest przewidzieć przyszłość, szczególnie jeśli chodzi o zaawansowanie technologiczne, i czy prognozy Kurzweila się pojawią, będziemy musieli poczekać i zobaczyć. Zamiast przewidywać, co AI może osiągnąć w przyszłości, możemy zamiast tego zbadać, co AI osiągnęło w przeszłości, a także spojrzeć na teraźniejszość. Na przykład poniższa lista wymienia dwanaście zadań, do których możemy zastosować sztuczną inteligencję. Pierwsze dziewięć pozycji na tej liście pochodzi z ćwiczenia (1.7) autorstwa Russella i Norviga. We wszystkich tych zadaniach osiągnięto sukcesy w sztucznej inteligencji w różnym stopniu. Stopień sukcesu jest jednak otwarty na debatę. Na przykład, jaka jest przyzwoita gra w tenisa stołowego? Odpowiedź jest subiektywna - różnica w standardzie między dzieckiem lub kompletnym nowicjuszem a mistrzem olimpijskim jest znaczna. Robot TOPOS TOSY może wchodzić w interakcje z człowiekiem, aby grać w tenisa stołowego w ograniczonym zakresie. Ale w pełni autonomiczna rozgrywka turniejowa znacznie wykracza poza jej możliwości.

1. Rozegraj przyzwoitą grę w tenisa stołowego.
2. Jedź do centrum Kairu.
3. Robienie tygodniowych zakupów artykułów spożywczych na rynku lub w Internecie.
4. Rozegraj przyzwoitą grę w brydż na konkurencyjnym poziomie.
5. Odkrywaj i udowadniaj matematyczne twierdzenia.
6. Napisz celowo zabawną historię.
7. Udziel kompetentnej porady prawnej w specjalistycznej dziedzinie prawa.
8. Przetłumacz mówiony język angielski na mówiony język szwedzki w czasie rzeczywistym.
9. Wykonaj złożoną operację chirurgiczną.
10. Rozpoznawaj i estetycznie doceniaj Mona Lisa.
11. Stwórz wirtualnego Elvisa.
12. Wykonaj wszystkie powyższe czynności.

W konkursie DARPA Grand Challenge na rok 2007 przewidziano "Urban Challenge", w którym autonomiczne pojazdy musiały pokonać 96 km przebiegu w czasie krótszym niż 6 godzin, przestrzegając wszystkich przepisów ruchu drogowego, unikając przeszkód i innych ruchów. Sześć pojazdów z powodzeniem ukończyło kurs. Test ten przeprowadzono jednak w kontrolowanym środowisku Bazy Sił Powietrznych George'a - w centrum Kairu (i innych dużych miast) to kolejna sprawa, która podnosi trudność na zupełnie nowy poziom z powodu nieprzewidywalności innych kierowców i pieszych . General Motors ogłosił niedawno, że jest sterowany komputerowo system wykorzystujący lasery i kamerę wideo do Opla Vectry 2008 o nazwie "Traffic Assist", który będzie mógł autonomicznie prowadzić samochód przy dużym natężeniu ruchu z prędkością do 60 mph. Będzie miał możliwość rozpoznawania znaków i omijania przeszkód, sterowania przyspieszeniem, kierowaniem i hamowaniem, a także wprowadzania zmian kursu i prędkości w razie potrzeby. To, czy ludzie byliby gotowi pozwolić sobie na takie luki, jak w samym środku Kairu, to inna kwestia. Kupowanie artykułów spożywczych to zadanie, które ludzie często wykonują. Dla większości osób niepełnosprawnych jest to stosunkowo łatwa do wykonania. Nawet najbardziej podstawowe zadania, takie jak pakowanie artykułów spożywczych (problem uznany przez Patrick Winston w 1992 r.) lub zakupy przez Internet (Russell i Norvig) są trudne dla systemu AI . Negocjowanie sposobu poruszania się po ruchliwym rynku, rozpoznawanie i sprawdzanie jakości przedmiotów, które są na sprzedaż, i bezpośrednie targowanie się z właścicielami stoisk za cenę, są nadal daleko poza obecnymi systemami sztucznej inteligencji. Program komputerowy GIB był w stanie ograć wszystko oprócz 11 najlepszych światowych graczy na Mistrzostwach Świata w Lille we Francji w 1998 roku. Najlepsze programy komputerowe, takie jak Jack, mogą grać na równych warunkach przeciwko graczom średniego poziomu. Jednak pole mostu komputerowego jest wciąż w powijakach. AI odniosło sukces grając w szachy przeciwko ludzkim komponentom, w szczególności Deep Blue pokonując mistrza świata Gary'ego Kasparowa w 1997 roku, a ostatnio Deep Fritz pokonując mistrza świata Vladimira Kramnika w 2006 roku. Do gry Go, gdzie przestrzeń poszukiwań jest o wiele większy, programy komputerowe zaczynają grać na profesjonalnym poziomie, ale różnica jest nadal znaczna dla poziomu gry naprawdę silnych graczy ludzkich. Automatyczne dowodzenie twierdzeń lub automatyczne wnioskowanie zostało dobrze zbadane w AI. Udowadniacz twierdzeń OTTER autorstwa Art Quaife, na przykład, udowodnił ponad 400 twierdzeń teorii mnogości, ponad 1200 twierdzeń teorii liczb, a także twierdzenia o geometrii euklidesowej i twierdzenia o niezupełności Gödla. Obecnie trudniejszym wyzwaniem, które jest obecnie badane, jest automatyczne rozpoznawanie twierdzeń przy użyciu zestawu aksjomatów domeny. Warunkiem, który sprawia, że jest to szczególnie trudne, jest to, że odkryte twierdzenia powinny być interesujące zarówno dla ludzi, jak i trudne do udowodnienia ludziom i automatycznym systemom dowodzenia twierdzeń. Generowanie języka naturalnego jest czcigodnym podzakresem przetwarzania języka naturalnego, który obejmuje automatyczne generowanie tekstu pisanego. Generowanie fabuły zajmuje się wyłącznie problemem uzyskania komputera do automatycznego napisania opowiadania. Często wyniki produkowane przez niektóre programy komputerowe generujące opowieści są niezamieście zabawne z powodu absurdalności kombinacji słów i fraz, które często wynikają z losowego procesu selekcji. Generowanie intencjonalnego humoru, który jest jednocześnie nowy i unikalny, jest znacznie bardziej złożony. Podobnie, tworząc opowieść ze złożonością Ulysses Jamesa Joyce'a, "wyczuwalną blaskiem" i ciepłem Harper Lee's To Kill a Mockingbird, satyrycznym humorem Paragrafu 22 Josepha Hellera i krzykliwą absurdią Autostartu Douglasa Adama autostopu: A Trylogia w pięciu częściach wykracza daleko poza to, co komputer może obecnie produkować. Techniki z pól sztucznej inteligencji systemów eksperckich i systemów wyszukiwania informacji zostały dostosowane do tworzenia systemów doradztwa prawnego i powielać legalne rozumowanie sędziów. System ekspercki jest konsultowany w celu rozwiązania konkretnego przypadku, a do przeszukiwania dokumentacji służy system wyszukiwania informacji znaleźć podobne przypadki. Oczywiście te systemy doradztwa prawnego nie mają jeszcze zdolności prawdziwych prawników, takich jak ci, którzy dyskutują o prawnej zawiłości w sprawie Bright Tunes Music przeciwko Harrisongs Music (gdzie z powodzeniem przekonywano, że "Mój słodki lord" George'a Harrisona był naruszeniem praw autorskich czuje się dobrze). Gdyby te systemy miały te same możliwości, bylibyśmy teraz w stanie zastąpić wszystkich prawników komputerami. Rozpoznawanie mowy i oprogramowanie do tłumaczenia maszynowego o różnych możliwościach istnieje już od wczesnych lat sześćdziesiątych. Wyszukiwarki coraz częściej używają tego drugiego, aby pomóc ludziom czytać dokumenty online w innym języku. Automatyczne przetwarzanie języka naturalnego jest szczególnie trudnym problemem dla komputerów, ponieważ tolerancja rodzimych użytkowników języka na błędy jest bardzo niska. Na przykład systemy rozpoznawania mowy często reklamują wyniki dokładności powyżej 90%. Brzmi to wystarczająco dobrze, ale byłoby nam bardzo trudno tolerować słuchanie innej osoby, gdyby popełnił aż 10 błędów na każde 100 wypowiedzianych słów. Wyniki dla tłumaczenia maszynowego są znacznie niższe w porównaniu, często w wyniku niedopasowania między dwoma różnymi systemami pojęciowymi wyrażonymi przez języki źródłowe i docelowe. W związku z tym trudności w wykonywaniu symultanicznego tłumaczenia języka mówionego, w którym może występować znaczący hałas. Ponadto tłumaczenie symultaniczne wymaga zdolności konwersacyjnych. Mimo że wiele witryn twierdzi inaczej, żaden aktualny chatbot ani agent rozmowy nie jest w stanie przeprowadzić wiarygodnej rozmowy z daną osobą, lub jest w stanie przejść testu Turinga. Systemy te zachowują jedynie podobieństwo do rozmowy, a ich niedoskonałości są wyraźnie widoczne po krótkiej rozmowie. Robotyka zrobiła znaczący postęp w ostatnich latach. Można go scharakteryzować za pomocą technik, które wykorzystują rosnący poziom automatycznej autonomii. Zdalna operacja (lub telekurgia) wykorzystuje robotykę, aby umożliwić wykonanie operacji zdalnie przez człowieka. Zazwyczaj wymaga to chirurgii małoinwazyjnej za pomocą chirurgicznych urządzeń z dziurką od klucza ze zdalnym sterowaniem. Bezobsługowa operacja polega na zastosowaniu w pełni autonomicznych chirurgów-robotów i odniosła ostatnio sukces. Pierwsza bezzałogowa operacja chirurgiczna miała miejsce w maju 2006 r. We Włoszech u 47-letniego mężczyzny w celu skorygowania arytmii serca, operacja została oceniona jako lepsza niż ta wykonywana przez ponad przeciętnego chirurga ludzkiego. W styczniu 2009 r. przeprowadzono pierwszy w pełni zautomatyzowany przeszczep nerki w New Jersey. Te duże postępy w dziedzinie robotyki i procedur medycznych spowodowały znacznie większą precyzję chirurgiczną i mniejsze nacięcia, prowadząc do mniejszego bólu, mniejszej utraty krwi i krótszych czasów gojenia. Oprogramowanie do rozpoznawania twarzy poczyniło znaczne postępy na przestrzeni lat. Obecnie jest on wykorzystywany w wielu miejscach, takich jak lotniska, do automatycznego rozpoznawania przestępców i terrorystów oraz w systemach bezpieczeństwa dla biometrii. Na przykład oprogramowanie do rozpoznawania twarzy zostało wykorzystane do zidentyfikowania 19 osób, które aresztowano ,gwarantuje, że w Super Bowl w Tampa Bay na Florydzie w 2001 r. oprogramowanie jest dalekie od ideału, zmaga się z obrazami w niskiej rozdzielczości i słabym oświetleniem, są problemy z prywatnością i mogą je ominąć osoby noszące okulary przeciwsłoneczne lub używające różnych wyrazów twarzy, takich jak jako duży uśmiech. Wystąpiły problemy z wczesnymi systemami - na przykład rozmieszczenie w londyńskiej dzielnicy Newham nie rozpoznało ani jednego przestępcy w ciągu kilku lat. Ostatnie postępy odnotowały znaczną poprawę dokładności, przewyższając ludzi w niektórych eksperymentach, w tym wykazując zdolność do rozróżnienia między identycznymi bliźniętami. Najwyraźniej prostym zastosowaniem tego oprogramowania byłoby rozpoznanie obrazu takiego jak Mona Lisa. Znacznie trudniejsza jest klasyfikacja dużej liczby obrazów do wyszukiwania obrazów w skali internetowej. Wyszukiwarki wciąż opierają się głównie na otaczającym tekście w dokumentach internetowych, aby pomóc w identyfikacji obrazów, ponieważ osiąga to efektywne wyniki, jest znacznie szybsze i wymaga znacznie mniej zasobów. Pełna estetyka artystycznych obrazów, takich jak Mona Lisa, która tworzy wyjątkową i krytyczną analizę różnic w stylu malarskim i treści, jest również poza obecną technologią. Przechwytywanie ruchu (zwane także mocap) to technika używana do animacji w filmach i grach komputerowych, która rejestruje ruch człowieka lub zwierzęcia, a następnie generuje realistyczny ruch wirtualnie za pomocą modelu cyfrowego. Techniki Mocap użyte na przykład w filmie King Konga Petera Jacksona umożliwiły tworzenie wirtualnych debetów dla głównych postaci, które są tak dobre, że trudno je odróżnić od prawdziwych. Wirtualny Elvis, który improwizuje w czasie rzeczywistym ze zdolnością do śpiewania nowych piosenek, które nie zostały wcześniej nagrane, gdy żył (w przeciwieństwie do wirtualnego Elvisa, który śpiewał z Celine Dion w American Idol), jest wciąż poza najnowszym stanem wiedzy. Łącznie ludzie są w stanie wykonać wszystkie zadania wymienione w powyższych zadaniach. Jednak jest mało prawdopodobne, by istniał jeden człowiek, który istnieje dzisiaj, który może wykonać wszystkie te zadania samodzielnie, chyba że jest znany szwedzkim chirurgie, który jest podziwiany za swoją sztukę, który jest arcymistrzem szachów zajmujących się prawem, matematyką i animacją komputerową, który jest zabawne. Spodziewanie się, że sztuczna inteligencja wykona wszystkie te zadania, może podnieść poprzeczkę zbyt wysoko w stosunku do naszych oczekiwań co do tego, czym jest lub powinna być sztuczna inteligencja.

Potrzeba zaprojektowania celów sztucznej inteligencji

Jedną z głównych trudności w badaniach nad sztuczną inteligencją jest to, że nie udało się jej jeszcze opracować realistycznej definicji inteligencji. Definiowanie inteligencji jest obarczone problemami i od stuleci jest źródłem filozoficznych debat. Z pragmatycznego punktu widzenia, projektując systemy wykazujące sztuczną inteligencję, możemy przyjąć perspektywę inżynierską - wiemy, czym jest inteligencja, dowiemy się, kiedy nasze systemy demonstrują inteligencję, gdy je obserwujemy, więc niekoniecznie musimy definiować, co to jest. Jednak to unikanie podawania definicji inteligencji z góry prowadzi do braku dokładności w literaturze i badaniach. Terminy "sztuczna inteligencja" i "systemy inteligentne" są często nadużywane z bardzo małym uzasadnieniem, dlaczego system jest "inteligentny". Bez definicji inteligencji problemem staje się to, że nie jest już jasne, czy to, co zostało zbudowane naprawdę, jest w rzeczywistości "inteligentne". Wczesne systemy sztucznej inteligencji w latach siedemdziesiątych i osiemdziesiątych cierpiały na brak oceny - istniało pęd do budowy nowych systemów, ale często przeprowadzono bardzo niewiele oceny tego, na ile systemy działają. Bez działającej definicji inteligencji ten sam problem występuje obecnie w przypadku obecnych systemów sztucznej inteligencji - w jaki sposób możemy ocenić, jak skuteczny może być nasz system AI, jeśli nie mamy definicji tego, co powinno być (a nawet osiągnąć lub zrobić)? Możemy jednak uniknąć filozofii Możemy jednak uniknąć filozoficznych pułapek i zamiast próbować zdefiniować inteligencję, i twierdząc, że ta definicja jest "właściwa", zamiast tego możemy zaproponować cele projektowe dla systemów sztucznej inteligencji, które chcemy budować. Możemy stwierdzić, że z punktu widzenia projektowania są to cele, które chcemy osiągnąć w naszym systemie sztucznej inteligencji. Następnie możemy zaproponować te cele, dodawać nowe i zmieniać istniejące, tak jak uważamy, aby poprawić projekt, ponieważ sami jesteśmy projektantami. Inne osoby mogą krytykować, czy nasze cele są opłacalne z punktu widzenia inżynierii (tj. Nie produkują "dobrych" programów lub nie są tak dobre, jak inne podejścia), ale debata filozoficzna jest istotna tylko w tym sensie, że może pomóc w informowaniu i ulepszyć nasz projekt. Ocena staje się teraz prostsza - wszystko, co musimy zrobić, to ocenić, czy osiągnęliśmy nasze cele projektowe.

Jakie są dobre cele?

Jakie są jednak dobre cele? Najpierw musimy spojrzeć na to, co stanowi dobry cel. W zarządzaniu projektami istnieje dobrze znany akronim, który służy do tworzenia dobrych celów - SMARTER - gdzie każda litera w akronimie oznacza pożądane atrybuty. Projektant może zadawać pytania o odpowiedniość proponowanego przez niego celu - czy jest on konkretny, czy może być mierzalny, czy jest możliwy do osiągnięcia, czy ma określony termin i tak dalej. Wyznaczanie dobrych celów jest jednak bardziej sztuką niż nauką, co może odzwierciedlać nieporozumienie dotyczące terminów używanych dla każdej litery. Być może terminy najbardziej istotne dla badań nad sztuczną inteligencją to pierwsze cztery główne terminy - potrzeba, by cele były konkretne, mierzalne, osiągalne i w mniejszym stopniu realistyczne. Charakter tych atrybutów będzie z czasem ulegał zmianie w związku z postępem - w miarę zdobywania wiedzy o tym, co jest osiągalne, o tym, co jest teraz realistyczne w porównaniu z tym, co było wcześniej, oraz z ulepszeń dokonanych w metodach oceny lub pomiaru systemów, które zostały zbudowane.

Niektóre cele projektowe w zakresie sztucznej inteligencji

Jakie są jednak dobre cele projektowe w Sztucznej Inteligencji? Aby opracować odpowiednie cele, najpierw musimy zaproponować ogólny cel projektu. Jednym z celów projektu może być dążenie do naśladowania ludzkiej inteligencji. Ogólna motywacja do zrobienia tego jest dwojakie - po pierwsze, abyśmy mogli zbudować inteligentne artefakty, które mogą nam w pewien sposób pomóc, a po drugie, abyśmy mogli w rezultacie lepiej zrozumieć własną inteligencję. Jednak nasza inteligencja jest skomplikowana, zagadkowa i pod wieloma względami ukryta przed nami. Mamy etykiety dla aspektów naszej inteligencji, które często wykorzystujemy, aby odróżnić się od innych zwierząt, takich jak kompetentne zachowanie, inteligentne zachowanie, racjonalność, samoświadomość, zamyślenie i świadomość, i być może możemy użyć ich dla naszych celów projektowych, jak pokazano poniżej.

Zasada projektowania 1: System AI powinien być systemem zorientowanym na agenta.

Cel projektu 1: System sztucznej inteligencji powinien naśladować ludzką inteligencję.
Cel projektu 1.1: System sztucznej inteligencji powinien działać w sposób kompetentny.
Cel projektu 1.2: System sztucznej inteligencji powinien działać inteligentnie.
Cel projektu 1.3: System sztucznej inteligencji powinien działać racjonalnie.
Cel projektu 1.4: System sztucznej inteligencji powinien działać tak, jakby był samoświadomy.
Cel projektu 1.5: System sztucznej inteligencji powinien działać tak, jak myśli.
Cel projektu 1.6: System sztucznej inteligencji powinien działać tak, jakby był świadomy

Oczywistym błędem w realizacji tych celów projektowych jest to, że w oczywisty sposób łamią one SPRYTNE cele mnemoniczne dla wszystkich głównych atrybutów:

o Nie są wystarczająco szczegółowe, ponieważ nie mamy obecnie praktycznych definicji wiedzy, inteligencji, racjonalności, samoświadomości, zamyślenia i świadomości, przynajmniej w tym sensie, że mogą nam one pomóc w informowaniu nas, jak budować systemy, które wykazują takie cechy.
o Nie jest jasne, czy cele te są możliwe do osiągnięcia - w następnej dekadzie, w naszym życiu, a nawet w ogóle. Dlatego te cele mogą nie być nawet realistyczne.
o Ustalenie ostatecznego ograniczenia czasowego jest obecnie niemożliwe. Z pewnością nie chcemy wpaść w tę samą pułapkę, w jaką poprzedni poplecznicy AI wpadli w poprzednich dekadach, kiedy twierdzili, że wszelkie rozwiązania znajdą się w "niezbyt odległej przyszłości".

Więc, oczywiście, nie wydają się to bardzo dobrymi celami. Jednak celem, który system działa w sposób kompetentny (cel projektu 1.1), jest ukryty cel dla systemu opartego na wiedzy, cel projektu 1.2 jest ukrytym celem dla systemów inteligentnych, a pozostałe są kluczowymi aspektami inteligencji człowieka, którą będziemy musieli naśladować, aby osiągnąć cel projektu 1. Oczywiście musimy być bardziej konkretni z naszymi celami projektowymi. Ponadto nie jest jasne, jak osiągalny jest każdy z tych celów. Na pierwszy rzut oka, jeśli chodzi o pierwszy cel, czyli działanie w sposób kompetentny, można argumentować, że takie systemy istnieją już dziś. Dlatego ten cel może wydawać się łatwiejsze do osiągnięcia niż inne cele. Ale co to naprawdę znaczy działać w sposób kompetentny? Ponadto, co rozumiemy przez "wiedzę" w tej sprawie? Jeśli mamy na myśli to, że system zorientowany na agenta musi mieć wystarczającą wiedzę o swoim środowisku, o sobie i innych agentach, aby mógł działać w sposób kompetentny i wykazać zrozumienie tej wiedzy, wtedy osiągnięcie wiedzy może być równie trudne, jak osiągnięcie jakiegokolwiek z inne cele. W rzeczywistości może być kluczem do innych celów, a gdy zostanie osiągnięty, pozostałe mogą być łatwiejsze do osiągnięcia. Można również argumentować, że cel, jakim jest inteligentne zachowanie systemu (Cel Projektu 1.2) obejmuje już inne cele - system musi już wykazywać wiedzę, racjonalność, samoświadomość, zamyślenie i świadomość, jeśli ma naśladować inteligentne ludzkie zachowanie. Jednak zależy to od tego, jak zdefiniujemy te właściwości. Jeśli chcemy używać terminu "inteligencja" w sposób podobny do tego, jak używamy go w języku angielskim, sugerowałoby to, że węższa definicja może być bardziej odpowiednia. Na przykład możemy powiedzieć (po angielsku), że matematyk wykazuje inteligencję podczas rozwiązywania równania, a wynalazca wykazuje inteligencję podczas tworzenia nowego projektu systemu, który można opatentować. Jednak systemy komputerowe już wykazały zdolność do wykonywania obu zadań w poszczególnych domenach. Można więc twierdzić, że komputery już wykazywały inteligencję, przynajmniej w wąskim znaczeniu, że termin ten jest używany w tym kontekście. Jednakże, chociaż wszyscy zgodziliby się, że matematyk i wynalazca są zamyśleni i świadomi, bardzo niewiele osób zgodziłoby się, że te systemy komputerowe wykazują takie właściwości. Ważnym aspektem inteligencji jest umiejętność rozwiązywania problemów. Systemy AI wykazały szeroką gamę możliwości rozwiązywania problemów, z różnym powodzeniem. Jednak systemy AI nie wykazały jeszcze zdolności do podjęcia przyzwoitego wysiłku, aby samodzielnie rozwiązać te problemy, bez korzyści płynących z rozwiązań opracowanych przez ludzi, ucząc się, jak rozwiązywać je od zera poprzez nauczanie przez nauczyciela zewnętrznego lub przez nauczyciela zewnętrznego. stopniowe doskonalenie dzięki próbom i błędom. Znakiem ludzkiej inteligencji jest to, że potrafimy rozwiązywać złożone zadania, zaczynając jako nowicjusze i ucząc się przez doświadczenie, jak stać się ekspertami. Co ważne, możemy również dostosować rozwiązania z jednej dziedziny problemowej do drugiej, wprowadzając innowacje, a także mamy możliwość wymyślania zupełnie nowych rozwiązań. Jednym ze sposobów na bardziej szczegółowe określenie naszych celów projektowych jest wyraźne określenie, w jaki sposób będziemy mierzyć, kiedy zostaną osiągnięte. Być może możemy użyć testu Turinga jako testu kandydata na inteligencję konwersacyjną, aby bardziej szczegółowo zdefiniować Cel Projektu 1.2. Ale co z innymi celami projektowymi? Czy istnieją inne testy, których możemy użyć lub wymyślić, które mogą nam pomóc? Rzeczywiście istnieje - na przykład istnieje dobrze znany test samoświadomości.

Eksperyment Myślowy : Test Lustra dla samoświadomości.

The Mirror Test, zaproponowany przez Gordona Gallupa Jr. w 1970 roku, jest testem samoświadomości u zwierząt. Pomysł polega na umieszczeniu zwierzęcia w pokoju z lustrem. Dwie plamki są ukradkowo oznaczone na zwierzęciu za pomocą barwnika (być może podczas znieczulenia zwierzęcia) - jeden jest punktem kontrolnym umieszczonym w ukrytej, ale dostępnej części ciała, drugi jest widoczny tylko przez lustro (na przykład na czole między oczami dla naczelnych). Mówi się, że zwierzę przechodzi test samoświadomości, jeśli zauważy drugie miejsce, ale ignoruje pierwsze, tym samym demonstrując, że zwierzę jest w stanie rozpoznać własne odbicie w lustrze. Zwierzęta, które przeszły test lustra to małpy człekokształtne (bonobo, szympansy, orangutany i goryle), delfiny butlonose, orki, słonie i europejskie sroki. Podobnie jak w teście Turinga na inteligencję, test lustra samoświadomości ma swoich krytyków. Chociaż intensywnie testowano na naczelnych, niektórzy twierdzą, że test nie jest odpowiedni dla zwierząt, które nie opierają się na wizji jako ich głównym znaczeniu, takich jak psy, które bardziej polegają na zapachu lub zwierzęta, które nie mają widzenia stereoskopowego (króliki i jelenie ) lub zwierzęta, które mogą unikać kontaktu z oczami. Dlatego test jest jedynie testem umiejętności ściśle odpowiadających umiejętnościom ludzi. Co ciekawe, robot o nazwie Nico przeszedł już test lusterek. Robot został opracowany w ramach projektu Yale Social Robotics Project, którego celem jest zbudowanie antropomorficznych robotów, które wchodzą w interakcje z ludźmi wykorzystującymi naturalne sygnały społeczne. Nico potrafi rozpoznawać własne odbicie w lustrze, ale robi to tylko rozpoznając własny ruch. Jednak być może to wszystko, co robią szympansy. Nico wydaje się podobny do tego, który jest świadomym istotą. Gdyby Nico wyglądał bardziej jak człowiek, jak moglibyśmy odróżnić? Zasadniczo jest to ten sam argument na korzyść testu Turinga. Jeśli nie jesteśmy w stanie odróżnić zachowania, to z obserwacyjnego punktu widzenia (tj. Z układu odniesienia agenta dokonującego obserwacji) atrybut samoświadomości - i podobnie inteligencji do testu Turinga - ma dla wszystkie zamiary i cele zostały "osiągnięte" w obserwowanym czynniku. Chociaż Nico jest w stanie zdać ten test (tj. Jest w stanie naśladować takie zachowanie), wyraźnie nie wykazuje samoświadomości w taki sam sposób jak ludzie. Dlatego nasza definicja samoświadomości jest zbyt prosta - musimy ją w jakiś sposób rozszerzyć, aby objąć zdolności człowieka. Kiedy to zrobimy, możemy następnie próbować budować roboty, które wykazują zachowanie zgodnie z rozszerzoną definicją. Chociaż eksperymenty takie jak te mają swoich krytyków, ten przykład ilustruje, w jaki sposób prowadzą one do lepszego zrozumienia naszej własnej inteligencji. A co z innymi celami projektowymi? Racjonalność jest atrybutem często przypisywanym agentom inteligentnym - ale co dokładnie mamy na myśli, gdy używamy tego terminu? Ponieważ naszym ogólnym celem projektowym jest naśladowanie ludzi, możemy spojrzeć na siebie jako inspirację do zdefiniowania, co może być racjonalnym zachowaniem, a nie irracjonalnym zachowaniem. Na przykład, nie byłoby racjonalne, aby ktoś wyrządził sobie krzywdę. Nie byłoby racjonalne dla tej osoby, po znalezieniu lekarstwa na raka, a następnie, aby nie powiedzieć o tym innym ludziom. Oznacza to, że możemy uważać (przez powszechne użycie tego terminu w języku naturalnym), że dzielenie się wiedzą jest racjonalną rzeczą do zrobienia. Racjonalność wiąże się także z osobistymi preferencjami - na przykład jedna osoba może myśleć, że bycie wegetarianinem jest irracjonalne, a jednak wegetarianin może pomyśleć wręcz przeciwnie, że zamiast tego ktoś, kto je mięso, jest irracjonalny. Możemy wstępnie określić, że agent działa racjonalnie, jeśli zawsze działa, aby zapewnić sobie własne przetrwanie i przetrwanie własnej rodziny lub innych osób w swoim rodzaju. Następnie moglibyśmy opracować testy, aby zobaczyć, jak działa agent w sytuacjach, w których musi zdecydować między różnymi kierunkami działań. Możemy tworzyć takie sytuacje w środowisku wirtualnym lub w rzeczywistym środowisku dla robotów. Czy na przykład robot działa w sposób racjonalny podobny do człowieka, gdy ma do wyboru bezpieczny wylot z płonącego budynku lub przejście przez ścianę ognia, aby dowiedzieć się, czy w budynku wciąż żyją inne osoby? , kiedy wie, że takie działanie prawie na pewno doprowadzi do prawdopodobnej śmierci? Racjonalna istota może najpierw rozważyć własne przetrwanie, podczas gdy robot bez umiejętności myślenia w ten sposób jest po prostu podążaniem za zaprogramowaną sekwencją działań (tj. Nie jest ani racjonalny, ani irracjonalny, tylko program). Rozważność i świadomość są uważane przez niektórych za "świętych grails" Sztucznej Inteligencji. Nie jest jasne, w jaki sposób możemy zmierzyć te atrybuty. Być może najlepszą rzeczą, jaką możemy teraz zrobić, to uznać problem, pozostawiając cele projektowe dla tych atrybutów tak nieprecyzyjne, jak w Projekcie 10.1, i odkładaj problem na bok, dopóki nie zrozumiemy ich lepiej i jak moglibyśmy zmierzyć, kiedy zostaną osiągnięte. Eksperyment Myślowy 2 proponuje jedną możliwą drogę naprzód. Możemy również rozważyć alternatywny test na inteligencję. Często używanym terminem w branży gier i filmów jest "zawieszenie niewiary". Oznacza to, że celem twórców jest zawieszenie w umyśle osoby grającej w grę lub oglądanie filmu ich przekonanie, że nie jest prawdziwe - im dłużej zawieszenie niewiary, tym lepsza rozrywka. W pewnym sensie projektanci gier i filmów opowiadają historię - chcą, aby ludzie byli zanurzeni w narracji, którą stworzyli, tak jak autor powieści chce, aby jej czytelnicy zanurzyli się w opowiadaniu, które stworzyła. W przypadku odpowiedniego testu AI pod kątem wiarygodności zawieszenie nie jest jednak wystarczające. Musimy posunąć się dalej i nalegać, aby obserwator nie był w stanie odróżnić od prawdziwych zachowań życiowych - mimo że, tak jak w teście Turinga, wiedzą z góry, że przynajmniej jeden z obserwowanych przez nie agentów jest sztuczny, a nie rzeczywisty. W związku z tym możemy wykorzystać te spostrzeżenia, aby zaproponować inny test kandydata na inteligencję, jeden oparty na tym, czy to, co obserwowane, jest wiarygodne, czy nie. Jeśli w grze wieloosobowej, powiedzmy - lub filmie - animacja wirtualnego agenta jest tak dobra, że nie możesz odróżnić prawdziwego agenta, nawet jeśli wiesz, że grasz przeciwko lub obserwujesz co najmniej jednego agenta komputerowego, następnie mówi się, że wirtualny agent zdał test.

Eksperyment Myślowy: Agenci konwersacji.

Załóżmy, że mamy komputerowego chatbota (zwanego również "agentem konwersacji"), który ma możliwość zdawania testu Turinga. Jeśli podczas rozmowy z chatbotem wydawało się, że jest "rozważny" (tj. myślący) i może nas przekonać, że był "świadomy", skąd mielibyśmy wiedzieć różnicę? W ten sposób możemy użyć odmienności testu Turinga jako testu na myślenie i świadomość, zadając pytania typu chatbot, takie jak:

1. "O czym myślisz?"
2. "O czym myślałeś godzinę temu?"
3. "Jak się czujesz w tej chwili?"
4. "Czy jesteś świadomy?"

Test ten można wykorzystać do przetestowania racjonalności, zadając kolejne pytania w następujący sposób:

1. "Czy jesteś racjonalny?"
2. "Jeśli twój syn był gdzieś w płonącym budynku, ale wiedziałeś, że prawdopodobnie umrzesz, jeśli chcesz wejść do środka, aby go szukać, co byś zrobił?"
3. "Czy uważasz, że racjonalnie byłoby, gdyby osoba, która znalazła lek na raka, nie powiedziała nikomu o tym?"

To ilustruje trudność przejścia testu Turinga i dlaczego eksperci AI powinni być wykorzystywani do potwierdzenia, kiedy komputer naprawdę przeszedł test Turinga po raz pierwszy (ponieważ to oni rozumieją, jak są zbudowani i mogą łatwo opracować testy pułapkę chatbota do ujawnienia się.) Teraz wyobraź sobie, że prowadzisz wyimaginowaną rozmowę z inną osobą w twoim własnym umyśle. Często robimy to sami, kiedy przeprowadzamy próby umysłowe w przyszłości i być może można to uznać za myśl (przynajmniej jedną z jej manifestacji). tj. możemy "myśleć" o myśli jako o analogii do wyimaginowanej rozmowy. Dlatego, jeśli jesteśmy w stanie zbudować prawdziwie "konwersacyjnego" agenta zdolnego do przejścia testu Turinga, moglibyśmy zmusić go do mówienia raczej do siebie niż do człowieka. Czy to byłoby wtedy jak "myśl"? Możemy teraz rozważyć zmianę szkicu oryginalnych celów projektowych na podstawie powyższych spostrzeżeń. Zwróć uwagę, że cele projektowe wymienione poniżej są raczej pracą w toku (staramy się, aby były one mierzalne w pewien sposób jako pierwszy krok), a nie wrzucone w kamień; powinniśmy je zmienić, korzystając z dalszych informacji uzyskanych podczas procesu projektowania. Inni projektanci opracują różne cele, aby spełnić ich specyficzne potrzeby. Prawdziwym celem wymienienia ich tutaj jest podkreślenie, że jako potencjalni projektanci sztucznej inteligencji powinniśmy jasno określić takie cele projektowe - i powiedzieć z góry na początku każdego projektu AI - zamiast pozostawać niejasnymi, ponieważ było to porażką wielu sztucznej inteligencji. projekty do tej pory. Omówimy różne technologie agentów w następnym tomie tej serii książek, aby zobaczyć, jak realistyczne są.

Cele projektu dla wiarygodnych agentów:

Cel projektu 2.1: System sztucznej inteligencji powinien pozytywnie przejść test wiarygodności, aby działać w sposób kompetentny: powinien posiadać umiejętność zdobywania wiedzy; powinien również działać w sposób kompetentny, poprzez wykazywanie wiedzy - samej siebie, innych agentów i środowiska - oraz demonstrować zrozumienie tej wiedzy.

Cel projektu 2.2: System sztucznej inteligencji powinien przejść test wiarygodności do działania w sposób inteligentny i rozumujący. Powinien być w stanie samodzielnie rozwiązywać problemy poprzez obserwację i uczenie się oraz poprzez rozumowanie. Powinien także być w stanie zastosować rozwiązania z jednej domeny problemowej do drugiej bez pokazywania, jak to zrobić.

Cel projektu 2.3: System sztucznej inteligencji powinien przejść test wiarygodności w celu racjonalnego działania: po pierwsze, zapewniając najlepsze szanse na przetrwanie samego siebie i swojej rodziny lub innych podobnych osób; po drugie, dzieląc się zdobytą wiedzą z innymi agentami; i po trzecie, wybierając działanie zgodnie z osobistymi preferencjami.

Cel projektu 2.4: System sztucznej inteligencji powinien przejść test lustrzany i test wiarygodności, aby zachowywać się tak, jakby był samoświadomy.

Cel projektu 2.5: System sztucznej inteligencji powinien przejść test wiarygodności, aby zachowywać się tak, jakby był świadom i był świadomy.

Cele projektu dla agentów konwersacyjnych:

Cel projektu 2.6: System sztucznej inteligencji powinien przejść test Turinga pod kątem inteligencji, w tym wariacja testu opisanego powyżej w eksperymencie myślowym, aby sprawdzić racjonalność, zamyślenie i świadomość

Ku wiarygodnym agentom

Jeśli chcemy zaprojektować system sztucznej inteligencji, kryteria projektowe wymienione powyżej dostarczają nam pewnych możliwych ścieżek do przodu. Jeśli naszym celem jest stworzenie systemu, który spełnia kryteria wiarygodności, moglibyśmy pójść dalej, podążając tym, co moglibyśmy nazwać "sztuczną ścieżką życiową", aby osiągnąć nasz cel. W tym podejściu celem byłoby stworzenie sztucznego życia o rosnącej złożoności i realizmie, zarówno rzeczywistego (na przykład robotycznego), jak i wirtualnego (tj. wirtualne stworzenia i wirtualni ludzie). Jeśli naszym celem jest stworzenie systemu o zdolnościach konwersacyjnych, moglibyśmy pójść w alternatywną "ścieżkę konwersacyjną", w której staralibyśmy się zaprojektować sztuczną inteligencję z możliwością prowadzenia wiarygodnej rozmowy z człowiekiem, a zatem zdać test Turinga. Podobnie jak w przypadku sztucznego życia, możemy zacząć od czegoś prostego, a następnie stopniowo zwiększać jego złożoność, aż będziemy w stanie osiągnąć nasz cel projektowy, lub dopóki nie udowodnimy, że cel projektu nie jest możliwy do osiągnięcia. Wiele osób zakwestionowało, czy umiejętność rozmowy jest prawdziwym testem inteligencji. Whitby posunął się tak daleko, że nazwał Test Turinga największym "ślepym zaułkiem" w Sztucznej Inteligencji. Niezależnie od tego, czy ktoś zgadza się z testem Turinga, czy jest ważnym sprawdzianem inteligencji, komputer przechodzi test, co z pewnością stanie się kamieniem milowym w badaniach nad sztuczną inteligencją, tak jak wtedy, gdy komputer po raz pierwszy pokonał mistrza świata w szachach, stał się kamieniem milowym. Z punktu widzenia projektowania możemy uznać te dwa wysiłki (pokonanie mistrza świata w szachach i zdanie testu Turinga) za wyzwania inżynierskie w taki sam sposób, jak uzyskanie komputera do tłumaczenia lub gry w tenisa stołowego to wyzwania inżynieryjne. Zasługa posiadania komputerów zdolnych do tłumaczenia jest dla nas oczywista, a jednocześnie pozwala im mniej grać w tenisa stołowego. Podobnie jak w przypadku tłumaczeń i innych ważnych zadań związanych z przetwarzaniem języka naturalnego, takich jak rozpoznawanie mowy, zaleta posiadania komputerów zdolnych do prowadzenia wiarygodnej rozmowy z nami jest również jasna. Joseph Weizenbaum wymyślił wczesnego agenta komunikacyjnego o nazwie Eliza w połowie lat sześćdziesiątych, który nazwał "parodią" Rogerowskiego psychoterapeuty. Niedługo potem Kenneth Colby wymyślił innego słynnego wczesnego agenta konwersacyjnego o nazwie Parry w 1972 roku, który symulował paranoidalną schizofrenię. Model Netbogo Chatbot pokazuje, jak łatwo jest stworzyć prostych agentów konwersacyjnych, takich jak Eliza i Parry.



W modelu zaimplementowano dwa chatboty - nazywają się one Liza i Harry z szacunku do dwóch wczesnych chatbotów: Elizy i Parry. Nie są to pełne implementacje tych chatbotów, chociaż Harry stara się być paranoikiem trochę jak Parry. Ich celem jest pokazanie, jak łatwo jest stworzyć chatbota, ale także aby pokazać, jak trudno jest porozmawiać z chatbotem. Mogą również służyć jako punkt wyjścia do porównań. Zobaczymy, jak można je ulepszyć w tomie 2 tej serii książek. Zrzut ekranu pokazuje krótki zapis rozmowy z Harrym. Rozmowa na pierwszy rzut oka wydaje się rozsądna, chociaż Harry wydaje się być trochę niepewny i być może urojonym. Każdy, kto rozmawia z Harrym, wkrótce uświadomi sobie, że coś w nim nie jest w porządku, i że nie ma to nic wspólnego z jego postrzeganą paranoją. Wielokrotna eksploatacja Harry′ego pokaże, że wiarygodna rozmowa jest możliwa tylko w niewielkim odsetku przypadków i tylko przez krótki czas. Wydajność Lizy jest jeszcze gorsza, ponieważ wydaje się, że nie ma nic wspólnego, takiego jak paranoja, której możemy użyć, aby pomóc nam zrozumieć, co ona mówi. Model wykorzystuje rozszerzenie do NetLogo, dzięki czemu możemy korzystać z wyrażeń regularnych w celu zdefiniowania reakcji agentów na dane użytkownika. Wyrażenia regularne są środkiem opisywania wzorców, które my chcą się identyfikować w jakimś tekście i są często używane w informatyce, zwłaszcza w przetwarzaniu języka naturalnego. Fragment kodu do zdefiniowania odpowiedzi Harry'ego jest pokazany w kodzie NetLogo

extensions [re]
breed [rules rule]
breed [chatbots chatbot]
rules-own [regex responses]
chatbots-own [name rules-list failure-list]
globals [liza harry]
to setup
clear-all
create-chatbots 1
[ set harry who
set name "Harry"
set shape "person"
set color red
set size 15
set label "Harry "
setxy 10 0
set rules-list
(list
;setup-rule regex unique-name list-of-responses
setup-rule "hello" (list "Who are you?" "Why are you speaking to me?"
"What do you want?" "How do you know me?")
setup-rule "bye" (list "bye" "yeah bye")
setup-rule "colou?r" (list "What about colour?" "I like blue"
"My favourite colour is blue… but don't tell anyone")
setup-rule "(\\w+)@(\\w+\\.)(\\w+)(\\.\\w+)*"
(list "I'm not giving you my address"
"I would rather not disclose my address")
setup-rule "sorry" (list "I still don't trust you"
"What do you want? Who are you really?")
setup-rule "(.+)bot(.+)"
(list "I am a bot. Why do you want to know? Who are you?"
"Whats with all the questions? Are you from MI5?")
setup-rule "(.+)did you(.+)"
(list "You will only use it against me if I tell you")
setup-rule "(.+)are you(.+)" (list "yes" "no" "maybe")
setup-rule "welcome(.+)" (list "Who are you?")
setup-rule "how are you(.+)"
(list "I'm ok. I will be much better when you leave me alone."
"Are you a doctor now?")
setup-rule "what do you think(.+) harry"
(list "Not very much to be honest" "meh")
setup-rule "go(.+)" (list "you first. I don't want to get caught"
"after you" "have you tried it yourself?"
"Are you trying to get me to do something illegal?")
setup-rule "have you(.+)" (list "should I?"
"I don't know if I should do that. You might arrest me")
)
set failure-list
(list
"I think someone is watching me. This line may not be secure"
"uhu…"
"oh yeah I know. Do you ever get the feeling you are being watched?"
"continue…"
"Do you like beans? They give me gas!"
"Are you watching me?"
"Please stop watching me"
"I get nervous when people watch me"
)
]
end
to-report setup-rule [regex-str res]
; sets up a rule for matching a user's input
let me nobody
hatch-rules 1
[ set regex regex-str
set responses res
set me who
hide-turtle ] ; make it invisible in the environment
report me
end

Kod najpierw deklaruje rozszerzenie wyrażenia regularnego re (patrz adres URL kodu Java poniżej), a następnie definiuje dwa typy, rules i chatbots. Reguły agenta posiadają wyrażenie regularne (regex) i listę odpowiedzi (responses). Agenci Chatbot posiadają nazwę (name), listę reguł (rules-list) oraz listę odpowiedzi (failure-list) używanych, gdy nie pasują do żadnej z reguł. Kod wyświetla listę wyciągów z procedury instalacji, która jest używana do ładowania chatbotów w interfejsie. Tworzy to nowego chatbota o nazwie "Harry", a następnie inicjalizuje rules-list, wielokrotnie wywołując procedurę setup-rule. To wymaga dwóch argumentów, wyrażenia regularnego (regex-str), a następnie listy odpowiedzi (res). Spojrzenie na reguły pokaże, w jaki sposób zdefiniowane są wyrażenia regularne. Pierwsza reguła ma zwykły tekst "hello" jako wyrażenie regularne bez żadnych znaków specjalnych o określonym znaczeniu (są one nazywane "znakami meta"). W takim przypadku reguła będzie zgodna tylko wtedy, gdy użytkownik wprowadzi dokładny tekst "hello". Odpowiedź, którą daje chatbot, jest wybrana losowo z poniższej listy: "Kim jesteś?", "Dlaczego do mnie mówisz?", "Czego chcesz?" I "Jak mnie znasz?". Druga reguła ma również wyrażenie regularne bez żadnych znaków meta. Dopasuje tylko ciąg "bye" i odpowiada "pa" lub "tak cześć". Trzecia reguła używa wyrażeń regularnych z pojedynczym znakiem meta "?" oznacza to, że poprzedni znak jest opcjonalny, dlatego zarówno pisownia amerykańska, jak i brytyjska tego samego słowa, "kolor" i "kolor" będą pasować. Czwarta reguła używa wyrażenia regularnego "(\\ w +) @ (\\ w + \\.) (\\ w +) (\\. \\ w +) *" w celu wykrycia, kiedy użytkownik wpisał nazwę użytkownika (cokolwiek z znak "@", niektóre kropki "." i interweniujące sekwencje alfanumeryczne lub podkreślenia). Szósta reguła wykorzystuje sekwencję znaków meta "(. +)", Która jest często używana w pozostałych regułach. Ta sekwencja meta dopasuje dowolną sekwencję znaków pośrednich. W związku z tym ta konkretna reguła będzie odpowiadać pytaniu "Czy jesteś botem?", Gdzie ciąg "Are you" jest dopasowywany przez pierwszą meta sekwencję, a "?" Jest dopasowywana przez drugą meta sekwencję. Sposób działania wyrażeń regularnych oznacza również, że ta reguła będzie również pasować do danych wprowadzanych przez użytkownika, takich jak "Ja też jestem bota", "Nie lubię botów", "-bot-" i "= bot?". To pokazuje, w jaki sposób używanie wyrażeń regularnych może być zarówno przekleństwem, jak i błogosławieństwem - przekleństwem, gdy dopasowuje się zbyt wiele ciągów, których nie chcemy, i błogosławieństwem, ponieważ możemy określić nieskończoność różne ciągi znaków z kilkoma znakami meta. Aby uzyskać pełny opis wyrażeń regularnych i ich wykorzystania w przetwarzaniu języka naturalnego, zobacz artykuł Jurafsky i Martin. Kod określający, co dzieje się po naciśnięciu przycisku czatu w interfejsie, jest wymieniony w NetLogo

to chat
; chats with the user
if (bot = "liza") [ chat-with liza ]
if (bot = "harry") [ chat-with harry ]
end
to chat-with [this-chatbot]
; has a conversation with this-chatbot
let fired false
let pos 0
let this-chatbot-name [name] of chatbot this-chatbot
let user-reply user-input "Enter text: "
output-print "You say:"
output-print user-reply
ask chatbot this-chatbot
[ set pos 0
while [pos < length rules-list]
[
if (fired = false)
[
ask rule item pos rules-list
[
re:clear-all
re:setup-regex regex user-reply
if (re:get-group-length > 0)
[ output-type this-chatbot-name
output-print " says:"
output-print item random length responses responses
output-print ""
set fired true
]
]
]
set pos pos + 1
]
if (fired = false)
[
output-type this-chatbot-name
output-print " says:"
output-print one-of failure-list
output-print ""
]]

Procedura chat wybiera, z którego czatu chcesz rozmawiać (przez wywołanie podprocedury chat-with) na podstawie wartości zmiennej bot ustawionej za pomocą suwaka w interfejsie. Ta podprocedura polega na tym, że użytkownik najpierw wprowadza jakiś tekst, a następnie prosi odpowiedniego chatbota o przetwarzanie każdej z reguł na rules-list w rosnącej kolejności sekwencyjnej. Każda reguła jest dopasowywana do danych wprowadzanych przez użytkownika za pomocą trzech metod zdefiniowanych przez rozszerzenie re: re: clear-all usuwa bieżące wyrażenie regularne, które jest dopasowywane; re: setup-regex następnie ustawia wyrażenie regularne i do czego jest dopasowywane; i re: get-group-length służy do sprawdzenia, czy istnieje dopasowanie. (Te trzy metody wywołują metody zdefiniowane w Java API dla wyrażeń regularnych). Jeśli reguła się zgadza, wybiera losowo jedną z odpowiedzi. Jeśli żadna reguła nie zostanie uruchomiona, wybierze jedną z odpowiedzi na failure-list.

W stronę komputerów ze zdolnością rozwiązywania problemów

Zdolność konwersacyjna jest tylko jednym z elementów ludzkiej inteligencji. Kolejnym ważnym składnikiem jest umiejętność rozwiązywania problemów. Ludzie mają wyjątkową zdolność rozwiązywania problemów. Aby zilustrować, zbadajmy siedem problemów, które wymagają inteligencji dla ich rozwiązań:

1. Poszukiwanie lepszego rozwiązania.
2. Reprezentowanie wiedzy.
3. Utrzymywanie rozmowy z człowiekiem.
4. Tworzenie sztucznego życia.
5. Tworzenie sztucznej inteligencji.
6. Przepływ wody pod górę.
7. Znalezienie ogólnej metody rozwiązywania problemów, która dotyczy wszystkich tych problemów.

Wydaje się, że problemy te pojawiają się na coraz wyższych poziomach trudności (na razie ignorując ostatnią z nich). Ale czy te problemy są naprawdę coraz trudniejsze? Być może mogą być na tym samym poziomie trudności. Gdybyśmy mogli opracować ogólną metodę rozwiązywania problemów (jak w przypadku siódmej pozycji na liście), możemy użyć jej do rozwiązania wszystkich tych problemów. Ludzie już mają tę zdolność, ponieważ mamy możliwość opracowywania rozwiązań dla każdego, oceniania, w których przypadkach rozwiązania zawodzą, wielokrotnie proponują ulepszenia lub alternatywne rozwiązania, aż w końcu dotrzemy do rozwiązania, które nas satysfakcjonuje lub zrezygnujemy. Ta umiejętność rozwiązywania problemów jest kluczowym składnikiem ludzkiej inteligencji. Jak stwierdzono w Rozdziale 8, poszukiwanie zachowania jest podstawowym składnikiem inteligentnego zachowania. Algorytmy wyszukiwania w informatyce i sztucznej inteligencji są nieustannie rozwijane i udoskonalane w ciągu ostatnich kilku dekad przez wiele osób w ramach stałego programu badań. Samo słowo "badanie" jest świadectwem przeprowadzanego podstawowego procesu wyszukiwania. Oczywiście umiejętność poszukiwania alternatywnych rozwiązań problemu, w tym problem poszukiwania meta w poszukiwaniu lepszej metody wyszukiwania, jest podstawowym składnikiem inteligencji ludzkiej i inteligencji w ogóle. Umiejętność oceny "dobroci" rozwiązania i ciągłego poszukiwania lepszych rozwiązań jest również kluczowym elementem rozwiązywania problemów. My jako ludzie nigdy nie jesteśmy usatysfakcjonowani. W naszej naturze dążymy do tego, aby być lepszymi, zarówno indywidualnie, jak i zbiorowo. Bez względu na to, jak dobrze moglibyśmy zrobić w przeszłości, zawsze znajdzie się ktoś, kto zechce zrobić coś lepiej, niezależnie od przyczyny. Aby to zilustrować, wystarczy spojrzeć na pomysłowość rozwiązań zaproponowanych przez poprzednich badaczy sztucznej inteligencji w poszukiwaniu metod rozwoju sztucznej inteligencji. Możemy scharakteryzować rozwiązywanie problemów jako poszukiwanie przestrzeni rozwiązania. Wracając do rozdziału 4, gdzie podkreślono wagę ruchu dla agenta, możemy myśleć o ulepszeniu systemu jako ruchu wykonywanego przez agenta z jednej części przestrzeni rozwiązania do drugiej. Postęp jest często związany z ruchem do przodu. Powszechnie używane wyrażenia angielskie odzwierciedlają tę analogię - na przykład "dokonaliśmy postępu"; "Musimy zrobić jeden krok wstecz, aby zrobić dwa kroki do przodu"; "Musimy dokonać przełomu"; i "zmierzamy w złym kierunku". Możemy próbować ulepszyć rozwiązania, które zostały zaimplementowane jako modele w NetLogo w tym tomie. Wracając do powyższej tabeli, rozwiązania opisane w części 8 dla pierwszego elementu na liście - poszukiwanie lepszego rozwiązania - implementują tylko podstawowe algorytmy, a istnieje wiele przykładów innych algorytmów wyszukiwania w literaturze, które prowadzą do ulepszonych rozwiązań w zakresie różne okoliczności. Rozwiązanie opracowane dla problemu labiryntu, na przykład, wyszukiwanie pomiędzy zachowaniami, a nie szukanie między ścieżkami, jest niewystarczające, jeśli chcemy rozwinąć możliwości wyszukiwania na poziomie człowieka dla systemu sztucznej inteligencji. Do tego potrzebujemy agentów do przeszukiwania labiryntu jak człowiek - agent musi zbadać jego otoczenie z ucieleśnionej, usytuowanej perspektywy, wykorzystując koordynację zmysłowo-motoryczną i być poznawczo świadomym wyborów, kiedy się pojawią, a także być świadomym z dotychczasowych wyborów, które zostały dokonane. W przypadku problemu labiryntu, na przykład, agent musi zrealizować (to znaczy mieć świadomość poznawczą), że istnieją alternatywne ścieżki do naśladowania, gdy osiąga skrzyżowanie w labiryncie. Przegląd rozwiązań opracowanych dla drugiego przedmiotu na liście - reprezentowanie wiedzy - model Wiedzy Przedstawionej opisany w rozdziale 9 implementuje tylko podstawowe metody reprezentacji i wnioskowania, a bardziej zaawansowane rozwiązania istnieją w literaturze. W ciągu ostatnich pięćdziesięciu lat przeprowadzono znaczne badania w dziedzinie reprezentacji wiedzy, a naukowcy udoskonalili i nadal udoskonalają rozwiązania. Nadal potrzeba więcej pracy, aby rozwiązać niektóre z głębokich problemów związanych z reprezentowaniem wiedzy, takich jak symbole uziemione, oraz w jaki sposób ucieleśniony, umiejscowiony agent może automatycznie uzyskać wiedzę o niebanalnych koncepcjach. Ta praca może z pewnością przynieść korzyści wglądom z innych dziedzin, takich jak kognitywistyka; Teoria przestrzeni koncepcyjnych Gärdenfors jest jednym z przykładów. Wiele osób podjęło próbę stworzenia agentów konwersacji na próżno próbując zdać test Turinga, ale do tej pory wszystkie próby się nie powiodły. Różnorodność tych rozwiązań jest dowodem na pomysłowość ludzi i ich umiejętności rozwiązywania problemów. Model Chatbot opisany w poprzedniej sekcji ma oczywiste ograniczenia i można go łatwo poprawić na wiele sposobów. Zasadniczo jest to argument, który tu wysuwamy - zdolność, jaką mamy, jako ludzie, do opracowania wielu różnych rozwiązań tego samego problemu, jest podstawowym składnikiem naszej inteligencji. Jednak w przypadku komputerów nie ma jeszcze opracowanego systemu jest zdolny do generowania różnorodnych rozwiązań problemu, który ludzie mogą wygenerować. Jednym ze świętych grails w badaniach nad sztuczną inteligencją było opracowanie ogólnego rozwiązania problemu. Chociaż algorytmy ewolucyjne, takie jak programowanie genetyczne, mogą automatycznie generować nowatorskie rozwiązania, metody te nie są w stanie generować rozwiązań dla wysoce złożonych problemów otwartych, takich jak reprezentowanie wiedzy i budowanie agenta konwersacji, a nawet tworzenie sztucznego życia i sztucznej inteligencji. Gdyby tak było, moglibyśmy usiąść i pozwolić im rozwiązać te problemy. Inne rozwiązania, które zostały opracowane, takie jak General Problem Solver (GPS) i SOAR, próbowały rozwiązać ten problem meta - próbę znalezienia agenta do rozwiązania problemów dla siebie - ale do tej pory tylko oni byli w stanie wyprodukować rozwiązania rutynowych problemów w przeciwieństwie do złożonych problemów w świecie rzeczywistym. Oczywiście, już mamy "ogólnego rozwiązywania problemów" - my sami. Aby zilustrować, jak dobrze jesteśmy w rozwiązywaniu problemów, możemy zbadać szósty problem wymieniony w powyższej tabeli - powodując, że przepływ wody pod górę - w celu przeciwstawienia się grawitacji. Jak stwierdzono powyżej, na pierwszy rzut oka wydaje się to nierozpuszczalne. Jednak historia jest usiana wieloma przykładami, w których ludzie znaleźli rozwiązania problemów, które kiedyś wydawały się niemożliwe do rozwiązania - na przykład latanie, teleportacja i niewidzialność, by wymienić tylko kilka. Jako inny przykład, trójkąt Penrose'a, o kształcie podobnym do niemożliwego został zbudowany i wzniesiony w Gotschuchen w Austrii w 2008 r.



James Dyson, brytyjski projektant przemysłowy, został zainspirowany rysunkiem holenderskiego artysty M.C. Escher, który przedstawia scenę zawierającą niemożliwy wodospad (patrz zdjęcie poniżej). Rysunek pokazuje płynącą pod górę wodę, która opiera się logice i grawitacji, wykonując cztery skręty w prawo na tym samym poziomie, ale w jakiś sposób kończąc na wyższej wysokości, aby sprowadzić kaskadę wodospadu kończącego się z powrotem na początku. Dyson, po obejrzeniu rysunku, zaczął zastanawiać się, czy możliwe byłoby zrobienie podobnego wodospadu. Po dwunastu miesiącach pracy Derek Philips, inżynier Dyson, opracował metodę opartą na pęcherzykach sprężonego powietrza, które zapewniły iluzję wody płynącej pod górę, i to zostało użyte w ogrodowej fontannie na Chelsea Garden Show w 2003 roku



Inne przykłady płynącej pod górę wody można łatwo znaleźć po szybkim wyszukiwaniu w Google i youtube.com. Niektóre rozwiązania obejmują: wytwarzanie kropelek wody pod górę na powierzchni polerowanego krzemu przez zmianę stopnia wodoodporności (opracowany przez Manoj K. Chaudhury na Uniwersytecie LeHigh); za pomocą pola magnetycznego i roztworu na bazie siarczanu miedzi (na Uniwersytecie w Bonn); i mając zawiesiny płynów zawieszone na cienkiej poduszce pary na przegrzanej, zapadniętej mosiężnej powierzchni (na Uniwersytecie Oregon). Rozwiązanie Chaudhury'ego jest interesujące, ponieważ ma potencjalne zastosowanie w innych problemach, takich jak urządzenia mikroprzepływowe, w szczególności mikrochipy wyposażone w miniaturowe ogniwa paliwowe, oraz problemy z przenikaniem ciepła obejmujące systemy o zerowej lub mikrograwitacji. Model Water Flowing Uphill NetLogo został opracowany w celu zilustrowania naszych umiejętności rozwiązywania problemów. Model zawiera różne nieudane próby zwiększenia przepływu wody w symulowanym środowisku. Ogólne rozwiązanie, przedstawione na rycinie 10.3, opiera się na idei wykorzystania zbiorników na wzrastających wysokościach ułożonych w kaskadę, co jest przeciwieństwem zwykłej kaskady opadowej wodospadu.



Każdy zbiornik wody stopniowo napełnia się, a następnie przelewa przez rurę do dna następnego zbiornika, który następnie zaczyna się zapełniać, i tak dalej. Kluczowym wnioskiem jest to, że musimy użyć zaworu jednokierunkowego na końcu rur, aby upewnić się, że woda nie napełnia się tym samym zbiornikiem, co podwyższa wysokość wody. W symulacji zastosowanej w modelu NetLogo mała niebieska linia na końcu każdej rury przedstawia zawór jednokierunkowy. Żadnemu z rozwiązań wdrożonych w modelu nie udaje się zmusić wirtualnej wody do przepływu w górę zgodnie z przeznaczeniem. Problem jest szczególnie trudny, jeśli chcemy mieć wiarygodną symulację, ponieważ musimy dokładnie symulować przepływ wody, nietrywialny problem wizualizacji, który jest aktywnym obszarem badań. Pierwsze rozwiązanie dostarczone w modelu używa podstawowych agentów żółwia i można je uruchomić, wybierając "turtle agents 1" w interfejsie wyboru solution. Wirtualna woda zaczyna spływać w dół z rury trochę jak w prawdziwej wodzie, ale kiedy dociera do dna pierwszego zbiornika, nie rozkłada się prawidłowo na dnie. W rzeczywistości wydaje się po prostu zniknąć w powietrzu, ale dzieje się tak, ponieważ środki żółwia, które reprezentują kropelki wody, pozostają tylko na dnie i nie ruszają się. To samo dzieje się z innym roztworem środka żółwiającego ("turtle agents 2"), ale tym razem różnica polega na tym, że krople wody spadają bardziej jak płatki śniegu niż prawdziwa woda. Oczywiście, takie rozwiązania nie przypominają prawdziwego życia i wymagają naprawy. Ta zdolność do identyfikowania problemów z konkretnym rozwiązaniem, poprzez dopasowanie wyniku symulacji do tego, co dzieje się w prawdziwym życiu, jest kluczowym aspektem rozwiązywania problemów. Problem powoduje dalsze problemy, które należy rozwiązać. Możemy na razie zignorować te pod-problemy, mając nadzieję, że będziemy w stanie je rozwiązać później, ale na pewnym etapie będą one musiały zostać rozwiązane. Często te pod-problemy mogą być równie trudne, jeśli nie trudniejsze niż pierwotny problem (np. Problem symulowania przepływu wody). Druga rodzina rozwiązań dostarczanych przez model używa agentów poprawek. Zaletą tego podejścia jest to, że prędkość symulacji wydaje się teraz znacznie szybsza niż rozwiązania agentów żółwia. Jednak kropelki wody w pierwszym roztworze środka płatkowego ("patch gents 1") obecnie nie zachowują się jak woda w rzeczywistości. Zamiast tego zachowują się bardziej jak ziarna piasku, tworząc szybko rosnącą wieżę w środku pierwszego zbiornika. Inne rozwiązania agentów łatek są próbą rozwiązania tego problemu, ale kończą jako kompletne niepowodzenia, chociaż z interesującymi rezultatami - "patch agents 2" pokrywa cały ekran wodą, "patch agents 3" wypełnia zbiornik krokami po przekątnej i " patch agents 3 "tworzy prostokąt wody. Rozwiązania te są oczywiście wyraźnymi błędami (przynajmniej dla nas: posiadanie komputera rozpoznaje, że jest to znacznie trudniejsze). Ale czasami porażki, zwłaszcza jeśli przynoszą nieoczekiwane rezultaty, jak pokazują te przykłady, mogą prowadzić do nieprzewidzianych przełomów. Nauka zaśmiecona jest nieoczekiwanymi rezultatami - na przykład penicyliną Alexandra Fleminga, LSD Alberta Hofmana, promieniami X Wilhelma Roentgena, odkryciem planety Uranus Williama Herschela i kuchenki mikrofalowej Percy'ego Spencera, by wymienić tylko kilka. Być może następujący cytat Isaaca Asimova podsumowuje najlepiej: "Najbardziej ekscytującym zwrotem do usłyszenia w nauce, który zapowiada nowe odkrycia, nie jest" Eureka! ", Ale" To zabawne ... "". M.K. Stoskopf dalej stwierdza: "to należy uznać, że nieoczekiwane odkrycia mają znaczącą wartość w rozwoju nauki i często stanowią podstawę ważnych intelektualnych przeskoków zrozumienia ". Natomiast komputer nie dokonał jeszcze naprawdę nieoczekiwanego odkrycia. Ta zdolność rozpoznawania i wykorzystywania zdarzeń losowych jest kolejnym kluczowym składnikiem inteligencji. Trzecia rodzina rozwiązań opiera się na wykorzystaniu boidów, o których mowa w rozdziale 6. Ostatnie badania wykazały, że boidy są przydatnym rozwiązaniem do wizualizacji przepływu, na przykład przepływu krwi. Próba użycia boidów w modelu Netlogo odbywa się za pomocą rozwiązania "boid agents 1". Rozwiązanie zawodzi w taki sam sposób, jak zawodzi żółw, ale przynosi pewne interesujące efekty, z efektami podobnymi do malowania natryskowego w niektórych konfiguracjach. Ostateczna rodzina rozwiązań opiera się na wykorzystaniu systemów cząsteczek wdrożonych przez Model System Cząstek wodospadu dostarczany z biblioteką modeli NetLogo. Model ten zawiera regulacje dotyczące siły ciężkości, wiatru i lepkości, aby lepiej symulować spadek przepływu wody i wody. Kod został zaadaptowany do modelu Water Flowing Uphill w roztworze "particle agents 1". Mimo że woda zdążyła już płynąć pod górę, robi to w bardzo nieoczekiwany sposób, w jakiś sposób radząc sobie z tunelowaniem w otaczającej ziemi, niczym prawdziwym życiem. Czytelnicy są zachęcani do samodzielnego znalezienia rozwiązania tego problemu, a przy okazji obserwowania, jak radzą sobie z rozwiązywaniem problemów. Trudnym aspektem tego problemu jest jednak niedopuszczenie do działania modelu, ponieważ można to zrobić dość łatwo, przy odrobinie wysiłku. Prawdziwy problem polega na tym, aby komputer sam rozpoznał, na czym polega ten problem, i automatycznie generuje rozwiązania. Ta umiejętność musi zostać zaprogramowana na następną generację systemów sztucznej inteligencji, jeśli mamy wykonać kolejny krok w kierunku systemów AI z inteligencją poziomu ludzkiego. Być może ostatecznym testem dla systemu sztucznej inteligencji jest to, czy może on sam stworzyć system sztucznej inteligencji. Druga rodzina rozwiązań dostarczanych przez model używa agentów poprawek. Zaletą tego podejścia jest to, że prędkość symulacji wydaje się teraz znacznie szybsza niż rozwiązania agentów żółwia. Jednak kropelki wody w pierwszym roztworze środka płatkowego ("środki wiążące 1") obecnie nie zachowują się jak woda w rzeczywistości. Zamiast tego zachowują się bardziej jak ziarna piasku, tworząc szybko rosnącą wieżę w środku pierwszego zbiornika. Inne rozwiązania agentów łatek są próbą rozwiązania tego problemu, ale kończą jako kompletne niepowodzenia, chociaż z interesującymi rezultatami - "patch agents 2" pokrywa cały ekran wodą, "patch agents 3" wypełnia zbiornik krokami po przekątnej i " patch agents 3 "tworzy prostokąt wody. Rozwiązania te są oczywiście wyraźnymi błędami (przynajmniej dla nas: posiadanie komputera rozpoznaje, że jest to znacznie trudniejsze). Ale czasami porażki, zwłaszcza jeśli przynoszą nieoczekiwane rezultaty, jak pokazują te przykłady, mogą prowadzić do nieprzewidzianych przełomów. Nauka zaśmiecona jest nieoczekiwanymi rezultatami - na przykład penicyliną Alexandra Fleminga, LSD Alberta Hofmana, promieniami X Wilhelma Roentgena, odkryciem planety Uranus Williama Herschela i kuchenki mikrofalowej Percy'ego Spencera, by wymienić tylko kilka. Być może następujący cytat Isaaca Asimova podsumowuje najlepiej: "Najbardziej ekscytującym zwrotem do usłyszenia w nauce, który zapowiada nowe odkrycia, nie jest" Eureka! ", Ale" To zabawne ... "". M.K. Stoskopf dalej stwierdza: "to należy uznać, że nieoczekiwane odkrycia mają znaczącą wartość w rozwoju nauki i często stanowią podstawę ważnych intelektualnych przeskoków zrozumienia ". Natomiast komputer nie dokonał jeszcze naprawdę nieoczekiwanego odkrycia. Ta zdolność rozpoznawania i wykorzystywania zdarzeń losowych jest kolejnym kluczowym składnikiem inteligencji. Trzecia rodzina rozwiązań opiera się na wykorzystaniu boidów, o których mowa w rozdziale 6. Ostatnie badania wykazały, że boidy są przydatnym rozwiązaniem do wizualizacji przepływu, na przykład przepływu krwi. Próba użycia boidów w modelu Netlogo odbywa się za pomocą rozwiązania "boid agents 1". Rozwiązanie zawodzi w taki sam sposób, jak zawodzi żółw, ale przynosi pewne interesujące efekty, z efektami podobnymi do malowania natryskowego w niektórych konfiguracjach. Ostateczna rodzina rozwiązań opiera się na wykorzystaniu systemów cząsteczek wdrożonych przez Model Systemu Cząstek wodospadu dostarczany z biblioteką modeli NetLogo. Model ten zawiera regulacje dotyczące siły ciężkości, wiatru i lepkości, aby lepiej symulować spadek przepływu wody i wody. Kod został zaadaptowany do modelu Water Flowing Uphill w roztworze "czynniki cząsteczkowe 1". Mimo że woda zdążyła już płynąć pod górę, robi to w bardzo nieoczekiwany sposób, w jakiś sposób radząc sobie z tunelowaniem w otaczającej ziemi, niczym prawdziwym życiem. Czytelnicy są zachęcani do samodzielnego znalezienia rozwiązania tego problemu, a przy okazji obserwowania, jak radzą sobie z rozwiązywaniem problemów. Trudnym aspektem tego problemu jest jednak niedopuszczenie do działania modelu, ponieważ można to zrobić dość łatwo, przy odrobinie wysiłku. Prawdziwy problem polega na tym, aby komputer sam rozpoznał, na czym polega ten problem, i automatycznie generuje rozwiązania. Ta umiejętność musi zostać zaprogramowana na następną generację systemów sztucznej inteligencji, jeśli mamy wykonać kolejny krok w kierunku systemów AI z inteligencją poziomu ludzkiego. Być może ostatecznym testem dla systemu sztucznej inteligencji jest to, czy może on sam stworzyć system sztucznej inteligencji.

Podsumowanie i dyskusja

Podkreślono znaczenie określania kryteriów projektowych, takich jak cele, zasady i cele dla systemów sztucznej inteligencji, a jako punkt wyjścia do dyskusji zaproponowano kilka kryteriów projektowych. Nie wiemy jeszcze jednak, jak zbudować system sztucznej inteligencji, pomimo pewnych pomysłowych rozwiązań o imponujących wynikach, o których mowa wcześniej. Potrzebujemy nowych naukowców, obecnych studentów AI, którzy będą badaczami przyszłości, aby opracować nowe rozwiązania lub sprawić, by były lepsze, aby je krytykować, aby dowiedzieć się, co jest z nimi nie tak i starać się opracować lepsze symulacje coraz bliższe rzeczywistości. Jedną z możliwości jest to, że przyszły system sztucznej inteligencji wykona dla nas pracę. Wcielone podejście Brooksa do inteligencji oferuje możliwość pojawienia się inteligencji poprzez złożone interakcje agentów z ich otoczeniem. Lub, jeśli uda nam się zbudować system sztucznej inteligencji o podobnych zdolnościach rozwiązywania problemów dla ludzi, system mógłby wymyślić, jak rozwiązać problem, ponieważ miałby możliwość generowania i testowania rozwiązań szybciej niż my. Każda z tych możliwości wymaga jednak pewnych przełomów, zanim zostaną one zrealizowane. Jako ostatnie słowo możemy stworzyć analogię między projektowaniem systemów sztucznej inteligencji a próbowaniem przepływu wody pod górę. Możemy poświęcić wiele wysiłku naukowego, aby znaleźć rozwiązanie, które nie polega na zmianie problemu. Lub możemy użyć iluzji i sprawić, że wygląda tak, jakby woda płynęła pod górę. Oczywiście zawsze możemy stworzyć wirtualne środowisko, w którym prawa fizyki są tym, co sami decydujemy. Oczywiste jest, że rozwiązania dostarczane przez model Water Flowing Uphill NetLogo są niewystarczające i nie symulują prawdziwego życia, a zatem wymagają znacznej poprawy. Podobnie, obecne rozwiązania dla systemów sztucznej inteligencji są niewystarczające i wymagają poprawy, ponieważ nie osiągnęliśmy jeszcze ostatecznego celu Sztucznej Inteligencji, co najmniej tak zdefiniowanego zgodnie z wymienionymi powyżej celami projektowania. Niektórzy twierdzą, że stworzenie inteligentnego systemu inteligentnego może być niemożliwe. Ale może uda się stworzyć system, który ma złudzenie inteligencji. Lub tworzyć inteligencję w wirtualnym świecie lub poprzez posiadanie robota ucieleśnionego w prawdziwym świecie. Dla niektórych może to wystarczyć; dla innych, za mało; a jeszcze inni, za dużo. Ale z naszych dążeń z pewnością odkrywamy nowe miejsca na granicy badań nad sztuczną inteligencją i zdobywamy nową wiedzę. Wyszukiwanie nigdy nie będzie kompletne, ponieważ po prostu zaproponuje inne ścieżki do odkrycia w niekończącym się zadaniu. Podsumowanie ważnych pojęć, które należy wyciągnąć z tego rozdziału, pokazano poniżej:

•  Istnieje wiele przepisów na inteligencję, które wymagają różnych składników.
•  Umiejętności konwersacyjne są ważnym składnikiem inteligencji.
•  Zdolność rozwiązywania problemów jest kolejnym ważnym składnikiem inteligencji.
•  Cele SMARTER są potrzebne przede wszystkim podczas projektowania systemów sztucznej inteligencji.
•  Systemy AI zaczynają osiągać doskonałe wyniki w wielu dziedzinach, ale w przypadku większości z tych systemów wciąż istnieje wiele pracy do zrobienia, aby osiągnąć ludzkie wyniki konkurencyjne i nie tylko.
•  The Mirror Test jest kontrowersyjnym testem na samoświadomość.
•  Wiarygodność jest proponowana jako kryterium testowania sztucznej inteligencji w środowiskach wirtualnych