Racjonalne działanie: podejście racjonalnego podmiotu

Agent

Agent to po prostu coś, co działa (agent pochodzi z łaciny, to robić). Oczywiście wszystkie programy komputerowe coś robią, ale od agentów komputerowych oczekuje się więcej: działają autonomicznie, postrzegają swoje otoczenie, trwają przez dłuższy czas, dostosowują się do zmian oraz tworzą i dążą do celów. Racjonalny czynnik to taki, który działa tak, aby osiągnąć najlepszy wynik lub, w przypadku niepewności, najlepszy oczekiwany rezultat.

Racjonalny agent

W podejściu do sztucznej inteligencji „praw myśli” położono nacisk na prawidłowe wnioskowanie. Dokonywanie poprawnych wniosków jest czasami częścią bycia racjonalnym podmiotem, ponieważ jednym ze sposobów racjonalnego działania jest wywnioskowanie, że dane działanie jest najlepsze, a następnie działanie zgodnie z tym wnioskiem. Z drugiej strony istnieją sposoby racjonalnego działania, o których nie można powiedzieć, że wymagają wnioskowania. Na przykład odskakiwanie z gorącego pieca jest odruchową czynnością, która jest zwykle bardziej skuteczna niż wolniejsze działanie podjęte po dokładnym rozważeniu. Wszystkie umiejętności potrzebne do testu Turinga pozwalają również agentowi działać racjonalnie. Reprezentacja wiedzy i rozumowanie umożliwiają agentom podejmowanie dobrych decyzji. Musimy być w stanie tworzyć zrozumiałe zdania w języku naturalnym, aby radzić sobie w złożonym społeczeństwie. Potrzebujemy nauki nie tylko dla erudycji, ale także dlatego, że poprawia to naszą zdolność do generowania efektywnych zachowań, szczególnie w nowych okolicznościach. Podejście racjonalnego agenta do sztucznej inteligencji ma dwie zalety w porównaniu z innymi podejściami. Po pierwsze, jest bardziej ogólne niż podejście oparte na „prawach myśli”, ponieważ prawidłowe wnioskowanie jest tylko jednym z kilku możliwych mechanizmów osiągnięcia racjonalności. Po drugie, jest bardziej podatny na rozwój naukowy. Standard racjonalności jest dobrze zdefiniowany matematycznie i całkowicie ogólny. Często możemy cofnąć się do tej specyfikacji, aby wyprowadzić projekty agentów, które dałyby się udowodnić – coś, co jest w dużej mierze niemożliwe, jeśli celem jest naśladowanie ludzkich zachowań lub procesów myślowych. Z tych powodów podejście racjonalnego agenta do sztucznej inteligencji dominowało przez większość historii tej dziedziny. Na początku przez dziesięciolecia racjonalni agenci byli budowani na logicznych podstawach i tworzyli określone plany osiągnięcia określonych celów. Później metody oparte na teorii prawdopodobieństwa i uczeniu maszynowym pozwoliły na stworzenie agentów, którzy mogliby podejmować decyzje w warunkach niepewności, aby osiągnąć jak najlepszy oczekiwany wynik. Krótko mówiąc, sztuczna inteligencja skupiła się na badaniu i konstruowaniu agentów, którzy postępują właściwie. To, co liczy się jako właściwe, jest określone przez cel, który zapewniamy agentowi. Ten ogólny paradygmat jest tak wszechobecny, że możemy go nazwać modelem standardowym. Dominuje nie tylko w sztucznej inteligencji, ale także w teorii sterowania, gdzie kontroler minimalizuje funkcję kosztu; w badaniach operacyjnych, gdzie polityka maksymalizuje sumę nagród; w statystyce, gdzie reguła decyzyjna minimalizuje funkcję straty; oraz w ekonomii, gdzie decydent maksymalizuje użyteczność lub jakąś miarę dobrobytu społecznego. Musimy dokonać jednego ważnego udoskonalenia standardowego modelu, aby uwzględnić fakt, że doskonała racjonalność – zawsze podejmowanie dokładnie optymalnych działań – nie jest wykonalna w złożonych środowiskach. Wymagania obliczeniowe są po prostu zbyt wysokie. Jednak doskonała racjonalność często pozostaje dobrym punkt wyjścia do analizy teoretycznej.

