Changes

Jump to: navigation, search

Winter

8,772 bytes added, 23:44, 18 June 2018
Created page with "'''Home * Engines * Winter''' FILE:ZurichInWinter.jpg|border|right|thumb|320px|link=http://se.ethz.ch/~meyer/images/zurich/lake.jpg|[https://en.wikipedia...."
'''[[Main Page|Home]] * [[Engines]] * Winter'''

[[FILE:ZurichInWinter.jpg|border|right|thumb|320px|link=http://se.ethz.ch/~meyer/images/zurich/lake.jpg|[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> ]]

'''Winter''',<br/>
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>.

=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]]==
[[FILE:Normal Distribution PDF.svg|border|right|320px|thumb|A set of Gaussians]]
* 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>
** 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
: {{#evu:https://www.youtube.com/watch?v=8P0wdTKMDyo|alignment=left|valignment=top}}

=References=
<references />

'''[[Engines|Up one Level]]'''

Navigation menu