Autor Wątek: Gdzie konczy sie skrypt a zaczyna sie AI ?  (Przeczytany 31511 razy)

Offline siwy

  • Użytkownik

# Czerwiec 27, 2006, 12:20:37
Czytajac wypowiedzi na tym i innych forum i przegladając strony www mam maly metlik w glowie :))...
Chcialem postawic wszystkim pytanie:
"Gdzie kończy sie skryp a zaczyna sie AI?"...
Czy mozna mowic o AI jezeli zaprogramujemy NCP w grze "Strzelani Karnych" tak, ze NCP sprawdza pozycje pilki i tam sie przesuwa :)... (100% skutecznosci :D)..
Jaka jest róznyca pomiedzy skryptem a sztuczna inteligecia (jezeli wogole jest?)...
Czym dla was jest AI?...

Zapraszam do dyskusji :))...

Pozdro Siwy...

Offline Mr. Spam

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

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 12:38:23
Generalnie określenie "skrypt" użyte w odniesieniu do sztucznej inteligencji oznacza, że dane zdarzenie zostało całkowicie zaprogramowane przez twórców gry. Dobrym przykładem może być Doom 3. Potwory mogą czaić się wszędzie i potem wyłażą na przykład z takiej dziury w podłodze, ale one same się tam nie schowały - umieścili je tam twórcy mapy i przypisali właśnie ów "skrypt", który spowoduje, że potwór wyjdzie z dziury, jak gracz znajdzie się w określonej pozycji. Jeżeli chodzi o skrypt w znaczeniu "język skryptowy", to nie każde AI zakodowane w postaci skryptu musi być tak banalne. Na przykład jeden z najlepszych botów do Quake 1 powstał jako skrypt w QuakeC, a "skryptem" w tym gorszym znaczeniu go nikt na pewno nie określi. :)

Offline Majtek

  • Użytkownik

# Czerwiec 27, 2006, 12:44:17
jak dla mnie AI to AI, nie ważne jak to osiągnięto ważne ze działa, czy to za pomocą jakiegoś algorytmu czy skryptu. Według mnie skrypt ma opisywać zachowanie AI w danej chwili a nie dokładnie mówić jemu co ma robić. W oblivionie jest bardzo dobrze zrobione AI, tam tylko opisujesz co bot ma robić w określonych godzinach a jak to zrobi to już jego sprawa (algorytmu). Myślę że tak powinny wyglądać skrypty  do AI jak w oblivionie.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Czerwiec 27, 2006, 14:24:29
Sztuczna inteligencja jest wtedy, gdy maszyna potrafi samodzielnie wyciągać wnioski. Oczywiście sztucznej inteligencji z prawdziwego zdarzenia jeszcze nie stworzono, ale od dawna tworzy się jej namiastki.

Nawiązując do twojego przykładu - jeśli bramkarz przesuwa się tam, gdzie leci piłka, to nie jest sztuczna inteligencja, tylko prosty algorytm. Jeśli natomiast bramkarz przeanalizuje sto ostatnich strzałów, następnie dojdzie do wniosku, że najczęściej strzelasz w prawy górny róg bramki i przy następnym strzale się tam przesunie, to już będzie coś w rodzaju sztucznej inteligencji.

Natomiast skrypt to skrypt - takie programowanie, tylko uproszczone. W języku skryptowym można zarówno tworzyć algorytmy o przewidywalnym działaniu, jak i algorytmy maszynowego uczenia się.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 15:08:01
Cytuj
Sztuczna inteligencja jest wtedy, gdy maszyna potrafi samodzielnie wyciągać wnioski.
Myślę, że to jest zbyt wymagająca definicja AI. Z taką definicją, to mało które AI użyte w grach by pod to podchodziło, a przeciez sztuczna inteligencja to nie tylko programy uczące się - w razie wątpliwości, polecam Encyklopedię PWN (link). :)

Cytuj
Nawiązując do twojego przykładu - jeśli bramkarz przesuwa się tam, gdzie leci piłka, to nie jest sztuczna inteligencja, tylko prosty algorytm. Jeśli natomiast bramkarz przeanalizuje sto ostatnich strzałów, następnie dojdzie do wniosku, że najczęściej strzelasz w prawy górny róg bramki i przy następnym strzale się tam przesunie, to już będzie coś w rodzaju sztucznej inteligencji.
Oba przypadki łapią się zarówno pod "prosty algorytm", jak i sztuczną inteligencję. :)

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Czerwiec 27, 2006, 15:20:25
Myślę, że to jest zbyt wymagająca definicja AI. Z taką definicją, to mało które AI użyte w grach by pod to podchodziło, a przeciez sztuczna inteligencja to nie tylko programy uczące się

To zależy z kolei, jaką weźmiemy definicję wnioskowania. W poście powyżej przyjąłem, że klasyfikacja, wyszukiwanie skupisk czy tworzenie prostych reguł to też rodzaj wnioskowania. Przy takim założeniu wiele algorytmów AI podchodzi pod moją definicję :). Inna sprawa, że pojęcie "AI" bywa często nadużywane - wiele osób nazywa sztuczną inteligencją każde działanie komputerowego "przeciwnika" :).

Cytuj
Oba przypadki łapią się zarówno pod "prosty algorytm", jak i sztuczną inteligencję. :)

Tak, bo granice między tymi dwoma pojęciami są rozmyte. Zauważ, że w niniejszym poście użyłem nawet wyrażenia "algorytm AI". Kto wie, może nawet nasze mózgi działają według jakichś algorytmów, co najwyżej mocno złożonych? ;)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 15:31:34
Cytuj
To zależy z kolei, jaką weźmiemy definicję wnioskowania. W poście powyżej przyjąłem, że klasyfikacja, wyszukiwanie skupisk czy tworzenie prostych reguł to też rodzaj wnioskowania.
Z przykładu o bramkarzu wyciągnąłem wniosek (;)), że wnioskowanie oznacza dla Ciebie umiejętność uczenia się na podstawie obserwacji.

Cytuj
Inna sprawa, że pojęcie "AI" bywa często nadużywane - wiele osób nazywa sztuczną inteligencją każde działanie komputerowego "przeciwnika" :).
I myślę, że w pewnym stopniu mają rację - każde sterowanie komputerowym przeciwnikiem jest w jakimś stopniu nadaniem mu inteligencji. Niestety, określając to w ten sposób znowu ciężko o jasny podział na AI i "skrypty", więc jeżeli miałbym zdefiniować, co w przypadku sterowania komputerowym przeciwnikiem jest sztuczną inteligencją, to powiedziałbym, że jest to po prostu algorytm dążący do wygranej tego przeciwnika (nawet jeżeli jest to coś banalnego na dwie linijki kodu). :)


EDIT: Po chwili zastanowienia, niekoniecznie do wygranej, ale algorytm starający się wypełnić jakiś określony cel (pod wcześniejszą definicję nie łapią sią algorytmy kontrolujące NPC'ów, bo oni nie mają na celu wygranej). :)
« Ostatnia zmiana: Czerwiec 27, 2006, 15:33:31 wysłana przez Krzysiek K. »

Offline macabre13

  • Użytkownik

# Czerwiec 27, 2006, 15:36:37
A czy nie mozna by tego uproscic do takiej sytuacji.
AI: podejmuje samodzielnie decyzje, potrafi zmieniac swoje zachowanie, mozliwe jest laczenie / zmiana / definiowanie nowych rozwiazan.
Skrypt: decyzje sa podejmowane z wczesniej na stale wszytych algorytmow, nie dopuszczalne laczenie / 'mutowanie' rozwiazan.

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Czerwiec 27, 2006, 15:41:50
Z przykładu o bramkarzu wyciągnąłem wniosek (;)), że wnioskowanie oznacza dla Ciebie umiejętność uczenia się na podstawie obserwacji.

A kto to widział, żeby wnioskować na podstawie zaledwie jednego przypadku? ;)

Cytuj
I myślę, że w pewnym stopniu mają rację - każde sterowanie komputerowym przeciwnikiem jest w jakimś stopniu nadaniem mu inteligencji.

Chyba jednak sam przyznasz, że kiwanie się z przeciwnikiem, który zawsze przesuwa się w tę samą stronę co ty nie dostarcza zbyt wielu emocji ;). Ja nie nazwałbym tego sztuczną inteligencją, tylko (parafrazując czyjś podpis z tego forum) wrodzoną głupotą ;).

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 15:45:18
A czy nie mozna by tego uproscic do takiej sytuacji.
AI: podejmuje samodzielnie decyzje, potrafi zmieniac swoje zachowanie, mozliwe jest laczenie / zmiana / definiowanie nowych rozwiazan.
Skrypt: decyzje sa podejmowane z wczesniej na stale wszytych algorytmow, nie dopuszczalne laczenie / 'mutowanie' rozwiazan.
Nie można, bo wtedy praktycznie wszystko musiało by być nazywane skryptami, włączając w to najlepsze algorytmy sztucznej inteligencji. Faktem jest, że algorytmy potrafiące się uczyć samemu są praktycznie zawsze znacznie gorsze niż algorytmy, które ktoś przygotował i zoptymalizował pod konkretne zadanie.

Mały test poprawności powyższych definicji: Czy algorytmy, które ogrywały mistrzów świata w szachy to skrypty, czy AI? Przecież one się same nie uczyły. :)

Cytuj
A kto to widział, żeby wnioskować na podstawie zaledwie jednego przypadku?
Jak się nie ma więcej, to trzeba z jednego. ;)