Myślenie racjonalne: Podejście oparte na „prawach myśli”

Grecki filozof Arystoteles był jednym z pierwszych, którzy podjęli próbę skodyfikowania „prawidłowego myślenia” – to znaczy niezbitych procesów rozumowania. Jego sylogizmy dostarczyły wzorców dla struktur argumentacyjnych, które zawsze dawały prawidłowe wnioski, gdy otrzymywały poprawne przesłanki. Przykład kanoniczny zaczyna się od tego, że Sokrates jest człowiekiem, a wszyscy ludzie są śmiertelni, i kończy się wnioskiem, że Sokrates jest śmiertelny. (Ten przykład prawdopodobnie pochodzi od Sekstusa Empiricusa, a nie Arystotelesa). Te prawa myśli miały rządzić działaniem umysłu; ich badanie zapoczątkowało dziedzinę zwaną logiką. Logicy w XIX wieku opracowali precyzyjną notację dla stwierdzeń dotyczących obiektów na świecie i relacji między nimi. (Porównaj to ze zwykłą notacją arytmetyczną, która zawiera tylko stwierdzenia dotyczące liczb). Do 1965 r. Programy mogły w zasadzie rozwiązać każdy możliwy do rozwiązania problem opisany w notacji logicznej. Tak zwana tradycja logistyczna w ramach sztucznej inteligencji ma nadzieję na wykorzystanie takich programów do tworzenia inteligentnych systemów. Logika w konwencjonalnym rozumieniu wymaga wiedzy o świecie, która jest pewna – jest to warunek, który w rzeczywistości rzadko jest osiągany. Po prostu nie znamy reguł, powiedzmy, polityki czy wojny w ten sam sposób, w jaki znamy zasady szachów czy arytmetyki. Teoria prawdopodobieństwa wypełnia tę lukę, umożliwiając rygorystyczne rozumowanie z niepewnymi informacjami. W zasadzie pozwala na zbudowanie kompleksowego modelu racjonalnego myślenia, prowadzącego od surowych informacji percepcyjnych do zrozumienia tego, jak działa świat, do przewidywań dotyczących przyszłości. To, czego nie robi, to generowanie inteligentnego zachowania. W tym celu potrzebujemy teorii racjonalnego działania. Samo racjonalne myślenie nie wystarczy.

Myślenie po ludzku: modelowanie poznawcze

Aby powiedzieć, że program myśli jak człowiek, musimy wiedzieć, jak myślą ludzie. O myśli ludzkiej możemy się uczyć na trzy sposoby:

* introspekcja – próba uchwycenia naszych własnych myśli, gdy one mijają;

* eksperymenty psychologiczne – obserwowanie osoby w akcji;

* obrazowanie mózgu – obserwacja mózgu w akcji.

Kiedy już mamy wystarczająco precyzyjną teorię umysłu, staje się możliwe wyrażenie tej teorii jako programu komputerowego. Jeśli zachowanie programu w zakresie wejścia-wyjścia odpowiada odpowiedniemu zachowaniu ludzkiemu, jest to dowód, że niektóre mechanizmy programu mogą również działać u ludzi. Na przykład Allen Newell i Herbert Simon, którzy opracowali GPS, „General Problem Solver”, nie byli zadowoleni jedynie z tego, że ich program poprawnie rozwiązuje problemy. Bardziej interesowało ich porównywanie sekwencji i czasu jego kroków rozumowania z tymi, które dotyczą ludzi rozwiązujących te same problemy. Interdyscyplinarna dziedzina kognitywistyki łączy modele komputerowe ze sztucznej inteligencji i techniki eksperymentalne z psychologii, aby konstruować precyzyjne i sprawdzalne teorie ludzkiego umysłu. Kognitywistyka jest sama w sobie fascynującą dziedziną, wartą kilku podręczników i przynajmniej jednej encyklopedii. Od czasu do czasu będziemy komentować podobieństwa lub różnice między technikami sztucznej inteligencji a ludzkim poznaniem. Jednak prawdziwa kognitywistyka jest siłą rzeczy oparta na eksperymentalnych badaniach rzeczywistych ludzi lub zwierząt. Zostawimy to dla innych książek, ponieważ zakładamy, że czytelnik ma tylko komputer do eksperymentowania. We wczesnych dniach sztucznej inteligencji często dochodziło do zamieszania między podejściami. Autor argumentowałby, że algorytm dobrze sprawdza się w zadaniu i dlatego jest dobrym modelem działania człowieka lub odwrotnie. Współcześni autorzy oddzielają te dwa rodzaje twierdzeń; to rozróżnienie umożliwiło szybszy rozwój zarówno sztucznej inteligencji, jak i kognitywistyki. Te dwa pola zapładniają się nawzajem, przede wszystkim w wizji komputerowej, która włącza dowody neurofizjologiczne do modeli obliczeniowych. Niedawno połączenie metod neuroobrazowania z technikami uczenia maszynowego do analizy takich danych doprowadziło do powstania zdolności „czytania w myślach”, czyli ustalenia semantycznej treści wewnętrznych myśli danej osoby. Ta zdolność może z kolei rzucić więcej światła na sposób działania ludzkiego poznania.

