Pytanie:
Temat doktoratu szachowego w uczeniu maszynowym?
lbragile
2019-11-26 03:00:11 UTC
view on stackexchange narkive permalink

Przeszukałem to w Internecie i nie mogłem znaleźć wystarczających odpowiedzi. Czy w szachach jest temat, który obejmuje uczenie maszynowe i byłby wystarczający do pracy doktorskiej? Myślałem o wykorzystaniu CNN, która powie ci właściwy ruch na podstawie aktualnej pozycji (i kilku poprzednich ruchów) bez obliczania wszystkich ruchów gałęzi drzewa do przodu. Czy byłoby to wykonalne?

Nie jestem pewien, czy pytasz i czy MUSI włączyć „uczenie maszynowe”, czy po prostu MOŻE obejmować „uczenie maszynowe”.
Temat musi obejmować uczenie maszynowe i najlepiej wymyślić nową szachową sztuczną inteligencję, która jest lepsza od istniejących. Nie jestem pewien, czy to, co zasugerowałem powyżej w moim pytaniu, jest wykonalne.
Google już pracuje nad silnikami opartymi na CNN, którym nie trzeba nawet mówić o zasadach gry, a jedynie o wymiarach planszy i liście legalnych ruchów w aktualnej pozycji. Więc mogą grać w wiele gier. To mniej więcej stan techniki, który musisz ulepszyć.
Tak. Ale czy silniki takie jak Alphazero „oszukują”, używając baz tabel do gry końcowej? To dlatego, że gra końcowa zawsze była największą słabością każdego silnika szachowego !!
@lbragile nie musi być lepszy - może rozgałęziać się w innym kierunku i osiągnąć rozsądny, pomyślny wynik, który przyspieszy badania w innych obszarach.
@corsiKa ma całkowitą rację i dlatego zdecydowanie polecam zapoznanie się z odpowiedzią Snack_Food_Termite.
@NotThatGuy Co? AlphaZero i wszystkie inne odnoszące sukcesy silniki, które znam, z pewnością badają przyszłe pozycje.
@NotThatGuy Tak, zgadzam się, zarówno z opublikowanych artykułów, jak iz faktu, że nawet analiza lichess wykorzystuje antycypację do dużej głębokości ruchów. Dlatego ciągle zmienia swoją ocenę, aż znajdzie optymalny ruch.
Myślę, że niektóre z odpowiedzi sugerują interesujące tematy, ale niekoniecznie takie, które są niezbędne lub wystarczające do pracy doktorskiej. Pokonanie najnowocześniejszych silników jest niezwykle mało prawdopodobne, ale w granicach możliwości, jeśli masz szczęście, że uzyskasz właściwy wgląd. Pokonanie stanu techniki byłoby czymś, co prawdopodobnie spowodowałoby opublikowanie w Science or Nature, co jest znacznie wyższą barierą do usunięcia niż praca doktorska.
Haha, widziałem cię na pasku bocznym. : P
Celem badań jest ** sprawdzenie **, czy coś jest wykonalne. Gdybyśmy powiedzieli ci odpowiedź, jaki sens miałoby robienie doktoratu?
@BobJarvis-ReinstateMonica czy prosiłem o * odpowiedź * czy po prostu szukałem wskazówek? Jest tam duża różnica, myślę, że rozsądne jest proszenie o opinię innych, gdy nie jesteś pewien, co zrobić / jak zrobić postęp. Jak widać, wiele sugestii tutaj jest niesamowitych, co sprawia, że ​​jestem wdzięczny za pytanie.
Otrzymałeś już kilka świetnych odpowiedzi, z których niektóre mogłem też zamieścić, więc wstawię to jako komentarz: znajdź sobie kopię książki Garry'ego Kasparowa Głębokie myślenie: Gdzie kończy się inteligencja maszyn i człowiek Kreatywność się zaczyna. Zasadniczo prowadzi Cię przez historię komputerowych szachów, aczkolwiek na całkiem wysokim poziomie. Może dostaniesz tam jakieś nowe pomysły, a jeśli nie, to i tak jest to dobra książka. :)
Osiem odpowiedzi:
#1
+46
John Coleman
2019-11-26 06:56:43 UTC
view on stackexchange narkive permalink

W swojej dysertacji masz niewielkie szanse na prześcignięcie najnowocześniejszych silników szachowych. Być może mógłbyś znaleźć haczyk, który nie został tak bardzo zbadany. Jednym z pomysłów jest nauczenie programu gry w amatorskie szachy w przekonujący sposób. Czy program może przejść coś w rodzaju testu szachowego Turinga, w którym gracz-człowiek nie mógł stwierdzić, czy gra w AI, czy też z graczem ocenionym np. 1600? Kiedy gram w komputerowe programy szachowe z ustawionym poziomem na poziomie, który faktycznie mogę pokonać, jest w tym coś nie tak. Program jest celowo utykany (więc mogę go pokonać) w taki sposób, że czasami popełnia błędy, których gracz będący człowiekiem na docelowym poziomie raczej nie zrobi, ale innym razem nadal wykonuje ruchy, które wydają się po prostu zbyt dobre dla tego poziomu . Próba naśladowania gry w szachy człowieka zamiast skupiania się na optymalnej grze w szachy wydaje się być interesującym problemem AI.

Dziękuję za pomysł, nigdy nie myślałem o tym w ten sposób. Zgadzam się, że komputery na „łatwych” wykonują czasem absurdalne ruchy tylko po to, by być łatwym i pozwolić Ci wygrać.
na przykład na poziomach <1500 sztokfisz wydaje się zapominać o ponownym złapaniu.
Podobnie znam przynajmniej chess.com i prawie na pewno lichess wykorzystują techniki ML do wykrywania oszustw. Są dość tajemnicze, jak dokładnie, ale byłby to podobny i niezwykle istotny temat, który nie ma prawie tak dużej istniejącej literatury
Fajne pomysły! są też prace, które zajmują się strukturą przestrzeni stanów w grze, takie jak [szachy sekwencyjne] (https://arxiv.org/abs/1609.04648), być może podejście ML może się tam również okazać przydatne.
#2
+17
Allure
2019-11-26 05:59:37 UTC
view on stackexchange narkive permalink

Możesz być zainteresowany AlphaZero i jego pochodnymi. AlphaZero to oryginalny silnik szachowy oparty na sieci neuronowej; od tamtej pory podejmowano różne inne próby (Leela Chess Zero, AllieStein, niedawny Fat Fritz ...), aby powielać pomysły AlphaZero. Najważniejszym artykułem do przeczytania jest ten.

Obecnie dane wydają się wskazywać, że chociaż te silniki sieci neuronowej są bardzo mocne, konwencjonalny silnik szachowy Stockfish jest nadal najsilniejszym silnikiem na planecie na zasadzie konsensusu równego sprzętu. To powiedziawszy, sytuacja jest płynna; kilka miesięcy temu Leela była prawdopodobnie najsilniejsza.

Nie wiem, czy jest tu wystarczająco dużo materiału na projekt doktorancki, ale jest dużo terytorium do objęcia.

Istnieje kilka tematów doktoranckich opartych na NN. Oto kilka z nich: NN jako kompresja egtb, wyszukiwanie dag, lepsze poszukiwanie prostej minimalizacji żalu, rozszerzenia w artykule deepmind mu zero z zeszłego piątku. Najtrudniejsze w tym wszystkim jest to, że dziedzina porusza się na tyle szybko, że trudno będzie się upewnić, że nikt inny nie opublikuje informacji jako pierwszy
Warto zauważyć, że tak naprawdę nie będzie to temat * szachowy * - w tym kierunku cała praca, którą wykonasz, będzie miała różne właściwości ML i najprawdopodobniej użyjesz * nie * konkretnej wiedzy szachowej po tobie zakodował (lub użył ponownie od kogoś innego) podstawowe informacje o tym, co jest legalnym posunięciem i jaki jest warunek zwycięstwa. Więc jeśli chodzi o pracę nad czymś, w którym będziesz spędzać czas na niuansach szachów, to naprawdę nie będzie to.
W oryginalnym artykule, który przeczytałem o AlphaZero, jest napisane, że pokonał Stockfisha, działając kilkaset razy wolniej niż Stockfish. [Oto artykuł, prosto z historii mojej przeglądarki] (https://en.chessbase.com/post/the-future-is-here-alphazero-learns-chess) Cytat brzmi: „AlphaZero obliczało około 80 tysięcy pozycji na po drugie, podczas gdy Stockfish działał z prędkością 70 milionów pozycji na sekundę ”. Ten artykuł jest jednak z 2017 roku, dawno temu :-)
@Peteris to podejście Zero, które niekoniecznie jest najlepsze - zarówno AllieStein, jak i Fat Fritz wykorzystują wiedzę szachową przekazaną przez człowieka.
@AaronF AlphaZero (i inne silniki NN) z pewnością działają wolniej niż Stockfish. Ten stosunek liczby pozycji przeszukiwanych na sekundę jest w rzeczywistości krytyczny przy określaniu, czy porównanie sprzętu jest uczciwe. Komputerowe szachy również poruszają się naprawdę szybko, a Stockfish znacznie się poprawił od 2017 roku, co było jedną z głównych krytyki papieru AlphaZero - testowano go ze starą wersją Stockish.
@Allure Nie wiedziałem tego, dziękuję!
#3
+10
BlindKungFuMaster
2019-11-26 19:56:48 UTC
view on stackexchange narkive permalink

Istnieje wiele możliwych tematów doktoranckich, które łączą szachy i uczenie maszynowe. Te ciekawsze i wykonalne nie mają nic wspólnego z budowaniem lepszych silników. Oto kilka pomysłów:

  • Gracze prowadzący ludzi mają określony styl gry. Czy można nauczyć się wyodrębniać z gier jakąś metrykę stylu, która pozwala przypisać gry graczom z określonym prawdopodobieństwem?

  • Czy możesz użyć tego modelu do symulacji partii określonego gracza?

  • Ludzie grają w szachy dzięki intuicyjnemu wyczuciu pozycja. Silniki używane po prostu do obliczania na podstawie prostej funkcji oceny. Czy możliwe jest użycie NN Leeli, aby uzyskać wynik zgodny z ludzką intuicją w kwestiach takich jak „bezpieczeństwo króla”, „lider w rozwoju”, „słabe kwadraty” itp.?

  • Czy możesz użyć tego wyniku do tworzenia automatycznych adnotacji, które dostarczają wglądu ludziom poza: To jest najlepsza linia, a to jest ocena wynikowej pozycji?

  • Modele językowe, takie jak GTP- 2 stają się bardzo dobre w modelowaniu tekstu. Istnieje około miliarda gier szachowych online dostępnych za darmo. Czy możesz użyć tego ogromnego zbioru danych, aby wytrenować model transformatora do gry w szachy bez oglądania szachownicy, po prostu ucząc się od pgn?

  • Czy potrafisz rozróżnić graczy płci żeńskiej i męskiej? po prostu analizując ich ruchy?

#4
+6
Snack_Food_Termite
2019-11-26 19:20:39 UTC
view on stackexchange narkive permalink

Nie jestem informatykiem. Ale jestem entuzjastą komputerów szachowych od lat 80-tych. Moim pierwszym silnikiem był Novag około 1988 roku. Przeczytałem książkę Davida Levy'ego "Jak najlepiej wykorzystać swój komputer szachowy".

Dwie tradycyjne słabości silników szachowych zawsze były [1] Efekt horyzontu. David Levy opisuje to jako człowieka w labiryncie, który w nocy świeci pochodnią. Mężczyzna patrzy przed siebie i myśli, że istnieje wyraźna ścieżka do przodu. Ale tuż za „horyzontem” widzenia labirynt obraca się i ma ślepy zaułek. Komputery szachowe, takie jak ta ślepa uliczka, widzą 8 ruchów do przodu i myślą, że mają wygraną. Ale 9 posunięć do przodu mają śmiertelną stratę.

[2] Gry końcowe. To jest, gdy [1] jest najbardziej dotkliwe. Ponieważ nawet stosunkowo początkujący gracz ludzki widzi, że pionek zostanie wypchnięty ze swojego pola startowego i utworzy hetman i wygra partię. Ale dla wczesnych komputerów szachowych było to zbyt wiele ruchów, aby to zobaczyć !! Wczesne komputery szachowe walczyły o wygranie nawet całkowicie wygranych końcówek.

Oczywiście w 2019 roku silniki takie jak Fritz, Stockfish i Alphazero radzą sobie [1] i [2] znacznie lepiej niż mój Novag z lat 80. Efekt horyzontu Levy'ego jest nieco przestarzały. Ale to nadal obowiązuje. Kilka tygodni temu pobiłem nim silnik. Oszukałem silnik, żeby pomyślał, że to wieża z przodu. Ale w wolnym czasie mogłem łatwo odzyskać materiał ponad 20 ruchami i wygrać końcówkę. Silnik miał prawdopodobnie około 2000 lat.

Gdybym miał zasugerować doktorat z uczenia maszynowego i szachów, chciałbym, aby jeden z nich zrobił się po zakończeniu gry. Zamiast wypełniać silnik ogromnymi tabelami końcówek, co powiesz na klasyczne motywy końcówek w zakończeniach szachowych Fine's Basic i przeprowadzanie uczenia maszynowego? Na przykład końcówka Luceny. A może klasyczne końcówki z meczów Mistrzostw Świata? Albo zakończenia z milionem czeków, takie jak zakończenia hetmana i pionka? Szczerze wierzę, że w końcówkach jest wiele nowych możliwości. Ani przez chwilę nie sądzę, żeby uczenie maszynowe lub ludzkie obejmowało wszystko w szachach; gry końcowe nie przyciągają takiej uwagi, jak debiuty lub gry środkowe. Rozwinęły się również pomysły w grach końcowych. Steintz sprawił, że wyglądało na to, że większość pionków bliżej króla wystarczyła do wygranej końcówki. Alekhine pokazał, że niekoniecznie tak było, jeśli masz inne dynamiczne czynniki.

Chciałbym zobaczyć, jak się masz! Podoba mi się poprzednia sugestia, by spróbować realistycznie naśladować słabszą ludzką grę, raczej jak test Turinga. Zauważyłem to w przypadku silników; wykonują słabe ruchy, których człowiek nie wykonałby na niższym poziomie.

Pracowałem w grupie zajmującej się uczeniem maszynowym przez ostatnie 5 lat i myślę, że to chyba najmilszy projekt, jaki do tej pory zaproponowałem. Z pewnością bardzo interesujące jest zobaczenie, jak pokonać ten problem horyzontu, który jest ściśle związany z wieloma typowymi problemami w ML (jak znaleźć ładne przybliżone rozwiązania problemów kombinatorycznych). Poza tym, jeśli OP działa poważnie, jest całkiem pewne, że otrzymamy co najmniej rozsądne rozwiązanie (ważne dla doktoratu). Określenie, kiedy zaczyna się „koniec” gry, może być żmudne, ale zdecydowanie interesujące pytanie na początek.
Jak zapewne wiesz, są to ogromne tematy. Pisałem dość nieformalnie. Aby w absurdalny sposób uprościć komputery szachowe, istnieją zasadniczo dwa podejścia: brutalna siła lub heurystyka. Brute force wykonuje wszystkie możliwe ruchy i próbuje znaleźć najlepszy wynik. Podejścia heurystyczne [bardziej ludzkie] zamiast tego przyglądają się cechom pozycji. Oczywiście sprzęt staje się istotny; Brute force z superkomputerem pokonuje każde podejście heurystyczne z przeciętnym procesorem. Dziękuję za komentarz! Próbuję jak najlepiej potrafię! Są tu tematy doktoranckie!
Tak, rzeczywiście mniej więcej to miałem na myśli. A precyzyjne budowanie takiej heurystyki jest dużą częścią ML i wizji komputerowej podczas rozwiązywania problemów NP-trudnych (dopasowywanie wykresów, wybór cech, grupowanie itp.). Więc z pewnością istnieje ogromna pula heurystyk, z których można czerpać inspirację i dostosowywać się do tego problemu szachowej końcówki. W szczególności nawiązanie takich powiązań z pozornie niepowiązanym problemem jest obecnie niezwykle cenione przez społeczność (co czyni z niego świetny temat doktorski).
#5
+5
PhishMaster
2019-11-26 03:16:00 UTC
view on stackexchange narkive permalink

Kilka pomysłów:

  1. Czy szachy pomagają dzieciom radzić sobie lepiej w szkole? To pytanie było od dawna dyskutowane.
  2. Czy pewne interesy z szachistami, zwłaszcza silnymi szachistami, mają przewagę w pewnych rodzajach działalności, takich jak finanse?
Są to świetne sugestie, ale po wdrożeniu wymagałyby przeprowadzenia masowych ankiet, aby udowodnić, że tak jest. Wolałbym mieć coś, co można zmierzyć bez dużego wkładu / testów użytkownika (jak zasugerował @John Coleman) powyżej. Niemniej jednak, oto kciuki w górę :)
Chociaż zgadzam się, że są to bardzo interesujące tematy badawcze, ponieważ OP wspomniał o uczeniu maszynowym, przypuszczam, że jest zainteresowany tematem związanym z komputerami.
@Ivella Zakładam, że byłeś przeciw. Napisałem swoją odpowiedź ZANIM to zostało wyjaśnione. Zwróć uwagę, że pytanie zostało zredagowane.
@PhishMaster, dla jasności, edycja była czysto semantyczna i została wykonana przez innego członka. Przywróciłem go do oryginalnego posta, ale pytanie pozostało identyczne z tym, co zostało pierwotnie zadane.
@ibragile, to nie znaczy, że pierwotnego pytania nie można zinterpretować w obie strony, dlatego poprosiłem o wyjaśnienie.
#6
+4
Mateen Ulhaq
2019-11-28 21:29:03 UTC
view on stackexchange narkive permalink

Wykonalność podejść nieopartych na wyszukiwaniu

Opowiem o wykonalności podejścia nie opartego na wyszukiwaniu. Natychmiast przychodzą mi na myśl kilka pytań:

  1. Czy istnieje dobra funkcja static_eval , która przyjmuje (Position, PlayerTurn) i zwraca trochę Score ? ¹
  2. Niewielkie zmiany pozycji mogą często prowadzić do ogromnych różnic w ocenach.
  3. Wyszukiwanie nie jest wykorzystywane wyłącznie przez wyszukiwarki szachowe. Ludzie również szeroko używają wyszukiwania , aczkolwiek dla znacznie mniejszej liczby węzłów.

Teoretycznie każdy wystarczająco duży model (np. z pewną wielokrotnością 6 ^ 64 parametrów ) może dokładnie reprezentować funkcję perfect_eval: (Position, PlayerTurn) -> {Win, Loss, Draw} . Ale mamy dostęp tylko do skończonej przestrzeni i czasu, więc zamiast tego chcemy mieć funkcję static_eval: (Position, PlayerTurn) -> Score . Proponowana przez Ciebie formuła cnn_eval: (Position, PlayerTurn) -> Move jest mniej więcej taka sama, ale bez konieczności wybierania argmax ruchów kandydata na pozycję. Jednak trochę łatwiej jest porozmawiać o tym, jak zachowuje się static_eval , więc będę się tego trzymać do końca tej odpowiedzi.

Powiedzmy, że udało nam się znaleźć siebie dobra funkcja static_eval . Rozważ wszystkie ruchy w tej pozycji:

  3qr1k1 / 1b1rbp2 / p2p2p1 / 1p1np3 / 4P3 / P2BB2Q / 1PP3PP / 4RR1K w - - 0 221. Wxf7 Kxf7 2. Hh7 + Ke6 3. exd5 + Kxd5 4. Be4 + Kxe4 5. Hf7 Gf6 6. Bd2 + Kd4 7. Be3 + Ke4 8. Hb3 Kf5 9. Wf1 + Kg4 10. Qd3 Gxg2 + 11. Kxg2 Qa8 + 12. Kg1 Bg5 13. He2 + Kh4 14. Gf2 + Kh3 15 . Be1 1-0  

Większość ruchów jest okropna, prawda? (b4, a5, He6, ...) Tak więc, oczywiście, małe odchylenia na wejściu Position powinny skutkować dużymi różnicami w jego ocenie. Ale to oznacza, że ​​„powierzchnia”, którą reprezentuje static_eval , jest bardzo, bardzo wyboista. Jest to w porządku, jeśli istnieje struktura tego nierówności, najlepiej taka, którą można przedstawić w ramach naszych ograniczeń czasowych i przestrzennych. Osobiście uważam, że szachy są wystarczająco skomplikowane, a ich powierzchnia jest zbyt wyboista, że ​​modelowanie ich przy naszych bardzo ograniczonych przestrzeniach będzie bardzo trudne. W powyższej pozycji oczywistym posunięciem jest odzyskanie materiału z exd5. Ale jak pokazuje Wei Yi, jeśli przeszukasz wystarczająco głęboko, zdasz sobie sprawę, że Wxf7 wygrywa.

Myślę, że kolejnym argumentem przeciwko podejściu, które nie bierze pod uwagę drzewa wyszukiwania, jest to, że sami ludzie mogą szybko spojrzeć na pozycję i zmienić zdanie po kilku obliczeniach. W poniższej pozycji można łatwo założyć, że czarne wygrywają z powodu wielu jego zagrożeń. Ale po odkryciu prostej sekwencji taktycznej (zaczynającej się od Qxf8 +), jasne jest, że biali matowie w 4.

  5rk1 / 3R1p1p / 2p2p2 / 1q2nB2 / 5B2 / QP3nP1 / 4rP1P / R4K2 w - - 2 34  

Inny pomysł

Skoro wyszukiwanie jest tak ważne, dlaczego ludzcy arcymistrzowie mogą grać w rozsądnie poprawne gry, mając ograniczoną liczbę rozważanych przez siebie węzłów? Ludzkie „oceny statyczne” mogą być znacznie bardziej czasochłonne, ale zazwyczaj są o wiele bardziej przydatne niż oceny statyczne wykonywane przez tradycyjne silniki szachowe. Istnieje pewien kompromis w zakresie czasu i dokładności oceny, a do niedawna silniki szachowe znacznie preferowały krótkie czasy oceny, aby przeszukać jak najwięcej węzłów.

Jak to ujął @konsolas,

Sieci neuronowe działają znacznie wolniej niż ręcznie tworzone funkcje oceny. W Superfinale TCEC Leela Chess Zero, działająca na dwóch GPU, każdy z dedykowanymi rdzeniami tensorowymi, jest w stanie przeszukiwać około 60 tysięcy pozycji na sekundę. Natomiast Stockfish, na jednym rdzeniu na moim komputerze, przeszukuje ponad 2 miliony pozycji na sekundę.

Myślę, że bardziej owocnym wysiłkiem niż całkowite porzucenie wyszukiwania jest eksperymentowanie z droższymi metodami oceny , ale z mniejszą liczbą przemierzonych węzłów.

Więcej interesujących pomysłów, które ludzie próbowali, można znaleźć tutaj.


¹ Oczywiście jeden musi również wprowadzić parametr State , aby obsługiwać reguły takie jak roszada, en passant i reguła 50-move.

#7
+3
Surb
2019-11-26 19:14:33 UTC
view on stackexchange narkive permalink

Myślę, że fajnym projektem, który łączy szachy i uczenie maszynowe, jest zbudowanie szachowego bota dla szachów dla 4 graczy. Taki wariant można grać na chess.com i jeśli dobrze pamiętam, nie ma w tej chwili szczególnie silnych botów. Prawdopodobnie najbardziej zabawne byłoby użycie uczenia się przez wzmacnianie i pozwolenie botowi na naukę, grając przeciwko ludzkim graczom na stronie.

#8
+3
Octopuscabbage
2019-11-27 02:55:16 UTC
view on stackexchange narkive permalink

Czy rozważałeś coś w rodzaju ogólnej gry? Jeśli możesz wyszkolić sztuczną inteligencję, aby była dobra zarówno w szachach, jak i innych grach planszowych (z tą samą siecią), możesz pokazać kilka interesujących wyników.

Ten artykuł przedstawia tę koncepcję dla MCTS

W tym artykule omówiono koncepcję RL.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...