Uppdatering. Med tanke på denna fråga utövade jag parning maximerade Chess.Com-motorn. Under analysen visade det sig att de flesta som de använder någon version av Stockfish eller Komodo. Det krävde en omstart av hela processen, försök med olika positioner, uppoffringar och total förstörelse på strategisk nivå. Den förstod bara att den bara har problem när positionen redan förlorade totalt. Det krävde nästan 60 drag, jag antar att det inte är möjligt att göra det i mindre antal drag. Jag minskade antalet drag eftersom jag använde drag från andra motorer, vilket inte var avgörande för vinsten. Professionell spelare kan göra detsamma utan schackmotor och med mindre försök. Det svåraste är att hitta viktiga idéer mot viktiga svagheter, i huvudsak är det en uppgift för mänsklig, inte dator. Du måste också hitta den bra öppningen som skulle fungera. Det är viktigt att jag inte vet vilken motor jag slår för i princip de steg som krävs för att göra din egen vinst ändå skulle vara desamma.
Observera att spelet hade tre deltagare. Jag överträffade motorn för en hel bit. Sedan avskedar jag den biskopen, jag hade en fördel att få tag i drottningen, vilken motor tänkte är OK, eftersom han lockades i en fälla med att överskatta sin passerade bonde. Motor överskattade verkligen hans förmåga att göra kontroller och materiella fördelar. Motorer är så giriga att om du spelar genom att locka sina riskabla attacker i en klar fälla har de ingen hjärna att undvika det. Och när du vinner en gång - vinner du för alltid. Kan justera några drag men du skulle upprepa hela idén.
[ECO "A01"] 1.b3 d5 2.g3 e5 3.Bb2 Nc6 4.Bg2 Nf6 5.e3 h5 6.h3 Bf5 7.d3 Qd7 8.a3 OOO 9.Ne2 Be7 (9 ... Kb8 10.b4 a6 11.Nd2 Bd6 12.Nb3 e4 13.Qd2 Ne5 14.Nc5 Qc8 (14 ... Bxc5 15.Bxe5 Bb6 16. Bxf6) 15.Bxe5 Bxe5 16.d4 Bd6 17.b5 axb5 18.Rb1 Nd7 19.Rxb5 Nb6 20.a4 h4 21.g4 Bd7 22.Rb1 f5 23.Qc3 (23.a5 Nc4 24.Qc3 b5 25.axb6 cxb6 26.gxf5 Bxf5 27.Bf1 Bxc5 28.dxc5 Qxc5))
10.b4 a6 11.Nd2 g5 12.Nb3 Qe6 13.Nc3 Kb8 14.Qd2 h4 15.g4 Nxg4 16.hxg4 Bxg4 17.f3 Bh5 18.OOO f5 19.Rdg1 g4 20.fxg4 (20.f4 h3 21. Bf1 exf4 22.exf4 d4 23.Nd1 Bf7) 20 ... fxg4 21.Qe1 Bf7 (21 ... g3 22.Nc5 Qf7) 22.Kb1 Qd7 23.Ne2 Be6 24.Nc5 Bxc5 25.bxc5 h3 (25. ..g3) 26.Bf1 d4 (26 ... Rdf8 27.Ng3 Qe7) 27.e4 Rhg8 28.Ng3 Rg5 (28 ... Rg6) 29.Be2 Rdg8 30.a4 a5 31.Ba3 Ka7 32.Bd1 Nb4 33.Bxb4 Qxa4 34.Bc3 dxc3 35.Qxc3 b5 36.Qb2 b4 (36 ... Qd4) 37.Nf5 Qe8 38.Rh2 Kb8 39.Qa1 (39.Qxe5 $ 4 {mycket dålig idé}) 39 ... a4 40.c4 Bxf5 41.Bxa4 Bd7 42.Ra2 h2 43.Re1 Bxa4 44.Rxa4 Qc6 45.Ra6 Rh8 (45 ... Rh5 46.Kb2 h1 = Q 47.Rxc6 Qh2 + 48.Kb3) 46.Rxc6 h1 = Q 47.Kb2 Qg2 + (47 ... Rh2 + 48.Kb3 Qg2) 48.Kb3 Rh2 49.Rc1 Rh3 50.Rb1 Rh2 51.Rc1 Rh3 52.Rb1 Qd2 53.Ka4 Rh2 54.Kb5 Qa2 55.Ra6 Qxa1 56.Rbxa1 Kc8 57.Rf6 Rh8 (57 ... Rg8 58.Ra8 +) 58.c6 Kb8 59.Rf2 b3 60.Rb2 Rh1 61.Rxh1 Rg8 62.Ra1 Rd8 63.Rxb3 Rd5 + 64.cxd5 g3 65.Kc5 + Kc8 66.Ra8 # 1-0
=============
Torkfisk och andra datormotorer är slagen, med tanke på dessa faktorer:
- Lim ited öppning + slut spel databaser. Detta är den största faktorn. Datormotorer känner inte till teorin, så utvecklare förstärker sina svagheter med att tillhandahålla databaser med tera-byte med sofistikerade index för ultrasnabba sökoperationer.
- Svagheter i värderingsalgoritmen. Varje datormotor kan inte få tag på miljarder möjliga kombinationer, så den söker i spelträdet och använder värderingsfunktionen någonstans på de djupaste nivåerna. De senaste motorerna använder funktionen Neural Network i slutet av trädet, och att balansera detta neurala nätverk är också en annan typ av databas som människor kan attackera. Om du analyserar denna neurala funktion, ta reda på positionen där den misslyckas (den kommer att misslyckas någonstans) på grund av en begränsad tid som ges till datorn.
- Svagheter vid öppning. Använd mycket icke-standart-öppning, som du förberett med test-och-fel-tillvägagångssätt, handgjorda. Varje matchning mellan människa och dator går alltid förberedd. Eftersom människor inte kan leka med "svart låda", borde de förstå motståndaren. Vanligtvis leker människor med datorn i flera månader innan de tillåter ordentlig "matchning". Datorn måste göra deterministiska och återhämtningsbara drag. Dvs för varje körd dator bör inte lita på vissa "slumpmässiga" variabler. I den historiska Kasparov-DeepBlue-matchen valde datorn ett annat drag, som gick till en annan riktning och upprepade sig inte. Så det var frågan var människor korrigerade motorn eller databasen var annorlunda.
Att attackera dessa svagheter gör mycket roligt och skapar olika antidatorstrategier.
Jag skulle säg att vi ska definiera sann datormotor som skulle ärva dessa egenskaper:
- Ingen mänsklig intervention. Motorvariabler skulle aldrig fastställas godtyckligt av människor.
- Inga neurala nätverk + Inga peta-byte-databaser. Det upprepar helt enkelt 1 och dessutom kräver neuralt nätverk i princip övervakning av människor för att lära sig, eller någon självlärande datorkraft. Så motorn sparar i grund och botten tid som den skulle kräva i verklig matchning av databaser före databehandling.
- Inga slumpmässiga drag. Fast beteende för given CPU / GPU / tid med deterministiska formler. Upprepningsbara spel.
Sanna datormotorer kan slås av människor, med tanke på att det finns konkurrensvillkor. Riktigt spel med insatser i pengar + tid för mänsklig sida för förberedelser åtminstone några månader + äkta datormotor som skulle stå med sport. Beatable.
Problemet med att spela mot datormotorer kommer från den tid som krävs för människor att komma beredda till striden. För att spela är radikalt annorlunda än att spela mot andra människor. Att spela mot människor handlar om strategi, medan spel mot datorer handlar om att göra optimala drag.
De senaste versionerna av Stockfish och Lc0 från början är inte rättvisa sanna datormotorer, eftersom de gäller neurala nätverk som tränades genom övervakningstekniker - eller av människor eller av andra motorer. Så det är typ av en databas som är inbyggd i motorn för att påskynda den. Så jag tror inte att "slå" en sådan motståndare ens skulle räknas som "slå dator" eftersom du faktiskt slår andra människor som tränade specifika neurala nät.
PS. Jag gjorde det. Jag började med att observera hur andra motorer hanterar datormotståndare och kom med rörelser som skulle motverka de idéer som just denna motor utvecklade. Finns det en guide för att försöka ta bort detta själv?
- Fixa öppningsrörelserna. Vanligtvis vill du först spela Ryu Lopez-spel eftersom det här är mest som att datorer skulle spela som standard när de inte har en öppningsbok.
- Utveckla dina bitar först, medan du inte låter datorn byta. Eftersom mindre bitar -> datoralgoritmer är mer effektiva. Du vill att datorn ska drabbas av slipning. Varje gång du gör misstag att låta datorn byta, rulla tillbaka och analysera vad som är fel.
- Utveckla dina pantkedjor och idéer. Nyckeln är att hålla din idé funktionsduglig. Idé flyttar + fyllning flyttar. När du bara behöver fylla utrymmet gör du "filler moves" som inte gör att du riskerar utan bara ökar komplexiteten för datorn.
- Fånga datorn när den skruvas fast. Det kommer förr eller senare. Datorer skruvar troligen på att passera bönder. För när de märker bonde mycket nära att passera är det redan för sent. Stäng din materiella fördel genom att byta bonde mot rook eller något värdefullt ->-vinst. Gå inte efter snygga avslutningar, gör bara materiella saker. Det kommer att ta fler drag, men det kommer inte att bryta din intuition.
- När du väl har hittat vinnarstrategin har du slagit den här datorn för alltid, för varje gång den körs kan du bara upprepa dina drag och missbruka samma fläckar. Det kan inte göra något emot. Eftersom datorrörelser beräknas med formler, oavsett hur komplicerade dessa formler är, kan de spelas ut.
PPS. Det är ett spel och datorer är dumma i spel! Tänk dig att du har bots mot dig i CSGO. Visst att de kan skjuta, och deras skytte kan förbättras upp till millisekunder så att ingen mänsklig spelare skulle vara starkare vid skytte. Men det finns mer i CSGO än att bara peka musen mot angivna riktningar.