Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Strongest chess player, ever (lichess.org)
170 points by gren on June 1, 2014 | hide | past | favorite | 109 comments


This is extremely impressive - it's cool that talented programmers are pushing the limits of computer science to advance the state of the art of chess engines.

However, I also wish that there were comparable efforts to create AIs that train humans. Basically, figure out a way to systematically, efficiently, and scalably train amateurs into masters. That IMO would be absolutely amazing (and something I'd gladly pay for).


In my opinion, this would be a lot more difficult. I am slightly naive as to exactly how stockfish works, but:

Computers can do a lot of accurate brute-forcing; humans must see the position in a more holistic, intuitive way.

Excellent human players and excellent computer players are presumably doing completely different calculation tasks.

I would suggest that computers are still bad at approaching the task in a human-like way, but they will always be able to improve their method via Moore's law (at a minimum) where humans are stuck at their current level.

Stockfish might be able to tell you what it was doing, but not in a way that it would be reasonable for a human to follow.

What you are looking for is a teacher. You can pay for those ;) The closest we have got to a teacher app is perhaps a MOOC: not much computational progress has been made.


> Stockfish might be able to tell you what it was doing, but not in a way that it would be reasonable for a human to follow.

I (a non-chess player) just tried to play a game against the highest level AI (and lost, obviously).

Doing an analysis of the game afterwards, this is exactly what I experience: I do "f4" and I'm told (through the analysis tool) that the best move was "Nf3".

Now, the obvious question this leads to is: why? Why was this a better move? I don't think that, as a human being, memorizing "best moves" is going to lead to much improvement: we need to know WHY that move was the best move.

I'm sure there is a human-friendly way to explain why one move is the best move, and why my move wasn't, but the computer probably doesn't know this explanation, because it's approaching it from a brute-force perspective.

Surely, a chess computer can brute force all possible combinations, and deduce that this was the best move. But when this is not possible for a human being, just informing the me that "what you just did was not the best move", doesn't really do much to help me (as an amateur player).

The game, for reference: http://en.lichess.org/ehWjHnIc#0


"f4" creates a hole on "e4" in your pawn structure. This hole becomes a valuable outpost where your opponent can position a knight (or other piece) without it being harassed by one of your pawns. This means to get rid of it, you need to trade a piece for it, and when your opponent recaptures, it will give them a passed pawn.

"Nf3" protects your d4 pawn and also threatens the e5 square. Probably most importantly, it clears a piece so you can castle kingside.


>Stockfish might be able to tell you what it was doing, but not in a way that it would be reasonable for a human to follow.

Looking at the code posted, if the sub-scores were stored in an array and only added at the end, it would be possible to compare the positions after two moves by sub-score and find the biggest differences between subscores. Then you could say that position A is better than position B because it avoid doubled pawns, or has better bishops, etc.


Are you sure you wouldn't rather learn, say, mathematical physics or computer science?

The neurological topiary for chess is strictly harder, because chess has fewer analogues in day-to-day experience.


Chess is a fun hobby, and I feel it gets more fun the better I get. That's a good enough justification for me.


It's a place to start.

It's not a huge leap from modelling the game of chess to modelling the skill of chess-playing. Stockfish already offers post-game analysis. Imagine extending that to analyze a players entire career, and offer a series of problems, games against specially-constructed opponents, analysis of relevant historical games etc, all of which are designed to help the player improve. Given Siri, Google Now, Watson and so on, we're probably not far from being able to have a meaningful natural-language conversation with a computer on a narrow subject like chess.

One could imagine this kind of thing being extended to teaching other, similarly focussed skills, at least for beginners. Piano. Tennis. Rock climbing. Maybe even things like soccer and basketball.

But that kind of teaching-based-on-deep-analysis is a long way off for subjects like physics or electrical engineering. Computers can't do physics, much less evaluate human physicists. The best we can do in these areas is something like the Khan Academy, where computers present "content" created by humans, administer standardized tests designed by humans and present the results to humans for interpretation.

So yeah, teaching chess in a really sophisticated way isn't all that useful in the sense that physics or EE are useful. But really, if we could teach computers to understand physics better than people do, we'd use them to make breakthroughs in physics, and that would be a much bigger deal than being able to teach physics more effectively.

On the other hand, we don't play chess or tennis or piano because they're useful, so expert AI teachers for these subjects would be really valuable.


Would recommend "The Diamond Age" by Neil Stephenson, with the highly relevant subtitle: "or, The Young Woman's Illustrated Primer".


> a way to systematically, efficiently, and scalably train amateurs into masters.

