The last hurrah for intelligent mistakes

12/27/2005 – The ChessBase Workshop column on "intelligent" computer mistakes has generated more e-mail than any other T-Notes/CB Workshop column over the last eight years. In this week's column we close the book on this topic with a final batch of reader responses. Workshop...

ChessBase 14 Download ChessBase 14 Download

Everyone uses ChessBase, from the World Champion to the amateur next door. Start your personal success story with ChessBase 14 and enjoy your chess even more!


Along with the ChessBase 14 program you can access the Live Database of 8 million games, and receive three months of free ChesssBase Account Premium membership and all of our online apps! Have a look today!

More...

Once again we go to the mailbag for more comments on the "Intelligent Mistakes" discussion. This, however, will be the last time we print reader responses on this topic; it's time to move on to other things.

However, before we close this can of squirming vermicelli, I would like to again thank everyone who took the time to respond to this topic. Y'all are the best!

Reader comments are once again in regular type, while my responses are in italics. Here we go...

------

I read the feedback on your 'Intelligent mistakes'-column and would like to express some thoughts on the subject.

A lot of the feedback is focused on simulating intelligence by not selecting the best move returned from a minimax search. The main problem with this approach is that the program will appear to play rather randomly. In a normal case where the best move is always selected the program plays with a plan. It has found a position it can reach, which it thinks is favorable, and its principal variation leads it there.

The problem with not selecting the best move is that there is no plan, except constantly avoiding good positions. This leads to inconsequent play since the programs principal variation changes from move to move a whole lot more than when the best move is always selected.

My proposed solution to this is to instead implement a bad evaluation function. Let the program judge a position in the same faulty way as a weak player does and it will play non random chess, including so called intelligent mistakes. This is because it is now playing to reach what it thinks is a good position instead of just playing any move that avoids a truly good position.

Andreas Olausson
Lund, Sweden

Thanks Andreas! As we discussed in earlier columns, the trick would be to figure out how/why weak players evaluate positions as they do and then figure out how to write an algorithm for it. -- SL

------

I recently read your "intelligent mistakes" feedback column, and I found it very interesting. I have spent several years doing research and working with statistics, and while I think the general idea in the letters you quoted was correct, they were all heading in the wrong direction.

I think everyone agrees that we need to limit the "intelligence" of the computer, but using randomness in picking lines or forcing it to use the 3rd best line is not what will work. A 3rd best computer line is still a computer line. What needs to happen if you want a realistic human simulation is something like this:

First, you need to figure out what is the difference between a computer and a 1500 player. I know it seems like common sense to those of us who play, but what you really need to work with is concrete data. A good start would be to take a database of rated games- such as 1000 games where both players are 1500-1600. Analyze these with a chess program, and create a new database with a computer score for each move. From here you need to evaluate the differences; when does the computer score suddenly change (3 pawns up to even, etc), what causes a player to drop a piece, or when does a player overlook a back rank mate threat. All of these things can be expressed in numbers and once in this format they can be used to tweak an engine that will respond in a human fashion.

Another good idea is to use the concept of neural networks, which sounds like Sci-fi but are commonly used. Basically you would take a chess program and have it analyze a set of games (for example 100 games of 1500-1600 players). Then you change one or more variables in the chess program and reanalyze the set of games. If it selects moves that are closer to what the real moves were you keep the new version and begin again. After thousands (or more) iterations you will come up with something that is reasonably good at predicting human moves.

Sorry this is so long winded, but I think until we really quantitate how humans play chess we will always be playing unrealistically handicapped computer chess (it hangs a rook and then uses a 4 move combo to win a pawn)!

Kirk Sloan

Thanks Kirk! Not "long winded" at all; very succinct and to the point. -- SL

------

I read the Chessbase article FEEDBACK ON "INTELLIGENT MISTAKES" and I'd like to make a suggestion.

If a computer plays well then suddenly "drops a piece or hangs a pawn without reason", it is obvious that it was artificially dumbed down for one move. Nobody enjoys winning that way. So how to dumb it down uniformly for an entire game?

Humans usually lose because of fixation on one strategy, while the opponent's play makes that fixed strategy irrelevant. (Think of the Duke of Isouard and his pal trying to accumulate material against Morphy.) Computers on the other hand are opportunistic: if they spot any kind of gain at the end of an n-ply search, they go for it, whether that be the win of a pawn, getting a pawn closer to promotion, obtaining more landing squares for a rook, etc.

So put the computer under the spell of an idée fixe, e.g., weight the moves in favor of king safety, and it will miss subtle opportunities that fall under different chess objectives such as material gain.

