Pitanje:
Koji je točan način za procjenu šahovskih pozicija?
Charles Menguy
2012-05-10 21:48:36 UTC
view on stackexchange narkive permalink

Mene već neko vrijeme zanimaju algoritmi računalnog šaha AI (i u jednom sam trenutku dobio priliku raditi na njima) poput Minimax, a kao temeljna komponenta tih algoritama je takozvana funkcija procjene za određivanje što je dobra konfiguracija ploče, a što loša .

U ostali izrazi, s obzirom na konfiguraciju vaše šahovske ploče, kako utvrđujete da li je to u vašu korist i s kojim stupnjem povjerenja?

Na primjer:

  • Ako ste vlasnik centra, ovo je prilično povoljno.
  • Ako imate više figura od protivnika, ovo je prilično povoljno.
  • Ako ste izgubili kraljicu , ovo prilično nije povoljno.
  • Ako imate pijuna koji je blizu promocije, to je povoljno.
  • ...

Stoga bih želio zatražiti savjet o tome kako stvoriti dobru funkciju ocjenjivanja, temeljenu na nekim stručnim znanjima o šahovskoj igri općenito. I ako je moguće, stupanj naklonosti (recimo između 1 je vrlo nepovoljan, a do 100 izuzetno povoljan).

Na kraju je ideja biti u mogućnosti stvoriti algoritam koji će izgledati u stablu mogućnosti do određene dubine i procijenite koja je najpovoljnija konfiguracija za sljedeći potez (uzimajući u obzir nekoliko poteza u budućnosti) na temelju onoga što je povoljno za igrača, a ne za protivnika. Ali bez dobre funkcije procjene algoritam je ništa.

Mislim da bi ovo pitanje dobro prošlo na StackOverflowu. Već postoji puno pitanja o šahovskom AI
Prije sam ga mislio objaviti na SO-u, ali gotovo sam siguran da bi tamo bio zatvoren jer nije konstruktivan ili nije pravo pitanje. Možda ako trebam veći naglasak na samom kodu, ali mislim da je za funkciju vrednovanja potrebno znanje o šahu, a ne toliko o kodu ili algoritmima.
Kako točno. Jedini potpuno točan način je pobijedio ili izgubio ili izjednačio.
Osam odgovori:
#1
+10
Eve Freeman
2012-05-11 08:39:43 UTC
view on stackexchange narkive permalink

Evo dobrog polazišta. Usporedba materijala je ključna (i laka), a zatim je možete prilagoditi da se uzmu u obzir položajni aspekti poput otvorenih redova / datoteka / dijagonala, strukture pijuna itd.

https://www.chessprogramming.org / Procjena

#2
+6
mishaturnbull
2015-03-01 09:17:29 UTC
view on stackexchange narkive permalink

Imam osjećaj da malo kasnim s ovim odgovorom, ali - također sam u procesu izrade motora. Izvorni je kod na Pythonu (koji je prilično lagan za čitanje, čak i ako ga ne znate), a dostupan je ovdje ako ga želite pročitati. Popis trenutno aktivne "heuristike" (u vrijeme objavljivanja):

  • Dalje razvijeni (bliži suprotnoj strani) komadi su bolji
  • Pioni bliži promociji su dobro
  • Kraljevi se ocjenjuju odvojeno ovisno o tome u kojoj se fazi igra (uvodna, srednja, završna igra)
  • Ako igrač ima oba biskupa, to dobiva bonus
  • Ako je igrač donio ulogu, primite bonus
  • Izolirani pijuni (pijuni bez ičega oko sebe) nisu dobri
  • Udvostručeni pijuni (dva pijuna na istoj datoteci bez praznine između ) nisu dobri
  • Imati svih 8 pijuna nije potrebno, dobra stvar i kažnjava se (oni pretrpaju ploču i staju na put)
  • Pogledajte ovo izvrsna funkcija ocjenjivanja koja se također koristi
  • Biskupi s više pijuna na kvadratu iste boje kao i biskup su kažnjeni (nisu toliko dobri u gužvi)
  • Još nije provedeno, ali planirano: vitezovi dobivaju bonus u situacijama gužve

U jednoj od takvih bodova, spomenuo sam 'fazu' igre (npr. otvaranje, srednja igra, završna igra), a ako to želite uključiti u svoj motor, vjerojatno ćete naići na isti problem kao i ja: nema jasne crte koja ih razdvaja. Moja funkcija koja odlučuje u kojoj je fazi igra koristi nekoliko stvari:

  • Količina materijala na ploči (čim bilo koji komad bude ubijen, igru ​​označava kao da nije na početku)
  • Broj poteza (otvaranje je manje od 6 punih poteza, bez obzira na sve)
  • kretanje kraljica (ako su obje kraljice premještene, označi igru ​​kao srednju igru)

Ovaj je odgovor možda bio dug, kasan i bio je van teme, ali nadam se da je ipak bio koristan.

#3
+5
Pablo S. Ocal
2014-09-21 02:53:40 UTC
view on stackexchange narkive permalink

Dodajući odgovor @Eve Freeman, predložio bih da potražite kako najbolji računalni motor na svijetu, Stockfish, procjenjuje datu poziciju. Budući da je izvorni kod otvoren, to možete učiniti besplatno. Mislim da je datoteka s funkcijom procjene koju tražite ova.

#4
+4
Chromatix
2019-07-01 04:48:45 UTC
view on stackexchange narkive permalink

Iznenađujuće je da se ispostavlja da će Minimaxov mehanizam igrati prilično dobro kada je funkcija procjene slučajna ; ovo je poznato kao Beale efekt, a proizlazi iz principa da su položaji koji vam daju više mogućnosti, a protivnik manje opcija uglavnom povoljni. Jedan od razumnih načina za dosljedno i učinkovito generiranje slučajnih procjena je generiranje Zobristovog hasha za poziciju (pomoću koeficijenata odabranih slučajno na početku igre) i izvođenje slučajnih procjena izravno iz hasha.

Na suprotni kraj ljestvice, AlphaZero i Leela provode izuzetno sofisticiranu procjenu svakog pretraživanog položaja, koristeći veliku neuronsku mrežu . Nepraktično je ljudskim riječima opisivati ​​koje funkcije ova mreža učinkovito provodi, ali je nedvojbeno učinkovitija od funkcije procjene Stockfish-a. Istraživački rad AlphaZero ukazuje da ovaj pristup najbolje funkcionira s pretraživanjem drveća Monte-Carlo, a ne s Minimaxom.

Ako, s druge strane, želite razviti mehanizam za analizu koji će vam pomoći ljudski igrači ili komentatori razumiju nijanse pozicije, možda bi bilo vrijedno primijeniti konvencionalnu funkciju vrednovanja pomoću utvrđenih materijalnih vrijednosti i pozicijske teorije . Dobar primjer daje Inside Rebel Eda Schrödera, dokumentirajući glavne značajke dizajna cijenjenog motora koji se koristi u nekoliko Mephistovih šahovskih računala. Možda ćete htjeti upotrijebiti određeni stupanj strojnog učenja kako biste utvrdili relativnu važnost svakog elementa vaše funkcije vrednovanja, a također ih pojedinačno razbiti za prezentaciju u GUI-ju.

#5
+3
A passerby
2015-09-23 16:46:39 UTC
view on stackexchange narkive permalink

Mislim da se programeri šaha obično ne oslanjaju na znanje jakih šahista pri dizajniranju svojih funkcija procjene, već isprobavaju različite elemente, a zatim ih testiraju u igrama protiv drugih motora i odlučuju što će zadržati. Larry Kaufman pošteno govori o svojim stavovima o tome što je ljudsko razumijevanje, ali zvuči kao da su i Rajlich i Dailey bili vrlo orijentirani na rezultate i da nisu usvojili Kaufmanove ideje na veliko.

Jedan članak koji mi se učinio zanimljivim bio je Zach Wegner uspoređujući funkcije ocjenjivanja Rybke i Fruit-a. Jedno od područja u kojem je Rybka možda predstavljala korak naprijed bilo je ugrađivanje tablica neravnoteže materijala na temelju specifičnih kombinacija komada. Kaufman je i o tome napisao članak.

http://www.top-5000.nl/ZW_Rybka_Fruit.pdf http://danheisman.home.comcast .net / ~ danheisman / Članci / procjena_materijalne_balansa.htm

#6
  0
techcraver
2015-01-10 11:27:18 UTC
view on stackexchange narkive permalink

Ova je poveznica najbolje polazište IMHO. Koristim ovo kao početnu točku za vlastiti šahovski program & smatrajući ga jednostavnim za razumijevanje i korisnim.

https://chessprogramming.wikispaces.com/Simplified+evaluation+function

Možete li, molim vas, ukratko proširiti sadržaj poveznice?
Web mjesto Wikispaces sada je zamrlo. Ispravljena veza do novog doma: https://www.chessprogramming.org/Simplified_Evaluation_Function
#7
  0
jaxter
2016-10-21 21:20:08 UTC
view on stackexchange narkive permalink

Ukratko, standardni pristup podešavanju parametara šahovskog motora je:

  1. Definiranje parametara
  2. Davanje parametara nominalnim (početnim) vrijednostima
  3. Pokrenite motor da vidite kako radi
  4. Ugodite vrijednosti parametara kako biste pokušali poboljšati njegove performanse

Zatim ponavljajte korake 3 i 4 dok ne dobijete postigli ste svoj cilj zbog performansi.

Uobičajeni pristup tome je postavljanje laboratorija u kojem se motori suočavaju na turnirima. Koristi se više igara u kojima motor igra obje boje. Glavni turniri od interesa uključuju pokretanje motora s vrijednošću parametra A postavljenom protiv istog motora s vrijednošću parametra B.

Kao što vjerojatno možete pretpostaviti, rezultati ovog pristupa uvelike ovise o:

  • Odabrani parametri
  • Kako su parametri navedeni
  • Kako se vrijednosti parametara mijenjaju tijekom ispitivanja
  • Kako se pokreću motori ( ograničena dubina sloja, ograničeno vrijeme, osjetljivost itd.)

Ovaj pristup također troši puno vremena.

Noviji ( i inovativan pristup) istraživači su 2010. razvili tehnikama genetskog algoritma za a) specificiranje parametara i b) podešavanje vrijednosti parametara. Istražitelji su prvo pokrenuli motor s početnim, nominalnim skupom vrijednosti parametara protiv niza velemajstorskih igara kako bi provjerili može li učinkovito odabrati "najbolji potez". "Najbolji potez" definiran je kao potez koji je velemajstor napravio *. Svugdje gdje to nije uspjelo zabilježeno je. Zatim je isproban drugi skup vrijednosti parametara i utvrđena je relativna izvedba u odnosu na prethodno pokretanje.

Zatim je isproban programski pristup kombiniranju vrijednosti parametara , koristeći načelo genetskog algoritma preživljavanja "najsposobnijih". Ovdje "najsposobniji" znači onaj koji generira izlaz koji se najviše podudara s idealom. (To je također slučaj igre statističke tehnike regresije "najmanje kvadrata", tehnike koja se koristi za procjenu kvalitete aproksimacije.)

Tek nakon pronalaska parametara motora koji mogu oponašati GM relativno dobro započinje li stvarna faza turnira motora. U ovoj se fazi različiti skupovi vrijednosti parametara ponovno međusobno uspoređuju, ovaj put izravno . Tehnike poboljšanja genetskog algoritma primjenjuju se za generiranje uzastopno boljih generacija motora.

U ovom istraživačkom projektu upotrijebljeno je 36 parametara, uključujući sve materijalne vrijednosti dijelova, i mnoge od uobičajenijih strateških procjena kriteriji, poput zaostalih pijuna, slabih kvadrata, biskupskog para i tako dalje. Međutim, istraživači su dodali neke nove parametre, poput "kraljevskog pritiska", vrijednosti "pokretljivosti" za svaku vrstu komada, točak na datoteci uz kralja, točak na poluotvorenoj datoteci, točak koji napada kralja na - / b- / g- / h-datoteka, razdvajanje između prosljeđenog pijuna i kralja koji brani i još mnogo toga.

Nažalost, istraživači ne razrađuju kako su došli do ovog skupa parametara i koje su alternativne parametre možda testirali i odbacili. Bilo bi razumno pretpostaviti da su započeli s mnogo većim skupom i utvrdili (metodom pokušaja i pogrešaka) koji su imali najveći učinak na izvedbu, a koji su ili beznačajni ili izvedeni, pa bi se tako moglo odustati.

Ako ovo zvuči korisno, istraživanje možete pronaći .

* Upozorenje o fazi pristupa koju su istraživači koristili je u redu. U svom Uvodu u Razumijevanje šahovskog poteza potezom John Nunn odabrao je "... borbene igre između jakih velemajstora ..." kako bi ilustrirao svoje teme. Zatim dodaje:

Čitatelji mogu biti prilično iznenađeni kad vide broj upitnika koji krase igre u ovoj knjizi. Sigurno biste mogli pomisliti, nakon samo trideset odabranih igara, bilo je lako pronaći neke zvučne igre. Međutim, mogu vas uvjeriti da nije. ... moguće je pronaći grešku u praktički bilo kojoj složenoj, napornoj igri ... Nikad nisam osjećao da je moja igra bila potpuno točna, tako da osobno ne smatram ta otkrića uznemirujućim. Međutim, nekima će biti teško priznati da je šah kakav igraju ljudi manje točan nego što se prije mislilo.

Točka koju dr. Nunn iznosi sugerira da istraživačev početni pristup postavljanju parametri motora zahtijevajući od njih da oponašaju velemajstorske poteze mogu biti manjkavi jer je ljudska igra pogrešna . Zapravo je dobro utvrđeno da motori već igraju bolje od ljudi .

Stoga bi možda bolji pristup postavljanju početnih parametara bio podudaranje novog motora s vrhunski postojeći motor .

#8
  0
SmallChess
2017-04-19 06:47:57 UTC
view on stackexchange narkive permalink

Postoji lijepa web stranica na:

https://hxim.github.io/Stockfish-Evaluation-Guide/

Daje vam uvod o tome kako funkcioniraju Stockfish funkcije.

enter image description here



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 3.0 licenci pod kojom se distribuira.
Loading...