Why do you need an AI? I don't play chess, but I suppose the above is more or less what an elite chess school provides, and you could likely reproduce it with books + practice + private lessons. That is, what Ericson calls deliberate practice and coaching.


By far, the fastest way to improve at chess is with a coach. Books work in the beginning, but soon you are crawling around in the dark. You can't identify your weaknesses, so you can't correct them. After studying the wrong thing for a year, you fix one of your weaknesses by accident, and you improve. A coach bypasses all of that wasted time. The challenge is not to automate a chess curriculum. That already exists on many websites selling chess software. Those are useful to learn certain theory and burn it into your brain by drilling over and over. The challenge is to create a chess teacher that can identify your specific weaknesses and correct them. A middle ground approach might work well, where you take one mental model of chess and develop a program to train that specific mental model. For example there is the Nimzowitsch model where chess is seen as siege warfare, with specific meta-strategies. If that model fits with how you think, then great. But it doesn't fit everyone. One day this super efficient learning will be reality. It sounds kind of boring. With an exponential game like chess, everyone will be at about the same level, except a few who throw their life away chasing n+1 while everyone else settled for n and having a life.


An AI is going to be much cheaper and faster than books + practice + private lessons.


That seems to be what they are going for with the game analysis that also makes alternative move suggestions.


The game analysis is definitely the part of this that interests me the most. That it could beat me isn't that impressive—I'm not that good. But that it could tell me what I did wrong, so I could improve my game... that's really neat.


What I would love to see is work on chess engines having better strength levels for amateurs. For me at least there is a line where everything below a certain level I can beat 95 percent of the time and everything at or above that level I lose to 95 percent of the time.


One of my long-term goals is to write a chess program that plays more like a lower-level human. Every program I've played seems to have the same pattern: play like a master for ten moves, then make an insultingly obvious blunder to let me catch up. Lather, rinse, repeat. It's neither realistic nor fun. Might as well play with a handicap.

Real players at each level tend to have characteristic weaknesses that are expressible in terms of the same factors used in a program's evaluation function. Consider some of the following, which players at a certain level will exhibit and then get past as they improve.

* Bringing the queen out too early.

* Missing pins and discoveries.

* Failing to contest the center.

* Creating bad bishops.

* Bad pawn structure.

* Failing to use the king effectively in the endgame.

These are all quantifiable. They could all be used to create a more realistic and satisfying opponent at 1200, 1500, 1800, etc. All it takes is some basic machine learning applied to a corpus of lower-level games, and a way to plug the discovered patterns into the playing engine.


that's a big problem in scrabble AIs too - there are heuristics for how to dial down the difficulty level, but they mostly involve things like finding the list of best possible moves, and then randomly picking a suboptimal one with how often you do it and how far down the list you go weighted by the handicap level, or constraining the dictionary, or not using lookahead. the problem is that it doesn't always model how actual low-rated scrabble players play, and so does not really make for a satisfying opponent - every now and then you hit a "well, that was stupid" move that just feels implausible for even a weaker human player to make.

the other problem is that the devs of the current top scrabble engines, quackle and elise, are (naturally) focused on getting better and better at playing, not on plausible ways to play badly. it's something i keep meaning to work on when i have some spare time; i have a few ideas, but nothing i've had the time to explore properly.


Shredder (on iOS and Android, at least) has the capacity to tailor it's playing strength based on your success with it. It tries to match your own playing strength to give you a more interesting game. As you win it gets stronger, as you lose it plays weaker.


Try HIARCS which is well known for its very human like play esp at lower levels.


Pole Position mode. The AI quality ramps up when losing and down when winning.


note that it's just a chess "engine" and doesn't come with a human-usable front-end.

But it's not hard to get the thing to use xboard in linux.

This is what i use to invoke it: xboard -fUCI -fcp stockfish -sUCI -scp stockfish&

it's very challenging - and in my experience, will unfortunately peg a core unless you explicitly pause the front end (the "P" button in between the two arrows in the upper right)


what do you mean? just click play a game

http://en.lichess.org/


Yes that way also works!

But the xboard way allows me to modify the engine, get debug output, try various different weights for pieces, put two engines against each other to see how specific features affect game play...

It helps me demystify such sophisticated software.


heh, did you ever upload a match between two engines to the site and let the online engine analyze it?


Very interesting idea!


> During the final event, after playing 64 games against Komodo, Stockfish won with the score of 35½-28½. No doubt is further allowed: Stockfish is the best chess player ever!

From a statistical point of view, this isn't actually significant, despite the fact that draws help reduce the variance.

