Chess-playing neural network LC0 beats Stockfish in 100-game match
LC0 and AlphaZero work on the following principles:<p>* GPU-based compute -- Deep Learning scales very well on GPUs, which are known to have superior parallelism over CPUs.<p>* MCTS -- &quot;Monte Carlo Tree Search&quot;, which is a different tree-search compared to Minimax. MCTS seems closer to &quot;human-like play&quot;, with regards to search order.<p>IMO, it is inelegant to use CNNs &#x2F; neural nets as the evaluation layer. However, its difficult to imagine an evaluation function that would scale to GPUs. I&#x27;m curious how to use the SIMD-compute model to evaluate chess positions, but it doesn&#x27;t seem like very much research exists on the subject.<p>GPUs have significantly higher compute power than CPUs. Chess positions can largely be represented by just a few 64-bit integers (!!). (An 8x8 bitboard is 64-bits, one bitboard per piece). So the compute-density of chess-evaluation is very very high, there just aren&#x27;t any algorithms that are well suited to the GPU-architecture aside from deep learning right now.<p>-------<p>I really think MCTS is the superior search tree algorithm. The only issue is the evaluation function. Its certainly cool that Deep Learning &#x2F; CNNs are being used as a &quot;universal&quot; GPU-function (self-learn &#x2F; self-train so that a large CNN can &quot;deeply&quot; use a ton of GPU resources to make up its own evaluation function). But as far as I&#x27;m concerned, its a crutch.<p>----------<p>EDIT: If I had oceans of free time... I&#x27;d love to see what &quot;translating&quot; Stockfish&#x27;s algorithms (ex: backwards pawn check. Bishop moves check. Paired Bishop advantage check. Etc. etc.) to a GPU would be like.<p>A GPU probably could evaluate a million boards for &quot;backwards pawns&quot;. Then evaluate the million boards for &quot;paired bishops&quot;. Then evaluate the million boards for &quot;knight outpost&quot;. Etc. etc. In effect: calculate the millions of positions in parallel, by lining them up and batching them together.<p>Stockfish&#x27;s parallelism is CPU-based, with lots of if-statements. Batching these checks into individual units would remove the if-statements and potentially make it amendable to SIMD-compute.<p>The tree-evaluation would try to evaluate ~1-million boards at a time, to keep the GPU busy. Maybe ~1-million boards per CPU-thread (somehow self-tuning the evaluation process for an optimal mix of CPU + GPU time used).<p>Again: if I had mountains of free time, lol.