Od dawien dawna lat człowiek próbuje budować twory na swoje podobieństwo. Od pewnego czasu zaczął też zastanawiać się nad budową sztucznej inteligencji, która będzie dorównywała jego możliwościom. Jak dotychczas, próby postępu w tej dziedzinie nie są szczególnie imponujące ale jestem przekonany, że niedługo uda się wybudować algorytm, który będzie potrafił swobodnie się rozwijać, modyfikować i uczyć podobnie jak człowiek.
Pierwsze twory tego typu będą powstawały zapewne w klastrach superkomputerów. I tu powstaje problem. W przypadku naszego umysłu, od urodzenia, a nawet jeszcze wcześniej, od momentu jego uformowania jesteśmy zasypywani milionami informacji pochodzącymi z naszych zmysłów, które pozwalają na budowanie odpowiednich algorytmów postrzegania za ich pomocą. Wszystkie zmysły się dopełniają, dzięki czemu to, czego nie jesteśmy pewni przy korzystaniu z jednego zmysłu potwierdzane jest lub nie za pomocą pozostałych. A co zrobić z maszyną? Jak ona miałaby się uczyć i skąd powinna otrzymywać informacje?
Co powiecie na niewychylanie się na początku z wirtualnego świata i skorzystanie z obecnych aplikacji zapewniających nieskomplikowany interfejs i możliwość pobierania informacji od milionów ludzi? Te aplikacje istnieją już dziś, więc w przyszłości nie byłoby najmniejszego problemu ze skorzystaniem z nich. Oczywiście mowa o wirtualnych światach i wszelkiego rodzaju grach online na nich bazujących. Zamiast skrótu MMORPG tym razem będziemy mieli do czynienia z Massively-Multiplayer Online Artificial Intelligence Learning Environment.
Spotkanie w wirtualnej przestrzeni będzie na pewno prostsze dla nas i dla maszyn. Być może dzięki temu łatwiej uznamy fakt, że już nie jesteśmy sami na świecie. 😉
Co dalej? Samorozwijające się rzeczywistości? EPIC? The Wired? 🙂
Sądzę, że w pierwszej kolejności musimy zaakceptować jedną rzecz – sztuczna inteligencja nie będzie działać od razu. Tak jak człowiek, najpierw formuje się przez przysłowiowe i dosłowne jednocześnie 9 miesięcy, a po urodzeniu jest bezbronną istotką, którą trzeba przez wiele lat się opiekować i przez wiele lat uczyć. Dopiero po pewnym czasie człowiek zdobywa umiejętność samodzielnego poszerzania wiedzy z innych źródeł niż otaczająca go rzeczywistość (w sensie tej bardziej abstrakcyjnej wiedzy, czerpanej z opowieści, książek, czy innych niebezpośrednich źródeł informacji).
W świecie komputerowej sztucznej inteligencji staramy się ją rozwijać inaczej – gdy zauważymy jakieś nieprawidłowości, coś nielogicznego, to zabieramy się za jej POPRAWIANIE. Modyfikację „od środka” tego, na czym dane wydarzenie się oparło. A przecież o ile lepiej by było, gdyby dać możliwość komputerowi samodzielnego poprawiania swoich wzorców postępowania na podstawie efektów postępowania wcześniejszego.
Pomijając jakieś intensywne i skomplikowane czynności, głupie silniki „AI” w grach komputerowych – bardziej zajadli gracze znają na pamięć pewne zagrania postaci sterowanej przez AI, przez co potrafią tą wiedzę wykorzystywać przeciwko nim. Gdyby jednak postaci AI uczyły się na własnych błędach i po jednej przegranej rozgrywce zaczęły zachowywać się inaczej, w sposób nieprzewidywalny dla człowieka (zakładam, że ludzki przeciwnik nie grzebie w kodzie ani danych zbieranych przez sztuczną inteligencję). Wystarczy tutaj wziąć pod uwagę sytuację, że ludzie grają całkiem inaczej przeciwko żywym przeciwnikom, a całkiem inaczej przeciwko „komputerom”.
Dot
Zgadzam się ze wszystkimi Twoimi argumentami. I jeszcze dodam jedną ważną rzecz. 🙂
Sztuczna inteligencja nigdy nie nie zadziała bez napływających informacji, tak samo jak człowiek. Dlatego jestem za tym, żeby sztuczna inteligencja od początku przebywała w ludzkim środowisku. Nawet tak `odrealnionym’ jak wirtualny świat. 🙂
mnie zastanawia tylko jedno – jak ten algorytm bedzie sprawdzac poprawnosc tego co w sobie zmodyfikuje.
jak dobrze wiadomo napisanie programu ktory bedzie sprawdzal z pewnoscia 100% czy dowolny podany kod sie nie zawiesi jest problemem o niesamowitej zlozonosci, jezeli w ogole mozliwym.
yoshi
Myślę, że zostanie to rozwiązane podobnie jak w ogranizmach żywych – te, które nie działają zgodnie z warunkami, wyginą. Co prawda to też nie jest takie łatwe do zaimplementowania, ale daje przynajmniej jakiś punkt wyjścia.
A czy programista, pisząc jakąś dużą, skomplikowaną aplikację, wie, że ona się nie zawiesi? Najczęściej można to względnie przewidzieć, ale i tak się to nie opłaca. Dużo łatwiej, taniej i szybciej jest napisać tak jak się wydaje, że będzie dobrze, a następnie przetestować. Po to systemy operacyjne mają możliwość ubijania „martwych” procesów, by w razie, gdy jednak nastąpi nieprzewidziana podczas testów sytuacja, można było przy możliwie najmniejszych stratach taki program zresetować.
Ponadto – nie musi to być algorytm jednowarstwowy. Mało tego, nie wyobrażam sobie, aby tak wyglądał. Jest jakaś aplikacja, która analizuje dane, na podstawie tych danych i wytworzonych wzorców postępuje. Następnie na podstawie wyników postępowania odpowiednio modyfikuje wzorce i dane. Ale nie modyfikuje sama siebie. Zmiana działającego programu jest praktycznie niemożliwa. I nie mówię tu o banalnej do ominięcia kwestii blokady do zapisu otwartego pliku, ale o kwestii tego, jak zbudowany jest kod maszynowy.
Dot
Zastanawiałem się nad możliwością stworzenia piaskownicy do rozwiązywania danego problemu, w której można byłoby przetestować dużą liczbę dostępnych rozwiązań. Kod bardziej efektywny od wcześniejszego byłby następnie wprowadzany do programu.
Oczywiście dany algorytm, efektywny dla odpowiednich danych nie musi być definitywnie poprawny.
… Matrix?
Dot – ja zauwazylem ciekawa rzecz zwiazana z moimi botami w Counter-Strike’u (moimi => u mnie). Nie wiem czy to przypadek, ale im dluzej gram, tym sa trudniejsze, zaczyna mi sie nawet wydawac, ze przewiduja moje zagrywki i kopiuja moje pomysly.
Nie mam pojecia, czy to kwestia kodu botow, czy tylko tak mi sie wydje, a moze jest to inny, nie do konca losowy czynnik, ale to dosc interesujace 😉
Technicznie jest to bardzo możliwe – wystarczy, że mają zaimplementowaną sieć neuronową. Jest to jednak dość rzadkie wśród AI w grach komputerowych (przynajmniej tych „zwykłych”, a nie tych, przeznaczonych do rozwoju AI), bo dość obciążające dla maszyny, na której chodzą.
Witaj.
Dlaczego przestałeś pisać? Byłoby fajnie gdybyś dokończył kurs SQL Lite, może jak połączyć się z bazą w Visual Studio .NET? Najlepiej C++/CLI.
[…] 2007 roku popełniłem wpis MMOAILE (Massively-Multiplayer Online Artificial Intelligence Learning Environment), w którym […]