This poses a second question, how to choose which idée fixe for a particular game? Ah, this is where programmers have room for creativity. How about alternating from one fixed objective to another, as humans do? Or starting with one idea then pursuing an opposite one when one is a certain number of points ahead, or behind?

It's really about applying human psychology to a machine process. Paradox: Why does this make the computer weaker?

CESAR PACIS Manila, Philippines

Thanks Cesar! Here again the problem is how to quantify such strategies, especially in light of the fact that computers are notoriously bad at strategic "thought". On the other hand we've just seen 5+ years of engine development along "knowledge" lines rather than "brute force" lines, so perhaps programmers can use a variable weighting factor to shift an engine's emphasis from one set of knowledge heuristics to another set "on the fly" within the same game. It's an interesting idea. -- SL

------

Thanks for your excellent article on the pros and cons (or the existence and non-existence) of intelligent mistakes. This email may be too late for you to pay attention to it. I was on vacation, and I didn't take the time to scroll back to old Chessbase articles until today.

Fritz's "Friend Mode" is pleasant, but it does get stupid at times. Even at low handicap levels it refuses to checkmate the human. I have a suggestion for a handicapping algorithm for an engine that is scalable for players from beginners to good club players. It's based on the principle of making the second best move. Quite simple: if an engine has 20 seconds to calculate, it should spend 10 seconds on picking the best move. Then it should exclude this move and pick the best move of those remaining. Both will have a score. (The second move might be better after deeper analysis). The handicap routine should then make the weaker of the two moves, as long as the score difference between the two does not exceed a user-definable threshold.

The advantages of this procedure are:

1) It's easy to program.

2) The halving of the calculation time weakens the engine minimally in itself.

3) The threshold value will prevent ridiculous errors being made (unless it's set too high).

4) If the human makes a big blunder, the engine will cash in immediately.

5) The "errors" are cumulative, so the engine doesn't give the human an advantage and then fight bitterly not to fall further behind.

Think it over. If the threshold is set to 1.1 (probably a good level for a beginner) the program will start dropping pawns, but hang on to its pieces. Until it's too late to save them.

If the threshold is set to 0.5 (this might be a good setting for a weaker club player) the program will gradually make positional errors. Maybe the human is clever enough to take advantage of them. Maybe not.

If the threshold is set to 0.1 the program will almost be playing at full strength. Almost. It would take a strong player to find the chinks in the armour.

I hope you haven't already closed the "intelligent mistakes" chapter of your Chessbase workshop. Otherwise I've been writing this email for nothing.

Mike (Sunset Dancer) Hood

Nope, you got it in just in time. Thanks Mike! -- SL

------

I don't know the actual steps that a computer actually takes when evaluating a valid move on the chess board, but I imagine it is some thing along the lines of these of steps:

1 Evaluate the current position of pieces
2 Assemble a list of possible moves
3 Evaluate the outcome of each move
4 Repeat 1-3
5 Using the scores from 3 calculate the best line to follow and thus the required move to play.

A computer can take each step and work them through to completion in a very brute force manner i.e. it could( given time ) evaluate every single move from a given position( i said given time! ) Where as us mortals make decisions intuitively about which plays to pursue as possibilities, I assume forward-pruning is something to do with how a computer brings this evaluation period down.

I'm not a great player( but I'm very keen to improve!!) And I know I blunder! And I know I blunder and not even know I've blundered! Usually due to me not evaluating the complete board and the pieces on it, I've become focused on my own pieces and sometimes even a subset of them.

So rather then 'give odds' and play like a demon with the other pieces, would' t it be better to give the computer 'incomplete' information at each stage. i.e. at the evaluate the current moves step, only tell the computer the scores for the squares immediately surrounding his pieces or even down to the few pieces he has played last. And similar for the other stages. And at the evaluate outcome introduce an error factor. So the info that the computer is using is flawed to start with

Another thing that make the computer stand out is that it plays its move as soon as its made up its mind, usually very quickly. so the computer only takes 1 second for the entire game! Its annoying and effectively halves the thinking time for the human player.( At least it does in CM, I don't have fritz yet, roll on Christmas! )

Adrian Martin

Here's hoping that S. Claus leaves you a nice surprise under your Christmas tree this year. Thanks Adrian! -- SL

------

That's it! My Inbox is now empty. Thanks again to everyone who contributed their ideas to this discussion!

Next time around we'll have a couple of product previews. Until then, have fun!

You can e-mail me with your comments on ChessBase Workshop. All responses will be read, and sending an e-mail to this address grants us permission to use it in a future column. No tech support questions, please.


© 2005, Steven A. Lopez. All rights reserved.


Discussion and Feedback Join the public discussion or submit your feedback to the editors


Discuss

Rules for reader comments

 
 

Not registered yet? Register