Ludzkie działanie: podejście do testu Turinga

Test Turinga, zaproponowany przez Alana Turinga (1950), został zaprojektowany jako eksperyment myślowy, który pozwoliłby uniknąć filozoficznej niejasności pytania „Czy maszyna może myśleć?” Komputer zdaje egzamin, jeśli osoba przesłuchująca po zadaniu kilku pisemnych pytań nie jest w stanie stwierdzić, czy pisemne odpowiedzi pochodzą od osoby, czy z komputera. Na razie zauważamy, że zaprogramowanie komputera tak, aby przeszedł rygorystyczny test, zapewnia wiele pracy. Komputer wymagałby następujących możliwości:

* przetwarzanie języka naturalnego w celu skutecznego porozumiewania się w języku ludzkim;

* reprezentacja wiedzy do przechowywania tego, co wie lub słyszy;

* automatyczne rozumowanie w celu odpowiadania na pytania i wyciągania nowych wniosków;

* uczenie maszynowe w celu dostosowania się do nowych okoliczności oraz wykrywania i ekstrapolacji wzorców.

Turing uważał, że fizyczna symulacja osoby nie jest konieczna do wykazania inteligencji. Jednak inni badacze zaproponowali całkowity test Turinga, który wymaga interakcji z obiektami i ludźmi w prawdziwym świecie. Aby przejść całkowity test Turinga, robot będzie potrzebował

* komputerowego widzenia i rozpoznawanie mowy w celu postrzegania świata;

* robotyki do manipulowania obiektami i poruszania się.

Te sześć dyscyplin składa się na większość sztucznej inteligencji. Jednak naukowcy zajmujący się sztuczną inteligencją poświęcili niewiele wysiłku, aby przejść test Turinga, wierząc, że ważniejsze jest zbadanie podstawowych zasad inteligencji. Poszukiwanie „sztucznego lotu” zakończyło się sukcesem, gdy inżynierowie i wynalazcy przestali naśladować ptaki i zaczęli wykorzystywać tunele aerodynamiczne i uczyć się aerodynamiki. Teksty o inżynierii lotniczej nie definiują celu ich dziedziny jako „maszyn latających tak dokładnie jak gołębie, że mogą oszukać nawet inne gołębie”.

Co to jest sztuczna inteligencja?

Twierdziliśmy, że sztuczna inteligencja jest interesująca, ale nie powiedzieliśmy, co to jest. Historycznie rzecz biorąc, naukowcy poszukiwali kilku różnych wersji sztucznej inteligencji. Niektórzy zdefiniowali inteligencję w kategoriach wierności ludzkim osiągnięciom, podczas gdy inni wolą abstrakcyjną, formalną definicję inteligencji zwaną racjonalnością – luźno mówiąc, robiąc „właściwą rzecz”. Sama tematyka również jest różna: niektórzy uważają inteligencję za właściwość wewnętrznych procesów myślowych i rozumowania, podczas gdy inni koncentrują się na inteligentnym zachowaniu, zewnętrznej charakterystyce. Z tych dwóch wymiarów – człowiek kontra racjonalność i myślenie vs. zachowanie – istnieją cztery możliwe kombinacje, a dla wszystkich czterech istnieją zwolennicy i programy badawcze. Stosowane metody są siłą rzeczy różne: pogoń za inteligencją podobną do człowieka musi być po części nauką empiryczną związaną z psychologią, obejmującą obserwacje i hipotezy dotyczące rzeczywistych ludzkich zachowań i procesów myślowych; z drugiej strony podejście racjonalistyczne obejmuje połączenie matematyki i inżynierii oraz łączy się ze statystyką, teorią sterowania i ekonomią

