Older Version
Newer Version
GerdIsenberg
Jan 23, 2018
**[[Home]] * [[Engines]] * Winter** || [[image:ZurichInWinter.jpg link="http://se.ethz.ch/~meyer/images/zurich/lake.jpg"]] ||~ || **Winter**, an [[UCI]] compliant [[Open Source Engines|open source chess engine]] by [[Jonathan Rosenthal]], written in [[Cpp|C++]], released on January 08, 2018 under the terms of [[Free Software Foundation#GPL|GPL Version 3]]. Winter is inspired by [[Learning|machine learning]] techniques, as applied in [[Move Ordering|move ordering]] and in particular in [[Evaluation|evaluation]], and heavily relies on [[https://en.wikipedia.org/wiki/Template_(C%2B%2B)|C++ templates]] but not on any library aside from [[https://en.wikipedia.org/wiki/Standard_Template_Library|STL]] as it comes with its own implementations for [[https://en.wikipedia.org/wiki/Statistics|statistics]] <ref>[[https://github.com/rosenthj/Winter/blob/master/src/learning/statistics.h|Winter/statistics.h at master · rosenthj/Winter · GitHub]]</ref> and [[https://en.wikipedia.org/wiki/Linear_algebra|linear algebra]] <ref>[[https://github.com/rosenthj/Winter/blob/master/src/learning/linear_algebra.h|Winter/linear_algebra.h at master · rosenthj/Winter · GitHub]]</ref>. Winter started its life in 2016 as a group project at [[ETH Zurich]] in a course on parallel computing along with Jonas Kuratli and Jonathan Maurer - the current release with Jonathan Rosenthal as sole author has removed the parallel portion of the code <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=66266|Winter Released]] by [[Jonathan Rosenthal]], [[CCC]], January 08, 2018</ref>. It started to play on-line at [[Harm Geert Muller|HGM's]] [[Online Engine Blitz Tourneys]] in April 2017 <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=63777&start=9|Re: On-line engine blitz tourney April]] by [[Harm Geert Muller]], [[CCC]], April 22, 2017</ref>. || || [[https://en.wikipedia.org/wiki/Winter|Winter]] in [[https://en.wikipedia.org/wiki/Z%C3%BCrich|Zurich]], [[ETH Zurich]] view <ref>Image clipped from [[http://se.ethz.ch/~meyer/|Winter views from our floor]] by [[Mathematician#BMeyer|Bertrand Meyer]], [[ETH Zurich]], [[http://se.ethz.ch/~meyer/images/zurich/lake.jpg|Gray moment]] with [[https://en.wikipedia.org/wiki/Zentralbibliothek_Z%C3%BCrich|Zentralbibliothek]] and [[https://en.wikipedia.org/wiki/Predigerkirche_Z%C3%BCrich|Predigerkirche]] in the foreground, [[https://en.wikipedia.org/wiki/Lake_Zurich|Lake Zurich]], [[https://en.wikipedia.org/wiki/Grossm%C3%BCnster|Grossmünster]], [[https://en.wikipedia.org/wiki/Fraum%C3%BCnster|Fraumünster]] and [[https://en.wikipedia.org/wiki/St._Peter,_Z%C3%BCrich|St. Peter]] behind, in the background foothill of [[https://en.wikipedia.org/wiki/Uetliberg|Uetliberg]], from [[http://se.ethz.ch/~meyer/|Bertrand Meyer's ETH home page]]</ref> ||~ ||^ || [[toc]] =Selected Features= <ref>based on [[http://www.talkchess.com/forum/viewtopic.php?t=66266|Winter Released]] by [[Jonathan Rosenthal]], [[CCC]], January 08, 2018</ref> ==[[Board Representation]]== * [[Bitboards]] * [[8x8 Board]] * [[Magic Bitboards#Fancy|Fancy Magic Bitboards]] > [[BMI2#PEXTBitboards|BMI2 - PEXT Bitboards]] ==[[Search]]== * [[Fail-Hard]] [[Iterative Deepening]] * [[Alpha-Beta]] [[Principal Variation Search]] * [[Transposition Table]] * [[Move Ordering]] is based on the linear part of a [[Automated Tuning#LogisticRegression|Logistic Regression]] [[https://en.wikipedia.org/wiki/Statistical_classification|classifier]] aka [[https://en.wikipedia.org/wiki/Cluster_analysis|cluster analysis]] ** The classifier is trained via [[Temporal Difference Learning|temporal difference learning]] to predict whether a [[Moves|move]] will return [[Beta|beta]] ** Classifier considers [[Hash Move|TT move]], [[Killer Move|killers]], [[Moves#Type|move type]], [[Origin Square|from square]], [[Target Square|target square]], [[Captures|capture target]], [[Static Exchange Evaluation|SEE]], target square of last move, [[Check|check]] and changes between forcing and unforcing moves (a capture is more likely after another capture) * [[Selectivity]] ** [[Null Move Reductions]] ** [[Reverse Futility Pruning|Static Null Move Pruning]] ** [[Late Move Reductions]] ** [[Futility Pruning]] ** [[Quiescence Search]] ** [[Static Exchange Evaluation]] ==[[Evaluation]]== * Non standard approach relies on a [[https://en.wikipedia.org/wiki/Mixture_model|mixture model]] <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=66266&start=7|Re: Winter Released]] by [[Jonathan Rosenthal]], [[CCC]], January 09, 2018</ref> ** Assumes [[Chess Position|positions]] encountered in search come from some set of k [[https://en.wikipedia.org/wiki/Gaussian_function|Gaussians]] <ref>[[https://en.wikipedia.org/wiki/K-means_clustering|k-means clustering from Wikipedia]]</ref> <ref>[[http://stanford.edu/~cpiech/cs221/handouts/kmeans.html|K Means]] by [[https://web.stanford.edu/~cpiech/bio/index.html|Chris Piech]]</ref> [[image:320px-Normal_Distribution_PDF.svg.png link="https://en.wikipedia.org/wiki/Gaussian_function#/media/File:Normal_Distribution_PDF.svg" align="right" caption="A set of Gaussians"]] ** Mixture model is trained via [[https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm|EM algorithm]] <ref>[[http://www.ics.uci.edu/~smyth/courses/cs274/notes/EMnotes.pdf|The EM Algorithm for Gaussian Mixtures - Probabilistic Learning: Theory and Algorithms, CS 274A]] (pdf) [[https://en.wikipedia.org/wiki/University_of_California,_Irvine|University of California, Irvine]]</ref> <ref>[[http://people.csail.mit.edu/dsontag/courses/ml12/slides/lecture21.pdf|Mixture Models & EM algorithm Lecture 21]] (pdf) by [[https://people.csail.mit.edu/dsontag/|David Sontag]], [[https://en.wikipedia.org/wiki/New_York_University|New York University]]</ref> either on [[Databases|database games]] or positions sampled from search ** For each Gaussian a separate evaluation function is trained. When the evaluation function is called the relative probability a position stems from each Gaussian is estimated, the evaluation functions are computed and the final score is returned as the weighted average - a generalization of [[Tapered Eval|tapered eval]] with [[Game Phases|game phases]] <ref>[[http://www.talkchess.com/forum/viewtopic.php?t=65466&start=4|Re: Tapered Eval between 4 phases]] by [[Jonathan Rosenthal]], [[CCC]], October 16, 2017</ref> * Parameter weights are trained via a mixture of [[Reinforcement Learning|reinforcement ]] ([[Temporal Difference Learning|temporal difference]]) learning and [[Supervised Learning|supervised learning]] ** Minimizing the [[https://en.wikipedia.org/wiki/Cross_entropy|cross entropy]] loss of a [[Automated Tuning#LogisticRegression|Logistic Regression]] model for each of the k Gaussians ** Training converges fast due to [[https://en.wikipedia.org/wiki/Linear_model|linear model]] at the heart ==Misc== * [[Perft]] * Print pretty [[Pieces#Unicode|Unicode]] [[Chessboard|chess boards]] =Forum Posts= * [[http://www.talkchess.com/forum/viewtopic.php?t=65466&start=4|Re: Tapered Eval between 4 phases]] by [[Jonathan Rosenthal]], [[CCC]], October 16, 2017 » [[Tapered Eval]] * [[http://www.talkchess.com/forum/viewtopic.php?t=66266|Winter Released]] by [[Jonathan Rosenthal]], [[CCC]], January 08, 2018 > [[http://www.talkchess.com/forum/viewtopic.php?t=66266&start=7|Re: Winter Released]] by [[Jonathan Rosenthal]], [[CCC]], January 09, 2018 > [[http://www.talkchess.com/forum/viewtopic.php?t=66266&start=8|Windows version released]] by [[Jonathan Rosenthal]], [[CCC]], January 23, 2018 =External Links= ==Chess Engine== * [[https://github.com/rosenthj/Winter|GitHub - rosenthj/Winter: UCI Chess Engine]] ==Misc== * [[https://en.wikipedia.org/wiki/Winter|Winter from Wikipedia]] * [[https://en.wiktionary.org/wiki/Winter|Winter - Wiktionary]] * [[https://en.wiktionary.org/wiki/winter|winter - Wiktionary]] * [[https://en.wikipedia.org/wiki/Winter_(disambiguation)|Winter (disambiguation) from Wikipedia]] * [[https://www.ethz.ch/en/the-eth-zurich/sustainability/education/summer-and-winter-schools.html|Summer and Winter Schools]] | [[ETH Zurich]] * [[https://en.wikipedia.org/wiki/Wintel|Wintel from Wikipedia]] * [[https://en.wikipedia.org/wiki/AI_winter|AI winter from Wikipedia]] * [[https://en.wikipedia.org/wiki/Winter_(surname)|Winter (surname) from Wikipedia]] * [[https://en.wikipedia.org/wiki/Edward_Winter_%28chess_historian%29|Edward Winter (chess historian) from Wikipedia]] * [[Videos#JohnnyWinter|Johnny Winter]] - Winter Ballade, [[https://en.wikipedia.org/wiki/Institut_national_de_l%27audiovisuel|ina.fr]] 1970, [[https://en.wikipedia.org/wiki/YouTube|YouTube]] Video > feat. [[https://en.wikipedia.org/wiki/Tommy_Shannon|Tommy Shannon]] on bass and [[http://yeech.altervista.org/Band/winter_band_john_turner.html|Uncle John Turner]] on drums > [[media type="youtube" key="8P0wdTKMDyo"]] =References= <references /> =What links here?= [[include page="Winter" component="backlinks" limit="60"]] **[[Engines|Up one Level]]**