AI : Technologie, Aplikacje i Wyzwania  : Prolog

Prolog oznacza Programming Logic. Został opracowany w 1972 roku. Pierwszy chatbot, „Eliza”, został opracowany przy użyciu Prologa. Opiera się na mechanizmach takich jak dopasowanie wzorców i automatyczne śledzenie wsteczne. Budowanie bazy danych jest łatwe dzięki Prologowi. Ten język jest odpowiedni do tworzenia szybkich prototypów i struktur danych opartych na drzewie reprezentacji. W programowaniu prologowym istnieją dwa sposoby implementacji AI:

  1. Podejście symboliczne
  2. Podejście statystyczne

Podejście symboliczne obejmuje system ekspercki oparty na regułach, podejście oparte na ograniczeniach itp. Eksploracja danych, uczenie maszynowe i sieć neuronowa są obsługiwane przez podejścia statystyczne Prologa. Kodowanie w Prologu różni się od innych konwencjonalnych języków programowania, takich jak C++, a co za tym idzie, jest trudniejsze do nauczenia. Ponadto, chociaż został opracowany wcześniej, wiele funkcji i cech nie jest w pełni ustandaryzowanych. To sprawia, że używanie tego języka przez różnych programistów na różnych platformach jest niewygodne i kłopotliwe

Monitorowanie traktatów jądrowych

Weryfikacja Traktatu o całkowitym zakazie prób jądrowych wymaga znalezienia wszystkich zdarzeń sejsmicznych na Ziemi powyżej minimalnej wielkości. CTBTO ONZ utrzymuje sieć czujników, Międzynarodowy System Monitorowania (IMS); jej oprogramowanie do automatycznego przetwarzania, oparte na 100-letnich badaniach sejsmologicznych, ma wskaźnik błędów wykrywania wynoszący około 30%. System NET-VISA , oparty na OUPM, znacząco ogranicza błędy wykrywania. Model NET-VISA bezpośrednio wyraża odpowiednią geofizykę.

Opisuje rozkłady pod względem liczby zdarzeń w danym przedziale czasowym (z których większość ma miejsce w sposób naturalny), a także ich czasu, wielkości, głębokości i lokalizacji. Lokalizacje zdarzeń naturalnych są rozmieszczone zgodnie z przestrzennym uprzednim ustawieniem, które jest wytrenowane (podobnie jak inne części modelu) na podstawie danych historycznych; Zakłada się, że wydarzenia spowodowane przez człowieka, zgodnie z zasadami traktatowymi, zachodzą jednolicie na powierzchni Ziemi. Na każdej stacji s, każda faza (typ fali sejsmicznej) p ze zdarzenia e wytwarza 0 lub 1 detekcji (sygnały powyżej progu); prawdopodobieństwo wykrycia zależy od wielkości i głębokości zdarzenia oraz jego odległości od stacji. Wykrycia „fałszywych alarmów” występują również zgodnie z parametrem szybkości specyficznym dla stacji. Zmierzony czas przybycia, amplituda i inne właściwości detekcji d rzeczywistego zdarzenia zależą od właściwości zdarzenia inicjującego i jego odległości od stacji. Po przeszkoleniu model działa w sposób ciągły. Dowody obejmują wykrycia (z których 90% to fałszywe alarmy) wyodrębnione z nieprzetworzonych danych falowych IMS, a zapytanie zazwyczaj prosi o podanie najbardziej prawdopodobnej historii zdarzeń lub biuletynu dla danych. Dotychczasowe wyniki są zachęcające; na przykład w 2009 r. automatyczny biuletyn ONZ SEL3 pominął 27,4% z 27294 zdarzeń w zakresie 3–4 mag, podczas gdy NET-VISA przeoczył 11,1%. Co więcej, porównania z gęstymi sieciami regionalnymi pokazują, że NET-VISA wykrywa nawet o 50% więcej rzeczywistych zdarzeń niż ostatnie biuletyny opracowane przez ekspertów sejsmicznych ONZ. NET-VISA ma również tendencję do kojarzenia większej liczby detekcji z danym zdarzeniem, co prowadzi do dokładniejszych szacunków lokalizacji

