1

Temat: Program grający w International Karate

Chciałbym zaprezentować Wam trochę inny projekt. Jest poniekąd związany z Atari dlatego zamieszczam tutaj wątek. Od jakiegoś czasu pracuję nad programem, który samodzielnie uczy się grać w International Karate. Wrzucam link to filmu (nie wrzucam tutaj bo trochę waży):

https://youtu.be/OMD9taO5DJA?feature=shared

Bot uczył się wyłącznie na przeciwniku poziomu pierwszego, więc o ile jest w stanie go pokonać to ma problemy przy wyższych poziomach ale zdobywa żółty pas i myślę, że jest to sukces =D.

Jest to algorytm aktor-krytyk wykorzystujący sieci neuronowe. Podczas treningu algorytm otrzymuje nagrodę za uderzenie przeciwnika albo karę gdy sam otrzyma cios bądź skończy się czas. W każdym z trzech przypadków gra jest resetowana (nie czeka aż ktoś zdobędzie dwa całe punkty).

Co sądzicie o takim projekcie? Chciałbym, żeby kiedyś program mógł grać jako drugi gracz ale też jestem ciekaw Waszego zdania.

Ostatnio edytowany przez Kanis (2023-09-14 21:44:07)

2

Odp: Program grający w International Karate

Zamierzenie bardzo fajne. Życzę powodzenia w realizacji.

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

Odp: Program grający w International Karate

Ciekawy by było jak by się to dało dodać do emulatora jako 'engine' drugiego playera - w sensie żeby mieć lepsze AI niż oryginalnie zaimplementowane przez programistów gry.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

4

Odp: Program grający w International Karate

Fajne :)
A zapytam, bo jako dzieciak nie bardzo wiedziałem: o co chodzi z tym waleniem głową w deski? Trzeba jak najszybciej po tym jak trener powie "Go" czy jak? Przyciskiem czy joystickiem w dół?

5

Odp: Program grający w International Karate

Z tego co pamiętam, to fire i joy w dół od razu po "Go". Nie jestem teraz pewien konieczności wciskania fire.

6

Odp: Program grający w International Karate

Bez fire. Samo w dół. Jak najszybciej po 'GO'. Hack polegał na machaniu joyem dół-środek "w stylu decathlonowym" najszybciej jak się da jeszcze przed pojawieniem się 'GO'. To maksymalizowało szanse na całą pulę.

Ostatnio edytowany przez perinoid (2023-09-15 08:58:00)

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

7

Odp: Program grający w International Karate

Też pamiętam że fire i w dół zawsze wciskałem, ale też nie wiem na 100% czy trzeba jednocześnie. Generalnie tak, chodzi o to, żeby trafić z refleksem dokładnie w moment kiedy jest "Go", wtedy im szybciej trafimy, tym więcej desek na raz idzie, aż do samego dołu wszystkie można zrobić i pamiętam, że mieliśmy to tak obcykane, że prawie za każdym razem się wszystkie robiło.

Idea bota jest super fajnym przedsięwzięciem i na pewno daje sporo satysfakcji. Miłej zabawy! Natomiast co do praktycznego zastosowania, to mnie się wydaje, że roboty z tym pewnie jest dość sporo, żeby takiego bota nauczyć sensownie grać w jedną tylko grę, więc raczej chyba o ideę chodzi i o samo dłubanie sobie takiego rozwiązania, niż żeby je faktycznie zrobić? Wyobrażam sobie, że do użytku na co dzień zamiast drugiego gracza, to potrzebny był by bot, który umiał by grać w dowolną grę i uczyć się nowych gier w tempie takim jak potrafi to zrobić żywy człowiek:-) Jednak co gra na dwóch, to gra na dwóch, potrzebne są jeszcze okrzyki drugiej osoby siedzącej obok, np. "ty chu....!!!", oraz trzask joya kolegi rzucanego o podłogę po naszym ciosie:-)

8

Odp: Program grający w International Karate

Dziękuję za miłe komentarze =)

Program podłącza się do pamięci emulatora (Linux i te sprawy) i przez nią odbywa się pobieranie obrazu oraz sterowanie więc teoretycznie da się grać z botem na emulatorze.

Jeśli chodzi o rozbijanie desek to wystarczy wcisnąć sam dół gdy pojawi się GO, przed chwilą sprawdziłem =D. Co ciekawe jak grałem
to zawsze zostawała mi ostatnia deska a jemu za każdym razem udaje się wszystkie rozwalić ale to jest spowodowane tym że on cały czas wali w dół.