45 of those games are draws, leaving a 13-6 score in favor of Stockfish. Considering a null hypothesis of a binomial distribution with n=19 and equal chance of winning, the two-sided p-value for that score is 0.115. Unless you already have strong evidence that Stockfish is better than Komodo, you shouldn't conclude anything about which one is best.


But it fundamentally _isn't_ binomial across 19 games, because of draws. You can't just ignore draws from the analysis, to do so is terrible application of statistics.


Once you condition on the number of draws, you do get that binomial distribution.

Suppose you have a coin, which gives a random outcome X. But you can only observe the outcome of X when another independent binary random variable Y is true. How can you tell if X is biased? Since X and Y are independent, the observations where Y is false are irrelevant since they don't tell you anything about X. So you just keep the observations where Y is true, and from there you can apply a binomial statistical test to the observations of X.

[ In case you're wondering whether applying statistical tests to variable sample sizes is valid, the answer is yes: a p-value is a uniform random variable from the set of observables (augmented by a continuous random variable, since our set of observables is discrete) to [0,1]. Our p-value is a mixture of p-values on smaller sample sizes, so it is still uniform. ]

This is exactly what happens here: consider a random outcome {win,lose,draw}. If you don't have a draw, let Y be true and X be the outcome of the game. If you have a draw, let Y be false and X be a random coin with the same distribution as for non-drawn games. Then X and Y are independent random variables and the above applies.

Informally: draws are not useful information in determining whether there are more wins than losses.


I'm not sure that discounting draws is the right thing to do either. For example, Petrosian was not the strongest attacking player but was very, very tough to beat.

This also calls into the question the notion of "strongest chess player." Who is strongest, the flashy attacking player that wins half the time and loses the other half, or the stonewall that poses little threat but that you can never beat?


The first analysis isn't terrible. It gets the important points right (that the draws are not evidence of difference in skill) and moves on to the remaining evidence (difference in wins to losses).

The draws are at best evidence towards equality (not against it). Allow them to vary and the likelihood of seeing a difference of 9 wins in 64 games with 45 draws moves up to 0.13 or 13% (when we assume the two players are identical, an appropriate null hypothesis) (even less significant). So in about one tournament in 8 you would expect this much of a lead, even if it was one algorithm playing itself. So from one tournament we say it is likely the one algorithm is in fact better, but it doesn't rise to the standard of being statistically significant.

<code>

# R code to empirically estimate two-sided probablity of

# seeing a lead of 9 games when 64 games are played

# and the assumed probability of a draw is 45/64

# with the null assumption win/loss odds are equal

simulate <- function(nplay,ndraw) {

   sample(c('w','d','l'),size=nplay,replace=TRUE,

      prob=c((nplay-ndraw)/2,ndraw,(nplay-ndraw)/2)/nplay)
}

wldiff <- function(v) { abs(sum(v=='w')-sum(v=='l')) }

set.seed(350920)

stats <- replicate(10000,wldiff(simulate(64,45)))

print(sum(stats>=13-6)/length(stats))

## [1] 0.1341

</code>

(it is weird that somebody, not me, created a throw-away account to make the original comment. likely they are involved in chess development, or know how quickly stat discussions go sideways)


(it is weird that somebody, not me, created a throw-away account to make the original comment. likely they are involved in chess development, or know how quickly stat discussions go sideways)

I'm not involved in chess, I just don't like long-term accounts.

You get a slightly different p-value because the ordering you chose is slightly different from mine. Compared to mine, it favors matchups where the draw probability is low.


I get you. I set the draw probability to as observed, whereas you set the number of draws to as observed. But really I just meant to point out you were right (while giving a simulation that didn't involve explicit conditioning).


Has anyone else watched http://en.lichess.org/tv?

If this is two humans playing against each other in real-time, that is really impressive! It's so mind-boggling fast (mind you I'm not a chess player).


ChessNetwork on YouTube[1] has many videos of blitz chess tournaments where he provides commentary as he plays. Very interesting to watch!

[1] https://www.youtube.com/watch?v=7YWYS209ydE


That's pretty cool!

Can anyone inform an amateur like me what happens at 2:14 (https://www.youtube.com/watch?v=7YWYS209ydE#t=134) and before that as well. It seems to me that black captures his own pawn using his knight. Is that legal?

EDIT: Ah, I see. White pawn captures black pawn, and the knight captures the white pawn. I just happens so fast I didn't see the white move.


Wow, very cool!

Can someone explain what's going on at 20:24 : http://youtu.be/7YWYS209ydE?t=20m20s ?

He forks the king and the queen, then his opponent moved his queen!?! This is not a legal move right?


Had to re-watch a couple times: on that move, white had already moved pawn from g2 to g3, the knight from d6 to e8 is a pre-move that happens very quickly (you can see the red square); while white was setting up that pre-move, black moved the queen.

Does that clarify or did I miss what you are asking?


Got it, thanks!


Many games are played 'bullet' style - i.e. 60s each for the whole game.


Can anyone comment on what makes stockfish different from other chess engines? If I'm curious about state of the art in computer chess, is it worthwhile to study its source? What interesting ideas should I expect to see there beyond what I vaguely know to be the standard approach from introductory AI courses, i.e. some sort of alpha-beta pruning search?


What sets Stockfish apart is its open testing framework. Many volunteers allocate CPU time to run test games, checking if a pull request actually adds Elo rating points. Also, its open development model is a big advantage compared to closed-source chess engines, which usually just have 1-2 developers. The ideas used are mostly the same in all top engines, the advantage of Stockfish comes from tuning/testing/polishing/tweaks.

An year ago Stockfish was near the top, but not quite there. Since then its development model became more open, and the open testing framework was introduced. The rate it's been adding Elo rating points since then has been amazing.


You should indeed study Stockfish's source, not because it is the strongest computer chess engine, but because it is exceedingly well-written. Most engines that are public are a big hacky mess, but the Stockfish maintainers have made cleanliness a really high priority (sometimes proposed changes that increase the engine's strength are rejected because they're too much code), and it has clearly paid off.


Rejecting an improvement because it's just "too much code" is... brilliant, disciplined, and extremely difficult to do. Such a high percentage of software development is maintenance, and it's easy to underestimate that long-term maintenance cost.


>sometimes proposed changes that increase the engine's strength are rejected because they're too much code

that seems insane.


I know, doesn't it? But sometimes someone finds a way to simplify the patch so it's less code and almost as effective, and sometimes future improvements are made easier because the existing code is easier to work with. And it's hard to argue with the results.


Insane in the short term. But in the long term, if they make the program less maintainable, they may prevent future improvements.


I'm not familiar with it, but I'd assume most of them use the same mini-max, with alpha-beta prunning, or some similar algorithm, with small improvements, especially in the heuristic state evaluation function.

You'd learn more by studying a book on AI, and maybe trying to implement an engine yourself, iMO.

The difference in score between the top engines is not that big.


I have not seen the Stockfish source, but my impression is that computer chess was going round in circles in the last 10 years, and it's still good old alpha-beta search with more refined heuristics.

The biggest value in studying computer chess for a programmer is IMO in seeing all the different performance optimization tricks.


Performance optimization, while it is not neglected, is not what separates chess engines. You don't win an exponential race with linear advantages.


I bet it would be unnerving for someone like Kasparov or Magnus Carlsen to play this program, where it would have 1 minute on the clock and they could have the whole day. It would make many of the moves in under a second and they'd be better than the grandmasters' moves!


You can watch Magnus Carlsen play a chess program on his phone here:

https://www.youtube.com/watch?v=pNvVWeHZG00

As you can tell from his commentary, he thinks the machine is rather stupid (and he is winning after the opening) but the machine is a much better calculator than he is and when the situation becomes more concrete he has to force a draw.

Of course, the computer on his phone is considerably worse than the best chess engines, but top chess players generally consider computers to be excellent calculators but dumb in terms of general strategy.


> but top chess players generally consider computers to be excellent calculators but dumb in terms of general strategy.

Is computer assisted chess a thing? Perhaps with standardized hardware, but any software.

In chess I'm good at strategy but terrible at calculating and I miss obvious stuff all the time in my fight for strategy. I always thought I'd do great with computer assistance to look for the obvious stuff, and me telling the computer the long term strategy.


> Is computer assisted chess a thing?

It was called Advanced Chess [1], now it's sometimes referred to as Centaur Chess. You can find online servers to play this kind of thing but it's mostly just a sort of curiosity. Computer-human pairs are well known to be better than just computers at chess though.

1. http://en.wikipedia.org/wiki/Advanced_Chess


> In chess I'm good at strategy but terrible at calculating

Chess is 99% tactics/calculation. What we call "strategy" is just a set of heuristics that we use to avoid having to do endless calculations. However, a lot of those heuristics are already included in most chess playing software. So, if you're weak player as a whole, even if you have some strategy acumen, your contribution in an assisted chess setting will be negligible. The computer will be doing all the work anyway.

My rating is around 2000 and I have done some assisted chess playing and I can tell you that it's extremely hard to not just take computer's suggestion at every move. The chance that I'll come up with some brilliant move that the computer missed is very slim.


I think I misunderstood what "calculating" means in a chess setting. I thought it meant checking the current position of the pieces and making sure you are not about to be attacked.

But googling it suggests it's more about thinking of the value of each move relative to others. If that's the case I'm not actually bad at that.

> I can tell you that it's extremely hard to not just take computer's suggestion at every move.

Is that how it works? The computer just basically plays and shows you some moves it likes?

That's not what I meant, I was thinking that you tell the computer something like: I want to capture piece X using Y 10 to 20 moves from now, perhaps by going via this direction. Tell me the best series of moves to get there while avoiding traps.

Or even better give it 2 or 3 such scenarios and have it tell you how dangerous each one would be so you can pick one.

Basically really narrow down the permutations the computer has to calculate.


It is. See Centaur chess[1] and correspondence chess. In correspondence chess people don't use standardized hardware (people will probably cheat anyway) but in Centaur chess this can be done.

[1]: http://en.wikipedia.org/wiki/Advanced_Chess


There is a chess app on IOS that suggests you moves and warns you against obvious situations where you would lose your piece. It's using an old but still popular engine: https://itunes.apple.com/us/app/chess/id522314512?mt=8

I had most fun with this chess engine. Stockfish engine was not fun at all, it was playing like an "asshole" most of the time and when the AI strength is reduced it was like playing against a stupid "asshole". When playing against human you feel like your opponent is on something but against AI you feel like you run for your life. Mind you though, I am very amateur chess player, I play only recreationally.


Computer assisted chess is becoming more popular in human-only tournaments. In that context it's usually called cheating, of course. Ken Regan has developed some interesting statistical methods to detect it, see for example his blog post on Gödel's Lost Letter and P=NP:

http://rjlipton.wordpress.com/2013/07/27/thirteen-sigma/


What a coincidence, just yesterday The United States Chess Federation published an article about Ken Regan and his methods for detecting cheating.

Article: http://www.uschess.org/content/view/12677/763/

HN discussion: https://news.ycombinator.com/item?id=7831291


Funny commentary:

> That either shows a profound understanding... or a profound lack of understanding. ... ROOK B6! He has NO SHAME


Maybe it's obvious to those with a better understanding of the game but can explain that "no shame" comment at 11:44?


Guessing that it's referring to the engine being particularly greedy about material (a notorious trait of computer engines). It's giving up a ton of control on the back rank to defend a crappy doubled pawn. Happy to be proven wrong on this one, just shooting from the hip here.


I'm guessing Magnus thinks it was a typical computer move: Strong but not obvious and a bit off-beat.


Which chess engine is behind this app?

As far as I understand the app (whose avatar's age goes up to 23) actually plays better than the living world champion?


“I find playing against computers depressing. I don’t like losing. I also think it's not so useful practise. Even though computers have become more human in their style ... it doesn't help you too much in preparation for playing humans (which are still my main opponents).”

— Magnus Carlsen, in an interview with Peter Thiel at the Churchill Club: https://www.youtube.com/watch?v=ZBnSU-LX1ss&t=23m51s


Have computers and software progressed that much since the Deep Blue days? I didn't realize that chess has pretty much been solved now. Are computers really that much better than people nowadays?


Stockfish has been available for quite a while, and over the last few years has been recognised as being the strongest open-source chess engine.

It's fantastic to see it take on the best commercial engines toe-to-toe and come out on top.

These ratings are computer ratings, and because they are playing very much isolates (computers vs other computers), without enough external human encounters, the ratings are consistent within the computer sphere, but not really like-for-like with human rating lists.

A lot has happened since Deep Blue - that was just a 6 game match, which really only proved that machines can play near a grandmaster level, but without nerves. And at times that is good enough to beat a world champion in match conditions, because the human is more susceptible to the psychological events.

Since Deeper Blue we've seen the emergence of chess engines on personal computers (rather than racks and racks of RS6000 mid-range servers), so Chess Genius, Fritz, Shredder, Junior, Rybka, Houdini and now Stockfish pushing chess engines ahead.

The Chess Genius - Junior levels show chess engines capable of matching grandmasters at blitz/active-play speeds, but still struggling at slower time controls.

Rybka onwards show a computer engine where elite grandmasters are seriously challenged.

Chess hasn't been solved. Just watching Magnus Carlsen's play shows we are expanding chess knowledge incrementally one game at a time. Yes, progress has slowed down, but the incremental improvement are still there.

Chess technique is refined to such a super high degree, but still far short of "solving chess". Perhaps this current generation can beat grandmasters when psychological factors are minimised, it's hard to tell.

It's certainly not as clear cut as a Porsche vs Usain Bolt over 100 meters.


It's pretty clear cut. I think that Magnus Carlsen would have trouble getting more than 2.5 points out of 10 in a match with Stockfish, and that would probably mean 5 draws and 5 losses. GMs have no interest in playing computers publicly because it wouldn't be a close match.


That's a surprise to me. I've always thought that the reason we stopped having computer vs grandmaster is that the computer will just beat the grandmaster absolutely.


In 2006, Deep Fritz 10 beat Kramnik (then world champion) with a score of 4-2 [1]

On the Computer Chess Rating List, Stockfish is currently about 350 elo points stronger than Deep Fritz 10. [2] That means Stockfish would have about 88% chance of winning vs Deep Fritz 10.

[1] http://en.wikipedia.org/wiki/Human%E2%80%93computer_chess_ma... [2] http://www.computerchess.org.uk/ccrl/4040/rating_list_all.ht...


A six game match is not a statistically significant set of data. And Deep Fritz hasn't played many humans in those 8 years since.

The Deep Fritz on the rating list, is that the same Deep Fritz that played Kramnik? (Notably the hardware and software version used may be different - perhaps the Deep Fritz on the rating list is weaker than the one that played Kramnik?)

And also, be careful trying to compare computer-list Elo with human-list Elo. Because participants on both lists are isolated from each other, there is a tendency for one set of ratings to be inflated/deflated compared to the other. We see this in international chess where countries that don't have regular FIDE tournaments, players either seem to be significantly stronger or significantly weaker than the prevailing norms in the bigger pool of players. South Africa, Myanmar are two such examples.


You are correct, top computers beat any human player today.

http://en.wikipedia.org/wiki/Human%E2%80%93computer_chess_ma...


It sounds like you think humans can still beat top computers? According to my research the last time a human beat a top computer was 2005. Almost a decade ago!


Computer software don't play that many human tournaments. It's a rare sight, even when they were clearly weaker. There's a lack of data, so the result is inconclusive.

Computer software doesn't play chess. It doesn't understand positions. It has a bunch of algorithms and processes that turn a board position, tries each candidate move, turns the resulting position into some sort of number, through an evaluation function. Goes down a tree of that until either it reaches a definite conclusion, or reaches a depth where trying to go deeper takes far too much more time.

All of this is an artificial simulation of how chess is played. And it is, long-term, at the mercy of the accuracy of the evaluation function. Because right at the end of it's search-depth, it has to evaluate that position, effectively "a guess".

The most accurate way of evaluating a position is to try each move and go down a search tree of best moves until you reach a definite conclusion. But the evaluation is used because at that point it is computationally too expensive to go down the move tree any deeper. It's a fudge of brute force analysis - there isn't enough computational resources available to go any deeper, and so the computer must guess. This is the horizon effect, computers can't see past it.

That evaluation function is a human written piece of code, that takes various on-board factors: piece placement, pawn structures, strong/weak-squares, king-safety, piece activity, central control. In effect, the human is trying to program intuition into the machine. Humans don't understand intuition, let alone program a computer to do it.

Chess strength of software is determined substantially by the number and speed of CPUs, Memory capacity, and the evaluation function. The evaluation function is the weakest part of that chain, so there's considerable effort to hold off the use of the evaluation function for as long as possible.

I think only the Rybka developers spent more time trying to teach the engine how to play chess, and that proved more successful for a few years than the "more power quicker" led industry.

The evaluation function is the most difficult part of a chess engine. It is the typical AI problem. And humans can only take that so far. But how do you find a human who can comprehend how a grandmaster thinks about a chess position and determining the right move, and still be capable of emulating that process in software. At least Rybka's developers were International Masters.

Also, humans have the strength to adapt and refine - patch their own chess playing abilities. Look at Carlsen's style, it's an ever more refined Karpov style, which itself was a more refined Capablanca style. Carlsen excels in the kinds of positions computers don't manage well - deep strategical long-range plans, well executed. A lot of Carlsen's chess strength is intuition and feel, with an impeccable analysis to confirm his hypothesis. And he's one of the post-Chessbase crowd, grown up learning chess with computers. That is an opponent a computer should fear, if it could ever comprehend the notion.

So yes, in terms of chess playing strength, humans still play chess better than computers.


Although it is pretty clear already that it is your position, let me make sure: it is your position that Magnus Carlsen has a significant chance of winning against any existing chess-playing program (no matter how strong or how powerful the hardware it is running on) even when Magnus has no access to a computer during the game?


> So yes, in terms of chess playing strength, humans still play chess better than computers.

... but humans can't beat top computers any more? You're not making any sense here. The fact is no human has beat a top computer in almost 10 years. Not even once! Claiming that humans are still better is just nonsense.


The computer is incredibly strong and there is no interest for a Man again Computer match but I wouldn't say it's close to being solved or that it's impossible to make further progress for three reasons:

1) Computer vs Computer can still go both ways so clearly the one chess engines make mistake others can exploit; 2) Some sequences are still hard find for computers, e.g. [1]. The long king walk by White is beyond the horizon of the computer. 3) Computer + Man against Computer + Man correspondence matches do benefit from human intervention.