Od 1 stycznia 2018 r. NET-VISA została wdrożona jako część potoku monitorowania CTBTO. Pomimo powierzchownych różnic, te dwa przykłady są strukturalnie podobne: istnieją nieznane obiekty (dokumenty, trzęsienia ziemi), które generują percepcje zgodnie z pewnym procesem fizycznym (cytowanie, propagacja sejsmiczna). Percepty są niejednoznaczne co do ich pochodzenia, ale gdy zakłada się, że wiele perceptów pochodzi z tego samego nieznanego obiektu, można dokładniej wywnioskować właściwości tego obiektu. Ta sama struktura i wzorce rozumowania obowiązują w takich obszarach, jak deduplikacja baz danych i rozumienie języka naturalnego. W niektórych przypadkach wnioskowanie o istnieniu obiektu obejmuje grupowanie percepcji – proces, który przypomina zadanie grupowania w uczeniu maszynowym. W innych przypadkach obiekt może w ogóle nie generować żadnych perceptów i nadal można wywnioskować o swoim istnieniu – tak jak miało to miejsce na przykład, gdy obserwacje Urana doprowadziły do odkrycia Neptuna. Istnienie nieobserwowanego obiektu wynika z jego wpływu na zachowanie i właściwości obserwowanych obiektów.

AI : Technologie, Aplikacje i Wyzwania : LISP (przetwarzanie listy)

Jest to najstarszy język programowania używany w AI, który został opracowany przez Johna McCarthy’ego. McCarthy ukuł termin „sztuczna inteligencja” w 1956 roku na konferencji w Darmouth. LISP to elastyczny program skuteczny w rozwiązywaniu różnych problemów. LISP to silny i dynamiczny język programowania. Zapewnia strukturę makr, ponieważ ułatwia wdrażanie różnych kategorii programów, takich jak projekt logiki indukcyjnej i uczenie maszynowe. LISP jest szybki w wykonywaniu i kodowaniu, ponieważ używa kompilatorów. Zapewnia automatyczne zbieranie śmieci do zarządzania pamięcią. Popularne języki programowania, takie jak R, Julia i inne, są motywowane przez LISP. Szybkie tworzenie prototypów i rozwijanie obiektów dynamicznych to również wydziały LISP wykorzystywane w rozwoju AI. Główną wadą LISP jest to, że brakuje w nim dobrze ugruntowanej biblioteki, takiej jak ta obecna w innych językach, takich jak Java i Python. Jego składnia również nie jest estetyczna dla programistów. Wreszcie wymaga rygorystycznej konfiguracji do użytku w najnowszych systemach operacyjnych i urządzeniach.

Dopasowywanie cytowań

Miliony artykułów naukowych i raportów technicznych można znaleźć w Internecie w postaci plików pdf. Takie artykuły zwykle zawierają pod koniec sekcję zatytułowaną „Odniesienia” lub „Bibliografia”, w której cytaty – ciągi znaków – są podawane w celu poinformowania czytelnika o pokrewnej pracy. Ciągi te można zlokalizować i „wydrapać” z plików pdf w celu stworzenia reprezentacji podobnej do bazy danych, która wiąże artykuły i badaczy według ich autorstwa i linków cytowań. Systemy takie jak CiteSeer i Google Scholar prezentują taką reprezentację swoim użytkownikom; za kulisami algorytmy działają, aby znaleźć artykuły, zeskrobać ciągi cytatów i zidentyfikować rzeczywiste artykuły, do których odnoszą się ciągi cytatów. Jest to trudne zadanie, ponieważ te ciągi nie zawierają identyfikatorów obiektów i zawierają błędy składni, pisowni, interpunkcji i treści. Aby to zilustrować, oto dwa stosunkowo łagodne przykłady:

1.Lashkari i in. 94] Collaborative Interface Agents, Yezdi Lashkari, Max Metral i Pattie Maes, Proceedings of the Twelfth National Conference on Articial Intelligence, MIT Press, Cambridge, MA, 1994.

  1. Metral M. Lashkari, Y. i P. Maes. Współpracujące agenty interfejsu. Na konferencji Amerykańskiego Stowarzyszenia na rzecz Sztucznej Inteligencji, Seattle, WA, sierpień 1994.

