Jak ustaliłbyś, że gracz oszukuje w szachach online?

40

Istnieje wiele stron internetowych, na których gracze mogą grać w szachy w czasie rzeczywistym. Większość gier trwa 5–10 minut. Dzięki dostępności oprogramowania szachowego można skorzystać z Fritza lub Rybki, aby zaproponować mu ruch.

Na przykład, mogę po prostu wprowadzić każdy ruch mojego przeciwnika i zobaczyć, jakie oprogramowanie zasugeruje mi.

Myślałem o kilku funkcjach, które mogą sugerować, że gracz oszukuje:

  • ile razy zmienia ekran
  • szybkość gry (w łatwych i naprawdę trudnych pozycjach)
  • dokładność gry

Czy ktoś ma jakieś inne pomysły?

PS: Nie ma dla mnie znaczenia, z jakiej perspektywy myślisz (po stronie serwera lub klienta).

Salvador Dali
źródło
Doskonałe pytanie i istotny problem już dziś! Ale czy masz na myśli wykrywanie oszustw typu blitz online za pomocą algorytmu, czy wykrywanie człowieka jako gracza podczas gry przeciwnika?
Rauan Sagit
Strategie wykrywania oszustw działają tylko wtedy, gdy oszust jest „głupi”. Przyjęcie bardziej sprytnych strategii oszustwa (patrz mój komentarz do odpowiedzi NoviceProgrammer) spowodowałoby, że oszustwo byłoby prawie niemożliwe do odgadnięcia.
Andrea Mori
Myślę, że to prawie nie problem. Gram na chess.com. Domyślam się, że może 1 osoba na 10 faktycznie oszukuje. A jeśli podejrzewam, że mój przeciwnik otrzymał pomoc, po prostu go blokuję.
Randy Minder,

Odpowiedzi:

33

Według mojej wiedzy jest to bardzo złożone pytanie, które nie zostało rozwiązane w zadowalający sposób. Zasadniczo prosimy o algorytm, który przeprowadzi rodzaj odwrotnego testu Turinga, aby odróżnić ludzi od komputerów.

Po pierwsze, kontrole po stronie klienta zawsze będą miały słabości, chyba że masz pełną kontrolę nad środowiskiem klienta. Weźmy pierwszy pomysł - sprawdzanie przełączania między oknami, brzmi dobrze. Niestety, jest to trywialnie obejście, uruchamiając silnik szachowy na osobnym komputerze lub integrując mój silnik z klientem, aby nie miało miejsca „przełączanie okien”, lub zmieniając klienta, aby zgłaszał 0 zmian w oknie, lub ... Nie ma prawdziwy sposób na upewnienie się, że to twój kod działa na kliencie, naprawdę.

Pozostaje nam fizycznie ściśle kontrolowane środowisko klienckie (co nie nastąpi w przypadku gier online) lub sprawdzanie po stronie serwera, tj. Sprawdzanie rzeczywistych ruchów, które zostały zagrane (i być może czas między ruchami, jak mówisz), i próbować wydedukować aspekt komputerowy lub ludzki.

Sprawdzanie po stronie serwera można również podzielić na kilka sposobów. Prawdopodobnie możesz spróbować „odgórnego” podejścia, które byłoby podobne do „z poprzednich gier w historii, tylko 2% ludzi wykonało ten ruch, podczas gdy 50% komputerów to zrobiło”. Byłby to całkiem dobry sposób na zrobienie tego, gdybyśmy mieli wystarczającą ilość danych do „dowolnej pozycji”. Szachy są jednak tak duże, że nawet bardzo duże zestawy danych nie będą miały znaczącej liczby gier pasujących do twojej pozycji, gdy przejdziesz przez wczesną fazę gry.

Zakładając, że nie mamy żadnych wiarygodnych statystyk po ludzkiej stronie równania, nadal możesz przedstawić pozycję wielu silnikom szachowym (z różnymi ustawieniami czasu dla każdego) i zobaczyć, jak ściśle pasują ruchy graczy z komputera. Samo w sobie doprowadziłoby to również do wielu fałszywych alarmów, jednak powtarzanie pozytywów dla tego samego silnika szachowego i ustawień czasu sprawiałoby, że gracz coraz bardziej prawdopodobne, że oszukuje. Aby jeszcze bardziej to ulepszyć, prawdopodobnie przyjrzałbym się podejściu oddolnemu analizując pozycje szachowe; w skrócie, próbując dowiedzieć się, dlaczego ludzie i komputery grają inaczej. Np. Ludzie zwykle rozpoznają wspólne wzorce. W grze o „dziwnych” wzorach lub w mało prawdopodobnych sytuacjach człowiek byłby w stanie grać bardzo dokładnie. Żaden z tych,

