Küsimus:
Kuidas saab malepositsioone täpselt hinnata?
Charles Menguy
2012-05-10 21:48:36 UTC
view on stackexchange narkive permalink

Mind on mõnda aega huvitanud arvutimalega tehisintellekti algoritmid (ja mul on võimalus ühel hetkel sellega töötada), nagu Minimax, ja kuna nende algoritmide põhikomponent on nn hindamisfunktsioon , et teha kindlaks, mis on hea tahvli konfiguratsioon ja mis on halb .

muud terminid, arvestades teie malelaua konfiguratsiooni, kuidas saate kindlaks teha, kas see on teie kasuks ja millise kindlusega?

Näiteks:

  • kui teil on keskuse omanik , see on pigem soodne.
  • Kui teil on rohkem nuppe kui vastasel, on see pigem soodne.
  • Kui kaotasite oma kuninganna , see pole pigem soodne.
  • Kui teil on ettur, mis on lähedal edutamisele, on see soodne.
  • ...

Seega tahaksin küsida nõu, kuidas luua hea hindamisfunktsioon, tuginedes mõningatele ekspertteadmistele malemängu kohta üldiselt. Ja kui võimalik, teatud määral soodsust (ütleme, et 1 on väga ebasoodne, 100 on äärmiselt soodne).

Lõppkokkuvõttes on idee luua puu sisse vaatav algoritm võimalustest teatud sügavuseni ja hinnake, milline on järgmise käigu jaoks kõige soodsam konfiguratsioon (arvestades tulevikus mitut käiku), lähtudes sellest, mis on mängijale soodne ja vastasele mitte. Kuid ilma hea hindamisfunktsioonita pole algoritm midagi.

Ma arvan, et see küsimus läheks StackOverflow'le hästi. Seal on juba palju küsimusi maleintellekti kohta
Mõtlesin selle varem SO-sse postitada, kuid olen peaaegu kindel, et see suletakse kui konstruktiivne või pole seal reaalne küsimus. Võib-olla, kui mul on vaja rohkem rõhku panna koodile endale, kuid arvan, et hindamisfunktsiooni jaoks on see vajalik teadmine malest, mitte niivõrd koodist ega algoritmidest.
Kui täpne. Ainus täiesti täpne viis on see, kas sa võitsid või kaotasid või viigistasid.
Kaheksa vastused:
#1
+10
Eve Freeman
2012-05-11 08:39:43 UTC
view on stackexchange narkive permalink

Siin on hea lähtepunkt. Materjalide võrdlus on võtmetähtsusega (ja lihtne), siis saate seda häälestada, et võtta arvesse positsioonilisi aspekte, nagu avatud auastmed / failid / diagonaalid, etturi struktuur jne.

https://www.chessprogramming.org / Hindamine

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

Mul on tunne, et olen selle vastusega veidi hiljaks jäänud, kuid - ma tegelen ka mootori valmistamisega. Lähtekood on Pythonis (mida on üsna lihtne lugeda, isegi kui te seda ei tea) ja see on saadaval siin, kui soovite seda lugeda. Praegu aktiivsete heuristikute loetelu (postitamise ajal):

  • paremini arenenud (vastasküljele lähemal) tükid on paremad
  • reklaamile lähemal olevad etturid on hea
  • Kuningad skooritakse eraldi vastavalt sellele, millises faasis mäng on (algus, keskmäng, lõppmäng)
  • Kui mängijal on mõlemad piiskopid, saab see boonust
  • Kui mängija on lossi saanud, saate boonust
  • Üksikud etturid (etturid, mille ümber pole midagi) pole head
  • Kahekordsed etturid (kaks etturit samas failis, ilma et ) pole head
  • Kõigi 8 etturi omamine pole hädavajalik ja seda karistatakse (nad ajavad lauda segamini ja takistavad)
  • Heitke pilk sellele suurepärane hindamisfunktsioon, mida kasutatakse ka
  • Piiskopid, kellel on piiskopiga samal värviväljal rohkem ettureid, saavad karistuse (rahvarohketes olukordades pole nad nii head)
  • Pole veel rakendatud, kuid plaanitud: rüütlid saavad rahvarohkemates olukordades boonust

Ühes neist punkte, mainisin mängu 'faasi' (nt. avamine, keskmäng, lõppmäng) ja kui soovite selle oma mootorisse lisada, satute tõenäoliselt sama probleemiga nagu mina: neid ei eraldata selget joont. Minu funktsioon, mis otsustab, millises faasis mäng on, kasutab mõnda asja:

  • Materjali kogus laual (niipea kui mõni tükk tapetakse, tähistab see mängu avana mitte)
  • Käikude arv (vähem kui 6 täisliigutust on avanemine, olenemata sellest)
  • kuningannade liikumine (kui mõlemat kuningannat on liigutatud, märkige mäng keskmänguks)