Kluczowe pytanie dotyczy tożsamości: czy są to cytaty z tego samego artykułu, czy z różnych artykułów? Zadani temu pytaniu nawet eksperci nie zgadzają się lub nie chcą podejmować decyzji, wskazując, że rozumowanie w warunkach niepewności będzie ważną częścią rozwiązania tego problemu.8 Podejścia ad hoc — takie jak metody oparte na metryce podobieństwa tekstu — często zawodzą. Na przykład w 2002 r. CiteSeer zgłosił ponad 120 różnych książek napisanych przez Russella i Norviga. Aby rozwiązać problem przy użyciu podejścia probabilistycznego, potrzebujemy modelu generatywnego dla dziedziny. To znaczy pytamy, jak te ciągi cytatów powstają na świecie. Proces zaczyna się od badaczy, którzy mają nazwiska. (Nie musimy się martwić o to, jak badacze powstali; wystarczy wyrazić naszą niepewność co do tego, ilu jest.) Ci badacze piszą artykuły, które mają tytuły; ludzie cytują prace, łącząc nazwiska autorów i tytuł pracy (z błędami) w tekst cytowania według pewnej gramatyki. Podstawowe elementy tego modelu przedstawiono na rysunku 18., obejmującym przypadek, w którym artykuły mają tylko jednego autora.

Biorąc pod uwagę tylko ciągi cytowań jako dowód, wnioskowanie probabilistyczne na podstawie tego modelu w celu wybrania najbardziej prawdopodobnego wyjaśnienia danych daje poziom błędu 2 do 3 razy niższy niż w przypadku CiteSeer (Pasula i in., 2003). Proces wnioskowania wykazuje również formę dezambiguacji zbiorowej, opartej na wiedzy: im więcej cytowań dla danego artykułu, tym dokładniej każdy z nich jest analizowany, ponieważ parsy muszą być zgodne co do faktów dotyczących artykułu.

AI : Technologie, Aplikacje i Wyzwania : Python

Python został wprowadzony w 1991 roku, a dziś jest jednym z najpopularniejszych języków programowania w rozwoju AI. Jest preferowany przez początkujących, ponieważ jest łatwy do nauczenia i często stanowi odskocznię dla naukowców zajmujących się danymi i programistów AI. Oprócz zapewnienia ogromnej obsługi bibliotek, Python zapewnia również bardzo dobre wsparcie społeczności. Python zapewnia rozbudowaną platformę do głębokiego uczenia się i uczenia maszynowego. Niektóre z popularnych bibliotek Pythona to:

  • PyBrain – używany do algorytmu uczenia maszynowego
  • Theano – używany do złożonych rozwiązań matematycznych
  • MXnet – używany do zastosowań głębokiego uczenia
  • PyTorch – używany do wizji komputerowej i przetwarzania języka naturalnego

Inne popularne biblioteki to TensorFlow, Scikit-Learn. Keras i SparkMLlib. Python jest przenośny na różnych platformach, takich jak Mac, Windows i Linux. Zapewnia to możliwości integracji z innymi językami programowania, takimi jak C, C++, Cobra, Java itp. Obsługuje takie funkcje, jak paradygmat obiektowy, dynamiczne sprawdzanie typów, połączenie z bazami danych itp. Jednym z problemów związanych z wykorzystaniem Pythona w rozwoju AI polega na tym, że jest wolniejszy w kompilacji i wykonaniu w porównaniu z C++ i Javą. Dzieje się tak, ponieważ w Pythonie używany jest interpreter. Python nie nadaje się do komputerów mobilnych. Co więcej, programiści używający Pythona mogą mieć trudności z używaniem innych języków programowania.

Przykłady

