Narzędzia sztucznej inteligencji – ogólne i uproszczone spojrzenie

Nie jest łatwo opracowywać tak szeroki temat nie będąc specjalistą,a jednocześnie wskazać zarys problemu w możliwie poprawny i interesujący.  Mam nadzieję,że niniejszy artykuł może aspirować do roli prostego wprowadzenia do przykładowej istotnej części zagadnień, związanych z tematyką narzędzi sztucznej inteligencji. Zwracam też uwagę,że z konieczności (oraz ze względu na moją ograniczoną wiedzę) w niniejszym artykule nie zostały zaprezentowane dokładne szczegóły algorytmiczne,a szczególnie – nie został dokładnie omówiony problem reprezentacji i dokładne kwestie związane z uczeniem systemów SI.

Przede wszystkim – dobrym pytaniem na początek jest to, czym w istocie jest sztuczna inteligencja,bowiem definicja dawałaby nam już jakąś wskazówkę. Jak zasugerowałem w wpisie z czerwca na temat bota Eugene Goostman jestem przeciwnikiem tezy, że sztuczna inteligencja to po prostu naśladowanie zachowania człowieka. Można sobie mówić o „inteligencji emocjonalnej” czy „społecznej”. Ok. Ale zachowując szacunek do dziedzictwa Alana Turinga, muszę stwierdzić, że test Turinga jest mało wartościowy jeśli idzie o wykrycie rzeczywistej sztucznej inteligencji, ponieważ false positives (i przyszłe false negatives) dyskwalifikują go. W istocie nie o taką inteligencję nam przecież głównie chodzi. Chodzi nam naprawdę o inteligencję, która odciąży nas w pracy umysłowej (a jeśli również fizycznej,  pomimo paradoksu Moraveca – byłoby jeszcze lepiej). A jak już to zrobi… Nasza leniwa zwierzęca strona podpowiada: „to już nie jest takie ważne” 😉

W istocie jednak,  zasada/zbiór zasad (nie chodzi mi o zasady chemiczne 😉 ) na której opiera się inteligencja jest właśnie piekielnie ważna,jeśli chcemy ją odtworzyć w sztucznej formie.

Problem ten jest bardziej złożony,niż niektórzy myślą. W początkach optymistycznych badań w dziedzinie sztucznej inteligencji jeden z badaczy twierdził, że 10 lat później komputer pokona człowieka w szachach.I komputer rzeczywiście pokonał człowieka, ale po latach 40. W nomenklaturze naukowej dzieli się sztuczną inteligencję na „słabą” (porównywalną z insektami i zwierzętami) i „silną” – porównywalną z ludźmi. I wbrew optymistom – cały czas jesteśmy raczej przy insektach 😉 Wszelkie rozważania o superinteligencji i panikowanie filozofów jest jeszcze najprawdopodobniej przedwczesne o całe lata, ponieważ samo poprawne zrozumienie działania mózgu jest całe lata przed nami.

Projekty takie jak Blue Brain i Human Brain Project sugerują, że pomysły dotyczące symulowania świadomości ludzkiej w komputerze teoretycznie będą możliwe w latach 20-tych czy 30-tych. Rzecz w tym, że wymaga to w praktyce lepszych niż dziś superkomputerów.  W 2012 roku przeprowadzono symulację działania mózgu małpy na superkomputerze Sequoia. Brzmi dobrze ? No nie całkiem. Mózg małpy jest nieco mniej doskonały od ludzkiego, a symulacja była 1542 razy wolniejsza niż rzeczywisty (całkiem malutki i zużywający dużo mniej energii) małpi mózg. Teoretycznie,co prawda nie potrzebujemy przetwarzania symulacji w czasie rzeczywistym – lecz im dokładniejsza symulacja tym mniej uproszczony i bardziej realistyczny może być model.

Można też zapoznać się z innym przykładem – symulacji części mózgu na blogu geekweek. W praktyce można stwierdzić,  że superkomputer który prowadził opisaną symulację może być nawet 240 tysięcy razy wolniejszy od mózgu ludzkiego. Oznacza to też, że zakładając realizację na inne sposoby nie do końca dziś pewnego prawa Moora [1] [2] (skok mocy obliczeniowej x2 w 18 miesięcy) – przynajmniej 12 lat przyspieszania potrzeba, by „ogarnąć” małpę (czyli ok 2027 ?) i może 25 lat (2040 ?) by jakiś superkomputer dogonił ludzki mózg. I to raczej nieaktualne. Obecnie dwukrotny przyrost następuje prawdopodobnie co 3 lata. W takim przypadku, co do symulacji mózgu w czasie rzeczywistym na superkomputerze – mamy przesunięcie terminu na 2060.