Wprowadzenie

Nazywamy siebie Homo sapiens – człowiek mądry – ponieważ nasza inteligencja jest dla nas tak ważna. Od tysięcy lat staraliśmy się zrozumieć, jak myślimy i działamy – to znaczy, jak nasz mózg, zaledwie garstka materii, może postrzegać, rozumieć, przewidywać i manipulować światem znacznie większym i bardziej skomplikowanym niż on sam. Dziedzina sztucznej inteligencji lub AI/SI zajmuje się nie tylko zrozumieniem, ale także budowaniem inteligentnych bytów-maszyn, które mogą obliczać, jak działać skutecznie i bezpiecznie w wielu różnych nowych sytuacjach. Ankiety regularnie klasyfikują sztuczną inteligencję jako jedną z najciekawszych i najszybciej rozwijających się dziedzin, która już teraz generuje ponad bilion dolarów przychodów rocznie. Ekspert SI, Kai-Fu Lee, przewiduje, że jego wpływ będzie „większy niż cokolwiek w historii ludzkości”. Ponadto intelektualne granice sztucznej inteligencji są szeroko otwarte. Podczas gdy student starszej nauki, takiej jak fizyka, może czuć, że najlepsze pomysły zostały już odkryte przez Galileo, Newtona, Curie, Einsteina i resztę, sztuczna inteligencja wciąż ma wiele możliwości dla pełnoetatowych mistrzów. Sztuczna inteligencja obejmuje obecnie ogromną różnorodność dziedzin, od ogólnych (uczenie się, rozumowanie, postrzeganie itd.) Po szczegółowe, takie jak gra w szachy, dowodzenie twierdzeń matematycznych, pisanie wierszy, prowadzenie samochodu czy diagnozowanie chorób. AI ma znaczenie dla każdego zadania intelektualnego; jest to prawdziwie uniwersalne pole.

Bądź człowiekiem … A.I. !!!

Część I w której :

…staramy się wyjaśnić, dlaczego uważamy sztuczną inteligencję za przedmiot najbardziej godny badań i w którym staramy się zdecydować, co to właściwie jest, a dobrze jest zdecydować przed rozpoczęciem …

Część II w której :

… omawiamy naturę agentów, doskonałych lub nie, różnorodność środowisk i wynikającą z niej menażerię typów agentów …

Część III w której :

… widzimy, jak agent może spojrzeć w przyszłość, aby znaleźć sekwencję działań, które ostatecznie osiągną swój cel …

Część IV w której :

… rozluźniamy upraszczające założenia z poprzedniej części, by zbliżyć się do realnego świata …

Część V w której :

… eksplorujemy środowiska, w których inni agenci spiskują przeciwko nam …

Część VI w której :

…  widzimy, jak traktowanie stanów jako czegoś więcej niż tylko małych czarnych skrzynek prowadzi do nowych metod wyszukiwania i głębszego zrozumienia struktury problemu …

Część VII w której :

… projektujemy agentów, którzy mogą tworzyć reprezentacje złożonego świata, wykorzystujemy proces wnioskowania do tworzenia nowych wyobrażeń o świecie i używamy tych nowych reprezentacji do wywnioskowania, co robić …

Część VIII w której :

… zauważamy, że świat jest obdarzony wieloma przedmiotami, z których niektóre są powiązane z innymi, i w których staramy się o nich rozumować …

Część IX w której :

… definiujemy skuteczne procedury odpowiadania na pytania postawione w logice pierwszego rzędu …

Część X w której :

… pokazujemy, jak przedstawiać różnorodne fakty dotyczące realnego świata w formie, która może być użyta do wnioskowania i rozwiązywania problemów …

Część XI  w której :

…  widzimy, jak agent może wykorzystać strukturę problemu, aby skutecznie konstruować złożone plany działania …

Część XII w której :

…  widzimy, jak okiełznać niepewność za pomocą liczbowych stopni wiary …

Część XIII w której :

… wyjaśniamy, jak budować wydajne modele sieciowe do wnioskowania w warunkach niepewności zgodnie z prawami teorii prawdopodobieństwa oraz jak odróżnić korelację od przyczynowości …

Część XIV w której :

… staramy się interpretować teraźniejszość, rozumieć przeszłość i być może przewidywać przyszłość, nawet jeśli bardzo niewiele jest krystalicznie czystych …

Część XV w której :

… wyjaśniamy ideę języków uniwersalnych do probabilistycznej reprezentacji wiedzy i wnioskowania w niepewnych dziedzinach …

Część XVI w której :

… widzimy, jak agent powinien podejmować decyzje, aby w niepewnym świecie dostał to, czego chce – przynajmniej jak najwięcej i średnio …

Część XVII w której :

… badamy metody podejmowania decyzji, co robić dzisiaj, biorąc pod uwagę, że jutro możemy stanąć przed kolejną decyzją …

Część XVIII w której :

… badamy, co zrobić, gdy więcej niż jeden agent zamieszkuje środowisko …

Część XIX w której :

… opisujemy agentów, którzy mogą poprawić swoje zachowanie poprzez staranne badanie przeszłych doświadczeń i przewidywań dotyczących przyszłości …

Część XX w której :

… postrzegamy uczenie się jako formę niepewnego wnioskowania na podstawie obserwacji i tworzymy modele reprezentujące niepewny świat …

Część XXI w której :

… zejście gradientowe uczy się programów wieloetapowych, co ma znaczące konsekwencje dla głównych poddziedzin sztucznej inteligencji …

Część XXII w której :

… widzimy, jak doświadczanie nagród i kar może nauczyć agenta, jak maksymalizować nagrody w przyszłości …

Część XXIII w której :

… widzimy, jak komputer może używać języka naturalnego do komunikowania się z ludźmi i uczenia się na podstawie tego, co napisali …

Część XXIV w której :

… głębokie sieci neuronowe wykonują różnorodne zadania językowe, wychwytując strukturę języka naturalnego oraz jego płynność …

Część XXV w której :

… podłączamy komputer do surowego, niemytego świata oczami kamery …

Część XXVI w której :

…  agenci są wyposażeni w czujniki i fizyczne efektory, za pomocą których mogą się poruszać i robić psoty w prawdziwym świecie …

Część XXVII w której :

… rozważamy duże pytania dotyczące znaczenia sztucznej inteligencji, jak możemy ją etycznie rozwijać i stosować oraz jak możemy zapewnić jej bezpieczeństwo …

Część XXVIII w której :

… staramy się widzieć przed sobą niewielką odległość  …

Udostępnianie nowo utworzonej aplikacji

Chociaż aplikacje Shiny kończą się jako pliki HTML, nie można ich po prostu skopiować na serwer. Wymagają serwera Shiny, takiego jak ten, z którym pracowaliśmy w tym rozdziale. Istnieją dwa sposoby uruchamiania aplikacji Shiny (jak każdej innej aplikacji), lokalnie lub zdalnie. Lokalnie oznacza, że ​​uruchamiasz instalację R z Shiny i wymaganymi zależnościami i uruchamiasz ją tak, jak robiliśmy to w tym rozdziale. Zdalnie oznacza, że ​​możesz uzyskać do niego dostęp przez stronę internetową, która czasami może być bardzo fajna i wygodna. Aby działać lokalnie, musisz mieć pliki aplikacji na komputerze, który będzie je wykonywał. Można to zrobić na wiele sposobów, ale najczęstszym jest przesłanie ich do repozytorium Git, pobranie ich stamtąd i wykonanie kroków, które już znasz. Ponadto, jeśli twoje pliki znajdują się w repozytorium Git hostowanym w GitHub , możesz użyć funkcji runGitHub() z nazwą repozytorium i rozszerzeniem nazwy użytkownika konta, na którym znajduje się repozytorium. W takim przypadku pobieranie, rozpakowywanie i wykonywanie zostanie wykonane za Ciebie. Na przykład, aby uruchomić aplikację, którą opracowaliśmy, możesz użyć następującego wiersza:

ruGitHub(„”, „”)

Jeśli chcesz zapewnić zdalny dostęp do swojej aplikacji, masz wiele opcji, ale główne są trzy: ShinyApps, RStudio Connect i Shiny Server. ShinyApps oferuje tę usługę za darmo dla małych aplikacji z ograniczoną liczbą odwiedzin i może być skalowana w płatnych wersjach. RStudio Connect to platforma do publikowania aplikacji Shiny i raportów R Markdown. Dzięki niemu możesz publikować bezpośrednio z RStudio. Wreszcie, Shiny Server  jest otwartą wersją serwera Shiny, którego używałeś w tym rozdziale, z dodatkową korzyścią, że możesz go uruchomić na kontrolowanych przez Ciebie serwerach Linux (oczywiście obejmuje to serwery od dostawców chmury) . RStudio sprzedaje również roczną subskrypcję Shiny Server Pro, która zapewnia bezpieczeństwo, administrację i inne ulepszenia w porównaniu z wersją open source.

Dodanie niestandardowego stylu CSS

Shiny używa frameworka Bootstrap do tworzenia struktury i stylizacji. Aby dołączyć własny CSS, masz kilka opcji, ale pokażemy tylko, jak używać tej funkcji i jak stosować style bezpośrednio do tagów HTML. Funkcja includeSS() jest dostarczana przez Shiny i może być używana do dołączania pliku CSS bezpośrednio z katalogu www wymienionego w poprzedniej sekcji. Jej użycie jest dość proste. Chociaż zwykle nie jest to dobry pomysł, ponieważ trudno jest znaleźć swoje style, a jeszcze trudniej jest zachować spójność, czasami warto zastosować styl bezpośrednio do tagu HTML. Jeśli chcesz, możesz wysłać parametr style do określonego tagu. Załóżmy, że masz plik o nazwie style.css w katalogu www, który zawiera wszystkie żądane style, z wyjątkiem zielonego koloru, który chcesz zastosować do nagłówka pierwszego poziomu. Następnie możesz użyć następującego kodu, który obejmuje obie techniki:

ui <- fluidPage (

icludeCSS(„style.css”),

h1(style = „color: blue;”, „A blue heading”),

)

server <- funtion(input, output) { }

shinyApp(ui, server)

Dodawanie kodu HTML do aplikacji internetowej

Dodawanie elementów HTML do aplikacji Shiny jest łatwe za pomocą tagów HTML. Istnieje wiele elementów, które możesz dodać do swojej strony, używając składni jak tags$h1() lub tags$p() dla nagłówka pierwszego poziomu i akapitu odpowiednio. W poniższym fragmencie kodu możesz zobaczyć, jak zostałyby one użyte do utworzenia strony z jednym nagłówkiem pierwszego poziomu, po którym następuje akapit, nagłówek drugiego poziomu, a następnie kolejny akapit.

Pełną listę tagów HTML można znaleźć w Shiny HTML Tags Glossary :

ui <- fliudPage (

tag$h1(„This is a first level heading”),

tag$p(„This is a paragraph.)

tag$h2(„This is a seond level heading”),

tag$p(„This is another paragraph.)

Czasami jednak możesz potrzebować większej kontroli nad kodem HTML, którego chcesz użyć. W takim przypadku możesz faktycznie określić HTML bezpośrednio w swojej aplikacji za pomocą funkcji HTML(). W takim przypadku Shiny nie wykona żadnego ucieczki w Twoim imieniu, a będziesz mieć pełne uprawnienia HTML, wystarczy przekazać go w postaci surowego kodu HTML, jak pokazano tutaj. Zwróć uwagę, że ten nieprzetworzony kod HTML może być zawarty w innych tagach, tak jak w tym przypadku, gdy jest opakowany tagiem HTML:

tags$div (

HTML(„Raw hTML”)