Standardowy „przypadek użycia” dla OUPM składa się z trzech elementów: modelu, dowodu (znanych faktów w danym scenariuszu) oraz zapytania, które może być dowolnym wyrażeniem, możliwie z wolnymi zmiennymi logicznymi. Odpowiedzią jest a posteriori wspólne prawdopodobieństwo dla każdego możliwego zestawu podstawień wolnych zmiennych, biorąc pod uwagę dowody, zgodnie z modelem. Każdy model zawiera deklaracje typów, sygnatury typów dla predykatów i funkcji, co najmniej jedną instrukcję liczbową dla każdego typu oraz jedną instrukcję zależności dla każdego predykatu i funkcji. (W poniższych przykładach deklaracje i sygnatury są pomijane tam, gdzie znaczenie jest jasne). Podobnie jak w RPM, instrukcje zależności używają składni if-then-else do obsługi zależności kontekstowych.

AI : Technologie, Aplikacje i Wyzwania : C++

C++ jest powszechnie preferowany przez programistów AI, ponieważ zapewnia najszybsze wykonanie. W przypadku budowania wyszukiwarek, gier, systemów krytycznych dla życia itp. czas reakcji powinien być jak najkrótszy. W tego typu aplikacjach używany jest C++. C++ zapewnia również rozbudowane algorytmy i jest bardzo wydajny w implementacji technik statystycznych. Oprócz tego C++ ma właściwości zorientowane obiektowo, takie jak dziedziczenie i ukrywanie danych. Te właściwości zapewniają oszczędność czasu, możliwość ponownego wykorzystania kodu i bezpieczeństwo. Uczenie maszynowe i sieć neuronowa są również obsługiwane przez C++. Złożone programy AI można rozwiązywać za pomocą bogatych funkcji bibliotecznych i narzędzi obecnych w C++. Główną wadą używania C++ w rozwoju AI jest to, że C++ nie ma możliwości wydajnego wykonywania wielu zadań. To sprawia, że C++ nadaje się tylko do tworzenia rdzenia systemu. Bardzo złożone budowanie systemów również nie jest preferowane w C++, ponieważ jest to podejście oddolne. C++ nie obsługuje również wyrzucania elementów bezużytecznych.

Wnioskowanie w modelach prawdopodobieństwa otwartego wszechświata

Ze względu na potencjalnie ogromny i czasami nieograniczony rozmiar niejawnej sieci Bayesa, która odpowiada typowemu OUPM, pełne jej rozwinięcie i wykonanie dokładnego wnioskowania jest dość niepraktyczne. Zamiast tego musimy wziąć pod uwagę przybliżone algorytmy wnioskowania, takie jak MCMC. Z grubsza mówiąc, algorytm MCMC dla OUPM bada przestrzeń możliwych światów zdefiniowanych przez zbiory obiektów i relacje między nimi, jak pokazano na rysunku 18.1 (góra). Ruch pomiędzy sąsiednimi stanami w tej przestrzeni może nie tylko zmieniać relacje i funkcje, ale także dodawać lub odejmować obiekty oraz zmieniać interpretacje stałych symboli. Chociaż każdy możliwy świat może być ogromny, obliczenia prawdopodobieństwa wymagane dla każdego kroku – czy to w próbkach Gibbsa, czy w Metropolis-Hastings – są całkowicie lokalne i w większości przypadków zajmują stały czas. Dzieje się tak, ponieważ stosunek prawdopodobieństwa między sąsiednimi światami zależy od podgrafu o stałej wielkości wokół zmiennych, których wartości są zmieniane. Co więcej, zapytanie logiczne może być oceniane przyrostowo w każdym odwiedzanym świecie, zwykle w stałym czasie na świat, zamiast przeliczania od zera. Należy zwrócić szczególną uwagę na fakt, że typowy OUPM może mieć możliwe światy o nieskończonej wielkości. Jako przykład rozważmy model śledzenia wielocelowego na rysunku :

funkcja X(a; t), oznaczająca stan samolotu a w czasie t, odpowiada nieskończonej sekwencji zmiennych dla nieograniczonej liczby samolotów na każdym kroku. Z tego powodu MCMC dla OUPMs próbkuje nie całkowicie określone światy możliwe, ale światy częściowe, z których każdy odpowiada rozłącznemu zbiorowi kompletnych światów. Częściowy świat to minimalna samonośna instancja6 podzbioru odpowiednich zmiennych – to znaczy przodków zmiennych dowodowych i zapytań. Na przykład zmienne X(a,t) dla wartości t większych niż czas ostatniej obserwacji (lub czas zapytania, w zależności od tego, który jest większy) są nieistotne, więc algorytm może rozważyć tylko skończony przedrostek ciągu nieskończonego.