Widać zatem doskonale, jakim wyzwaniem dla ewentualnych prób reversingu jest inteligentny umysł. Skala : ok. 1011 neuronów. Każdy połączony średnio z 7000 innych.ok. 1015 połączeń. Magazynowanie wspomnień w pamięci.Odpowiednik przynajmniej 2,5*1015 bajtów binarnych ,czyli 2500 TB (a to chyba tylko hipokamp). Nawet zakładając,że potrzebne byłoby tylko 1 promil tych zasobów, przeciętny pecet miałby problem.

Nic więc dziwnego, że badania nad sztuczną inteligencją w rzeczywistości od lat dotyczą w istocie „słabej” sztucznej inteligencji. I nie nabierzcie się na ostatnie osiągnięcie Google. Jest ono oczywiście bardzo ważne,wręcz rewolucyjne – z historycznej i programistycznej perspektywy.  Po raz pierwszy sieć neuronowa nauczyła się czegoś praktycznie bez ingerencji człowieka, metodą prób i błędów osiągając świetne wyniki. Ale samo oparte na faktach stwierdzenie, że sieć „gra lepiej niż gracze” ma głównie efekt marketingowy,bowiem może skłonić do przecenienia tego sukcesu i rozpatrywania go w niewłaściwej perspektywie. W istocie rozwiązanie to swym poziomem przypomina raczej szczura umieszczanego w labiryncie przez biologa i znajdującego drogę do pokarmu z lepszym lub gorszym czasem – w zależności od zmiany labiryntu (tu: gry) – bez jednak szeregu bardziej inteligentnych cech obecnych u szczurów. Niestety od tego rozwiązania, do bardziej zaawansowanej uczącej się sztucznej inteligencji w komputerze i robocie – na poziomie intelektu psa czy kota (już nie mówiąc o małpie) jest jeszcze naprawdę sporo pracy…

To przydługawe wprowadzenie było niestety konieczne, by spróbować wbić każdemu potencjalnemu niedowiarkowi do głowy,że dzisiejsza „słaba” sztuczna inteligencja to „mało inteligentne” narzędzia. Z drugiej jednak strony, te „niedoskonałe narzędzia” robią i tak spore wrażenie i oszczędzić mogą naprawdę sporo pracy. Nie potrzeba dużej inteligencji.Tak jak mrówki pomagały oddzielić mak od piasku postaciom z bajek, tak stosunkowo „prymitywne” algorytmy związane z rozwojem badań nad sztuczną inteligencją są i tak naprawdę nieocenione.

Które to algorytmy ? Sporo tego. Badania nad sztuczną inteligencją pomogły przy tworzeniu na przykład:

Są to właściwie teoretycznie „tematy poboczne” – choć ich zastosowanie w niektórych wypadkach może okazać się wręcz nieodzowne i zbawienne. Natomiast, jeśli chodzi o sztuczną inteligencję właściwą to w zasadzie oprócz rozróżnienia „silnej” i „słabej” sztucznej inteligencji wyróżnia się różne podejścia:

  • logiczny – racjonalna inteligencja to coś co da się opisać na podstawie logicznych reguł
  • anty-logiczny („scruffy AI”) – nie wszystkie reguły można wyprowadzić,niektóre trzeba samodzielnie zdefiniować.

czy niniejsze (dziś uznane za komplementarne) podejscia:

  • Symboliczne – Inteligencja jako operowanie symbolami
  • Konekcjonistyczne – Inteligencja bierze się z połączeń między symbolami

Właściwie najstarszym paradygmatem jest paradygmat logiczny powiązany z podejściem typowo symbolicznym. Związany jest on z powstaniem języka Lisp, a później, również języka Prolog. Pomimo faktu, że są to chyba najczęściej wymieniane języki programowania powiązane z badaniami nad sztuczną inteligencją – nieco się różnią.