See vastus võis olla pikk, hiline ja teemaväline, kuid ma loodan, et sellest oli igal juhul abi.

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

Lisades @Eve Freemani vastuse, soovitaksin uurida, kuidas hindab antud positsiooni maailma parim arvutimootor Stockfish. Kuna lähtekood on avatud, saate seda teha tasuta. Arvan, et otsitava hindamisfunktsiooniga fail on see.

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

Üllatuslikult selgub, et Minimaxi mootor töötab suhteliselt hästi, kui hindamisfunktsioon on juhuslik ; seda tuntakse Beale'i efektina ja see tuleneb põhimõttest, et positsioonid, mis annavad teile rohkem võimalusi ja vastane vähem võimalusi, on üldiselt soodsad. Üks mõistlik viis juhuslike hinnangute järjepidevaks ja tõhusaks genereerimiseks on positsiooni jaoks Zobristi räsi genereerimine (kasutades mängu alguses juhuslikult valitud koefitsiente) ja tuletades juhusliku hinnangu otse räsist.

At skaala vastupidises otsas hindavad AlphaZero ja Leela igat otsitud positsiooni äärmiselt keerukalt, kasutades selleks suurt närvivõrku . Inimlikult on ebapraktiline kirjeldada, milliseid funktsioone see võrk tõhusalt rakendab, kuid vaieldamatult tõhusam kui Stockfishi hindamisfunktsioon. AlphaZero uurimistöö osutab, et see lähenemisviis sobib kõige paremini Monte-Carlo puuotsingu, mitte Minimaxiga.

Kui soovite seevastu välja töötada analüüsimootori , inimmängijad või kommentaatorid mõistavad positsiooni nüansse, võib-olla tasub rakendada tavapärast hindamisfunktsiooni, kasutades väljakujunenud materiaalseid väärtusi ja positsiooniteooriat . Hea näite toob Ed Schröderi Mässaja sees , dokumenteerides mitmetes Mephisto malearvutites kasutatava hästi hinnatud mootori peamised disainifunktsioonid. Hindamisfunktsiooni iga elemendi suhtelise tähtsuse kindlakstegemiseks võiksite kasutada teatud määral masinõpet ning need elemendid ka GUI-s esitamiseks eraldi välja tuua.

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

Ma arvan, et maleprogrammeerijad ei kipu hindamisfunktsioonide kujundamisel tuginema tugevate maletajate teadmistele, vaid proovivad selle asemel erinevaid elemente ja katsetavad neid siis mängudes teiste mootoritega ning otsustavad, mida alles jätta. Larry Kaufman räägib üsna vähe oma seisukohtadest inimese arusaama kohta, kuid tundub, et nii Rajlich kui ka Dailey olid väga tulemustele orienteeritud ega võtnud Kaufmani ideede hulgimüüki üle.

Üks minu jaoks huvitav artikkel oli Zach Wegner võrdles Rybka ja Fruit hindamisfunktsioone. Üks valdkondi, kus Rybka võis olla samm edasi, oli materjalide tasakaaluhäirete tabelite lisamine konkreetsete tükkide kombinatsioonide põhjal. Ka Kaufman kirjutas selle kohta artikli.

http://www.top-5000.nl/ZW_Rybka_Fruit.pdf http://danheisman.home.comcast .net / ~ danheisman / artiklid / materjalimaterjalide tasakaalustatuse.htm hindamine

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

See link on parim lähtepunkt IMHO. Ma kasutan seda omaenda maleprogrammi & lähtepunktina, pidades seda ka lihtsasti mõistetavaks ja kasulikuks.

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

Kas saaksite lingi sisu lühidalt laiendada?
Wikispace'i sait on nüüdseks kadunud. Parandatud link selle uuele kodule: https://www.chessprogramming.org/Simplified_Evaluation_Function
#7
  0
jaxter
2016-10-21 21:20:08 UTC
view on stackexchange narkive permalink

Lühidalt öeldes on malemootori parameetrite häälestamisel tavapärane lähenemisviis:

  1. parameetrite määratlemine
  2. andke parameetritele nominaalsed (alg) väärtused
  3. Käivitage mootor, et näha, kuidas see töötab.
  4. Häälestage parameetri väärtused, et proovida selle toimivust parandada.

Seejärel korrake 3. ja 4. sammu, kuni olete jõudsin oma eesmärgi saavutamiseni.

Tavaline lähenemisviis on selleks laboratooriumi rajamine, kus mootoriturniiridel seisavad mootorid silmitsi. Kasutatakse mitut mängu, milles mootor mängib mõlemat värvi. Peamised huvitavad turniirid hõlmavad parameetri väärtusega A vastava mootori töötamist sama mootoriga, mille parameetri väärtus on B.

