Analysing your openings repertoire with Fat Fritz

by ChessBase
9/2/2019 – While the idea of Fat Fritz as a self-taught chess AI is tantalizing, many players may wonder why this impacts them if they already have a good engine and they are not grandmasters seeking nearly ineffable edges in their preparation. In the following article, we let a strong amateur study with it for some hours and compare notes with analysis he had made from other engines.

ChessBase 15 - Mega package ChessBase 15 - Mega package

Find the right combination! ChessBase 15 program + new Mega Database 2020 with 8 million games and more than 80,000 master analyses. Plus ChessBase Magazine (DVD + magazine) and CB Premium membership for 1 year!


Not starting from zero

One of the biggest strengths of Fat Fritz over traditional engines is not a simple Elo equation, but in how it evolved. For example, much like when we learn ourselves, the first thing a traditional engine learns is the value of the pieces. Fat Fritz starts with no such information. Instead, it is fed billions of positions (literally) which it studied, and from which it built its understanding of chess. It does not, and cannot, think in terms of material. It sees the chess position solely in terms of win-rate percentages. This in turn frees it of the normal inhibitions based on counting pawns and pieces, since these are only of consequence in how they affect the win-rate.

Why is this so important (other than being an interesting curiosity)? Because very often there will be positions where a traditional engine will see no concrete road to improvement and that are equal in the purest sense, leading to multiple evaluations of 0.00. Fat Fritz may agree that the positions are equal, but it is also capable of seeing which ones tend to lead more often than not to a more successful result. Openings analysis today rarely leads to a concrete win against a well-prepared opponent, so it helps to know which moves or positions have the greatest chance for your opponent to go wrong. 

Since the launch of Fat Fritz we have been conducting a number of experiments, mainly with world-class grandmasters. About that we will speak in separate reports. Today we want to tell you about an experiment we undertook with a 2300 player, whom we gave two hours of access to Fat Fritz. He decided to use the opportunity to check his black repertoire against the Catalan, where he had had problems finding a way to equalise in a critical variation. Analysing with Fat Fritz convinced him that he could achieve equality and so did not need to avoid this particular line. He gave us some of his analysis — a little reluctantly, since he wants to be able to use it in future games.

[Event "Analysis"] [Site "?"] [Date "2019.07.29"] [Round "?"] [White "Catalan 4...Be7"] [Black "Fat Fritz"] [Result "*"] [ECO "E05"] [Annotator "N.N."] [PlyCount "76"] [EventDate "2016.??.??"] 1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. g3 Be7 5. Bg2 O-O 6. O-O dxc4 7. Qc2 a6 8. Qxc4 b5 9. Qc2 Bb7 10. Bd2 Be4 11. Qc1 Bb7 12. a3 Nbd7 13. Ba5 Rc8 14. Nbd2 Qe8 15. b4 Ne4 16. Nxe4 Bxe4 17. Qe3 Bd5 18. Rac1 Bd6 19. Ne5 f5 20. Bxd5 exd5 21. f4 Nf6 22. Rc2 {The position of interest. It looks like White has pressure on the c-file. So I let Fat Fritz look at it and compared its suggestions with that of other engines. [#] Fat Fritz immediately evaluates the position as equal, giving continuations like 22...c6 or 22...h6 (22...Ne4 might be possible as well). Let us look at some of the lines the player worked out with Fat Fritz:} c6 $5 (22... h5 $5 {Fat Fritz considers this an equally strong alternative.} 23. Rfc1 c6 $1 24. Bb6 Ne4 25. Nxc6 (25. Rxc6 Rxc6 26. Nxc6 h4) (25. Bc5 Bxc5 26. bxc5 ( 26. dxc5 a5 27. a4 $2 bxa4 28. b5 cxb5 29. c6 b4 $16 (29... Kh7 $16)))) 23. Rfc1 h5 $1 24. Bb6 Ne4 $1 {A strong pawn sacrifice, immediately spotted by the Fat Fritz cloud engine. It is not the first move of "normal" engines.} (24... Bxe5 $6 25. dxe5 Ne4 26. Bd4 Qg6 27. Kh1 Rfe8 28. a4 {Opening a new front.} Re6 29. axb5 axb5 30. Ra2 Rc7 31. Qf3 Kh7 32. Rg1 {One rook threatens intruding along the a-file, the other one inhibits Black's attack.} Qf7 33. h3 Rh6 34. Kh2 Qe7 35. Qb3 Qe8 36. Ra6 Qe6 37. Ra8 g5 38. Qe3 Rg7 39. fxg5 Rxg5 40. Qf4 $16 (40. Ra7+ Rg7 41. Rxg7+ Kxg7 42. Qf4 {(62) Suba,M (2525)-Psakhis,L (2605), Andorra 1994.})) 25. Nxc6 Qe6 26. h4 Rfe8 27. Kg2 Bf8 28. Ba5 Bd6 (28... Kh7 29. Ne5 Rc4 $1 $11) 29. Ne5 Rc4 $1 $11 30. Nxc4 (30. Qf3 $4 Bxe5 $19 31. fxe5 Rec8 32. Rxc4 dxc4 33. Qxh5 c3 34. Qf3 c2 $19) 30... dxc4 31. Qf3 Qd5 32. e3 Re6 33. Kh2 (33. Qxh5 $4 Ng5+ 34. Kg1 Nf3+ $19 35. Kg2 (35. Kf1 g6 36. Qh6 Bf8 $19) 35... Rxe3) 33... g6 $11 (33... Bb8 $11 34. Ra2 (34. Qxh5 $4 Nf6) 34... g6 ) 34. Qg2 Bb8 35. Ra2 Rc6 36. Rca1 (36. a4 $6 Kf7 37. Rca1 Ke6 38. axb5 axb5 $17) 36... Bd6 (36... Kf7) 37. Rc2 Be7 38. Rac1 Kf7 {with equality.} *

The Fat Fritz evaluation before the key move, and a Stockfish evaluation bar for the whole game

This strong club player's verdict after his session:

I feel much more comfortable analysing with Fat Fritz. I found, in subsequent analysis, that its evaluation of the positions that occurred were more accurate than those of traditional engines, and led me to understand the line better. I was of course looking for the best way to equalize, and found that after the pawn sacrifice on c6 I could reach an impregnable fortress, something that Fat Fritz recognised much faster than Stockfish or Komodo.

Where and how to use Fat Fritz

Just like all the other engines available online for analysis, Fat Fritz can be found in the ChessBase Engine Cloud.  There are several quick ways to do this from within ChessBase 15, or Fritz program (such as Fritz 16, Komodo, or Houdini).

Another very easy way is just to open a game or board position and start an engine with Add Kibitzer.

Add kibitzer

When you do this you get a list of the engines you can open, all in your computer, but under the list is the Cloud button. Just click on it and this way too will take you to the Engine Cloud window.

Load engine

You will then be shown the Engine Cloud window with the list of all the engines available for use.

Engine list

Click or tap to enlarge

Just look for the name Fat Fritz and choose it.

Fat Fritz

For more detailed information, don't hesitate to look at the full guide.


Reports about chess: tournaments, championships, portraits, interviews, World Championships, product launches and more.
Discussion and Feedback Join the public discussion or submit your feedback to the editors


Rules for reader comments


Not registered yet? Register

celeje celeje 9/3/2019 07:31
@Scorpion29: It's good you got extra time. If you find it more useful this time, please post another comment.
Bertman Bertman 9/3/2019 04:47
@MTM Although it really is an explanation for another time, I will try to at least address some of your confusion. You are using Zero here in two different contexts: the name of the executable, and the method of the training. 'Zero' was used by Deep Mind to mean they had trained their neural network from pure selfplay games and no information other than the bare rules of the game. This is also known as pure Reinforcement Learning. Fat Fritz is *not* zero in this context, as it learned from a variety of sources as well as modifications to help it use other sources.

The second aspect is the actual composition of the program. It is split into two parts: the executable which runs the search and communicates with the neural network weights, and the weights themselves. The executable is the opensource binary from Lc0 which bears the word Zero in its name based on its purpose to reproduce AlphaZero as purely possible. As to what does what, and the relative importance, and more, well, that is a much longer discussion. Suffice it to say that when Deep Mind announced that AlphaZero had mastered chess in 4 hours they were speaking only about the neural network weights. The bulk of their paper is about the weights themselves, and how they were created and trained. I hope this helped some.
Mr TambourineMan Mr TambourineMan 9/3/2019 11:16
That's one thing I don't understand about Fat Fritz. Namely, how it differs from Leela Zero. First, how does the weights really works? Would be good to get an explanation for us who are not familiar. And second: How can Fat Fritz be a Zero machine (it uses Leela Zero even though it is weighted) and still learn from historical chess games as well as Endgame Tablebase. How can it be both Zero and not Zero? Only when the answers come to these questions can it be interesting to have a further discussion. Because as it looks now one want to raise a warning finger. But I do not as for now they have the benefit of doubt. Another way to show superiority through winning tournaments. But I am not a critic as in general I really like Alberts idea a lot because it feels silly not to use previously known knowledge whether it be historical games (Megadatabase) or Endgame Tablebase.
Scorpion29 Scorpion29 9/3/2019 07:37
Sure Albert, I would love to take up your offer. I have already contacted you in your mail about the same. Do check it out. And yes, my play chess ID is Scorpion29
Bertman Bertman 9/3/2019 05:50
@scorpion29 You are correct in stating the number of games it has trained on is a fraction of what Leela has used. However, that is related to the differences in the training. As to the chance to test it, if you give me your Playchess account name (also Scorpion29?) and a time (EST), I will give you a full hour with it at no cost.
petaQ petaQ 9/3/2019 04:28
It is mentioned that FFnn is trained not from scratch but with many GM games. I feel like it might be really interesting to then train a second iteration that only looks at the games of the great placid players - Capablanca, Smyslov, Karpov, Carlsen, etc - and a third that looks only at the concrete - Morphy, Alekhine, Fischer, Kasparov, Topalov. I have no understanding or expertise on whether such a sample size would work but it would be supremely interesting to see especially how close the latter converges in opinions relative to Lc0 or to put them against each other. It would also be especially interesting to do it with just individual players; see the evolution of their style into the modern world.
Bertman Bertman 9/2/2019 09:35
@scorpion29: First of all, many thanks for the debug. It is the sort of thing that is often impossible to find without running into it oneself, or, as in your case, with someone else's help. I tested your position on my latest build and it has no issues with it, so I uploaded the new version to the cloud (now v1.18). Unfortunately, I wish I could tell you how or why it happened, but neural net training is as much art and engineering as it is science, and the result is locked into a massive black box that stores around 28 million values.

As to its strength, I have not been able to do exhaustive testing against Leela as it means downtime for development. Suffice it to say that they are close enough that 500 games was not enough to determine that answer (using controlled openings). However, there is one important difference: Fat Fritz's development is not over yet, and will continue to improve in the next months.
celeje celeje 9/2/2019 07:25
@ Scorpion29:

I don't know what they show, but they could e.g. display total number of nodes, etc. (But if it blunders, no number of nodes would really excuse that.)
Scorpion29 Scorpion29 9/2/2019 06:30
@ celeje I didn't quite understand what you meant by that - I'll assume that you mean threads...I think it was at not so sure...but at a depth that is enough to see that the move is absolutely rubbish. My pc is low end, but Leela at depth 7 usually gets its first move suggestion correctly, and changed the eval...not the best move. This one though, is a whole different story. Very pessimistic...I think experimenting with 0 might perhaps be better as far as aggressive play goes.
I would like Macaulay and Frederic to clarify my questions...they are pretty pertinent...and would help not just me, but all of us greatly. I am not looking to junk the idea or belittle Chessbase...just a critic who is searching for some answers.
celeje celeje 9/2/2019 05:25
@ Scorpion29:

I'm not trying to justify Fat Fritz's "bug". I'm just saying Chessbase uses Lc0.

I agree "bugs" are bad wherever they come from. I don't know I'd call your example a bug, though, if it doesn't come from Lc0. I'd just call it very bad Fat Fritz play.

You say you ran Fat Fritz for 3 minutes for that. What stats on computer performance did it give for those 3 minutes' calculation?
Scorpion29 Scorpion29 9/2/2019 05:04
@celeje Leela v021.2 is what I use, and it has never given me a single bug till now. The net is something they need to be careful about right? I had only 5 ducats, and I used them up trying hard to find improvements in one of my gambit lines. There is no need to try and justify why the bug came - it was carelessness on their part.
celeje celeje 9/2/2019 04:58
@ Scorpion29:

Yes, as you found, Lc0's NN is almost certainly much, much stronger than the Fat Fritz NN.

But do you realize Fat Fritz is just a different NN, i.e. a different weights file? It's using the Lc0 binary. ChessBase did not do any new coding at all, so it's no more buggy than Lc0. If you found buggy behavior that doesn't also appear in Lc0, it's just the effect of Chessbase's NN weights, i.e. different numbers in the weights file.
Scorpion29 Scorpion29 9/2/2019 03:44
@Frederic Lots of respect for you in general, but you seem to think I am a total amateur who doesn't know what I am saying. I would like to see you tell the same after you have seen the position I have posted. Also, I have used Leela Chess Zero, and even on my rather low profile graphics card it seems to do so much better than the technical gizmo you guys are promoting.
I am all for new developments in engines, but the least you guys can do is release the engine for all of us to run on our hardware, no matter how bad it is, so that the chess world in general benefits. Instead what you are doing is running a slightly buggy engine for a slow money making purpose and making it available to the elite few who already have so much with them.
Also, you guys promote it like its the new God of Chess, but if it did understand sophisticated play, it would evaluate gambits as atleast equal, given the practical nature of the problems that are faced by the material up side.
I am waiting for the positions that you have said you will release. It is completely human like to give up a piece for long-term compensation (Tal did it for years and succeeded), so I frankly don't understand why the elite go gaga over moves like Rh8!? (in the annotated game of the original article about the engine). It's definitely a move I would find in Blitz, and I'm not even 1800. No offense, but it seems like they have lost a few precious qualities of chess - namely imagination and creativity.
Scorpion29 Scorpion29 9/2/2019 03:29
@macauley I have run out of ducats to use Fat Fritz, but I will gladly point out the problem.

Here Fat Fritz after the forced bxa3 was suggesting c5?? axb2! Qb3 with mate in 2, only to realise that after Qe7 it is a whole piece down. To be fair I did run it for 3 minutes, but any neural network engine worth its salt sees the blunder in that span of time.
Frederic Frederic 9/2/2019 02:20
"Blundering a whole piece..." Funny, 2800 players seem to be fascinated how it does this and then goes on to win. It's the point of NN engines. We will publish a few positions (if the players allow us) where entire pieces are given away for an advantage nobody saw.
macauley macauley 9/2/2019 01:33
@Scorpion29 - If you can embed a diagram or send in a bug report I'm sure folks will be glad to review it. Here's how: Embed diagrams
Scorpion29 Scorpion29 9/2/2019 01:23
I used it once, but I feel it is a sham. It didn't see that it was blundering a whole piece, and is useless against gambits. I'll give you credit for making a new money making opportunity though!
Justjeff Justjeff 9/2/2019 10:43
My main takeaway is that if a 2300 player starts his analysis on move 23 and ends it on move 38 then I will never be a master.