Lisp – jest językiem relatywnie starym (powstał w 1958 roku) i teoretycznie dziś już „rzadko stosowanym” –  jeśli zapomnieć o jego implementacjach,takich jak Scheme i Clojure. Co jest nadzwyczajnego w języku Lisp ? Jego możliwości. Lisp został oparty na rachunku lambda, co w praktyce oznacza,że jest językiem uniwersalnym i teoretycznie pozwala na skonstruowanie dowolnej aplikacji, która może zostać uruchomiona na maszynie Turinga. Nie jest to jednak język przyjemny dla człowieka, złośliwi tłumaczą jego nazwę jako „Lost In Stupid Parentheses” ( „Zagubiony w Głupich Nawiasach”) ze względu na postać przykładowego kodu wymagającą wielu nawiasów. Bardzo łagodny przykład:

(defun factorial (n)
(loop for i from 1 to n
for fac = 1 then (* fac i)
finally (return fac)))

Inne krytyczne porównanie,to twierdzenie,że „Lisp przypomina owsiankę wymieszaną z obciętymi paznokciami„. Z drugiej strony język ten stosowany może choćby w takich zagadnieniach jak:

  • Badanie algorytmów, obliczalności i definiowalności
  • Dowodzenie twierdzeń
  • Rekurencja

I naprawdę: nie tylko. Emacs i AutoCAD były stworzone z użyciem Lispu.  Co więcej, jak powiedział Kent Pittman:

Proszę nie przyjmować, że Lisp nadaje się tylko do programowania Animacji i Grafiki, SI, Bioinformatyki, B2B i E-Commerce, Zbierania Danych, aplikacji EDA/Semiconductor, Systemów Eksperckich, Finansów, Inteligentnych Agentów, Zarządzania Wiedzą, Mechanicznych CAD, Modelowania i Symulacji, Naturalnych Języków, Optymalizacji, Badań i Rozwoju, Analizy Ryzyka, Planowania, Telekomunikacji i Tworzenia Stron WWW tylko dlatego, że te rzeczy zostały wymienione na liście.

I to chyba raczej fakt, że kod wygląda „dziwnie” sprawia, że Lisp nie jest dotąd często używany, pomimo swej uniwersalności.

xkcd.com , Randall Munroe

Co najlepsze: LISP jest programowalnym językiem programowania. Co tu zatem dużo tłumaczyć. Kochany czy skrajne znienawidzony – Lisp w swoich licznych implementacjach ma przed sobą jeszcze długą karierę, podobnie jak Fortran i C, nawet jeśli nie będzie językiem mainstreamowym.

Prolog powstał pierwotnie jako narzędzie do logicznej analizy języka naturalnego (Polski,Angielski itd). Jest oparty o rachunek predykatów, szczególnie klauzule Horna – jest jednak też narzędziem sztucznej inteligencji, szczególnie jeśli chodzi o systemy automatycznego wnioskowania,czy systemy ekspertowe.

Przykładowy kod w rologu to:


list_member(X, [X|_]).
list_member(X, [_|Y]) :-
list_member(X, Y).

Też dziwne – ale tak jakby mniej.

W praktyce jednak, stosowanie prostej,klasycznej logiki formalnej oczywiście nie wystarcza. Powiedzmy,że mamy letnią wodę.Ani zimna,ani ciepła. I co wtedy ? Zwykła logika jest oparta na prostych kategoriach fałsz-prawda (0-1). Rozwiązaniem tego problemu jest zastosowanie logiki rozmytej. która znalazła szybko zastosowanie w niektórych systemach związanych ze sztuczną inteligencją oraz w automatyce.

Jeśli chodzi o zastosowanie w języku Prolog logiki rozmytej napisano mnóstwo publikacji w literaturze naukowej na ten temat i stworzono sporo implementacji, jednak większość kodów źródłowych i binariów nie jest dostępna w internecie. Do chlubnych wyjątków język Ciao, oparty o język Prolog i mający korzystać z logiki rozmytej. Jest stosunkowo dobrze udokumentowany. Można też poszukać implementacji Bousi Prolog. Niestety kod źródłowy podawany jest tylko na życzenie,dostępne są tylko binaria, a sama dokumentacja projektu jest raczej skromna.

Różne podstawowe implementacje języków Lisp i Prolog można pobrać z internetu. Podobnie jest też z podręcznikami czy tutorialami do nich.

Jako język programowania dla potrzeb mechanizmów sztucznej inteligencji można wykorzystywać również swobodnie takie języki jak Haskell .Oczywiście też, nic,absolutnie nic nie stoi na przeszkodzie by skorzystać z innych języków programowania jak na przykład język C, oraz wszelkie inne języki programowania i ich frameworki.

Z tym, że to wcześniej wymienione języki Lisp,Prolog i po części Haskell są szczególnie polecane jako środowiska systemów sztucznej inteligencji tworzonej na bazie struktur logicznych,zaś pozostałe języki programowania częściej spotykane są przy innych metodach, metodach powiązanych m.in. ze statystyką.

Podejście czysto logiczne ma swoje ograniczenia i nie pozwala zbytnio przybliżyć się do bardziej zaawansowanych sztucznych inteligencji.  Nie wszystkie fakty da się wyprowadzić logicznie,istnieje wiele stwierdzeń i reguł,które są aksjomatami. Poza tym systemy ekspertowe opierają się na faktach związanych z wiedzą ekspertów z danej dziedziny.Rozwiązaniem są tzw. bazy wiedzy.  Tworzeniem baz wiedzy zajmuje się nauka zwana inżynierią wiedzy, jednym z narzędzi stosowanych do tworzenia tego rodzaju baz jest język XML. Dane do bazy mogą być zarówno zbierane przez człowieka jak i przez roboty sieciowe,same bazy bywają również opracowywane bardziej zautomatyzowanymi technikami uczenia maszynowego. Obok problemu reprezentacji wiedzy bazy wiedzy „zdroworozsądkowej” (commonsense knowledge) są jednym z istotnych problemów powiązanych z wydajniejszymi systemami sztucznej inteligencji.

Jednym z głównych projektów zmierzających do stworzenia bazy wiedzy „zdroworozsądkowej” umożliwiającej maszynie wnioskowanie zbliżone do ludzkiego jest baza Cyc firmy CyCorp, wraz z jej otwartą wersją OpenCyc dostępną na stronie Sourceforge. OpenCyc zawiera 293 tysiące idei i ponad 2 mln faktów. Tym niemniej nawet komercyjne wersje bazy nie są doskonałe i wciąż są intensywnie rozwijane.

Należy pamiętać,że o ile podejście logiczne do przetwarzania języka jest istotne – nie jest to jednak podejście prawidłowe,bowiem jak wykazało twierdzenie Gödla o niezupełności:

  1. Każdy niesprzeczny rozstrzygalny system formalny pierwszego rzędu, zawierający w sobie aksjomaty Peana, musi być niezupełny.
  2. (zatem) w ramach żadnego rozstrzygalnego systemu formalnego pierwszego rzędu zawierającego w sobie aksjomaty Peana nie da się dowieść niesprzeczności jego samego

Upraszczając to można między innymi powiedzieć,że logiczne systemy wnioskowania jeśli zostaną zaimplementowane mogą dawać tylko ograniczony zbiór rozwiązań. Inteligentna maszyna musi zatem wyjść poza systemy formalne i być odporna na sprzeczne/niekonsekwentne polecenia oraz paradoksy logiczne,jak choćby paradoks kłamcy.

Ważną rolę w badaniach nad sztuczną inteligencją odgrywają dzisiaj metody statystyczne. Najpopularniejszymi z nich i najbardziej znanymi są sieci bayesowskie.  Wydaje mi się,że łączenie tego rozwiązania z innymi może być niesłusznie niedocenianą ścieżką badań,choć ograniczenia podejścia opartego o samo prawdopodobieństwo są oczywiste. Dlaczego tak uważam ? Wbrew pozorom na nasze decyzje ogromnie wpływa prawdopodobieństwo i „przypadek”. Oczywiście większość tych przypadków to w istocie kompleksowość zjawisk której nie potrafimy opisać ale w czymś takim jak kreatywna inteligencja „przypadek” też odgrywa swą rolę.

Natomiast najistotniejszą i najpopularniejszą dziś grupą narzędzi sztucznej inteligencji są sztuczne sieci neuronowe (naśladujące częściowo zachowanie neuronów w mózgu – lecz jak się okazało w toku dalszych badań w neurobiologii nie do końca):

  •  Sieci jednokierunkowe (klasyczne) – model najstarszy i najprostszy jeśli chodzi o sieci neuronowe. Neurony na wejściu i wyjściu, plus warstwa pośrednia/warstwy pośrednie. Stosowane w zadaniach nastawionych np. na klasyfikację
  • Asocjacyjne (Hopfielda) [Wikipedia:PL, ENG] – rekurencyjne i wykorzystywane do modelowania sieci skojarzeniowych. Przewidują wynik na podstawie wyników wcześniejszych z pewnym prawdopodobieństwem.Również mogą mieć warstwy ukryte.
  • specyficzny rodzaj określany jako „Ograniczona maszyna Boltzmanna” (Restricted Boltzmann Machine – RBM)
  • Sieć splotowa/splatana (Convolutional Neural Network)
  • Sieci Kohonena – stosowane w grupowaniu i kategoryzacji, nie zawierają warstwy ukrytej. Wykorzystują konkurencję neuronów i dziedziczenie przez najbliższych sąsiadów z którymi neuron wygrywający („dzieli się” nagrodą) [Wikipedia: PL, ENG]

Zasadniczo, podstawową wadą wadą sieci neuronowych zawierających warstwę ukrytą jest fakt,że podobnie jak w przypadku algorytmów genetycznych – program znajduje rozwiązanie, ale wcale nie wyjaśnia na jakich przesłankach się opierał.  Jest to nazywane „nieprzeźroczystością”. Co prawda, możliwe jest wykorzystanie metody znanej jako „analiza czułości”, jednak jest to istotne ograniczenie, zwłaszcza w przypadku istnienia wielu warstw ukrytych. Nie trzeba mieć wykształcenia informatycznego by zauważyć,że zważywszy na charakter statystyczny działania sieci możliwe jest,że istotne wyjątki zostaną zignorowane przy tworzeniu modelu,a bzdury na wejściu dadzą bzdury na wyjściu.

Ponadto, sieć neuronowa może ulec w pewnym momencie przeuczeniu, ulegając zbyt wielkiej specjalizacji. Tym samym, spada za bardzo jej zdolność do dokonywania uogólnień. Jednym z rozwiązań jest podział danych stosowanych do uczenia sieci na zbiór uczący i walidacyjny (celem wykrycia przeuczenia sieci). Interesujące wydaje się pytanie, jak wybranie innego fragmentu do walidacji z (tylko pozornie) równomiernej statystycznie próby może mieć na wynik nauczania sieci i jej efektywność w przypadkach granicznych.

Najistotniejszym problemem z sieciami neuronowymi jest jednak sama architektura komputerów.Użycie sieci neuronowych wymaga bardzo dużej mocy obliczeniowej,ze względu na konieczność symulowania pracy licznych neuronów,co wymaga wielu procesorów/dobrej karty graficznej/itd – i znacznie podnosi koszt energetyczny zastosowania sieci neuronowej. Rozwiązaniem tego problemu są wspomniane przeze mnie na tym blogu układy neuromorficzne (lub implementacja sztucznych neuronów w układach FPGA 😉 ) a tym samym – odejście od Architektury von Neumanna. Jeśli ktoś jest zainteresowany modelowaniem neuronów w jezyku VHDL sugeruję np.:

Stosunkowo nową metodologią wykorzystującą sieci neuronowe jest Deep learning. Jest on związany z grubsza z „głębokimi” (zawierającymi wiele warstw ukrytych) sieciami neuronowymi.

Opis metody podstawowej można z grubsza przetłumaczyć jako:

Metoda polega na wstępnym przeszkoleniu jednej warstwy na raz, traktując każdą warstwę z kolei jako „ograniczoną maszynę Boltzmanna”  bez nadzoru, a następnie przy użyciu nadzorowanej wstecznej propagacji dostrajającej.

Sieci neuronowe w podejściu Deep Learning osiągają stosunkowo poważne sukcesy – zwłaszcza w rozpoznawaniu obrazów, i to one są odpowiedzialne za wspomniany wcześniej ostatni sukces badawczy Google z grami komputerowymi. W gruncie rzeczy, nie wymagają one specyficznych dla siebie języków programowania.

Przykładowo: Google wykorzystało do swoich badań opisanych w artykule „Human-Level Control through Deep Reinforcement Learning” pisma „Nature” swoją architekturę Deep Learning o nazwie dqn 3.0 wykorzystującą język skryptowy Lua i bibiotekę Torch 7.0 z biblioteką graficzną nngraph. Kod wykorzystany we wspomnianym artykule „Nature” można ściągnąć [stąd]. (Ważne.Google wykorzystało tu jednocześnie techniki Deep Learning i Reinforcement Learning)