Robię projekt hobbistycznie i idea powstała raczej z potrzeby dłubania. Rzeczywiście stworzenie bota, który by umiał grać w każdą grę byłoby trudne tym bardziej że gry są przeróżne (w szczególności przygodówki jak Klątwa). Podmienianie sieci neuronowych ułatwiłoby sprawę ale nadal trzeba je wytrenować, na szczęście jak dostosuje się odpowiednie parametry to sam trenuje i nie potrzebuje żadnych danych uczących. Nauka IK trwała ok. 8-10h, nie wiem czy to dużo czy mało. Na pewno nie zastąpi żywego gracza. Jeszcze nie wiem, którą stronę pójdzie projekt.

9

Odp: Program grający w International Karate

Tak czy owak super idea, choćby jako ciekawostka do poczytania, więc pisz relacje jak coś będziesz w tym kierunku dalej rozwijał, ja chętnie zawsze poczytam i obejrzę ewentualne filmiki na youtube itp. Dzięki!

10

Odp: Program grający w International Karate

Fajne. Idea nie jest oczywiście nowa, ale pierwszy raz w stosunku do Atari

https://www.youtube.com/watch?v=CI3FRsSAa_U

Ciekawe czy takie Mario nie jest może prostsze.

11

Odp: Program grający w International Karate

czy program wie podczas jakiego ruchu przeciwnika stracil punkt?

http://atari.pl/hsc/ad.php?i=1.

12

Odp: Program grający w International Karate

Mq napisał/a:

oraz trzask joya kolegi rzucanego o podłogę po naszym ciosie:-)

Oj tam, mi podczas gry zdarzało się, że joystick w ręku zostawał, więc nie histeryzuj ;P Z jednego robiły się czasem dwa lub prawie dwa :D

Sikor umarł...

13

Odp: Program grający w International Karate

Mq napisał/a:

Tak czy owak super idea, choćby jako ciekawostka do poczytania, więc pisz relacje jak coś będziesz w tym kierunku dalej rozwijał, ja chętnie zawsze poczytam i obejrzę ewentualne filmiki na youtube itp. Dzięki!

Nie omieszkam się pochwalić =D. BTW mam jeszcze dwa filmiki ale nie są już związane z Atari (tylko NES)
https://youtu.be/KQFYevQB8R8?feature=shared
https://youtu.be/FK7icSIzwvQ?feature=shared

14

Odp: Program grający w International Karate

laoo/ng napisał/a:

Fajne. Idea nie jest oczywiście nowa, ale pierwszy raz w stosunku do Atari

https://www.youtube.com/watch?v=CI3FRsSAa_U

Ciekawe czy takie Mario nie jest może prostsze.

Niestety nie jestem pierwszy nawet jeśli chodzi o Atari. Projekt zaczynałem z Marianem (2 linki w poście wyżej). Każda gra ma jakieś swoje dziwactwa. Dużym wyczynem byłoby jakby bot nauczył się grać w Robbo albo Lasermanię.

15

Odp: Program grający w International Karate

xxl napisał/a:

czy program wie podczas jakiego ruchu przeciwnika stracil punkt?


Sieć neuronowa na wejście przyjmuje obraz (dla IK nie ma dodatkowych metadanych). Gdy walka się kończy to algorytm posiada cały przebieg scenariusza klatka po klatce wraz z nagrodą (dla każdej klatki). Im niższa nagroda tym coraz bliżej dostania w twarz. Więc algorytm może sobie wywnioskować, że gdy przeciwnik już wyciąga ręke to np. kucnięcie nie jest najlepszą opcją.

W skrócie, może sobie wywnioskować na podstawie obrazu ale nie ma żadnej metadanej opisującej jaki cios aktualnie zadaje przeciwnik.

16

Odp: Program grający w International Karate

Mq napisał/a:

Jednak co gra na dwóch, to gra na dwóch, potrzebne są jeszcze okrzyki drugiej osoby siedzącej obok, np. "ty chu....!!!", oraz trzask joya kolegi rzucanego o podłogę po naszym ciosie:-)

Jak widać dużo jeszcze pracy nim AI osiągnie poziom człowieka ;)

Kurcze, no podziwiam za takie rzeczy, bo ja skończyłem na prostych rzeczach w basicu, turbo pascalu i teraz coś tam próbowałem w arduino. Te całe nauczanie maszynowe itd, to już dla mnie czarna magia :D

17

Odp: Program grający w International Karate