Aby dodać kilka szczegółów do twojej listy, chciałbym pójść wzdłuż linii tego, w jaki sposób profesorowie wykrywają plagaryzm w papierach - wykrywając nagłą zmianę. W szachach jest to niezwykle trudne do zdefiniowania, ale nagła zmiana stylu gry lub siły gry może wskazywać na oszukiwanie. W szczególności szukałbym nietypowych, agresywnych ruchów, które po prostu „ćwiczą” i nie mają wad dla gracza (zbyt dokładne). Zmuszeni koledzy w 4+ ruchach od gracza, który normalnie stawia rycerzy na krawędzi planszy itp. (Jest to możliwe ... po prostu mało prawdopodobne). Jednak dokładnie, jak by to działało, mogłoby zabrać całą książkę (lub więcej).

EDYCJA: Niedawno był artykuł o oszustwach i wykrywaniu w szachach najwyższego poziomu .

Daniel B.
źródło
3
ludzie kontra komputery mogą dawać fałszywe alarmy podczas otwierania gry, bardzo łatwo jest zapamiętać najlepsze gry
ajax333221,
@ ajax333221 Całkowicie się zgadzam. Do pewnego stopnia coś podobnego może odnosić się do gry końcowej, w której człowiek może grać w nią bardzo blisko, na podstawie wcześniejszej wiedzy. To powiedziawszy, jeśli mogę wykryć możliwe oszustwo w grze, jestem pewien, że dzięki dodatkowym informacjom i wyrafinowanej analizie komputer mógłby zrobić to samo. Przymusowe wiązanie w ruchach 4+ było faktycznym przykładem z niedawnej gry online w porównaniu z graczem ocenianym na 1050 - co najmniej wysoce sugestywne ...
Daniel B
20

W trybie błyskawicznym możesz określić, ile czasu używają. Ludzie używający silników zużywają stałą ilość czasu na każdy ruch, zamiast błyskawicznie przeskakiwać przez otwarcie i spowalniać do czołgania się w środkowej fazie gry, jak większość zwykłych graczy. W szczególności nie mogą szybko zagrać w otwieranie, ponieważ muszą aktualizować płytę komputera po każdym ruchu otwierającym. Jeśli zabiorą pięć sekund w ruchu dwie i pięć sekund w ruchu dwudziestu, prawdopodobnie używają silnika.

Andrew Latham
źródło
Nie jestem pewien, czy było to prawdą w momencie wysłania, ale sztokfisz może zaakceptować pozostały czas jako wkład w ustalenie priorytetów, w których ruchach spędzać czas.
OganM
15

Liczba przełączników ekranu i szybkość gry są bez znaczenia. Jeśli skorzystasz z nich, aby złożyć skargę do organizatorów internetowej witryny szachowej, będą się z ciebie śmiać.

Istnieją dwa sposoby, aby stwierdzić, czy ktoś oszukuje. Pierwszym z nich jest „pistolet do palenia”. Rozważ tę sekcję gry -

Allwermann, Clemens (1900) - Kalinitschev, Sergey (2505) Boeblingen (9), 30.12.1999
1. Qa7 Rg8 2. Qxb7 Be4 3. Nf4 Qf5 4. Qd7 Qe5 5. Kh1 g5 6. Nh3 g4 7. Nf2 Bf5 8. Nxg4 Be4 9. R7xf6 Bxg2 + 10. Kxg2 Qe4 + 11. Kh3

Pytanie brzmi: co byś zagrał na tej pozycji? Sytuacja jest taka, że ​​zwycięstwo w tej, ostatniej rundzie konkursu, wygra turniej przed szeregiem arcymistrzów. Nieźle jak na 1900 rok. Podejrzewam, że większość z nas zagrałaby w dość solidną grę, która utrzyma zwycięstwo. Porusza się jak Rxb7 lub Rd7 lub (dla tchórzy takich jak ja ;-) Rxf6. Qa7 powstrzymuje ruch, palący pistolet. Fritz ocenia jako najlepszy ruch w tej pozycji, aż o 0,1 przed następnym najlepszym ruchem, Rd7.

Palenie pistoletu nr 2 pod koniec gry, kiedy czarny zrezygnował, pozostawiając gracza z oceną 1900 jako zwycięzcy turnieju. Co powiesz Kaliniczewowi na tym stanowisku?

Tak przebiegała rozmowa:

Allwermann: „Jest kolega z 8”

Kalinitschev: „Nie wydaje mi się”

