Jak AlphaZero uczy się oceniać pozycję, której nigdy nie widział?

12

W następstwie odpowiedzi na:

Zrozumienie AlphaZero

Moje pytanie brzmi: w jaki sposób sieć neuronowa „uczy się”, co robić w pozycji, z którą się nie spotkała. Powiedzenie, że rzeczywisty AZ wykonuje MCTS za pomocą obciążników + obciążenia z wyuczonej sieci neuronowej, po prostu przesuwa go o krok do tyłu, w jaki sposób sieć neuronowa oblicza te wartości. Jeśli to przez losową grę własną, bez ludzkiej wiedzy, to jak decyduje, jak zważyć pozycję, której nigdy nie widział?

Roy Koczela
źródło

Odpowiedzi:

6

Funkcja oceny silnika szachowego, bez względu na to, czy jest utworzona jako sieć neuronowa czy kod jawny, zawsze jest w stanie przypisać wartość do dowolnej pozycji planszy. Jeśli dasz mu pozycję na planszy, nawet absurdalną, która nigdy nie wystąpiłaby w grze, będzie w stanie wypluć liczbę reprezentującą, jak sprzyja to jednemu lub drugiemu graczowi. Ponieważ liczba pozycji na planszy w szachach jest niemożliwie gigantyczna, trening może odbywać się na nieskończenie małej próbce drzewa gry. Silnik nie tylko przywołuje wcześniej obliczone wartości pozycji deski, ale wykonuje obliczenia na podstawie ułożenia elementów. Na przykład bez sieci neuronowej częścią oceny silnika szachowego może być zsumowanie wartości każdego pionka na boku i odjęcie całkowitej wartości pionków przeciwnika. Następnie,

Gdy silnik nie jest przeszkolony, wartości przypisane do pozycji mogą być również losowe, ponieważ parametry funkcji oceny zaczynają się od (zwykle) wartości losowych. Celem fazy treningowej jest dostosowanie parametrów silnika, tak aby przypisywał wysokie wyniki do pozycji na planszy, które są prawdopodobnymi stanami wygranej dla gracza.

Z artykułu na temat AlphaZero (strona 3):

Parametry głębokiej sieci neuronowej w AlphaZero są trenowane przez samouczące się uczenie wzmacniające, zaczynając od losowo inicjowanych parametrów. Gry są rozgrywane przez wybranie ruchów dla obu graczy przez MCTS. Pod koniec gry pozycja końcowa jest punktowana zgodnie z zasadami gry, aby obliczyć wynik gry: -1 dla przegranej, 0 dla remisu i +1 dla wygranej. Parametry sieci neuronowej są aktualizowane, aby zminimalizować błąd między przewidywanym wynikiem a wynikiem gry oraz aby zmaksymalizować podobieństwo wektora polityki do prawdopodobieństwa wyszukiwania.

[symbole matematyczne usunięte z cytatu]

Podsumowując, podczas treningu AlphaZero grała przeciwko sobie. Po zakończeniu gry wykorzystano wynik gry i dokładność jej przewidywań co do przebiegu gry, aby dopasować sieć neuronową, aby była dokładniejsza podczas następnej gry. AlphaZero nie prowadzi rejestru wszystkich pozycji, które widział, ale dostosowuje się, aby móc dokładniej ocenić każdą tablicę, którą zobaczy w przyszłości.

Mark H.
źródło
Całkowicie rozumiem twoje wyjaśnienie na poziomie algorytmicznym, ale nadal jestem zdumiony, że to działa. Myślałem, że wczesne gry będą tak losowe, że nie będą miały wartości edukacyjnej. Ocena wyniku ruchu na tym etapie wydaje się niemożliwa, chyba że grasz w mat, ponieważ jest to jedyna rzecz, o której ci mówiono. Ale ten mat będzie miał miejsce dopiero wtedy, gdy wydarzy się wiele innych, w zasadzie losowych rzeczy. Mam przeczucie, że po prostu nie ma wystarczających znaczących danych, aby wyciągnąć jakiekolwiek wnioski. Dlaczego się mylę
Philip Roe,
@PhilipRoe Masz rację, każda gra zawiera tylko trochę informacji. Napisałem własny silnik szachowy, który uczy się na podstawie algorytmu ewolucyjnego. Losowo modyfikowane kopie silnika odtwarzają się; przegrani są usuwani, a zwycięzcy produkują bardziej zmodyfikowane kopie. Zazwyczaj zajmuje to od 10 000 do 20 000 gier, aby ustalić prawidłową kolejność wartości sztuk (królowa, wieża, biskup / rycerz, pionek). Osiągnięcie swoich umiejętności zajęło AlphaZero 44 miliony gier (tabela na stronie 15 powiązanego dokumentu).
Mark H
Dziękuję za odpowiedź! Ale wciąż jestem zdumiony. Istnieje ogromna przestrzeń możliwych pozycji do oceny. Ale jest też ogromna przestrzeń możliwych pytań. Antropomorficznie wyobrażam sobie, że nie posiadam wcześniejszej wiedzy z wyjątkiem zasad i ogromnej bazy danych gier, w które gra się na prawie niemożliwym do wyobrażenia poziomie niekompetencji (choć nie sądzę, żeby wszyscy zostali zapamiętani). W którym momencie to mi się przydarza „Hej, może ja powinno się liczyć kawałki "Więc ile czasu przed liczeniem sztuk wydaje się dobrym pomysłem?
Philip Roe,
1
Trudno mi to sobie wyobrazić, nawet jeśli podano kilka silnych wskazówek na temat „Co stanowi dobre pytanie?” Ale nawet bez tego jestem pod wrażeniem, że w 20 000 gier można ustanowić heirarchię sztuk. Dlatego bardzo trudno mi zaakceptować fakt, że tabula jest naprawdę rasą. Niektóre minimalne instrukcje dotyczące procesu generowania i weryfikacji twoich reguł (ile, jak często?) Nadal wydają się niezbędne.
Philip Roe,
1
@PhilipRoe W moim programie mówię silnikowi, aby policzył sztuki, ale nie ile jest warta każda sztuka. Mówię więc silnikowi, na co patrzeć, ale nie w jaki sposób ważyć to, co widzi. AlphaZero to znacznie więcej tabula rasa. Jeśli jesteś ciekaw: github.com/MarkZH/Genetic_Chess
Mark H