[1]: http://www.chessgames.com/perl/chessgame?gid=1124533&kpage=5


It wouldn't surprise me if the top players regularly played against the best algorithms as part of their training.


It's actually not that common. Players will use chess engines to analyze positions, but they will rarely play against them because it doesn't provide realistic practice for an actual chess match.

For example, it may be reasonable to play an aggressive variation against an opponent because you think they might have difficulty finding a response in time pressure, but a computer can make precise calculations in any situation, and so such a strategy almost always backfires.

What's more, chess is often abstracted at higher levels in terms of things like long term plans ("I want to put pressure on the c7 pawn and control c6") instead of concrete material gains, which allows players to make progress even in positions where there are no direct threats and no sensible exchanges of pieces. Computers when faced with such situations will know that the position is objectively drawn and so will just shuffle their pieces around aimlessly, and playing against this kind of thing is not very good practice for actual human opponents who will try to find ways to beat you anyway.


Only realistic if they were preparing for some sort of Man vs Computer tournament.

Computers don't play like humans, and they are consistent in their weaknesses as well as their strengths. As players are more exposed to playing against various chess programs, they learn what positions computers are not so good at (long-range strategical themes, beyond the typical move horizon). A local optimisation, of sorts.

So players start adopting an anti-computer style of play, which requires a different mind set to pull off. That in turn affects their natural style of play.

