Winter
Winter,
an UCI compliant open source chess engine by Jonathan Rosenthal, written in C++, released on January 08, 2018 under the terms of GPL Version 3. Winter is inspired by machine learning techniques, as applied in move ordering and in particular in evaluation, and heavily relies on C++ templates but not on any library aside from STL as it comes with its own implementations for statistics [2] and linear algebra [3]. 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 [4]. It started to play on-line at HGM's Online Engine Blitz Tourneys in April 2017 [5].
Selected Features
Board Representation
Search
- Lazy SMP (Winter 0.3)
- Fail-Hard Iterative Deepening
- Alpha-Beta Principal Variation Search
- Transposition Table
- Move Ordering is based on the linear part of a Logistic Regression classifier aka cluster analysis
- The classifier is trained via temporal difference learning to predict whether a move will return beta
- Classifier considers TT move, killers, move type, from square, target square, capture target, SEE, target square of last move, check and changes between forcing and unforcing moves (a capture is more likely after another capture)
- Countermove Heuristic (Winter 0.3)
- Selectivity
Evaluation
- Non standard approach relied on a mixture model [7], and since Winter 0.3 on Fuzzy C-Means, a more direct generalization of a tapered eval with disjoint phases aka clusters [8] [9]
- Assumes positions encountered in search come from some set of k-means clusters [10]
- Model is trained via EM algorithm [11] [12] either on database games or positions sampled from search
- For each cluster, a separate evaluation function is trained. When the evaluation function is called the relative probability a position stems from each cluster is estimated, the evaluation functions are computed and the final score is returned as the weighted average - a generalization of tapered eval with game phases [13]
- Parameter weights are trained via a mixture of reinforcement (temporal difference) learning and supervised learning
- Minimizing the cross entropy loss of a Logistic Regression model for each phase
- Training converges fast due to linear model at the heart
Misc
- Perft
- Print pretty Unicode chess boards
Forum Posts
- Re: Tapered Eval between 4 phases by Jonathan Rosenthal, CCC, October 16, 2017 » Tapered Eval
- Winter Released by Jonathan Rosenthal, CCC, January 08, 2018
- Re: Winter Released by Jonathan Rosenthal, CCC, January 09, 2018
- Windows version released by Jonathan Rosenthal, CCC, January 23, 2018
- Winter 0.2 Release Overview and Select Games by Jonathan Rosenthal, CCC, Auguat 20, 2018
- Winter 0.3 Release Overview and Select Games by Jonathan Rosenthal, CCC, December 16, 2018
External Links
Chess Engine
Misc
- Winter from Wikipedia
- Winter - Wiktionary
- winter - Wiktionary
- Winter (disambiguation) from Wikipedia
- Summer and Winter Schools | ETH Zurich
- Wintel from Wikipedia
- AI winter from Wikipedia
- Winter (surname) from Wikipedia
- Edward Winter (chess historian) from Wikipedia
- Johnny Winter - Winter Ballade, ina.fr 1970, YouTube Video
- feat. Tommy Shannon on bass and Uncle John Turner on drums
- Johnny Winter - Second Winter (1969). YouTube Video
- feat. Edgar Winter, Tommy Shannon, Uncle John Turner, Dennis Collins
References
- ↑ Image clipped from Winter views from our floor by Bertrand Meyer, ETH Zurich, Gray moment with Zentralbibliothek and Predigerkirche in the foreground, Lake Zurich, Grossmünster, Fraumünster and St. Peter behind, in the background foothill of Uetliberg, from Bertrand Meyer's ETH home page
- ↑ Winter/statistics.h at master · rosenthj/Winter · GitHub
- ↑ Winter/linear_algebra.h at master · rosenthj/Winter · GitHub
- ↑ Winter Released by Jonathan Rosenthal, CCC, January 08, 2018
- ↑ Re: On-line engine blitz tourney April by Harm Geert Muller, CCC, April 22, 2017
- ↑ based on Winter Released by Jonathan Rosenthal, CCC, January 08, 2018
- ↑ Re: Winter Released by Jonathan Rosenthal, CCC, January 09, 2018
- ↑ Winter 0.3 Release Overview and Select Games by Jonathan Rosenthal, CCC, December 16, 2018
- ↑ James C. Bezdek, Robert Ehrlich, William Full (1984). FCM: The fuzzy c-means clustering algorithm. Computers & Geosciences, Vol. 10, Nos. 2-3, pdf
- ↑ K Means by Chris Piech
- ↑ The EM Algorithm for Gaussian Mixtures - Probabilistic Learning: Theory and Algorithms, CS 274A (pdf) University of California, Irvine
- ↑ Mixture Models & EM algorithm Lecture 21 (pdf) by David Sontag, New York University
- ↑ Re: Tapered Eval between 4 phases by Jonathan Rosenthal, CCC, October 16, 2017