[HN Gopher] Human-like neural network chess engine trained on li...
       ___________________________________________________________________
        
       Human-like neural network chess engine trained on lichess games
        
       Author : unlog
       Score  : 117 points
       Date   : 2021-01-17 12:00 UTC (11 hours ago)
        
 (HTM) web link (maiachess.com)
 (TXT) w3m dump (maiachess.com)
        
       | dfan wrote:
       | It's worth noting that this approach, of training a neural net on
       | human games of a certain level and not doing tree search, has
       | been around for a few years in the Go program Crazy Stone
       | (https://www.remi-coulom.fr/CrazyStone/). (There wasn't a paper
       | written about it so it's not common knowledge, and I assume the
       | authors of this paper weren't aware of it or they would have
       | cited it.)
        
       | EGreg wrote:
       | Do you think one day we can have AI reverse hashes by being
       | trained on tons of data points the other way?
       | 
       | My guess is no, because you have to get an exact output of a
       | function which is not continuous at all. But maybe I am missing
       | something?
        
       | lrossi wrote:
       | Paper: https://arxiv.org/pdf/2006.01855.pdf
        
       | PeterisP wrote:
       | Very interesting research!
       | 
       | A particular use case that's implied by the features is the
       | ability to analyze errors that you _would_ make as opposed to the
       | exact errors that you made; as the personalized  "Maia-transfer"
       | model seems to have an ability predict the specific blunders that
       | the targeted player is likely to make, those scenarios can be
       | automatically generated (by having Maia play against Stockfish
       | many times) and presented as personalized training exercises to
       | improve the specific weak spots that you have.
        
         | reidmcy wrote:
         | Yes, that's exactly one of our goals. In the paper we even have
         | a section on predicting which boards lead to mistakes (in
         | general). The results were much weaker than the move
         | prediction, but we're still working on it and will hopefully
         | publish a followup paper.
        
       | sanxiyn wrote:
       | Do read the paper. (Click "PAPER" in the top menu.) I found it
       | very interesting.
        
       | jquery wrote:
       | As someone who is colorblind, the graphs are unfortunately
       | impossible to follow. Perhaps you could use an additional method
       | of distinguishing data on the graphs other than color? Like
       | dashed lines, or lines with symbols on them, or varying
       | thickness, etc.
        
         | reidmcy wrote:
         | Thanks for mentioning that. The graphs do use different dashes
         | to distinguish the colour palletes, which are supposed to be
         | colour blind friendly. So I thought we'd be OK. I'll take a
         | look into adding more non-colour distinguishing features.
        
       | SubiculumCode wrote:
       | Overall the games were enjoyable, however this game stood out as
       | an issue with the engine. A long gif, but notice the moves at the
       | very end where it had three queens and refused to checkmate me.
       | https://lichess1.org/game/export/gif/M0pJAiyL.gif
       | 
       | 38. Kxa5 Nxg2 39. Kb6 f5 40. h4 f4 41. h5 gxh5 42. Kc7 f3 43. Kd6
       | f2 44. Ke7 f1=Q 45. Ke8 Qe1+ 46. Kd7 h4 47. Kd6 h3 48. Kd5 h2 49.
       | Kd4 h1=Q 50. Kd5 h5 51. Kd6 h4 52. Kd7 h3 53. Kd8 h2 54. Kd7 Qhg1
       | 55. Kd6 h1=Q 56. Kd5 Ne3+ 57. Kd6 Nf5+ 58. Kd7 Ng7 59. Kc7 Qd1
       | 60. Kc8 Qc1+ 61. Kd7 Qgd1+ 62. Ke7 Qhe1+ 63. Kf6 Nh5+ 64. Kg6
       | Nf4+ 65. Kf5 Nh3 66. Kf6 Nf2 67. Kg6 Kf8 68. Kf6 Ke8 69. Kg6 Kd8
       | 70. Kg7 Kc8 71. Kg8 Kb8 72. Kg7 Ka8 73. Kg8 Ka7 74. Kg7 Ka6 75.
       | Kg8 Ka5 76. Kg7 Ka4 77. Kg6 Kb3 78. Kg7 Ka2 79. Kg8 Ka1 80. Kg7
       | Ka2 81. Kg6 Ka1 82. Kg7 Ka2 { The game is a draw. } 1/2-1/2
       | 
       | These were bullet games where it was rated at 1700 and I am rated
       | 1300ish...however I won a number of games against it. I never
       | felt like I never had a chance.
        
       | Ericson2314 wrote:
       | I thought this said "lichen" and it was some sort sort of crazy
       | fungi network for a second, like the slime mold and the light
       | experiment. Oh well...
        
       | SubiculumCode wrote:
       | With transfer training on IM John Bartholomew, Trained on
       | MaiaChess predicts ...d5 with high accuracy. #scandi
        
       | bryanrasmussen wrote:
       | grandmasters typically play a small number of (recorded) games
       | per year, would it be possible to train a neural network on lots
       | of games to recognize what were likely moves of a player from a
       | small number of games - so that you could have a computer to work
       | with that would prepare you for a match with a grandmaster?
        
         | akamoonknight wrote:
         | I'm wondering something similar, where maybe GMs could train
         | against a neural network that is built off of their upcoming
         | opponent's historical games and thus they would get more
         | experience against that 'opponent'. Instead of having to
         | actually have played against the opponent themselves to learn
         | weaknesses.
        
         | gameswithgo wrote:
         | lately grandmasters play a huge number of recorded games per
         | year online
        
           | wildlogic wrote:
           | yeah, these days you can tune into a twitch stream and grab
           | some top grandmaster games any day of the week
        
           | bryanrasmussen wrote:
           | huh, even better, although guess I'm behind the times.
        
       | strenholme wrote:
       | I think this is very interesting. One comment I have heard about
       | Leelachess is that she, near the beginning of her training, would
       | make the kinds of mistakes a 1500 player makes, then play like a
       | 1900 player or so, before finally playing like a slightly passive
       | and very strategic super Grandmaster.
       | 
       | One interesting thing to see would be how low-rated humans make
       | different mistakes than Leela does with an early training set.
       | How closely are we modeling how humans learn to play Chess with
       | Leela?
       | 
       | Another thought: Leela, against weaker computers, draws a lot
       | more than Stockfish. While Leela beats Stockfish in head to head
       | competitions, in round robins, Stockfish wins against weaker
       | computer programs more than Leela does.
       | 
       | I believe this is because Stockfish will play very aggressively
       | to try and create a weakness in game against a lower rated
       | computer, while Leela will "see" that trying to create that
       | weakness will weaken Leela's own position. The trick to winning
       | Chess is not to make the "perfect" move for a given position, but
       | to play the move that is most likely to make one's opponent make
       | a mistake and weaken their position.
       | 
       | Now, if Maia were trained against Stockfish moves instead of
       | human moves, I wonder if we could make a training set that
       | results in play a little less passive than Leela's play.
       | 
       | (I'm also curious how Maia at various rating levels would defend
       | as Black against the Compromised defense of the Evans Gambit --
       | that's 1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d6
       | exd4 7. O-O dxc3 -- where Black has three pawns and white has a
       | very strong, probably winning, attack. It's a weak opening for
       | Black, who shouldn't be so greedy, but I'm studying right now how
       | it's played to see how White wins with a strong attack on Black's
       | king. I'm right now downloading maia1 -- Maia at 1100 -- games
       | from openingtree.com.)
        
         | strenholme wrote:
         | I only found one game where Maia1 (i.e. Maia at 1100 ELO) lost
         | playing the black pieces with the Evans Gambit Compromised
         | defense:
         | 
         | 1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. Ba3 d6
         | 7. d4 exd4 8. O-O dxc3 9. Qd3 Nf6 10. Nxc3 O-O 11. Rad1 Bg4 12.
         | h3 Bxf3 13. Qxf3 Ne5 14. Qe2 Bxc3 15. Bc1 Nxc4 16. Qxc4 Be5 17.
         | f4 d5 18. exd5 Bd6 19. f5 Re8 20. Bg5 h6 21. Bh4 g5 22. fxg6
         | fxg6 23. Rxf6 g5 24. Rg6+ Kh7 25. Qd3 gxh4 26. Rxd6+ Kg7 27.
         | Qg6+ Kf8 28. Rf1+ Ke7 29. Rf7# 1-0
        
       | FartyMcFarter wrote:
       | Do they train separate NNs for each time control?
       | 
       | If not, I wonder if that would make accuracy even higher!
        
         | coolness wrote:
         | They filter out fast games (bullet and faster) and moves where
         | one has less than 30 seconds total time to make the move. They
         | say this is to avoid capturing "random moves" in time trouble
        
           | PeterisP wrote:
           | It's interesting, because IMHO the moves that humans make
           | when in time trouble (which intuitively look decent but have
           | unforeseen consequences) would be the exact thing that you
           | would want to capture for a human-like opponent that makes
           | human-like suboptimal moves.
        
         | reidmcy wrote:
         | We did not, we removed bullet games because they tend to be
         | more random, and also did some filtering of the other games to
         | remove moves made with low amounts of time remaining for the
         | same reason. But the models don't know about different time
         | controls right now.
        
       | travelhead wrote:
       | As a long time chess player and moderately rated (2100) player,
       | this is a fascinating development! I played the 1900 and beat it
       | in a pretty interesting game! Can you increase the strength to
       | 2100+?
        
       | im3w1l wrote:
       | Hmm... maia1100 is ranked ~1600. https://lichess.org/@/maia1
        
         | woko wrote:
         | From the README on Github:
         | 
         | > Note also, the models are also stronger than the rating they
         | are trained on since they make the average move of a player at
         | that rating.
         | 
         | Reference: https://github.com/CSSLab/maia-chess
        
         | judofyr wrote:
         | I think the developers explained the reason for this in a
         | Reddit thread: Collectively a bunch of 1100 players are
         | stronger than 1100. Imagine that a 1100 player will play one
         | bad move for every two decent moves. However, different players
         | miss different moves so the most picked move in each position
         | will usually be a decent move.
        
           | LudwigNagasena wrote:
           | Unintentional ensemble learning :)
        
           | sweezyjeezy wrote:
           | This makes perfect sense - but is a bit problematic given the
           | intended goal of the project. They've built a bot that plays
           | like an 'averaged group' of humans, not a human. Maybe they
           | need a better way of sampling from the outputs.
        
             | stingraycharles wrote:
             | This is always the problem with training from historical
             | data only: you'll become very good at being just as good as
             | the sample group.
             | 
             | Ideally you just use the sample as the basis, and then let
             | an AI engine play against itself for training, and/or
             | participate in real world games, such as they did with
             | AlphaGo and/or AlphaStar.
        
             | stoat_meniscus wrote:
             | Seems analogous to the average faces photography project
             | where the composite faces of a large number of men or women
             | end up being more attractive than you'd imagine for an
             | average person.
        
           | im3w1l wrote:
           | Maybe. I think if you had asked me to predict the rating I
           | would have guessed below 1100 though. Because of only
           | predicting moves in isolation. I would expect that the moves
           | would not form a coherent whole working together in a good
           | way.
           | 
           | So it's an interesting result to me.
        
             | LudwigNagasena wrote:
             | > Because of only predicting moves in isolation.
             | 
             | This actually may be the reason of higher ranking. What are
             | the odds that a low ranked player will blunder a piece in a
             | particular position? Quite low. But what are the odds that
             | a low ranked player will blunder a piece in a game? They
             | are quite high. So while this engine may predict most
             | likely move, it can't fake a likely game because it is too
             | consistent.
             | 
             | I think GANs can be helpful to do something like this. One
             | NN tries to make a man-like move and another one tries to
             | guess whether the move was made by a human or the engine
             | given the history of moves in a game.
        
             | reidmcy wrote:
             | That's what a few machine learning people I talked too
             | thought would happen. There are lots of examples (self
             | driving cars being the big one) in machine learning where
             | training on individual examples isn't enough. We were
             | actually hoping for our models to be as strong as the
             | humans they're trained on so we are underperforming our
             | target in that way.
             | 
             | I'm the main developer for Maia chess
        
             | [deleted]
        
           | deep_etcetera wrote:
           | This only true if you select the most likely move instead of
           | sampling from the probability distribution over possible
           | moves. In the latter case there is no reason for there to be
           | a wisdom of the crowd effect.
           | 
           | If you sample from the probability distribution you are
           | modeling, there is no reason it shouldn't play like a 1100
           | player.
        
             | sweezyjeezy wrote:
             | Well one reason is that it still won't be a 'single' player
             | - what they've done here is like having a group of
             | thousands of 1100 players vote on a move. What you're
             | suggesting is to then pick a random player each move and go
             | with them. There's no consistency, maybe on move 10 the
             | player is blind to an attacking idea, but then on move 11
             | suddenly finds it...
        
         | corey_moncure wrote:
         | The real reason is that 1100 players are ranked ~1600 on
         | Lichess. There's a good site that compares FIDE ratings,
         | Lichess ratings, and Chess.com ratings. Lichess is inflated by
         | many hundred points on the low end. Chess.com is more accurate.
         | They converge towards the upper end of the human rating range.
        
       | thetinguy wrote:
       | This probably breaks lichess cheat detection.
        
         | EGreg wrote:
         | Think about this more broadly
         | 
         | Detecting deepfakes and generating them are just adversarial
         | training that will make deepfakes even better and then our
         | society won't trust any video or audio without
         | cryptographically signed watermarks.
        
           | ausbah wrote:
           | we don't have anything like that with photos and things have
           | turned out ok
        
             | dsjoerg wrote:
             | It's too early to say that. The big problems are coming as
             | deepfaking gets cheaper and easier. Scammers are using
             | deepfake photos to aid in their scams. It's going to get
             | worse, especially anyplace that photos are used as proof or
             | evidence.
        
             | ixfo wrote:
             | It's a little different with videos and audio, though.
             | People place much more trust in them, for now at least, and
             | people do generally still trust photos more than text, so
             | there is a wider challenge as we become more able to suborn
             | higher levels of truthiness for propoganda/memes.
        
         | jquery wrote:
         | Which is unfortunate, but at least the players who play this
         | bot hopefully have a more enjoyable game than the ones who play
         | a depth-limited stockfish, for example.
        
       | notacoward wrote:
       | This kind of "human at a particular level" play is something I've
       | personally wished for many times. I find playing against programs
       | very frustrating, because as you tweak the controls they tend to
       | go very quickly from obviously brain-damaged to utterly
       | inscrutable. Win by a mile or lose by a mile. Sometimes there's a
       | very thin band in between that's the worst of both worlds:
       | generally way above my own level, but every once in a while
       | they'll just throw away a piece in the most obvious possible way.
       | If a human did that I'd interpret it as toying with me, or
       | taunting.
       | 
       | This kind of program seems like it would be much more satisfying
       | to play just for fun, and perhaps (with a bit more analysis
       | support) better still as a coaching tool.
        
       | sabujp wrote:
       | This bot is a pure joy to play against! For a 1560 rated bot:
       | 1. It brings out the queen early attacking the f7 pawn when black
       | plays sicilian.         2. So far has gone king's indian almost
       | every time against d4 (e.g. catalan) and then has failed to
       | challenge the center, instead going for a king side attack
       | (exchanging bishop for knight to try to open the B file.
       | 3. It sometimes drops its queen in complex exchanges and hidden
       | attacks.         4. It sometimes drops pieces in complex
       | exchanges (can't count how many pieces are covering a square).
       | 5. It will exploit mistakes that *I can see*, unlike stockfish
       | level 7+ where it will take you down an insane convoluted path to
       | get you into such a bind to destroy your position (I've played
       | GMs who ?can't?/don't do in this blitz).         6. Its attacks
       | are shallow and lack depth, easily defended.         7. It
       | sometimes moves a single piece too many times when it should be
       | trying to advance its positional game (e.g. queen/knight),
       | basically has very little positional play.         8. It
       | sometimes pushes pawns aggresively to its detriment.         9.
       | Won't resign in losing positions (*lol*).            a. Will play
       | to the bitter end to try to get you to stalemate.
       | 
       | Couple things that could make it more human:                   1.
       | Moves fast! I think it actually moves too fast, there needs to be
       | a better delay factor added in depending on rating. If we could
       | make it think for a longer than usual amount of time after it
       | finishes development, in complex positions, or when it's close to
       | mate or about to lose an exchange. Also make it speed up when its
       | getting low on time.         2. Make it randomly rage quit in a
       | losing position like an asshole instead of resigning so you have
       | to wait for the quit/disconnect detection and then claim
       | victory/draw countdown (I jest, I jest, but if we do this, please
       | make it some sort of setting).
        
         | mam2 wrote:
         | Haha
        
         | opportune wrote:
         | I wasn't able to find what time setting the AI was trained on,
         | but I'm a 1400 bullet player and at that level it is uncommon
         | to resign even if you are down a minor piece and a pawn (or
         | more, but in a good attacking position). The probability of
         | being able to win due to time/a blunder is quite high.
         | 
         | I even saw an IM vs. NM bullet game the other day where the NM
         | was in a losing position but stayed in to grab a stalemate: htt
         | ps://www.reddit.com/r/chess/comments/kwoikt/im_not_a_gm_l....
         | Not sure if Levy was being unsportsmanlike to stay in the game
         | despite being in a losing position, but even at a high level I
         | think it's normal to play to the end if your opponent is in
         | time trouble.
        
           | reidmcy wrote:
           | They're trained on everything but Bullet/HyperBullet. The
           | neural network just predicts moves and win probabilities so
           | we don't have a way (yet) of making it concede.
        
             | gamegoblin wrote:
             | Is there a way to treat resignation as a "move"? Even
             | though the win probability is zero by definition, it still
             | may be the most accurate move prediction in certain
             | scenarios.
        
               | reidmcy wrote:
               | Yes, the output is just a large vector with each
               | dimension mapping to a move. But we'd probably do it as
               | different "head" so have a small set of layers that are
               | trained just to predict resignations. Both options would
               | break the lc0 chess engine we use for stuff like the
               | Lichess bots though.
        
       | aaron695 wrote:
       | Step 2 with AI, see if you can make it human.
       | 
       | It's great to see research on this.
        
       ___________________________________________________________________
       (page generated 2021-01-17 23:00 UTC)