Tuning


Questa pagina ha una gerarchia - Pagina madre:Programmazione

Home Forum Programmazione Tuning

Questo argomento contiene 19 risposte, ha 6 partecipanti, ed è stato aggiornato da  sasachess 1 anno, 2 mesi fa.

Stai vedendo 15 articoli - dal 1 a 15 (di 20 totali)
  • Autore
    Articoli
  • #7877

    Nell’ultimo periodo sto incontrando diversi problemi nello sviluppare l’engine. Sebbene il tuning con il metodo texel porti a buoni risultati, stò valutando la possibilità di provare altre strade per capire se si può riuscire a ricavare un tuning ancora migliore.
    Scartando il metodo di tuning Deep Thought che sembra avere molte problematiche, che altri metodi si potrebbero provare?
    Che esperienza avete con il tuning?
    Stavo considerando anche il tuning di stockfish? Lo avete mai provato?

    #7897

    Con Soldat ho usato il tuning di Stockfish per alcune variabili delle piu’ semplici.
    Il problema che ho trovato era il numero di partite per avere un risultato decente; era veramente enorme.
    Per variabili poco significative sul risultato della partita trovare il tuning era veramente difficile.
    C’e’ una vecchia discussione sul sito che se ne parlava.

    Saluti , Marco.

    #7983

    marco belli
    Membro

    Con vajolet io ho usato il metodo di texel, più o meno modificato, e ho ottenuto ottimi risultati riepstto ad una versione con i valori messi a manina da me all’inizio.

    più che guardo i valori e più che alcuni mi sembrano strani, ma si comporta bene quindi tanto strani probabilmente non sono 🙂

    #7992

    Anche a me ha funzionato, i valori sono sicuramente migliori di quanto si possano mettere a mano o tarare leggermente, il problema per me si è presentato quando ho inserito dell’altra conoscenza. Ho ottenuto un miglioramento dell’errore di valutazione ma non ho ottenuto un miglioramento nei test.

    Riprendendo quanto detto da Marco Giusfredi, è vero che alcune variabili sono meno sensibili al tuning, bisognerebbe trovare la maniera di raggruppare insieme alcuni parametri (l’esempio più semplice è con le tabelle pezzi unificando in un unico bonus il valore di più case) e tarare l’insieme dei parametri.

    Quello che incide di più sulla forza dell’engine sono i bonus della protezione del re, mobilità, e pedoni passati.
    Quelli andrebbero tarati usando un time control di 1:00 almeno IMHO, per avere risultati ottimali.

    #7996

    marco belli
    Membro

    io avevo un idea che però per svogliatezza e quantità di tempo necessaria non sono mai riuscito a implementare, l’idea è più o meno la seguente:
    1-scegliere un alto numero di posizioni
    2-per ogni posizione identificare la mossa migliore**
    3-a quel punto utilizzare l’algoritmo di texel o simili per massimizzare il numero di mosse migliori da usare.

    ** questo è il punto controverso, la mia idea che non ho mai approfondito più di tanto è vedere se sia possibile fare dei tornei fra engine più o meno equilibrati e guardare i risultati dal punto di vista dei bianchi, per esempio se su 2000 partite ci sono 350 vittorie bianche 310 vittorie nere e 1340 pareggi si può dire che la posizione è leggermente vantaggiosa per il bianco.
    il problema è che costruire un database di posizioni con le loro valutazioni è probabilmente un lavoro immane che un singolo individuo con un solo computer non può portare a termine.

    altra possibilità potrebbe essere sempre seguendo la stessa idea dei tornei, definire per ogni posizione una lista di mosse “buone” con i loro score e tentare di massimizzare il numero di mosse giuste scelte dall’engine.

    #8321

    In settimana, per cercare di ottenere un tuning più preciso, ho provato a tarare alcuni parametri con il metodo stockfish. In circa 5-6 giorni ho lanciato 4000 partite da 1:00 per ognuno dei 4 bonus relativi agli scacchi.
    Il risultato è lo stesso del self testing che usa stockfish, ossia c’è un miglioramento effettivo tra la versione vecchia e quella con i parametri tarati con questo metodo, se le si confronta tra di loro, ma confrontando le due versioni in un gauntlet con più motori il risultato è che la versione nuova è leggermente inferiore.
    Potrebbe essere che il metodo migliori anche i risultati nel gauntlet ma non è sempre così.

    #8323
    Lissandrello Luca
    Lissandrello Luca
    Moderatore

    Ciao Fabio, tanto per curiosità: come valuti la coppia degli alfieri?
    Ti chiedo questo perché mi è rimasta impressa una partita persa contro madeleine (la puoi trovare sul tab delle partite della 1.0 da http://www.g-sei.org/pedone/ è quella del 2015.01.17 dove pedone ha il nero)… aspetta che ti metto il pgn, per capirci meglio… 😛

    Come vedi, nel finale, pedone attribuisce anche +2.33 alla 70°) dove ha la coppia degli alfieri, ma la posizione è in realtà chiusa (e ovviamente un suo alfiere è pure cattivo). Poi ovviamente crolla, ma forse pesi troppo la coppia? O penalizzi poco l’alfiere cattivo?

    Bye!

    LL

    #8324

    Grazie Luca, mi ero concentrato principalmente sul baco della gestione del tempo.
    Ho controllato ora, e quella valutazione è data principalmente da:
    50 cp bonus coppia degli alfieri
    120 cp di valore statico degli alfieri nel finale rispetto ai cavalli
    68 cp per il pedone in 6a traversa

    Il tuning della versione 1.0 è sempre stato effettuato con il metodo Texel, rispetto alla versione 0.5 ho usato un altro database di posizioni e ho usato per ogni tabella pezzi solo 4-5 bonus invece che tarare ogni singola casa.

    #8328
    stegemma
    stegemma
    Moderatore

    Ho visto la partita solo fino alla mossa 77. Qui il nero non ha mai veramente avuto la coppia degli alfieri, perché i suoi pedoni sulle case nere gli hanno bloccato il gioco di entrambi. Alla 75esima ha poi cambiato l’unico alfiere in grado di attaccare il pedone g2, cardine della difesa del bianco. Un “umano” avrebbe potuto pensare, al momento giusto, alla manovra: …g4; hxg4, Axg4!; fxA, f3! con conseguente promozione del pedone g3. Un engine non la vede perché servono diverse mosse per prepararla e si deve aspettare che i cavalli bianchi siano posizionati opportunamente. Preparandola, quando entra nell’orizzonte dell’engine può essere troppo tardi per difendersi dal sacrificio di alfiere.

    Insomma, non sempre la coppia degli alfieri è un vantaggio.

    #8336

    Assegnare il bonus per la coppia di alfieri da un vantaggio al motore, nella maggiorparte delle posizioni lo è. In questo caso ci sono alcuni bonus che andrebbero ritoccati, bisogna vedere in che maniera cambiano gli equilibri (o squilibri) del motore.

    #8354
    Lissandrello Luca
    Lissandrello Luca
    Moderatore

    Ho trovato interessante un piccolo articolo di Kaufman in merito agli squilibri di materiale. Parla anche della coppia di alfieri e consiglia di attribuire 50 centipawn o più in base alla presenza di pezzi che possano catturarne uno).
    Il link è http://home.comcast.net/~danheisman/Articles/evaluation_of_material_imbalance.htm

    Bye!

    LL

    #8370

    Ho ripreso in mano il tuning con il mio metodo simil texel e quello che vedo è che di per sè il metodo è anche buono, quello che non funziona benissimo è l’algoritmo di ottimizzazione. Per ridurre l’errore prendo un parametro alla volta e provo prima ad abbassarlo e se non migliora l’errore provo ad alzarlo, procedo così per tutti i parametri ed itero più volte. Quello che accade sempre è che ad un certo punto l’errore non si riesce più a ridurlo ma i parametri non sono ben equilibrati.
    Conoscete qualche metodo di ottimizzazione che possa funzionare veramente bene in automatico o l’unica soluzione in questo caso è provare a spostare manualmente i parametri cercando sempre di minimizzare l’errore?

    #8371

    marco belli
    Membro

    io ho notato che il metodo di tuning di texel ha migliorato di molto la forza di vajolet, ma sono adesso arrivato in un punto di massimo relativo e riguardando i valori ottimizzati alcuni sembrano non avere proprio senso.

    #9200

    Ho appena scritto due righe sul metodo di tuning che stò usando di recente e sui relativi risultati.

    https://sites.google.com/site/pedonechess/programming-articles/tdlearning

    #9201
    stegemma
    stegemma
    Moderatore

    Come hai notato su TalkChess, il sistema è simile a quello genetico di cui sto discutendo con Ferdinando Mosca ma ovviamente il metodo è sostanzialmente diverso.

    A parte questo, non conoscevo il tuo sito e ci ho girato un po’. Hai notato che il sistema QuadBitBoard è di fatto una rappresentazione a 4 bit dei singoli pezzi? 6 tipi di pezzo per 2 colori e le case vuote richiedono 4 bit; se prendi il primo bit e lo raggruppi, hai una bitboard a 64 bit, prendi il secondo idem e così via: sovrapponendoli hai una QuadBitBoard. Nel tuo caso, i 4 bit sono organizzati così:

    
    DCBA
    |||\_ SideToMove; // pieces of the side to move
    ||\__ QB0         // pawns, bishops and queens
    |\___ QB1         // knights, bishops and kings
    \____ QB2         // rooks, queens and kings
    
    ma potresti vederlo anche come:
    
    DCBA
    ||||
    000x empty square
    001x pawns
    010x knights
    011x bishops
    100x rooks
    101x queens
    110x kings
    111x (free)
    ...\ side to move
    

    Non cambia nulla ma è più comprensibile la logica che hai seguito.

Stai vedendo 15 articoli - dal 1 a 15 (di 20 totali)

Devi essere loggato per rispondere a questa discussione.

© 2017 G 6 Tutti i diritti riservati - Buon divertimento!

By continuing to use the site, you agree to the use of cookies. more information

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi