Learning

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
gleperlier
Posts: 1033
Joined: Sat Feb 04, 2012 10:03 pm

Learning

Post by gleperlier »

Hello,

Some engines have Books, Positions and perhaps even engine learning functions ?

Some people just don't care about learning, but others love to train their engines.

What do Programmers think about learning ? I guess their are many ways to implement it.

Some people like to find Eval or Search parameters, what about if the engines was trying to find by itself the best parameters ?

Gab
ZirconiumX
Posts: 1334
Joined: Sun Jul 17, 2011 11:14 am

Re: Learning

Post by ZirconiumX »

That was the technique that Deep Blue used - and look what happened to it! :P

I think that that would be possible - but probably not worth the effort.

Matthew:out
Some believe in the almighty dollar.

I believe in the almighty printf statement.
User avatar
gleperlier
Posts: 1033
Joined: Sat Feb 04, 2012 10:03 pm

Re: Learning

Post by gleperlier »

ZirconiumX wrote:That was the technique that Deep Blue used - and look what happened to it! :P

I think that that would be possible - but probably not worth the effort.

Matthew:out
Your answer is about only my last questions ? :wink:

Gab
jdart
Posts: 4366
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Learning

Post by jdart »

Following is a description of Arasan's learning support (from the programr.txt file I distribute with the source):
Arasan has two forms of book learning.

One form is called "score learning". If enabled, this feature will
look at the score several moves after Arasan has gone "out of book".
If it is significantly high and rising, or low and falling, then
Arasan will update the book with a learning value (it also backs up to
previous book nodes that lead to this position and updates those as
well. How much adjustment is done depends on the number of book
alternatives available).

With score learning, Arasan will tend to play moves that lead to a
position either more often (if the score is high) or less often (if
the score is low). This facility is somewhat crude at present but it
will at least steer the program away from obviously "busted" book
lines.

Crafty uses a form of learning similar to Arasan's score learning.

Arasan also has "result learning". When it wins or loses a game,
or manages to draw against a higher-rated opponent, it will update
a counter in the book file. Then it looks to see if there are
alternative book moves at the same position. If not, it backs up
one move and also updates the counter at that position, and so
on.

Book moves that repeatedly lead to losses will gradually be played
less often, while those that win will be played more often.

Arasan also has positional learning (a.k.a "permanent brain"). It is
basically a persisent hashtable. If a search returns an unexpectedly
high or low score, the position and its score are stored in a text file
called arasan.lrn, which is located in the same directory as the
Arasan executable. When the next game is started, stored positions
from this file are read into memory and stored in the hash table,
enabling the program to detect danger or opportunity sooner
than it did previously.

Arasan learning does not work in UCI mode at present, for several
reasons. For example, UCI does not send the program the game result,
so result learning is made difficult.
Arasan starts its book learning from a pretty big pre-built opening book, but some engines have started from an empty book and built up their opening repertoire entirely from learning from their opponents. Andrew Tridgell's KnightCap program did this. I think Rookie by Marcel van Kervinck does this too. In addition Marcel told me Rookie can select opening lines based on what has worked well in the past against a specific opponent, which is a form of learning I don't have so far.
User avatar
gleperlier
Posts: 1033
Joined: Sat Feb 04, 2012 10:03 pm

Re: Learning

Post by gleperlier »

Thanks Jon ! Sounds great !

Gab