So I argue the opposite, for preparing for top-flight tournaments, players probably avoid / severely limit playing against chess engines, to avoid this natural anti-computer bias to their play.

Sure, the engines are good for checking variations and analysis, as an assistant. But not as a leader, nor as an opponent.


Olympic sprinters do not practice racing against race cars. Maybe for a publicity stunt. But not for improvement.


Stockfish 5 was released yesterday: http://stockfishchess.org/

As mentioned elsewhere in this thread, Stockfish is just an engine - you must install a GUI separately. XBoard is well known, but there are better alternatives:

http://chessx.sourceforge.net/

http://scidvspc.sourceforge.net/


I always thought of the heuristics for evaluating a chess position as the really hard part of building a chess engine; i.e. how do you capture all of the positional subtleties in a number to feed into minimax? But looking at the source, it's not really that complicated [1]. Can someone who knows more than me comment on that? Is it that the innovations are elsewhere? That good chess really can be boiled down to < 1000 LOC? That the numbers in this heuristic are just super expertly tuned?

[1] https://github.com/mcostalba/Stockfish/blob/master/src/evalu...


Nearly all the evaluation terms in Stockfish have been extensively tuned. Joona Kiiski used the SPSA[1] algorithm on a lot of them. Others have been hand-tuned using tens of thousands of games per attempt on fishtest [2]. Fishtest actually just recently got support for running SPSA tuning as well.