Nagu võite arvata, sõltuvad selle lähenemisviisi tulemused tugevalt:

  • valitud parameetrid
  • kuidas parameetreid täpsustatakse
  • kuidas parameetrite väärtusi kogu testimise ajal muudetakse
  • kuidas mootoreid töötatakse ( piiratud kihisügavus, piiratud aeg, tundlikkus jne)

See lähenemine kulutab ka palju aega.

Uuem ( ja uuendusliku lähenemisviisi) töötasid teadlased 2010. aastal välja, kasutades geneetilise algoritmi tehnikaid, et a) parameetrid täpsustada ja b) parameetrite väärtused häälestada. Uurijad töötasid kõigepealt mootori koos algse, nominaalse parameetriväärtuste komplektiga suurmeistrimängude komplekti vastu, et näha, kas see suudab tõhusalt valida "parima käigu". "Parim käik" määratleti kui suurmeistri tehtud käik *. Kõikjal, kus seda ei õnnestunud, registreeriti. Seejärel prooviti veel ühte parameetri väärtuste komplekti ja määrati suhteline jõudlus võrreldes eelmise jooksuga.

Seejärel prooviti programmilist lähenemist parameetriväärtuste kombineerimiseks , kasutades geneetilise algoritmi "kõige paremate" ellujäämise põhimõtet. Siin tähendab "kõige sobivam" seda, mis genereerib väljundi, mis sobib kõige paremini ideaaliga. (See on juhtumisi ka sõnamäng regressiooni "vähim ruutude sobivus" statistilisel tehnikal, seda meetodit kasutatakse lähenduse kvaliteedi hindamiseks.)

Alles pärast seda, kui on leitud mootori parameetrid, mis võivad jäljendada GM algab suhteliselt hästi, kui mootorite turniiri tegelik etapp algab. Selles etapis seatakse erinevad parameetrite väärtuste komplektid taas üksteise vastu, seekord otse . Mootori järjest paremate põlvkondade genereerimiseks kasutatakse geneetiliste algoritmide täiustamismeetodeid.

Selles uurimisprojektis kasutati 36 parameetrit, sealhulgas kõigi detailide materiaalsed väärtused ja paljud tavalisemad strateegilised hindamised kriteeriumid, nagu tagurlikud etturid, nõrgad ruudud, piiskopipaar jne. Kuid teadlased lisasid mõned uued parameetrid, näiteks "kuningasurve", "liikuvuse" väärtused igat liiki tükile, haakisid kuningaga külgneva faili peale, pooleldi avatud faili külge, aasid ründasid kuningat a - / b- / g- / h-fail, läbitud etturi ja kaitsva kuninga eraldamine ja palju muud.

Kahjuks ei täpsusta teadlased, kuidas nad selle parameetrite komplektiga välja tulid ja milliseid alternatiivseid parameetreid nad võivad olla testinud ja tagasi lükanud. Mõistlik oleks eeldada, et nad alustasid palju suurema komplektiga ja määrasid (katse-eksituse meetodil), millistel neist oli jõudlusele kõige suurem mõju ja millistel neist oli tähtsusetu või tuletisjõud ning nii võiks need ära visata.

Kui tundub, et see võib olla kasulik, leiate uuringu siit .

* Hoiatus teadlaste kasutatud lähenemisviisi etapist on korras. John Nunn valis oma sissejuhatuses Mõista malet liikuma liikudes oma teemade illustreerimiseks "... kõvasti võideldud mänge tugevate suurmeistrite vahel ...". Seejärel lisab ta:

Lugejad võivad olla üsna üllatunud, kui näevad selle raamatu mänge kaunistavate küsimärkide arvu. Kindlasti võiksite mõelda, et ainult 30 mängu valimiseks oleks pidanud olema helimänge lihtne leida. Siiski võin teile kinnitada, et see ei olnud nii. ... on võimalik leida viga praktiliselt igas keerulises ja kõvasti võideldud mängus ... Ma pole kunagi tundnud, et minu mäng oleks peaaegu täpne, nii et ma isiklikult ei pea neid paljastusi murelikuks. Mõnel võib aga olla raske tunnistada, et malemäng, mida inimesed mängivad, on vähem täpne, kui seni arvati. mootori parameetrid, nõudes neilt suurmeistri käikude jäljendamist, võivad olla valed kuna inimeste mäng on vigane . Tegelikult on hästi tõestatud, et mootorid töötavad juba paremini kui inimesed .

Seetõttu oleks algsete parameetrite seadmisel parem läheneda uue mootori sobitamisele parem olemasolev mootor .

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

Seal on kena veebisait aadressil:

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

See annab teile sissejuhatuse, kuidas Stockfish toimib.

enter image description here



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...