Er zijn veel online websites waar spelers in realtime met elkaar kunnen schaken. De meeste spellen duren 5-10 minuten. Met de beschikbaarheid van schaaksoftware kan men profiteren door Fritz of Rybka te gebruiken om een zet voor hem voor te stellen.
Ik kan bijvoorbeeld gewoon elke zet van mijn tegenstander invoeren en zien welke software mij zal voorstellen .
Ik dacht aan een paar functies die kunnen suggereren dat de speler vals speelt:
- aantal keren dat hij van scherm wisselt
- snelheid van spelen (in gemakkelijke en in heel moeilijke posities)
- nauwkeurigheid van het spel
Heeft iemand nog andere ideeën?
PS: dat doet het maakt voor mij niet uit, vanuit welk perspectief je denkt (server- of client-kant).
Opmerkingen
- Uitstekende vraag en relevant probleem vandaag! Maar bedoel je het detecteren van online blitz-cheaten met behulp van een algoritme of detecteren als een menselijke speler terwijl je een tegenstander speelt?
- Cheat-detectiestrategieën werken alleen als de cheater ” stom “. Door slimmere valsspeelstrategieën aan te nemen (zie mijn opmerking aan NoviceProgrammer ‘ s antwoord) zou het valsspelen bijna onmogelijk te raden zijn.
- Ik denk dat dit vrijwel een non-issue. Ik speel op chess.com. Ik denk dat misschien 1 op de 10 mensen daadwerkelijk vals speelt. En als ik vermoed dat mijn tegenstander wat hulp heeft gekregen, blokkeer ik ze gewoon.
Antwoord
Dit is eigenlijk een zeer complexe vraag, en voor zover ik weet niet een die op een bevredigende manier is opgelost. In wezen vragen we om een algoritme om een soort omgekeerde Turing-test uit te voeren, om onderscheid te maken tussen menselijke spelers en computers.
Ten eerste zullen client-side checks altijd zwakke punten hebben, tenzij je in volledige controle over de clientomgeving. Laten we het eerste idee nemen – controleren op schakelen tussen vensters, het klinkt goed. Helaas is het triviaal opgelost door een schaakengine op een aparte computer te laten draaien, of mijn engine te integreren met de client zodat er geen “window switching” plaatsvindt, of door de client te veranderen om 0 wijzigingen in het venster te melden, of … Er is geen echte manier om er zeker van te zijn dat het jouw code is die op de client draait.
Wat we overhouden zijn fysiek strak gecontroleerde clientomgevingen (die zal niet gebeuren voor online games), of controle aan de serverzijde, dwz kijken naar de daadwerkelijke zetten die zijn gespeeld (en misschien de tijd tussen de zetten, zoals je zegt), en proberen het computer- of menselijke aspect af te leiden .
Controle aan serverzijde kan ook op een aantal manieren worden opgesplitst. Je zou waarschijnlijk een “top-down” -benadering kunnen proberen, iets in de trant van “van eerdere games in de geschiedenis, slechts 2% van de mensen maakte die beweging, terwijl 50% van de computers het haalt “. Dit zou eigenlijk een redelijk goede manier zijn om het te doen, als we genoeg gegevens hadden voor” een bepaalde positie “. Het schaaktempo is echter zo groot dat zelfs zeer grote gegevenssets geen significant aantal partijen zullen hebben dat overeenkomt met uw positie, als u eenmaal voorbij het begin van de wedstrijd bent.
Ervan uitgaande dat we dat niet doen Als u betrouwbare statistieken heeft over de menselijke kant van de vergelijking, kunt u de positie nog steeds presenteren aan een aantal schaakmachines (met elk een aantal verschillende tijdinstellingen), en zien hoe nauw de zetten van de spelers overeenkomen met die van een computer. Op zichzelf zou dit ook leiden tot veel fout-positieven, maar herhaalde positieven voor dezelfde schaakengine en tijdsinstellingen zouden het steeds waarschijnlijker maken dat de speler vals speelde. Om dit verder te versterken, zou ik waarschijnlijk kijken naar een “bottom-up” benadering van het analyseren van schaakposities; kortom, proberen te achterhalen waarom mensen en computers anders spelen. Bijv. mensen hebben de neiging om gemeenschappelijke patronen te herkennen. In een spel met “vreemde” patronen, of onwaarschijnlijke situaties, is de kans kleiner dat een mens zeer nauwkeurig kan spelen. Geen van deze is op zichzelf bijzonder vernietigend, maar gezien het grote aantal games, zou het trends onder de aandacht brengen voor beheerders.
Om een paar details aan je lijst toe te voegen, zou ik in de trant van hoe professoren detecteer plagarisme in papieren – door een plotselinge verandering te detecteren. Bij schaken is dit buitengewoon moeilijk te definiëren, maar een plotselinge verandering in speelstijl of speelsterkte kan wijzen op vals spelen. In het bijzonder zou ik “zoeken naar ongebruikelijk agressieve zetten die de neiging hebben om gewoon” uit te werken “, en die geen nadelen hebben voor de speler (te nauwkeurig). Gedwongen mates in 4+ zetten van een speler die normaal ridders op de rand van het bord plaatst , etc (het is mogelijk … alleen niet waarschijnlijk). Hoe dit precies zou werken, klinkt echter alsof het een heel boek (of meer) in beslag zou kunnen nemen.
BEWERKEN: er was een artikel over bedrog en detectie in schaken op het hoogste niveau .
Reacties
- de mensen versus computers kunnen valse positieven geven bij de opening van het spel, het is heel gemakkelijk om onthoud de beste spelen
- @ ajax333221 Ik ben het er helemaal mee eens. Tot op zekere hoogte kan iets soortgelijks van toepassing zijn op het eindspel, waar een mens het vrijwel perfect kan spelen, alleen op basis van voorkennis. Dat gezegd hebbende, als ik mogelijk valsspelen in een spel kan detecteren, ‘ weet ik zeker dat met aanvullende informatie en geavanceerde analyse, een computer hetzelfde zou kunnen doen. De gedwongen mat in 4+ zetten was een echt voorbeeld uit een recent online spel tegen een speler met een rating van 1050 – op zijn zachtst gezegd zeer suggestief …
Antwoord
In blitz kun je zien aan hoeveel tijd ze “gebruiken. Mensen die engines gebruiken, gebruiken een constante hoeveelheid tijd voor elke beweging, in plaats van door de opening te schrikken en te vertragen naar een kruip in het middenspel zoals de meeste normale spelers. In het bijzonder kunnen ze de opening niet snel spelen, omdat ze hun computerbord na elke openingszet moeten updaten. Als ze vijf seconden nodig hebben op zet twee en vijf seconden op zet twintig, “gebruiken ze waarschijnlijk een engine.
Opmerkingen
- Ik weet niet zeker of dit was waar op het moment van posten, maar Stockfish kan de resterende tijd accepteren als input om prioriteit te geven aan wat beweegt om tijd in door te brengen.
Antwoord
Het aantal schermwisselingen en de speelsnelheid zijn zinloos. Als je deze gebruikt om te klagen bij de organisatoren van een online schaakwebsite, zullen ze je uitlachen.
Er zijn twee manieren om te zien of iemand vals speelt. De eerste is het “smoking gun”. Beschouw deze game-sectie –
[White "Allwermann,Clemens (1900) "] [Black "Kalinitschev,Sergey (2505) Boeblingen (9), 30.12.1999"] [FEN "r6k/1p3Rpp/p2p1bq1/3N4/2P5/1P6/P1b2QPP/5RK1 w - - 0 1"] 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
De vraag is wat je zou spelen in de De situatie is dat een overwinning in deze, de laatste ronde van de competitie, je het toernooi zal opleveren voor een reeks grootmeesters. Niet slecht voor slechts 1900. Ik vermoed dat de meesten van ons iets redelijk solide zouden spelen waardoor de win Bewegingen zoals Rxb7 of Rd7 of (voor lafaards zoals ik 😉 Rxf6. Qa7 is een hartverscheurende beweging, een rokend pistool. Fritz scoort als de beste zet in de stelling, maar liefst 0,1 voor de volgende beste zet, Rd7.
Smoking gun # 2-spel aan het einde van het spel toen zwart stopte en de speler met een rating van 1900 als de toernooi regelrechte winnaar. Wat zou je tegen Kalinitschev zeggen in die functie?
Zo verliep het gesprek:
Allwermann: “It” s mate in 8 “
Kalinitschev: “Ik denk het niet”
Allwermann: “” Kijk maar, je zult zien dat ik “gelijk heb”.
Allwermann had natuurlijk gelijk. Kun jij de stuurman op 8 vinden in de eindpositie? Zonder siliconenhulp?
Dus je hebt je rokende pistool en je brengt het naar de organisatoren. Wat zullen ze doen?
Welnu, dan komt de tweede manier om vast te stellen en zonder redelijke twijfel te bewijzen dat er valsspelen plaatsvindt.
Ze zullen elk minstens 20 spellen moeten verzamelen met ten minste 20 niet-database-verplaatsingen en voer ze ter controle in een motor in. Waar ze eigenlijk naar op zoek zijn, is het percentage van de tijd dat de verdachte een niet-databaseverplaatsing kiest die overeenkomt met de eerste keuze van de engine, een van de eerste 2 keuzes, een van de eerste 3 keuzes. De bewijs-drempels zijn –
Top 1 65%
Top 2 80%
Top 3 90%
Een recent voorbeeld is de furore over de prestaties van Borislav Ivanov .
Hier zijn zijn statistieken –
Zadar 19e: Houdini 1.5a x64 Hash: 256 Tijd: 30s Max Diepte: 20ply {Borislav Ivanov (Games: 9)}
{Top 1 match: 210/314 (66,9%) Opponents: 150/313 (47,9%)
{Top 2 Match: 270/314 (86,0%) tegenstanders: 207/313 (66,1%)
{Top 3 match: 285/314 (90,8%) tegenstanders: 238/313 (76,0%)
{Top 4 Match: 293/314 (93.3%) Tegenstanders: 267/313 (85.3%)
In de 8e ronde ging de live feed naar beneden (het vermoeden bestaat dat hierdoor zijn externe hulp haal de zetten) en hij verloor van GM Predojevic. Als dit resultaat wordt verwijderd, zijn de nieuwe statistieken:
Zad ar 19e: Houdini 1.5a x64 Hash: 256 Tijd: 30s Max. diepte: 20ply {Borislav Ivanov (Games:)}
{Top 1-wedstrijd: 197/287 (68,6%) Tegenstanders: 135/286 ( 47.2%)
{Top 2 match: 252/287 (87,8%) tegenstanders: 188/286 (65,7%)
{Top 3 match: 265/287 (92,3%) Tegenstanders: 218/286 (76,2%)
{Top 4 match: 272/287 (94,8%) Tegenstanders: 242/286 (84,6%)
Zoals je ziet, beide sets van statistieken zou hem van een schaakserver krijgen. Ter vergelijking is hier de analyse voor game 8 toen de feed niet beschikbaar was:
{White: Borislav Ivanov}
{Top 1 Match: 13/27 (48,1%)
{Top 2 match: 18/27 (66,7%)
{Top 3 match: 20/27 (74,1%)
{Top 4 match: 22/27 (81,5%)
{Zwart: Borki Predojevic}
{Top 1 match: 15/27 (55,6%)
{Top 2 match: 19 / 27 (70,4%)
{Top 3-overeenkomst: 20/27 (74,1%)
{Top 4-overeenkomst: 25/27 (92.6%)
Merk op dat de FIDE een commissie heeft ingesteld om manieren te onderzoeken om computerbedrog op te sporen en te bestrijden. Hun richtlijnen zijn hier . Let op deze sectie:
E. De FIDE Internet-gebaseerde Game Screening Tool
FIDE zal een op internet gebaseerde Game Screening Tool leveren, die toegankelijk zal zijn voor alle geautoriseerde FIDE-functionarissen (IO, IA, ACC-leden) en nationale federaties. Het zal worden gehost op een speciale FIDE-webpagina en zal geautoriseerde partijen in staat stellen om games in PGN-formaat te uploaden voor een “snelle test” die potentiële uitschieters in een toernooi zal identificeren. Met “screening” wordt bedoeld dat dit slechts een voorlopige test oplevert zonder beoordelingswaarde, behalve dat deze kan worden geciteerd terwijl beschuldigingen worden afgewezen en we weigeren door te gaan met een handmatige volledige test.
Reacties
- Geweldige analyse! De resultaten van T3 / T4 zijn overtuigend, vooral als de waarschijnlijkheid van zijn resultaten wordt gerapporteerd. Tussen haakjes: Ik realiseer me dat je post een tijdje geleden is geplaatst, maar heb je toevallig nog steeds het citaat voor het gesprek tussen Kalinitschev en Allwermann? Het is duidelijk dat geen 1900 een partner betrouwbaar zal vinden in 8, vooral wanneer een 2500 het niet ‘ ziet. Het ‘ klinkt niet bijzonder slim voor hem om dit punt naar voren te hebben gebracht, terwijl het op zichzelf het vermoeden zou kunnen wekken dat hij ‘ s vals spelen.
- Trouwens: ik ben het er niet mee eens dat Qa7! is een hart-stop. Het ‘ maakt simpelweg gebruik van de twee feiten dat: 1) Black ‘ s achterstand zwak is, en 2) hij ‘ is kwetsbaar voor een partner erop. Dus elke afleiding van de toren van de achterste rang zal potentieel winnende tactieken mogelijk maken. In dit geval gebruikt wit de zet om de b-pion aan te vallen en om zijn dame en toren op de zevende te coördineren, zodat de toren wordt verdedigd. Wit wint minstens een pion na 1 … Qxf7 2.Qxa8 + Qg8 3.Dxb7. Ik denk dat elke GM de zet Qa7 had moeten zien, en ik ‘ ben zeer verrast dat Kalinitschev het heeft gemist. Het ‘ is de meest dwingende zet op het bord, na Rxf6 ?!
- @jaxter De informatie komt van en.chessbase.com/post/a-history-of-cheating-in-che-3- . Opmerking ” Ik ben het er niet mee eens dat Qa7! is een hart-stopper ” – als je het artikel leest, zul je zien dat Vishy Anand het niet met je eens is :-). Uit het artikel – ‘ Dus wat speelt onze held? 31. vraag7? !! “Fritzy!” gilde Anand en kreeg oncontroleerbare lachbuien toen hij deze en de volgende bewegingen zag (ik filmde zijn vrolijkheid en nam die op in mijn multimediaverslag in ChessBase Magazine 69). ‘
- Bedankt voor de referentie. Ik begrijp je punt. Ik zou zeker bereid zijn geweest om de zet een kans te geven, maar dat ‘ is gedeeltelijk omdat ik had geoordeeld dat wit zwart zou kunnen overleven ‘ s tegenaanval zonder alle regels te berekenen. Als ik dat zou proberen a) ik ‘ d er zeker van zou zijn dat ik een fatale fout zou maken, en b) ik ‘ de heebie-jeebies en kies een andere zet. Het ‘ is juist omdat ik intuïtie gebruik dat ik vaak freaky moves speel zoals … Qa7 !. Het ‘ is ongetwijfeld ook een factor die bijdraagt aan waarom mijn beoordeling lager is dan 2000 …
- Daar ‘ sa het verschil tussen de beste zet is een gezonde zet ‘ d verwacht dat veel spelers deze vinden, en een briljante tactiek die je niet ‘ zou vinden verwachten dat de meeste spelers zien. Wit ‘ s spel hierboven heeft verschillende van de laatste.
Antwoord
Om mijn antwoord te geven op hoe ik dit zou aanpakken, zou ik een eenvoudig idee gebruiken:
- Null-hypothesetest
Het idee is dat er een beperkt aantal publiek beschikbare schaakengines is, laten we zeggen N
van hen. Deze aanname sluit natuurlijk de mogelijkheid uit dat de cheater zijn eigen schaakmachine heeft geschreven (of een publiekelijk niet beschikbare schaakmachine gebruikt), maar voor het vangen van toevallige valsspelers zou dit een voldoende sterke aanname moeten zijn.
De toepassing van de nulhypothesetest zou heel eenvoudig zijn: voor elke schaakengine X
en bereken voor elke subreeks van zetten van het huidige spel de kans p
van het observeren van de gespeelde subreeks uitgaande van de nulhypothese dat de speler niet gebruikt schaakengine X
om de zetten voor hen te maken. Een naïeve veronderstelling zou kunnen worden gedaan dat de speler willekeurig beweegt (of willekeurig kiest uit een geselecteerd aantal topzetten d_i
), en vervolgens de waarschijnlijkheid voor een gegeven subreeks met lengte k
overeenkomende verplaatst een schaakengine X
zou worden berekend als (d_1)/(n_1) * (d_2)/(n_2) * (d_3)/(n_3) *...* (d_k)/(n_k)
waarbij d_i
is het aantal mogelijke (bovenste) zetten dat moet worden gemaakt bij de ith
bocht, zoals beoordeeld door engine X
en n_i
is het totale aantal zetten dat de speler op zijn beurt beschikbaar heeft i
(of een redelijke deelverzameling.)
Bereken dan eenvoudig
p* = minimum p over all chess engine X, all subsequences y.
Als p*
minder is dan een bepaalde drempel, label de speler dan als bedrieger aangezien er bestaat een subreeks y
en schaakengine X
die de kans geeft dat de speler niet bedriegen beneden een gewenste waarschijnlijkheid.
Antwoord
Ik denk dat analyse na het spel je de beste kans geeft om te bepalen of een speler vals speelde. Dit kan worden gedaan met behulp van de zogenaamde T3 / T4-analyse.
Dit meet in feite de frequentie waarmee een speler een van de top 3 of top 4 zetten kiest die door een engine worden voorgesteld. Dit elimineert grotendeels de noodzaak om de gebruikte doelengine te identificeren (aangezien ze het over het algemeen eens zullen zijn over de beste 4/5 zetten, zelfs als de volgorde van voorkeur anders is).
Er is software beschikbaar die een set van games van de gebruiker tegen de bovenste n zetten van de engine. Bewerken:
Ik ben op de hoogte van ChessAnalyse die kan worden gebruikt om een dergelijke analyse uit te voeren. Je kunt de proefversie van 30 dagen proberen.
Reacties
- Dit kan worden tegengegaan door een intelligente valsspeler die enige schaakkennis heeft als volgt: dat maakt uw positie gewoon niet erger en wacht op de blunder van uw tegenstander ‘ die zijn / haar positie in gevaar zou brengen. Als je 5 tot 15 minuten blitz speelt tegen iemand die niet de GM-sterkte heeft, zal dit zeker vroeg of laat gebeuren. Als je bovendien af en toe een slechte zet doet en / of je staat er niet op om elk spel te winnen, ‘ weet ik zeker dat je valsspelen onopgemerkt blijft.
- @AndreaMori: ik ben het ermee eens dat je een paar situaties kunt vermijden, maar naarmate zijn / haar beoordeling verbetert, zal hij gedwongen worden om steeds meer op te zoeken en uiteindelijk ontdekt te worden.
- Dank je, je hebt het genoemd dat er software beschikbaar is. Kunt u een voorbeeld geven?
Antwoord
Als uw site de gebruikers één klik geeft, krijgt u FEN-posities of PGN terwijl het spel draait , zou je moeten overwegen om deze bij te houden.
Sommige valsspelers spelen vanaf het begin vals, maar anderen geven er de voorkeur aan pas te beginnen met valsspelen als ze in de problemen zitten, en dat zullen ze gebruik uiteraard de kopieerfunctie FEN / PGN, aangezien het tijdrovend is om de positie handmatig in te stellen.
U moet dat op de een of andere manier samen met de zet opslaan op het moment dat hij het kopieerde, op deze manier kunt u vergelijken met die verwijzen naar de volgende zetten en kijken of zijn kracht enorm is toegenomen met behulp van schaakmachines.
Maar het is erg belangrijk dat je het alleen gebruikt om te beslissen of hij vals speelde, het zou oneerlijk zijn om een script te gebruiken dat geen menselijke tussenkomst gebruikt, kunnen er veel false-positives zijn, ik vind het bijvoorbeeld vaak leuk om posities te kopiëren terwijl ik aan het spelen ben om ze later te analyseren zonder dat ik naar mijn spel hoef te zoeken of de De exacte verplaatsing van de PGN. En ik laat het niet altijd op mijn klembord staan omdat ik bang ben het te overschrijven, dus verplaats ik het naar kladblok (wat betekent dat ik van venster verander net nadat ik het heb gekopieerd).
Opmerkingen
- Dit lijkt eerder het ” hoe een server te beheren ” standpunt te zijn dan de ” bedriegt mijn tegenstander? ” (niet dat het OP iets zei over welke zaak voor hem belangrijk was). het kostte me wat tijd om te begrijpen wat je bedoelde, toen ik eraan dacht van de speler ‘ s POV.(Goed antwoord … zodra dit begrepen is ^ _ ^ ‘)
- bedankt @ajax. Ik heb er niet aan gedacht om de zet waarop de positie werd gekopieerd op te slaan en het verschil tussen de sterkte ervoor en erna te analyseren.
- en natuurlijk zullen valsspelers dat volgen en uitschakelen. of doe hun eigen kopieerfunctionaliteit, het ‘ is niet zo moeilijk: codegolf.stackexchange.com/questions/89647/chess-conversion
Antwoord
FWIW, niemand heeft Dr. Ken Regan bij naam genoemd, hoewel de pointer naar Liptons blog beschrijft een ander artikel in Chess Life dat zijn werk bespreekt.
Dat artikel is zeer informatief over het werk van Regan, de stand van de detectietechnieken die in 2014 van kracht waren, en het werk van de FIDE bij het opzetten van een commissie om standaarden, tools en technieken te definiëren en af te kondigen om TD bij te staan ” s in het uitroeien van bedrog.