Allwermann: „„ Sprawdź, przekonasz się, że mam rację ”

Allwermann miał oczywiście rację. Czy potrafisz znaleźć partnera na pozycji 8 w końcowej pozycji? Bez pomocy krzemu?

Masz więc swój pistolet do palenia i przekazujesz go organizatorom. Co oni zrobią

No cóż, wtedy pojawia się drugi sposób wykrycia i udowodnienia ponad wszelką wątpliwość, że oszustwo ma miejsce.

Będą musieli zebrać co najmniej 20 gier z co najmniej 20 ruchami spoza bazy danych i wprowadzić je do silnika w celu sprawdzenia. Zasadniczo to, czego szukają, to procent czasu, w którym podejrzany wybiera ruch niebędący bazą danych, który pasuje do pierwszego wyboru silnika, jednego z pierwszych 2 typów, jednego z 3 pierwszych typów. Progi „dowodowe” wynoszą -

Top 1 65%

Top 2 80%

Top 3 90%

Najnowszym przykładem jest furia związana z występem Borysława Iwanowa .

Oto jego statystyki -

Zadar 19.: Houdini 1.5a x64 Hash: 256 Czas: 30s Maksymalna głębokość: 20ply {Borislav Ivanov (Gry: 9)}

{Najlepszy mecz 1: 210/314 (66,9%) Przeciwnicy: 150/313 (47,9%)

{Mecz w pierwszej 2: 270/314 (86,0%) Przeciwnicy: 207/313 (66,1%)

{Najlepszy mecz 3: 285/314 (90,8%) Przeciwnicy: 238/313 (76,0%)

{Najlepszy mecz 4: 293/314 (93,3%) Przeciwnicy: 267/313 (85,3%)

W 8 rundzie transmisja na żywo spadła (podejrzewa się, że pozwoliło to jego pomocy z zewnątrz uzyskać ruchy) i przegrał z GM Predojeviciem. Jeśli ten wynik zostanie usunięty, nowe statystyki to:

Zadar 19.: Houdini 1.5a x64 Hash: 256 Czas: 30s Maksymalna głębokość: 20ply {Borislav Ivanov (Gry:)}

{Najlepszy mecz 1: 197/287 (68,6%) Przeciwnicy: 135/286 (47,2%)

{Najlepszy mecz 2: 252/287 (87,8%) Przeciwnicy: 188/286 (65,7%)

{Najlepszy mecz 3: 265/287 (92,3%) Przeciwnicy: 218/286 (76,2%)

{Najlepszy mecz 4: 272/287 (94,8%) Przeciwnicy: 242/286 (84,6%)

Jak widać, oba zestawy statystyk sprawiłyby, że wyrzuciłby go z serwera szachowego. Dla porównania tutaj jest analiza gry 8, gdy kanał był wyłączony:

{White: Borislav Ivanov}

{Najlepszy mecz 1: 13/27 (48,1%)

{Najlepszy mecz 2: 18/27 (66,7%)

{Najlepszy mecz 3: 20/27 (74,1%)

{Top 4 dopasowanie: 22/27 (81,5%)

{Czarny: Borki Predojevic}

{Najlepszy mecz 1: 15/27 (55,6%)

{Top 2 dopasowanie: 19/27 (70,4%)

{Najlepszy mecz 3: 20/27 (74,1%)

{Top 4 dopasowanie: 25/27 (92,6%)

Pamiętaj, że FIDE powołało komisję, która ma zbadać sposoby wykrywania i zwalczania oszustw komputerowych. Ich wytyczne są tutaj . Zwróć uwagę na tę sekcję:

E. Internetowe narzędzie do kontroli gier FIDE

FIDE dostarczy internetowe narzędzie do kontroli gier, które będzie dostępne dla wszystkich upoważnionych urzędników FIDE (członków IO, IA, ACC) i federacji krajowych. Będzie on hostowany na stronie internetowej FIDE i umożliwi autoryzowanym stronom przesyłanie gier w formacie PGN na „szybki test”, który pozwoli zidentyfikować potencjalne odstępstwa w turnieju. Przez „badanie przesiewowe” rozumie się, że zapewnia to jedynie wstępny test bez wartości osądu, z tym wyjątkiem, że można go cytować, odrzucając zarzuty i odmawiając przejścia na pełny test ręczny.

Brian Towers
źródło
1
Świetna analiza! Wyniki T3 / T4 są przekonujące, szczególnie gdy podano prawdopodobieństwo jego wyników. BTW: Zdaję sobie sprawę, że twój post został napisany jakiś czas temu, ale czy zdarza ci się nadal cytować rozmowę między Kaliniczewem a Allwermannem? Oczywiście żaden 1900 nie znajdzie niezawodnego partnera w 8, szczególnie gdy 2500 go nie widzi. Podniesienie tego punktu nie wydaje się szczególnie mądre, gdy mogłoby samo w sobie wzbudzić podejrzenie, że oszukuje.
Jaxter
1
BTW: Nie zgadzam się z tym Qa7! hamuje serce. Po prostu wykorzystuje dwa fakty, które: 1) Tylna ranga Blacka jest słaba i 2) Jest podatny na sojusznika. Tak więc każde odwrócenie wieży od tylnego rzędu pozwoli potencjalnie wygrać taktykę. W tym przypadku białe wykorzystują ruch, aby zaatakować pionka b i koordynować swoją królową oraz wieżę na siódmym poziomie, aby wieżę bronić. Białe wygrywają przynajmniej pionka po 1 ... Qxf7 2.Qxa8 + Qg8 3.Qxb7. Myślę, że każdy GM powinien był zobaczyć ruch Qa7 i jestem bardzo zaskoczony, że Kalinitschev nie trafił. To najbardziej wymuszający ruch na planszy, po Rxf6 ?!
Jaxter
1
@jaxter Informacje pochodzą z en.chessbase.com/post/a-history-of-cheating-in-che-3- . Uwaga: „Nie zgadzam się z tym, że Qa7! Zatrzyma serce” - jeśli przeczytasz artykuł, zobaczysz, że Vishy Anand się z tobą nie zgadza :-). Z artykułu - „Więc w co gra nasz bohater? 31.Qa7? !! „Fritzy!” Pisnął Anand i wpadł w niekontrolowany wybuch śmiechu, gdy zobaczył to i kolejne ruchy (sfilmowałem jego wesołość i umieściłem ją w moim raporcie multimedialnym w magazynie ChessBase 69). '
Brian Towers
Dzięki za referencje. Rozumiem twój punkt widzenia. Z pewnością byłbym skłonny dać temu ruchowi szansę, ale częściowo dlatego, że oceniłbym, że Białe mogą przetrwać kontratak Blacka bez obliczania wszystkich linii . Gdybym spróbował to zrobić: a) byłbym pewien, że popełniłbym fatalny błąd, i b) wziąłbym heebie-jeebies i wybrałem inny ruch. Właśnie dlatego, że używam intuicji, często gram dziwaczne ruchy, takie jak ... Qa7 !. Jest to również niewątpliwie czynnik, który przyczynia się do tego, że moja ocena jest niższa niż 2000 ...
Jaxter,
Jest różnica między ruchem górnym, a dźwiękiem, którego spodziewałbyś się wielu graczy, a genialną taktyką, której nie spodziewałbyś się u większości graczy. Gra White'a ma kilka z tych ostatnich.
CashCow
9

Aby udzielić odpowiedzi, jak do tego podejdę, skorzystam z prostego pomysłu:

  • Test hipotezy zerowej

Chodzi o to, że istnieje ograniczona liczba publicznie dostępnych silników szachowych, powiedzmy No nich. To założenie oczywiście wyklucza możliwość, że oszust napisał własny silnik szachowy (lub używa jakiegoś publicznie niedostępnego silnika szachowego), ale dla złapania przypadkowych oszustów powinno to być wystarczające założenie.

Zastosowanie Hipoteza test Null byłaby bardzo prosta: dla każdego silnika szachowego Xi dla każdego podciągu ruchów bieżącej grze obliczyć prawdopodobieństwo pobserwowania odgrywaną podciąg zakładając się hipotezę zerową , że gracz nie używając szachy silnik X, aby ruchy dla nich. Naiwny założenie może być wykonana, że przenosi graczy w przypadkowych (lub wybiera losowo od wybranej liczby najlepszych ruchów d_i), to prawdopodobieństwo dla danej podciąg długość kdopasowania ruchów silnik szachowy Xstałaby będzie obliczana jako (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k)gdzie d_ijest liczbą możliwe (górne) ruchy do wykonania naithturn, zgodnie z oceną silnika Xi n_ijest liczbą całkowitych ruchów dostępnych dla gracza w turze i(lub innym rozsądnym podzbiorze).

Następnie po prostu oblicz

p* = minimum p over all chess engine X, all subsequences y.

Jeśli p*jest mniejszy niż określony próg, gracz jest oszustem, ponieważ istnieje podsekwencja yi silnik szachowy, Xktóry daje prawdopodobieństwo, że gracz nie zdradza poniżej pożądanego prawdopodobieństwa.

pies
źródło
8

Myślę, że analiza po grze daje najlepszą szansę na ustalenie, czy gracz oszukuje. Można to zrobić za pomocą tak zwanej analizy T3 / T4.

Zasadniczo mierzy to częstotliwość, z jaką gracz wybiera jeden z 3 najlepszych lub 4 ruchów sugerowanych przez silnik. To w dużej mierze eliminuje potrzebę identyfikacji używanego silnika docelowego (ponieważ będą one ogólnie zgadzać się na najlepsze ruchy 4/5, nawet jeśli kolejność preferencji jest inna).

Dostępne jest oprogramowanie, które będzie uruchamiać zestaw gier użytkownika przeciwko najwyższym n ruchom silnika. Edytować:

Znam ChessAnalyse, którego można użyć do przeprowadzenia takiej analizy. Możesz wypróbować 30-dniową wersję próbną.

sidprasher
źródło
2
Może temu przeciwdziałać inteligentny oszust, który posiada pewną wiedzę szachową: graj ruchami, które po prostu nie pogarszają twojej pozycji, i czekaj na błąd przeciwnika, który zagrażałby jego pozycji. Jeśli grasz w blitz od 5 do 15 minut przeciwko komuś, kto nie ma siły GM, na pewno to nastąpi wcześniej czy później. Jeśli zresztą rzucisz czasami okropny ruch i / lub nie nalegasz na wygraną w każdej grze, jestem pewien, że twoje oszustwo pozostanie niewykryte.
Andrea Mori
@AndreaMori: Zgadzam się, że możesz uniknąć kilku sytuacji, ale wraz z poprawą jego / jej oceny będzie zmuszony szukać więcej i ostatecznie zostanie wykryty.
sidprasher
Dziękujemy, wspomniałeś, że dostępne jest oprogramowanie. Czy możesz podać przykład?
Salvador Dali
6

Jeśli Twoja witryna daje użytkownikom jedno kliknięcie, aby uzyskać pozycje FEN lub PGN podczas gry , należy rozważyć ich śledzenie.

Niektórzy oszuści oszukują od samego początku, ale inni wolą zacząć oszukiwać tylko wtedy, gdy mają kłopoty, i oczywiście używają funkcji kopiowania FEN / PGN, ponieważ ręczne ustawienie pozycji jest czasochłonne.

Powinieneś jakoś zapamiętać to wraz z ruchem w momencie, w którym go skopiował, w ten sposób możesz porównać od tego momentu do następujących ruchów i zobaczyć, czy jego siła znacznie wzrosła za pomocą silników szachowych.

Ale bardzo ważne jest, abyś używał go tylko, aby pomóc Ci zdecydować, czy on oszukuje, byłoby niesprawiedliwe, aby używać skryptu, który nie wymaga interwencji człowieka, może być wiele fałszywych trafień, na przykład często lubię kopiować pozycje podczas gdy gram, aby później je przeanalizować bez potrzeby szukania mojej gry lub znalezienia dokładnego ruchu z PGN. I nie zawsze zostawiam go w schowku, ponieważ boję się go zastąpić, więc przenoszę go do notatnika (co oznacza, że ​​przełączam okna zaraz po skopiowaniu).

ajax333221
źródło
2
Wydaje się, że dotyczy to raczej punktu widzenia „jak zarządzać serwerem”, niż „czy mój przeciwnik oszukuje?”. jeden (nie żeby OP powiedział cokolwiek o tym, która sprawa się dla niego liczyła). Być może warto o tym wspomnieć, ponieważ zajęło mi trochę czasu, aby zrozumieć, co masz na myśli, myśląc o tym z POV gracza. (Dobra odpowiedź… kiedy to zrozumie ^ _ ^ ')
Nikana Reklawyks
1
dzięki @ajax. Nie myślałem o zapisaniu ruchu, w którym pozycja została skopiowana, i nie analizuję różnicy między siłą przed i po.
Salvador Dali
i oczywiście oszuści dowiedzą się i wyłączą to śledzenie. lub zrobić własną funkcję kopiowania, to nie jest takie trudne: codegolf.stackexchange.com/questions/89647/chess-conversion
Sarge Borsch
3

FWIW, nikt nie wspominał dr Kena Regana z imienia, chociaż wskaźnik do bloga Liptona opisuje inny artykuł w Chess Life, który omawia jego prace.

Ten artykuł jest bardzo pouczający o pracy Regana, stanie technik wykrywania, które obowiązywały w 2014 r., A także pracach FIDE nad ustanowieniem komitetu w celu zdefiniowania i promowania standardów, narzędzi i technik pomagających TD w eliminowaniu oszustw.

Jaxter
źródło