Sieci neuronowe w kółko i krzyżyk

0

Hej, mam zadanie stworzyć kółko i krzyżyk na dowolnych zasadach (obojętna liczba pól oraz długość zwycięskiego szeregu). Ma to być rozmyty lub hybrydowy system połączony z innymi metodami SI (np. uczenie maszynowe lub sieci neuronowe) i problem polega na tym, że chciałbym zrobić to przy użyciu tensorflow.js, tyle że nie mogę znaleźć odpowiedniego poradnika, który mi w tym pomoże. Szukałem w google, na youtube, kupiłem kurs na udemy, ale nic z tego, nigdzie nie mogę znaleźć jasno zdefiniowanego sposobu na stworzenie sieci neuronowej do tego. Strona samego tensorflow'a zawiera więcej samouczków pythonowych, a żadnego konkretnego js'owego co pokazuje małą ilość odpowiedniego contentu. Czy mógłby ktoś proszę mi wyjaśnić jak powinno wyglądać wykonanie tego zadania? Czy ma ktoś może adekwatny do tego tutorial? Bo tutorial o tworzeniu systemu rozpoznającego twarz / zdjęcie mnie nie urządza.

Pozdrawiam,
darqxxx

2

Po co w ogóle robisz coś takiego?

0

Sieć neuronową? A to nie jest problem na reinforcement learning?

0

Jeżeli mogę coś polecić ze swojej ograniczonej styczności to ml5js to wysokopoziomowe api do tensorflow i jest sporo fajnych materiałów do tego:

1

każde pole może być puste, mieć krzyżyk, albo kółko. Więc ma 3 stany.
teoretycznie więc stanów na planszy jest 3 ^ 9 = 19683 (w praktyce pewnie mniej, bo nie każdy stan będzie możliwy do osiągnięcia). Z drugiej strony należy pomnożyć to przez dwa (bo zależy czyj ruch będzie).

Więc jest to na tyle mała liczba, że możesz zanalizować wszystkie możliwe stany i zamiast bawić się w niepewne machine learning, to faktycznie zobaczyć, które stany prowadzą do zwycięstwa, które do remisu, które do porażki.

Gdzieś czytałem kiedyś o tym, że takie rzeczy można zanalizować w ten sposób, że się robi drzewo gry ze wszystkimi możliwymi ruchami:

https://pl.wikipedia.org/wiki/Drzewo_gry

Wikipedia podaje natomiast, że liczba liści (węzłów stopnia 1) w kompletnym drzewie gry jest nazywana złożonością gry. Jest to liczba możliwych różnych sposobów rozegrania gry. Przykładowo, złożoność klasycznej gry w "kółko i krzyżyk" jest równa 26830. - 26 tysięcy to również na tyle mała liczba, że mógłbyś napisać program, który to faktycznie liczy, a nie tylko zgaduje jak to robiłyby sieci neuronowe.

Swoją drogą w mózgu też mamy sieci neuronowe i też można mieć różne własne strategie, które można przenieść do komputera. I jest np. prosty sposób na to, żeby nie przegrać - trzeba zaczynać i stawiać krzyżyki na rogach i tyle.

0

Kiedyś co nieco napisałem o kółko i krzyżyk: https://blog.marcinchwedczuk.pl/cierpienia-mlodego-wertera
Najprostsze co możesz zrobić to użyć dużych plansz np. 7x7 i np. na 4 poziomie drzewa gry użyć heurystyki opartej na sieci neuronowej do oceny sytuacji z punku widzenia obecnego gracza.

Używając nowszych podejść można też spróbować "na Google" to jest po prostu dawać całą planszę sieci na wejście (np. -1 = X, 0 = puste, 1 = O) i mieć na wyjściu np. wektor który mówi 1 jeżeli można postawić na danym polu swój symbol i 0 jeżeli nie. Sieć potrzebna do wykonania tego zadania będzie spora ergo będzie się długo uczyć np. całą noc.

Nie jest to odpowiedź na twoje pytanie ale może pomoże nakierować na właściwe rozwiązanie...

0

@0xmarcin: Dzięki, ale wydaje mi się, że będę musiał użyć Q-learning, tylko problem jest taki, że nie mam pojęcia jak to zaimplementować w js.

0

@LukeJL: W zamyśle ma być dowolna ilość pól, więc nie będzie to 3 ^ 9, ponieważ pole może być równie dobrze 4x4

1

coś mi się wydaje że w materiałach ze studiów masz podpowiedzi a bez nich to my nie pomożemy

1

@Miang: Właśnie tam mam tylko matematyczne ukazanie logiki rozmytej, zbiorów rozmytych, a to mnie nie urządza :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1