AI : Technologie, Aplikacje i Wyzwania : Java

Rola AI w zapewnianiu efektywności i zwiększaniu korzyści dla dowolnej organizacji lub grupy społecznej jest ogromna. Wraz z nadejściem sztucznej inteligencji świat osiągnął bardziej inteligentne miejsce, którego różne aspekty są badane, testowane i wdrażane w celu zaspokojenia ludzkiego pragnienia poprawy jakości życia. Aby przyspieszyć rozwój sztucznej inteligencji w tych domenach, wymagane są silne, solidne i wydajne języki programowania. Pomogą one w tworzeniu i wdrażaniu aplikacji obsługujących sztuczną inteligencję. Istnieje wiele wyspecjalizowanych języków opracowanych do programowania aplikacji AI. Wyzwanie polega na znalezieniu języka, który zapewni wymagane specyfikacje dla rozwoju sztucznej inteligencji. W tym rozdziale omówiono popularne języki wraz z ich zaletami i wadami, aby badacze w tej dziedzinie mieli gotowe odniesienie. Stwierdzono, że Python, Prolog, Lisp, Java i C++ należą do głównych języków programowania, które można wykorzystać do spełnienia wymagań projektowania i tworzenia różnych aplikacji i oprogramowania AI. W kolejnych podrozdziałach przedstawiono omówienie tych języków programowania, aby programiści i programiści mogli określić, który język będzie odpowiedni dla ich procesu tworzenia oprogramowania.

Składnia i semantyka

Podstawową ideą jest zrozumienie, w jaki sposób zwykłe sieci bayesowskie i RPM potrafią zdefiniować unikalny model prawdopodobieństwa i przenieść ten wgląd na ustawienie pierwszego rzędu. W istocie sieć Bayesa generuje każdy możliwy świat, zdarzenie po zdarzeniu, w porządku topologicznym określonym przez strukturę sieci, gdzie każde zdarzenie jest przypisaniem wartości do zmiennej. RPM rozszerza to na całe zestawy zdarzeń, zdefiniowane przez możliwe wystąpienia zmiennych logicznych w danym predykacie lub funkcji. OUPM idą dalej, zezwalając na kroki generatywne, które dodają obiekty do możliwego świata w budowie, gdzie liczba i typ obiektów może zależeć od obiektów, które już znajdują się w tym świecie oraz ich właściwości i relacji. Oznacza to, że generowane zdarzenie nie jest przypisaniem wartości do zmiennej, ale samym istnieniem obiektów. Jednym ze sposobów wykonania tego w jednostkach OUPM jest podanie instrukcji liczbowych, które określają rozkłady warunkowe na liczbach obiektów różnego rodzaju. Na przykład w domenie rekomendacji książek możemy chcieć odróżnić klientów (prawdziwych ludzi) od ich identyfikatorów logowania. (Tak naprawdę to identyfikatory logowania dają rekomendacje, a nie klienci!) Załóżmy (dla uproszczenia), że liczba klientów jest taka sama w zakresie od 1 do 3, a liczba książek jest taka sama w zakresie od 2 do 4:

Oczekujemy, że uczciwi klienci będą mieli tylko jeden identyfikator, podczas gdy nieuczciwi klienci mogą mieć od 2 do 5 identyfikatorów:

Ta instrukcja liczbowa określa rozkład na liczbę identyfikatorów logowania, dla których klient c jest Właścicielem. Funkcja Owner jest nazywana funkcją pochodzenia, ponieważ mówi skąd pochodzi każdy obiekt wygenerowany przez tę instrukcję liczby. W przykładzie w poprzednim akapicie zastosowano równomierny rozkład liczb całkowitych od 2 do 5 w celu określenia liczby logowań dla nieuczciwego klienta. Ten szczególny rozkład jest ograniczony, ale ogólnie rzecz biorąc, liczba obiektów może nie być a priori ograniczona. Najczęściej używanym rozkładem na nieujemne liczby całkowite jest rozkład Poissona. Poisson ma jeden parametr, który jest oczekiwaną liczbą obiektów, a zmienna X pobrana z Poisson(λ) ma następujący rozkład:

Wariancja Poissona  również wynosi λ , więc odchylenie standardowe wynosi √λ . Oznacza to, że dla dużych wartości λ , rozkład jest wąski w stosunku do średniej – na przykład, jeśli liczba mrówek w gnieździe jest modelowana przez Poissona ze średnią wynoszącą jeden milion, odchylenie standardowe wynosi tylko tysiąc lub 0,1%. W przypadku dużych liczb często bardziej sensowne jest użycie dyskretnego rozkładu logarytmiczno-normalnego, który jest odpowiedni, gdy logarytm liczby obiektów ma rozkład normalny. Szczególnie intuicyjna forma, którą nazywamy rozkładem rzędu wielkości, używa logów do podstawy 10: zatem rozkład OM(3,1) ma średnią 103 i odchylenie standardowe jednego rzędu wielkości, tj. masy prawdopodobieństwa mieści się między 102 a 104. Formalna semantyka OUPM zaczyna się od definicji obiektów, które zaludniają możliwe światy. W standardowej semantyce typizowanej logiki pierwszego rzędu obiekty są po prostu ponumerowanymi tokenami z typami. W OUPM każdy obiekt to historia generacji; na przykład obiekt może być „czwartym identyfikatorem logowania siódmego klienta”. (Przyczyna tej nieco barokowej konstrukcji stanie się wkrótce jasna.) Dla typów bez funkcji początku obiekty mają puste źródło; na przykład <Klient; ;2i> odnosi się do drugiego klienta wygenerowanego z tego numeru. W przypadku instrukcji liczbowych z funkcjami początku , każdy obiekt zapisuje swój początek; na przykład obiekt <LoginID; <Owner; <Klient; ;2>>;3> to trzeci login należący do drugiego klienta.

Zmienne liczbowe OUPM określają, ile jest obiektów każdego typu z każdym możliwym pochodzeniem w każdym możliwym świecie; zatem #LoginID<Owner;hCustomer; ;2>>(ω)=4 oznacza, że ​​w świecie ω, klient 2 posiada 4 identyfikatory logowania. Podobnie jak w relacyjnych modelach prawdopodobieństwa, podstawowe zmienne losowe wyznaczają wartości predykatów i funkcji dla wszystkich krotek obiektów; zatem, Uczciwy<Klient; ;2>ω)=true oznacza, że ​​w świecie ω, klient 2 jest uczciwy. Świat możliwy jest zdefiniowany przez wartości wszystkich zmiennych liczbowych i podstawowych zmiennych losowych. Świat może zostać wygenerowany z modelu przez próbkowanie w porządku topologicznym; Rysunek przedstawia przykład.

Prawdopodobieństwo tak skonstruowanego świata jest iloczynem prawdopodobieństw dla wszystkich wartości próbkowanych; w tym przypadku 1,2672 x 10-11. Teraz staje się jasne, dlaczego każdy obiekt zawiera swój początek: ta właściwość zapewnia, że ​​każdy świat może być skonstruowany przez dokładnie jedną sekwencję generacji. Gdyby tak nie było, prawdopodobieństwo istnienia świata byłoby nieporęczną sumą kombinatoryczną wszystkich możliwych sekwencji generacji, które go tworzą. Modele otwartego wszechświata mogą mieć nieskończenie wiele zmiennych losowych, więc pełna teoria obejmuje nietrywialne rozważania z zakresu teorii miary. Na przykład instrukcje liczbowe z rozkładami Poissona lub rzędu wielkości pozwalają na nieograniczoną liczbę obiektów, co prowadzi do nieograniczonej liczby zmiennych losowych dla właściwości i relacji tych obiektów. Co więcej, OUPM mogą mieć zależności rekurencyjne i nieskończone typy (liczby całkowite, łańcuchy itp.). Wreszcie, dobre ukształtowanie nie pozwala na cykliczne zależności i nieskończenie oddalające się łańcuchy przodków; warunki te są na ogół nierozstrzygalne, ale pewne warunki wystarczające syntaktycznie można łatwo sprawdzić.