Autor Wątek: AI które się uczy.  (Przeczytany 7990 razy)

Offline Tryllion

  • Użytkownik

# Grudzień 09, 2009, 15:20:10
Witam

Postanowiłem zrobić program o którym z dawien dawna marzyłem. Program który zaczyna jako tabula rasa, z czasem zaś przerasta swego nauczyciela.  ;)

Pierwsze pytanie jest o literaturę, o samym AI(działanie sieci, uczenie, zbiory rozmyte, algorytmy) jestem myślę dobrze poinformowany, niestety o konkretnych zastosowaniach nie wiem za wiele. Czy mógł by ktoś polecić konkretną pozycję, która jemu samemu pomogła. Oczywiście mam parę na oku, czyli to co akurat jest w bibliotece, jednak czytanie na chybił trafił jest może nie bezproduktywne ale na pewno mało efektywne.

Teraz o problemie. Wymyśliłem prostą grę, pozbawioną elementów poruszania się, organizacji przestrzennej jednostek etc tak aby uprościć zadanie AI.
Rozpoczynamy z określoną pulą możliwych ruchów, powiedzmy A- buduj food B-hoduj X C-sprzedaj , celem niech będzie uzbieranie jakieś kwoty. Oczywiście więcej fooda kosztują Xy wydajniejsze.

Pytanie jak nauczyć i jak zaprojektować system który znajdzie optymalną drogę między kosztem a przyszłym przychodem. No i oczywiście który będzie analizować poczynania przeciwnika.

Myślę na początek nad prostym systemem wagowym i tablicą ruchów. IF przeciwnik ma się cienko THEN warto poczekać skoro dysponuję jednostką wydajniejszą ale brak mi jeszcze fooda, itd.

Proszę o jakieś wskazówki, proponowane techniki, algorytmy, może przykłady. Sam oczywiście także przeczesuję książki i google, ale myślę nie zawadzi zapytać.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

# Grudzień 09, 2009, 15:59:34
Na początek trzeba się nauczyć jakiegoś języka typu c/c++
A jak się go nauczysz ,  i opanujesz , to wtedy zrozumiesz , że niektóre pytania zadane przez ciebie są banalne i ogólnikowe.
Większość rzeczy które podałeś , rozwiązują się same , podczas projektowania gry/programu.

Offline Liosan

  • Moderator

# Grudzień 09, 2009, 16:07:03
Zignorujmy post poprzednika :)

Do uczenia się nadają się, oprócz rzeczy które wymieniłeś, drzewa decyzyjne; ale do nich potrzebujesz dyskretnego opisu stanu (analogicznie jak do sieci neuronowych potrzebujesz ciągłych  funkcji wejścia).

Jeśli dobrze rozumiem, wziąłeś sobie prostą grę (i to "grę" w sensie teorii gier), i chcesz do niej napisać system, który wyprodukuje Ci AI? Akurat do tak prostej gry napisałbym AI z palca... ale rozumiem, że nie to jest celem ćwiczenia.

Jak zaprojektować system? Wybrać jakieś rozwiązanie i zobaczyć czy się sprawdza :) Jak nauczyć? Rozegrać 1000 partii i użyć ich jako danych treningowych :) Z czym masz problem? Gdzie podpiąć back-propagation ?

Liosan

Offline MadBonsai

  • Użytkownik
    • Ifrit

# Grudzień 09, 2009, 16:10:33
Na początek trzeba się nauczyć jakiegoś języka typu c/c++
A jak się go nauczysz ,  i opanujesz , to wtedy zrozumiesz , że niektóre pytania zadane przez ciebie są banalne i ogólnikowe.
Większość rzeczy które podałeś , rozwiązują się same , podczas projektowania gry/programu.
Przepraszam, ale w którym miejscu Tryllion napisał, że nie umie programować? I że akurat kod natywny potrzebny do życia? :P

Odnośnie pytania. Przyszło mi do łba: czy można by jakoś użyć algorytm mrówkowy? ;) Mrówka tutaj to próbna inwestycja, operacja. Jeśli powiedzie się, to następnym razem wysyłamy "większą mrówkę" - podobną operację o większym koszcie. Oczywiście nie wiem, czy to się to przyda - zależy od rodzaju symulacji, bardziej chyba przydałoby się przy symulowaniu chłopów ścinającym owies kosą, ale mniejsza ;)

# Grudzień 09, 2009, 16:21:24
Jak nauczyć? Rozegrać 1000 partii i użyć ich jako danych treningowych :) Z czym masz problem? Gdzie podpiąć back-propagation ?
No właśnie ja też nie wiem z czym koleś ma problem.
Może nie umie zapisywać wyników walk różnych AI.
Albo nie umie stworzyć odpowiednich struktur przechowujących dane.

Offline mihu

  • Użytkownik
    • mihu

# Grudzień 09, 2009, 16:35:59
Jak nauczyć? Rozegrać 1000 partii i użyć ich jako danych treningowych :) Z czym masz problem? Gdzie podpiąć back-propagation ?
No właśnie ja też nie wiem z czym koleś ma problem.
Może nie umie zapisywać wyników walk różnych AI.
Albo nie umie stworzyć odpowiednich struktur przechowujących dane.
Nie chcę być niemiły, ale z twoich wypowiedzi wynika, że autor tematu wie dużo więcej od ciebie. Obawiam się, że to ty masz problem ze zrozumieniem treści.