@Zgrd: ja całe życie bawię się i pracuję zawodowo w programowaniu i w elektronice. Nie chodzi o to na ile jestem w tych dziedzinach dobry, nie chodzi też o to że jakimś wyższym poziomem jest AI. To nie tak, to jest zupełnie odrębna dziedzina nauki (przynajmniej ja to tak widzę). W programie lub w elektronice mogę odwzorowywać pewne algorytmy, ale AI, to nie jest kwestia tego odwzorowywania, tylko pomysłu na takie algorytmy właśnie. Z kolei ktoś od AI nie musi się tak na prawdę w ogóle znać na elektronice, czy na programowaniu. Może opisywać jakieś tam zachowania, czerpać z tego wnioski, budować algorytm. Ja to tak widzę, nie mam wiedzy ani z zakresu sieci neuronowych, ani z zagadnień AI, nie znam się na tym po prostu, ale nie uważam, że to jakaś czarna magia, to jest po prostu kolejna dziedzina wiedzy, którą da się przyswoić i da się nią zajmować. Kwestia tylko tego, że każdy robi coś innego i nikt nie może robić wszystkiego, bo by mu czasu na to w życiu nie wystarczyło.

Kanis: gra w Mario robi na mnie większe wrażenie niż to International Karate. Zwłaszcza ten moment, że algorytm czeka chwilę na żółwia i załatwia go podskokiem gdy ten wyjdzie z niskiego przejścia, a nie pcha się do przodu gdzie by zginął. Fajne, ciekawi mnie na czym polega taki proces uczenia się, ale to za duży temat do ogarnięcia w 5 minut, a więcej czasu nie mam:-)

18

Odp: Program grający w International Karate

Jakieś ogólne pojęcie człowiek niby tam ma, coś tam liznął, ale to nadal dla mnie czarna magia, może właśnie z tego powodu jaki opisujesz, że człowiek nie poznał tego chociaż trochę mocniej.
Pomijam tutaj, że osobiście jestem wyznawcą teorii, że to cale AI doprowadzi finalnie do upadku ludzkości.... może nie przez atak atomowy jak w Terminatorze, ale bardziej przez regres poprzez rozleniwienie.

Temat będę śledził, mimo moich wątpliwości, a może właśnie z ich powodu ;)

19

Odp: Program grający w International Karate

Mq: Oczywiście, że AI to nie jest jakaś sekta nadludzi. Sam w sobie dzieli się na różne dziedziny jak na przykład przetwarzanie obrazu czy tekstu. Bardzo się cieszę, że zauważyłeś ten fragment z żółwiem w tunelu, długo pracowałem nad tym =D. Sam nie czuję się jakimś specem AI. Trochę zajęło mi stworzenie tego projektu ale to też dlatego, że wszystko robiłem od zera i próbowałem jednocześnie połączyć sieci neuronowe z reinforcement learning.

Zgrd: Maszyna jak i człowiek mają swoje zalety i wady. Myślę, że roboty bardzo długo nie będą kreatywne jak człowiek. Sztuczna inteligencja nie jest tak groźna jak ludzie z taką technologią i złymi intencjami.

Jak ktoś chce wejść w AI to polecam zacząć od PyTorch albo Tensorflow.

20

Odp: Program grający w International Karate

Słowo klucz długo, za naszego życia może i kreatywności nie będzie, ale potem.... przyszłość jest nieobliczalna.
Nie spodziewam się też tego upadku za szybko, ale raczej będzie on stopniowy i tutaj obserwując jak działa dzisiejszy świat najbardziej bym szedł w stronę tego co opisywał Zajdel, czyli kasta "wybranych" i reszta. Ale to dyskusja na inny wątek.

Po filmie widać, że póki co te ruchy są nadal mocno chaotyczne, więc czekam jak dalej będzie się to rozwijać.
Wchodzić w AI raczej nie zamierzam, niech to będzie nadal magia ;)

21

Odp: Program grający w International Karate

Chciałbym ogłosić, że projekt nadal żyje. Spędziłem trochę czasu na dostrojeniu parametrów oraz zwiększyłem liczbę przeciwników na których bot może ćwiczyć. Dzięki tym zabiegom mój projekt zdobył brązowy pas w karate (wcześniej był żółty).

https://youtu.be/pRwTYCMFzig

Bot się uczył wyłącznie pokonywać przeciwnika więc jest za etapy bonusowe konsekwentnie otrzymuje równe zero punktów.

Myślę, że zabawa z International Karate dobiegła końca i czas przerzucić się na inną grę. Jednym z kandydatów jest Fred.

22

Odp: Program grający w International Karate

Ładnie:-) Gratuluję postępu, fajnie to wygląda po nauce obecnie.