There is also a strong bias towards simplification, so if an evaluation feature is not proven to be an improvement it will be removed. Over the last few Stockfish versions, the # of lines has actually decreased in each version.

[1] http://en.wikipedia.org/wiki/Simultaneous_perturbation_stoch... [2] http://tests.stockfishchess.org/tests


That's helpful, thanks.


What separates one chess engine from another is its ability to efficiently navigate and evaluate the game tree. Stockfish effectively discards probably 95% or more of the nodes in any position. Easier said than done, better not discard the best move in that 95%. Evaluation is relatively simple, a fancy lookup table. They say love covers a multitude of sins. Well, searching one move deeper than your opponent covers a multitude of static positional evaluation mistakes. Searching deeper can figure out the complexity of the position better than anything that can be statically evaluated. That's where virtually all improvements exist today, figuring out which moves can be safely discarded.


Are chess engines still trying to play against humans in an interesting way? (I understand they beat human players, but that people feel computers play in dull ways).

Is there a Turing Test for computer chess, where humans and computers play each other and they, and commentators, analyse the play, but no-one knows who is a computer or human until after the commentary is published?

And if we ignore humans are people playing computers against other computers for some kind of machine learning play?

And how optimized for speed is the software? Do they really crunch out all performance they can?

(Sorry for the barrage of questions but I don't know enough about this space to do efficient websearches).


> Are chess engines still trying to play against humans in an interesting way? (I understand they beat human players, but that people feel computers play in dull ways).

Depends on what you mean by dull. Computers play so well that it tends to be a complete mop-up regardless of any "anti-computer" strategies people may try. The dull aspect is the one-sidedness. What's hard to do is make computers play weakly in a human-like way. Lobotomized computers tend to make very inhuman blunders.

> Is there a Turing Test for computer chess, where humans and computers play each other and they, and commentators, analyse the play, but no-one knows who is a computer or human until after the commentary is published?

Not that I've ever seen, though it still wouldn't be much of a challenge. Computer moves are pretty easy to spot--generally unintuitive or seemingly paradoxical moves that have a very concrete justification. Especially, as I said above, if they were set to play at a weaker level.

> And if we ignore humans are people playing computers against other computers for some kind of machine learning play? I'll let others answer this, but it would surprise me if nobody was. Still, improving evaluation heuristics and analysis efficiency seems to be yielding better results than just machine learning.

> And how optimized for speed is the software? Do they really crunch out all performance they can? Yes. The more positions you can examine per second, the deeper your search tree can go, and the better your evaluations, etc.


> I understand they beat human players, but that people feel computers play in dull ways.

Without knowing anything about chess, I'd say that makes humans sounds like sore losers. I wonder if this will lead to having tournaments where you don't get points for winning matches but rather get judged on style by a panel of (human) judges...


In the 1800s, most chess was much more aggressive, and it was frowned upon to reject an offered exchange of pieces. Consequently, games were faster, moves were riskier, and everything was arguably more interesting.

In other words, modern humans have been playing in dull, more reliable ways for over a century, so even if not sore loserish, it's at least a bit like the pot calling the kettle black.


Machine learning is sometimes used to train Go pattern evaluation functions, but we've gotten so good at Chess heuristics that there's very little low-hanging-fruit for ML techniques to pick.


TCEC is cool but has less statistical power than many ratings lists out there, which show that Houdini, Komodo and Stockfish are very closely matched, with Houdini having a slight edge at long time controls and a moderate edge at quick time controls. Stockfish does release more frequently and I'm not sure which version competed in TCEC, but until the lists catch up this article is fluff.


Houdini had a slight edge against Stockfish DD, which is a few months old. The latest Stockfish version (v5, very similar to the version that competed in the TCEC Superfinal) is ~60 Elo stronger, and demolishes Houdini at all time controls. It should soon start hitting the more conservative ratinglists.


"Demolishes"? Hardly. It is so far tied with H4 on IPON. Even if it winds up on top, it will not be by a large margin.


(Side note: what the hell is that website trying to do to my computer? It's trying to open so many connections on weird ports!)


lichess opens only one websocket connection, on a port between 9021 to 9029. That port range prevents a weird behavior on firefox when the connection is interrupted.


Looks like they're using a bunch of websockets for something. Probably that live player count up in the navigation.


I'm rather surprised at how relatively simple and small the codebase is: https://github.com/mcostalba/Stockfish/tree/master/src


Especially interesting to see everything hardcoded into C++. Quite different from most modern codebases that use a mix of languages, configuration files, etc.


Just try havin fun.. http://en.lichess.org/SMVJP07p The strongest player.. me kinda noobs..


lichess doesn't seem to be giving it enough juice to perform at its stated levels at the moment.

On my first try I managed to draw the highest AI level, rated at 2510, while my rating is under 2000 irl. (I was unable to find an "offer draw" button so relied on the 50-move rule) Against stockfish running on my PC that would be impossible. http://en.lichess.org/reDfuSvI


Have you actually read the article? It's all explained http://en.lichess.org/blog/U4mtoEQAAEEAgZRL/strongest-chess-...


I did. I was complaining about the rated strength of the AI levels, they're off by a wide margin.


That site's pretty impressive. They're open source and give away for free what Chess.com charges for.


I don't think that the present situation, when the top chess playing program is free and open-source, is good for innovation.

I estimate that it would take me six months of work to get to the top-20 in the world, and I don't see how I can justify that work to myself.


I did not downvote you.

Your comment seems either ignorant of the amount of work involved, or very arrogant about your skill, but does not provide any information for me to judge.

Why do you think you could beat even rybka with just six months of work?


Rybka is better than top-20, so I did not claim that.

I was a half-pro ~10 years ago. I won the championship of my country. I wrote an M.Sc. thesis on evaluation tuning. If I'd use the standard approach that I already know, 6 months is a conservative estimate. The question is - what for?


>The question is - what for?

Uh, to win prize money?


Seems like an idle boast to me. Also why isn't open source good for innovation?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: