How does Lc0 find moves?

Sort:
Avatar of Ty39wastakenlol

I’ve wondered this for awhile can someone tell me how Lc0 finds moves?

Avatar of madratter7

To understand this, you need to understand how a Monte Carlo search works instead of the far more common Alpha Beta search used by many chess programs such as Stockfish.

The wikipedia entry on Monte Carlo Search is a worthwhile read if you are truly interested. Essentially it tries to find the move most likely to result in a win, instead of the move that occurs with "best" play by both sides.

You can think of the difference at a very high level like this. Imagine a position where best play results in a slow but pretty easy to execute loss by the one player (say white). But there may also exist a move in that position that while not quite as good if both players actually select best moves, results in complicating the position and gives white significant practical chances.

AlphaBeta would select the slow death move for white. Monte Carlo would select the move that complicates the position and gives white a practical chance.

Most human players play using something more akin to the Monte Carlo search. For example, if there is a simple way to win, they will use it, even if there is a theoretical set of moves that wins more quickly. Likewise, when losing, most players will go for complications, hoping their opponent slips up.

There are a number of theoretical advantages to a Monte Carlo Search. Among them is that no evaluation function is actually necessary. In practice some method is usually used to order the way the tree is searched. One such method is a neural network used to select moves to explore that are more likely to be good.