Mam pomysł - przejrzyj jeszcze raz temat i zastanów się, czy rozumiesz większość użytych sformułowań:
- sieci neuronowe
- zbiory rozmyte
- back-propagation
- funkcja ciągła, dyskretna
- drzewo decyzyjne
- teoria gier
- algorytm mrówkowy

Jeśli nie rozumiesz wszystkich/części powyższych terminów (tak jak ja), to nie wypowiadaj się na tematy, o których nie masz pojęcia! Proszę!

# Grudzień 09, 2009, 16:47:32
Jeśli nie rozumiesz wszystkich/części powyższych terminów (tak jak ja), to nie wypowiadaj się na tematy, o których nie masz pojęcia! Proszę!
Masz racją , wszystkich nie znam  . Ale pisze bo kiedyś czytałem , i się tym interesowałem.
Przeczytałem większość żeczy z http://www.algorytm.org/ .

Offline lucypher

  • Użytkownik
    • Por Design

# Grudzień 09, 2009, 16:58:00
Jeśli nie rozumiesz wszystkich/części powyższych terminów (tak jak ja), to nie wypowiadaj się na tematy, o których nie masz pojęcia! Proszę!
Masz racją , wszystkich nie znam  . Ale pisze bo kiedyś czytałem , i się tym interesowałem.
Przeczytałem większość żeczy z http://www.algorytm.org/ .

GTFO do słownika ortograficznego.

Hm, czy przypadkiem Quake 2 nie miał botów które się uczyły?

# Grudzień 09, 2009, 17:10:42
Hm, czy przypadkiem Quake 2 nie miał botów które się uczyły?
Zależy o jaki poziom inteligencji chodzi , i co dla ciebie jest inteligencją.
Jeśli brać za odnośnik twój poziom inteligencji , to masz rację , Quake 2 miał uczące się boty.

Offline Kuba D.

  • Użytkownik

# Grudzień 09, 2009, 17:13:46
Wiele do dyskusji nie wniosę ale o ile pamiętam w "Perełkach..." było dosyć o różnych algorytmach i podejściach do AI i to zarówno tych prostych jak i bardziej zaawansowanych.

Offline maciek_slon

  • Użytkownik

# Grudzień 09, 2009, 17:49:47
Rozpoczynamy z określoną pulą możliwych ruchów, powiedzmy A- buduj food B-hoduj X C-sprzedaj , celem niech będzie uzbieranie jakieś kwoty. Oczywiście więcej fooda kosztują Xy wydajniejsze.

A tutaj mi przychodzi na myśl wprost programowanie liniowe :P Znienawidzone przeze mnie na uczelni, ale do takich celów jak znalazł, chociaż może się okazać że jest zbyt hard-coded a za mało uczące :P

Offline Liosan

  • Moderator

# Grudzień 09, 2009, 18:00:09
A tutaj mi przychodzi na myśl wprost programowanie liniowe :P
Też mi się kojarzy, ale nie jestem pewien czy zadziała... może :) Na pewno nie jest to algorytm uczący się...

Nie-adaptywnych podejść można wymyślić kilka, mini-max a nawet A* się nadadzą :) Ale chyba nie o to autor pyta...

Liosan

Offline lucypher

  • Użytkownik
    • Por Design

# Grudzień 09, 2009, 18:36:49
Hm, czy przypadkiem Quake 2 nie miał botów które się uczyły?
Zależy o jaki poziom inteligencji chodzi , i co dla ciebie jest inteligencją.
Jeśli brać za odnośnik twój poziom inteligencji , to masz rację , Quake 2 miał uczące się boty.

Dude, STFU jeżeli nie masz nic mądrego do powiedzenia.

Wracając do tematu, nie wiem czy się przyda, ale tutaj jest info o tym bocie z Q2 ;)

Offline siso

  • Użytkownik

# Grudzień 09, 2009, 19:02:26
Wydaje mi się, że mógłbyś spróbować wykorzystać tu technikę GoCap (Game Observation Capture), opisaną skrótowo np. w Perełkach, t.3, o czym nadmienił Kuba D.

Powinieneś wyposażyć swój system w coś na kształt "trenera", który będzie normalnym aktorem z funkcją sterowania przez użytkownika. W trybie uczenia tworzysz i udoskonalasz zasady, które są odpowiedzią na konkretne stany wejścia. Im więcej cykli uczenia wykonasz, tym bardziej klarowne zasady uzyskasz. W końcu system powinien uzyskać stabilność, kiedy większość decyzji AI jest zgodna z oczekiwanym rezultatem danej akcji.

Zaletą tej metody, jak twierdzą ci, co ją wykorzystują, jest bardzo duży realizm wyuczonych zachowań. Niestety, z racji wymogu nauczyciela, nie nadaje się do uczenia automatycznego.

Offline Charibo

  • Redaktor

# Grudzień 09, 2009, 21:11:46
Hm, czy przypadkiem Quake 2 nie miał botów które się uczyły?
Zależy o jaki poziom inteligencji chodzi , i co dla ciebie jest inteligencją.
Jeśli brać za odnośnik twój poziom inteligencji , to masz rację , Quake 2 miał uczące się boty.
Wladekprogramista: otrzymujesz ostrzeżenie za całokształt twórczości. Opamiętaj się, bo nie tylko w tym, ale w wielu innych wątkach robisz oborę. Wyzywasz ludzi, a belki we własnym oku nie widzisz.
« Ostatnia zmiana: Grudzień 09, 2009, 21:14:23 wysłana przez Charibo »