One of the most striking differences between human and electronic chess players is that humans learn from their mistakes. Suppose a beginner loses a piece to a motif that was previously unknown to him, e.g. a simple pawn fork. Ideally, after learning the motif he will not fall for this trick again and will avoid the loss based on his experience.
For a long time things were different with chess engines, which would persistently repeat the same mistake over and over. This could be observed very nicely in pure computer matches, where certain lost games could be reproduced in identical form without difficulty. After the first triumphs, it was also unsatisfying for the user if he could always defeat his program with the same trick or the same sequence of moves. So the obvious idea was to implement an algorithm in the chess engine that would eliminate this unintelligent behaviour and make the program a more difficult opponent to outwit.
An initial approach was implemented commercially by the Americans Kathe and Dan Spracklen on the Elite Avantgarde chess computers from Fidelity. In computers of this series, a particular move was no longer played if in the immediately following move the evaluation dropped drastically. As an alternative, the second-best move was simply played. Clearly this method was effective mainly in tactical terms, because positional aspects that were difficult for the computer to recognise but led in the long term to a bad position were not considered at all.
The program features sophisticated learning functions. The learning function has the following goals:
• Repetition of winning games or avoidance of repeating losing games
• Improved performance in games and analyses
• Recognition of combinations
• Independent improvement and modification of the openings book
Most current chess engines implement these requirements via the hash tables. The critical positions, including the evaluation, are permanently saved in a learning file. When a game starts, the learning file is loaded into main memory and constantly checked to see if an entry exists for the current position. In practice this means that every time a clear change in evaluation occurs during the calculation, the corresponding position is saved permanently along with its evaluation. If a position that has already been learned needs to be calculated again, the program can use the stored information and play a potentially better move. This technique represents a certain advance but is by no means optimal. The method still only takes effect after the evaluation has dropped drastically. The preceding positional structures that led to the critical position are not taken into account by this method. A further weakness of this procedure is that it only considers identical positions stored in the learning file. A real breakthrough in terms of artificial intelligence would be if the learning function also took effect in situations where a similar motif occurs. For a human this is no problem, since he can transfer the earlier experience to situations that are not 100% identical with the original.
The program autonomously modifies the openings book. Unfavourable lines are simply downgraded in the playing preference or disabled, while opening variations with clearly positive results are given a higher preference by the chess engine. This method has the great advantage that the program's choice of moves in the opening phase optimises itself in the long term. As a result, the program is able to sort out bad opening variations and to aim for advantageous variations after they have been played once.