Difference between revisions of "RuyTune"

From Chessprogramming wiki
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
'''[[Main Page|Home]] * [[Automated Tuning]] * RuyTune'''
 
'''[[Main Page|Home]] * [[Automated Tuning]] * RuyTune'''
  
[[FILE:ruytunetanh.jpg|border|right|thumb|link=http://www.wolframalpha.com/input/?i=tanh(0.43s)+,+s%3D-10+to+10| RuyTune's [https://en.wikipedia.org/wiki/Hyperbolic_function hyperbolic tanh] based Sigmoid <ref>[http://www.wolframalpha.com/input/?i=tanh(0.43s)+,+s%3D-10+to+10 tanh(0.43s) , s=-10 to 10] pawnunit plot by [https://en.wikipedia.org/wiki/Wolfram_Alpha Wolfram Alpha]</ref> ]]  
+
[[FILE:ruytunetanh.jpg|border|right|thumb|link=http://www.wolframalpha.com/input/?i=tanh(0.43s)+,+s%3D-10+to+10| RuyTune's [https://en.wikipedia.org/wiki/Hyperbolic_function hyperbolic tangent] based Sigmoid <ref>[http://www.wolframalpha.com/input/?i=tanh(0.43s)+,+s%3D-10+to+10 tanh(0.43s) , s=-10 to 10] pawnunit plot by [https://en.wikipedia.org/wiki/Wolfram_Alpha Wolfram Alpha]</ref> ]]  
  
 
'''RuyTune''',<br/>
 
'''RuyTune''',<br/>
an open source framework for tuning [[Evaluation|evaluation function]] parameters, written by [[Álvaro Begué]] in [[Cpp|C++]], released on [https://en.wikipedia.org/wiki/Bitbucket Bitbucket]  <ref>[https://bitbucket.org/alonamaloh/ruy_tune alonamaloh / ruy_tune — Bitbucket]</ref> as introduced in November 2016 <ref>[http://www.talkchess.com/forum/viewtopic.php?t=62056 C++ code for tuning evaluation function parameters] by [[Álvaro Begué]], [[CCC]], November 10, 2016</ref>. RuyTune applies [[Automated Tuning#LogisticRegression|logistic regression]] using a [https://en.wikipedia.org/wiki/Limited-memory_BFGS limited-memory BFGS], a [https://en.wikipedia.org/wiki/Quasi-Newton_method quasi-Newton method] that approximates the [https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm Broyden–Fletcher–Goldfarb–Shanno] algorithm with limited amount of [[Memory|memory]]. It uses the ''libLBFGS'' library <ref>[http://www.chokkan.org/software/liblbfgs/ libLBFGS: L-BFGS library written in C]</ref> along with [https://en.wikipedia.org/wiki/Automatic_differentiation#Reverse_accumulation reverse-mode automatic differentiation] and requires that the evaluation function is converted to a [https://en.wikipedia.org/wiki/Template_(C%2B%2B)#Function_templates C++ template function] where the score type is a template parameter, and a database of quiescent positions with associated results <ref>[http://www.talkchess.com/forum/viewtopic.php?t=61861 A database for learning evaluation functions] by [[Álvaro Begué]], [[CCC]], October 28, 2016</ref>.
+
an open source framework for tuning [[Evaluation|evaluation function]] parameters, written by [[Álvaro Begué]] in [[Cpp|C++]], released on [https://en.wikipedia.org/wiki/Bitbucket Bitbucket]  <ref>[https://web.archive.org/web/20180820050927/https://bitbucket.org/alonamaloh/ruy_tune alonamaloh / ruy_tune — Bitbucket] ([https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine])</ref> as introduced in November 2016 <ref>[http://www.talkchess.com/forum/viewtopic.php?t=62056 C++ code for tuning evaluation function parameters] by [[Álvaro Begué]], [[CCC]], November 10, 2016</ref>. RuyTune applies [[Automated Tuning#LogisticRegression|logistic regression]] using a [https://en.wikipedia.org/wiki/Limited-memory_BFGS limited-memory BFGS], a [https://en.wikipedia.org/wiki/Quasi-Newton_method quasi-Newton method] that approximates the [https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm Broyden–Fletcher–Goldfarb–Shanno] algorithm with limited amount of [[Memory|memory]]. It uses the ''libLBFGS'' library <ref>[http://www.chokkan.org/software/liblbfgs/ libLBFGS: L-BFGS library written in C]</ref> along with [https://en.wikipedia.org/wiki/Automatic_differentiation#Reverse_accumulation reverse-mode automatic differentiation] and requires that the evaluation function is converted to a [https://en.wikipedia.org/wiki/Template_(C%2B%2B)#Function_templates C++ template function] where the score type is a template parameter, and a database of quiescent positions with associated results <ref>[http://www.talkchess.com/forum/viewtopic.php?t=61861 A database for learning evaluation functions] by [[Álvaro Begué]], [[CCC]], October 28, 2016</ref>.
  
 
=Method=
 
=Method=
Line 30: Line 30:
  
 
=External Links=
 
=External Links=
* [https://bitbucket.org/alonamaloh/ruy_tune alonamaloh / ruy_tune — Bitbucket]
+
* [https://web.archive.org/web/20180820050927/https://bitbucket.org/alonamaloh/ruy_tune alonamaloh / ruy_tune — Bitbucket] ([https://en.wikipedia.org/wiki/Wayback_Machine Wayback Machine])
  
 
=References=  
 
=References=  
 
<references />
 
<references />
 
'''[[Automated Tuning|Up one Level]]'''
 
'''[[Automated Tuning|Up one Level]]'''

Latest revision as of 09:39, 17 September 2020

Home * Automated Tuning * RuyTune

RuyTune's hyperbolic tangent based Sigmoid [1]

RuyTune,
an open source framework for tuning evaluation function parameters, written by Álvaro Begué in C++, released on Bitbucket [2] as introduced in November 2016 [3]. RuyTune applies logistic regression using a limited-memory BFGS, a quasi-Newton method that approximates the Broyden–Fletcher–Goldfarb–Shanno algorithm with limited amount of memory. It uses the libLBFGS library [4] along with reverse-mode automatic differentiation and requires that the evaluation function is converted to a C++ template function where the score type is a template parameter, and a database of quiescent positions with associated results [5].

Method

The function to minimize the mean squared error of the prediction is:

TexelTuneMathE.jpg

where:

  • N is the number of test positions.
  • Ri is the result of the game corresponding to position i; -1 for black win, 0 for draw and +1 for white win.
  • qi is corresponding to position i, the value returned by the chess engine evaluation function. (Computing the gradient on the QS is a waste of time - it is much faster to run the QS saving the PV and then compute the gradient using the evaluation function of the end-of-PV position - and not worry too much about the fact that tweaking the evaluation function could result in a different position being picked [6]).
  • Sigmoid is implemented by hyperbolic tangent to convert centipawn scores into an expected result in [-1,1].
Sigmoid(s) = tanh(0.0043s)

See also

Forum Posts

Re: Texel tuning method question by Álvaro Begué, CCC, June 07, 2017

External Links

References

Up one Level