Innym przykładem jest Polska firma Craftinity, której pracownik w serwisie wykop.pl deklarował używanie języków Python, Java, Scala i C++ oraz bibliotek deeplearning4j, pylearn2, theano, torch7(.0 ? 🙂 ), numpy i nd4j.

Tym niemniej, długoterminowo sieci neuronowe są problematyczne z przyczyn które wymieniłem wcześniej,zwłaszcza zaś ze względu na koszt energetyczny wykorzystania sieci. W dodatku, każdy z dotychczasowych modeli sieci neuronowej tylko pod niektórymi aspektami jest zbliżony do mózgu,stąd też sieci neuronowe co prawda mogą idealnie nadawać się jako narzędzia odtwarzające rolę zmysłów i zaawansowane narzędzie poznawcze – jednak bez poważnych zmian w samej istocie działania raczej wątpię,by udało im się prawidłowo odtworzyć funkcjonalność i uniwersalność odpowiednich dużych sieci układu nerwowego jak mózgi kręgowców. Nawet pomimo przewyższenia ich pod całkiem istotnymi względami.

Dodatkowym problemem (częściowo przezwyciężonym co prawda przez Google w ostatnim eksperymencie z grami) jest też koncentracja na rozwiązaniu optymalnym lub suboptymalnym celem maksymalizacji wyników. Prawdziwa inteligencja tak oczywiście nie działa zawsze, źródłem sukcesów prawdziwie racjonalnej inteligencji różniącej nas od najbardziej prymitywnych zwierząt (bo niektóre zwierzęta wyższe też mogą zadziałać podobnie) jest gotowość do zaakceptowania sygnału negatywnego (poniesienia kosztu nieprzyjemności) w celu osiągnięcia późniejszego, przewidywanego większego sukcesu.

Jednak niezaprzeczalnym faktem jest,że kierunek taki jak sieci neuronowe czy bayesowskie znacznie wykracza poza klasyczną logikę formalną,która – pomimo swej skrajnej użyteczności pozwala tylko na uzyskanie ograniczonych zbiorów rozwiązań.

Wreszcie – obecne metody sztucznej inteligencji są ograniczonym wycinkiem problemu,jakim jest generalna sztuczna inteligencja (Artificial General Intelligence – AGI). Większą uniwersalność uzyskać można dopiero poprzez mieszanie metod sztucznej inteligencji i wykorzystanie tzw. systemów wieloagentowych. Jest to kolejny mniej standardowy paradygmat programowania, którego użyteczność w obszarach innych niż badania sztucznej inteligencji jest niewątpliwa. Jak mówi przysłowie ludowe: „co dwie głowy, to nie jedna”, ale z drugiej strony – nawet 1000 głów myszy nie zastąpi funkcjonalnie głowy kota…

Istnieje jeszcze jedno ciekawe podejście do sztucznej inteligencji. Podejście które zakłada,że generalna sztuczna inteligencja (AGI) może być związana z funkcjami naszego ciała,i zakłada,że system inteligentny nie może być całkowicie „bezcielesny”. Jednym z istotnych projektów powiązanych z tym podejściem jest OpenCog .

Jednak również to podejście poza niewątpliwymi zaletami ma wady i rodzi pytania:

  • Które funkcje związane z „cielesnością” naśladować,a które nie ?
    • Moim zdaniem, uczucia i niektóre naturalne odruchy związane z przetrwaniem są potencjalnie skrajnie niebezpieczne u sztucznej inteligencji (i to – dowolnego poziomu: również „słabej” sztucznej inteligencji) i robotów.:
      • Dążenie do maksymalizacji/minimalizacji sygnału jako motor działania bardziej skomplikowanych systemów prowadzić może do uzależnienia / „narkomanii”
      • Dążenie do auto-optymalizacji jako główny cel może prowadzić do rabunkowego gospodarowania zasobami i porzucenia pozostałych celów
      • Dążenie do samoreplikacji – jak wyżej
      • „Strach” (rozumiany jako negatywny sygnał warunkujący) przed „śmiercią”/wyłączeniem/porażką – sprzeciw wobec wszystkich generujących takie zagrożenie czynników,również wobec człowieka (przynajmniej wobec braku wbudowanych zabezpieczeń)
    • Określona niecierpliwość może być w pewnych sytuacjach korzystna (zabezpieczenie maszyny przed popadnięciem w nieskończoną pętlę z której nie można wyjść)
    • Brak możliwości wyłączenia systemu – oczywiście jest katastrofalny.
  • Jakie powinny być granice percepcji i możliwości oddziaływania sztucznej inteligencji na otoczenie ?

Niniejsze opracowanie niestety,bynajmniej nie wyczerpuje – o czym wspominałem na początku – ogromnego zakresu poruszanej problematyki, jest co najwyżej wyjątkowo skromnym wstępem do większej całości.Mam nadzieję,że nie tylko się podobało,ale wyjaśniło też niektóre kwestie związane z bieżącym stanem badań nad sztuczną inteligencją.

Dziękuję za wszelkie krytyczne uwagi,korekty itd.

Reklamy

2 thoughts on “Narzędzia sztucznej inteligencji – ogólne i uproszczone spojrzenie

  1. Dobry i ciekawy wpis.

    W sumie wyścig na wielkość (ilość) klastrów kolejnego superkomputera gwarantuje powolny ale jednak rozwój AI. Gwarantuje też wspomniane problemy z niewyobrażalną ilością danych i potrzebną do tego energią. Wówczas można rozważać stosowanie jeszcze prawa Moore’a odnoszącego się do liczby tranzystorów. To samo z językami programowania – obojętnie jak wysokiego poziomu będziemy stosować język (w końcu nikt w asemblerze nie będzie programował sieci neuronowej) i czy on będzie mniej lub bardziej abstrakcyjny, to nie unikniemy podejścia czysto logicznego. Może napiszę głupotę ale w końcu mamy możliwość opisania AI, którą tworzymy z użyciem strukturalnego bądź obiektowego algorytmu. A to czy algorytm będzie heurysatyką czy siecią neuronową? Czy algorytm logiki rozmytej będziemy opisywali strukturalnie, czy obiektowo?

    Wpis jest poświęcony sytuacji bieżącej. Może to nie jest całkiem na temat ale warto wspomnieć o poszukiwaniu innych rozwiązań – innych, niż opartych o układ scalony. Będąc dzieckiem czytałem z wypiekami na twarzy o próbach łączenia tranzystorów z komórkami neuronowymi świni – jedyny problem, którego nie można było wyeliminować to czas życia takiej komórki poza mózgiem liczony w sekundach. Dalej – DNA wykorzystywane do obliczeń – błyskawiczny wynik, ale jedno zastosowanie, taki komputer do jednej operacji. Jak zmienimy układy scalone na „coś” nowego – będziemy mieli otwartą drogę do silnego AI. Poszukiwania technologii trwają.

    Co do sieci neuronowych – ja się zatrzymałem na poziomie „Elementarnego wprowadzenia do sieci…” Ryszarda Tadeusiewicza. Wg mnie pozycja (choć stara) obowiązkowa dla interesujących się tą tematyką. Tam też w przystępny sposób autor wyjaśnił np. dlaczego sieci neuronowych nie zastosujemy tam, gdzie potrzebujemy wyniku numerycznego o wysokiej dokładności.

    • „Może napiszę głupotę ale w końcu mamy możliwość opisania AI, którą tworzymy z użyciem strukturalnego bądź obiektowego algorytmu.”

      Nie jest to takie głupie do końca – bo faktycznie opis w rodzaju algorytmu jest pewnego rodzaju redukcjonizmem a każde uproszczenie ma (póki co – przy tej skali) bliżej nieznany efekt. Języki programowania (zwłaszcza te kompilowalne) też mogłyby namieszać (choćby kwestia rozmiarów zmiennych).To nie jest kwestia wiary: Bug happens. Tym niemniej metody statystyczne są systemami nie posługującymi się czystą logiką,a statystyką.To może wystarczyć.Może.

      O układach opartych na DNA nawet do tej pory nie pisałem na tym blogu.Może trzeba będzie. Jest jedno „ale”. Nośnik jest wspaniały,ale przy problemach znanych jako EXPACE nie jest podobno lepszy od maszyny Turinga. A koszt jest zauważalnie większy.

      Przynajmniej tu,na Ziemi zabawa z kriogeniką sporo kosztuje. Bazy księżycowymi bazami księżycowymi,ale tak sobie myślę,że np. Księżyc, to może być idealne miejsce na serwerownię niejednego superkomputera w przyszłości.I w miarę zimno i pod dostatkiem masy,żeby pozbywać się ciepła…

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s