EDIT:
Cytuj
Chyba jednak sam przyznasz, że kiwanie się z przeciwnikiem, który zawsze przesuwa się w tę samą stronę co ty nie dostarcza zbyt wielu emocji ;). Ja nie nazwałbym tego sztuczną inteligencją, tylko (parafrazując czyjś podpis z tego forum) wrodzoną głupotą ;).
A kto powiedział, że sztuczna inteligencja zawsze musi być inteligentna i dostarczać radości graczowi? Co prawda, w grach powinna, ale jeżeli na przykład ktoś pisze algorytm sterujący robotem grającym w piłkę i powyższy algorytm okazał się najskuteczniejszym z rozważanych, to bez wahania go zastosuje i będzie to AI. :)
« Ostatnia zmiana: Czerwiec 27, 2006, 15:52:18 wysłana przez Krzysiek K. »

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Czerwiec 27, 2006, 15:52:30
Cytuj
Mały test poprawności powyższych definicji: Czy algorytmy, które ogrywały mistrzów świata w szachy to skrypty, czy AI? Przecież one się same nie uczyły.

Dobre pytanie :). W gruncie rzeczy trudno powiedzieć, co to właściwie było. Wiadomo, że komputery te korzystały z obfitej bazy wiedzy na temat wielu historycznych rozgrywek, że potrafiły grać stylami różnych mistrzów szachowych. Ale z pewnością ich działanie nie polegało wyłącznie na odtworzeniu tych stylów.

Z drugiej strony słyszałem gdzieś, że kod programu, który ograł Kasparowa był modyfikowany między partiami, a to nie pasuje ani do definicji sztucznej inteligencji, ani do tego, co można by nazwać skryptem :).

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 16:09:08
Cytuj
Dobre pytanie :). W gruncie rzeczy trudno powiedzieć, co to właściwie było. Wiadomo, że komputery te korzystały z obfitej bazy wiedzy na temat wielu historycznych rozgrywek, że potrafiły grać stylami różnych mistrzów szachowych. Ale z pewnością ich działanie nie polegało wyłącznie na odtworzeniu tych stylów.
Z tego, co wiem, wiele tutaj innowacyjności nie było. Komputery grające z mistrzami w szachy realizowały po prostu Min-Max z Alfa-Beta obcięciem jak najdalej się da. Jak wiadomo, do końca całej partii przeanalizować się ne da, więc gdzieś na końcu trzeba było użyć jakiejś funkcji oceniającej sytuację, więc z tego wynikały różne style gry.

Cytuj
Z drugiej strony słyszałem gdzieś, że kod programu, który ograł Kasparowa był modyfikowany między partiami, a to nie pasuje ani do definicji sztucznej inteligencji, ani do tego, co można by nazwać skryptem :).
Moim zdaniem to pasuje do definicji sztucznej inteligencji jak najbardziej. Po prostu zmienili jeden algorytm na inny, gdy ten pierwszy okazał się niewystarczająco skuteczny. Z tego, co pamiętam, modyfikacja polegała na zmianie funkcji wagowej tak, żeby AI unikało wczesnej wymiany hetmanów, co powodowało istnienie ogromnej ilości możliwych wariantów taktycznych, których człowiek nie był w stanie wszystkich przewidzieć. :)

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Czerwiec 27, 2006, 16:13:48
Cytuj
Moim zdaniem to pasuje do definicji sztucznej inteligencji jak najbardziej. Po prostu zmienili jeden algorytm na inny, gdy ten pierwszy okazał się niewystarczająco skuteczny. Z tego, co pamiętam, modyfikacja polegała na zmianie funkcji wagowej tak, żeby AI unikało wczesnej wymiany hetmanów, co powodowało istnienie ogromnej ilości możliwych wariantów taktycznych, których człowiek nie był w stanie wszystkich przewidzieć.

Nie wiem, na czym polegała modyfikacja, ale na pewno do inteligencji (nawet sztucznej) to to nie pasuje. Jeśli już maszyna ma się uczyć, to powinna uczyć się sama, bez ingerencji w jej algorytmy z zewnątrz - kodu źródłowego człowieka jak na razie też nie można zmodyfikować (chyba, że ktoś jest głęboko wierzący ;) ).

Offline macabre13

  • Użytkownik

# Czerwiec 27, 2006, 16:20:29
Cytuj
Z drugiej strony słyszałem gdzieś, że kod programu, który ograł Kasparowa był modyfikowany między partiami, a to nie pasuje ani do definicji sztucznej inteligencji, ani do tego, co można by nazwać skryptem

Jezeli to komputer tak stwierdzil i sam dokonal zmian to wg. mnie to wlasnie jest AI, natomiast jezeli dokonali tego projektanci systemu to poprawili skrypt.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2006, 16:27:08
Cytuj
Jezeli to komputer tak stwierdzil i sam dokonal zmian to wg. mnie to wlasnie jest AI, natomiast jezeli dokonali tego projektanci systemu to poprawili skrypt.
W takim razie AI nie istnieje. ;) Nawet jeżeli algorytm sam się uczy, to może mieć jakiś błąd w procesie uczenia. Jeżeli projektanci ten błąd naprawią, to całość jest zdegradowana do "skryptu". :) Idąc dalej, nawet jeżeli algorytm sam uczyłby jak się uczyć, to w tym drugim uczeniu może się znaleźć błąd, który tylko człowiek będzie w stanie poprawić. A że w każdym algorytmie może znaleźć się błąd, według Twojej definicji AI nie istnieje. :)