Author: Robert Hyatt
Date: 17:39:22 07/11/02
Go up one level in this thread
On July 11, 2002 at 18:37:45, Rolf Tueschen wrote: >On July 11, 2002 at 11:57:05, Robert Hyatt wrote: > >>On July 11, 2002 at 09:03:20, Rolf Tueschen wrote: >> >>>On July 10, 2002 at 11:04:29, Robert Hyatt wrote: >>> >>>>Here is what happened. >>>> >>>>During the early Summer, Bert Gower and I were playing nightly games using >>>>Cray Blitz running on a vax vs several different micros. We were running >>>>about 100 nodes per second and doing 5 ply searches. We were doing this to >>>>get ready for the 1985 ACM computer chess tournament in Denver, and we knew >>>>I was moving to Birmingham in August to start work on my Ph.D. >>>> >>>>We noticed that we were generally tactically stronger than any of the micros >>>>we were playing against, and in tactical situations, we won easily. But on >>>>occasion, we would create a "hole" in our pawn structure that would hurt us >>>>in the endgame where the opponent could infiltrate off-side and cause trouble >>>>since we were both doing pretty shallow searches. >>>> >>>>To fix these holes, I added two lines of code into the pawn evaluation loop >>>>in Cray Blitz and further testing showed that we had "closed the door" on the >>>>pawn hole problem and we lost no more games due to that problem. >>> >>>Just to make this clear. This historical anecdote is a masterpiece and should be >>>told to every chess programmer. At the same time your story shows the main >>>weakness of the past decades of computerchess programming. Until this very day! >>>I just wrote a new article on SCW (Thorsten Czub Forum) about the game between >>>JUNIOR and SJENG in Maastricht, a terrible mess for chess, only possible with >>>the modern books and cookings, because no machine could have any idea about the >>>coming endgame. But this endgame, for this specific variation after the sac of >>>the quality on e4 with the best continuation on both sides, is simply won for >>>White. See the game in the databases with a real master as White. To play this >>>anyhow - is for me personally, excuse me, in non-crime vocabulary, "confidence >>>tricksing" on chess. "Tricksing" also on the spectators world-wide who might >>>think that they attend master chess, which is not at all the case. A computer >>>wouldn't even dare to play the Marshall Gambit without exclamation marks in its >>>books! You know, SJENG can play just to the exchange on e4 but is unable to see >>>the difference between the bad Qd7 and the better Qh6. That is what I was >>>talking about. There is simply no consistancy in the play of the machines with >>>today's book-hypocrisy of course. >>> >>>The question from an interdisciplinary interest's standpoint is, why you at the >>>time being did _not_ reflect about possibilities to find programming "tricks" >>>closely related to chess itself. Why you did think that by a comparably more >>>"stupid" or "magic" approach you could better win against comparably less strong >>>machines? In other terms. Why didn't you reflect about real solutions, coming >>>from chess, to find the right moves, also better later in the endgame? >> >>You are making comments without having "been there". The issue is this: > >Can you spell 'interdisciplinary'? > > >> >>If a program doesn't have some particular evaluation term, and that fact can >>be used in the majority of games to beat that program, then something has to >>be done. Because that particular term is missing, and therefore wrong 100% >>of the time. Doing _anything_ to help is a good idea, even if the "new term" >>is only right 50% of the time. Otherwise you lose 100% of the games, now you >>only lose 50%. A significant gain. >> >>On the other hand, if you add something that is wrong 5% of the time, and it >>causes you to lose 5% of the games you play, while if you don't use that term >>you only lose 1% of the games you play, then the new term is not productive and >>should be canned. >> >>Neither of those applied to the change we made in 1985. We didn't make a >>change to "cook another program" as we were playing several different programs >>plus humans at the weekly chessclub meetings, and we noticed this weakness >>from time to time. And after adding the new pawn hole eval term, it >>_definitely_ played far better in those positions, whether against humans or >>against computers. But running on a VAX. Not a Cray. > >Thanks for all the details. > >> >> >> >>>Or this. >>>Would you have changed your code this way also against equally strong or >>>stronger (just joking) machines? Or was it all a consequence of your own >>>"strength" in chess? In just another variation. Why didn't you try to find >>>technical mirrors of real chess, chess of its best possibilities? Of course your >>>solution was something from chess but not reaally sound. BTW what do you mean >>>with testing? Against other machines or human players? >> >>Both. And the solution _did_ come from "real chess". In fact, it came >>from GM Julio Kaplan who worked with Harry Nelson regularly in tuning Cray >>Blitz. >> >>> >>>[Just added: why did you never feel unconfortable with programming tricks, said >>>to be successful in 98% _only_. >> >> >>See above. If the trick works 98% of the time, then that is a 2% error rate. >>What is the error rate _without_ the trick? If it is > 2% then the trick is >>a "winner" overall. yes, it would be nice to have it work 100% of the time, >>and in fact, many eval terms do just this. But it isn't always possible due >>to time constraints within the search. And 2% error is better than any percent >>> 2 percent. >> >> >> >> >> >>>I mean what with the 2% with deterministical >>>certainty? For me such a procedure is _wrong_. >> >>That's because you aren't a chess player. > >Why do you need alsways such wild guesses? Don't worry about my chess. :) I didn't make a "wild guess" I made an observation based on data you presented. :) > >>As a human, I do this _all_ >>the time. I often don't "know" and just "take a chance". The only thing >>I can compute with 100% confidence is a forced mate. > >Yes. Bad luck. But I was talking about the determinism of computers. Having in >mind the possibilities to exploit weaknesses by human experts. This is a difficult problem to handle. There are solutions to some issues, using various forms of learning. Others are more difficult and are one of the things that (at present) differentiates man from machine. > >> >>> A good human player will take >>>advantage of such "holes" in your system. Tell me please if it's a typical >>>learning by doing because your opponents were machines and not human players...] >> >> >>As I said, we were playing _both_ while doing this "tuning". >> >>> >>> >>>> >>>>When we got to denver we played not very well and lost 2 of 4 games, with >>>>the new HiTech machine winning the tournament. I was neck-deep in my first >>>>year of Ph.D. classes and just thought "seems that several have 'caught up' >>>>with us" and let it go at that. >>>> >>>>The next year, at the WCCC tournament in Cologne, we won easily in the first >>>>round, but lost in the second to a program that really had no business beating >>>>us (we were running on an 8 cpu Cray I believe). >>> >>>The same question as above. Did you concentrate in your code on chess or just >>>mastering your machine? ;-) >> >> >> >>I have no idea what that means... >> > >Just mentioning something you once had written in a neighbour forum. I don't remember using the expression "mastering your machine". If you mean optimizing for the Cray, perhaps... > > > >> >> >>> >>> >>>>After losing in round 2, we >>>>started looking to see what was wrong. It was playing _very_ passively with >>>>its pawns and its score would climb as the opponent pushed his pawns. On a >>>>"whim" I commented out the two lines of code dealing with pawn holes. Suddenly >>>>it started finding the moves it used to find. In games where it played horribly >>>>passively, it suddenly started to play aggressively as it used to. >>>> >>>>We left those two lines of code out, and we easily won the next three rounds, >>>>including beating HiTech in the final round in a convincing way. A way so >>>>convincing that Berliner accused of of cheating because "no computer would >>>>play some of those moves." >>>> >>>>A change that worked _great_ at 100 nodes per second and five ply searches, >>>>turned out to be terrible at 9-10 plies. After a lot of study, it turned out >>>>that the pawn hole code was covering a hole that other eval terms were handling >>>>with the deeper searches. Which basically made holes twice as bad at 10 plies >>>>as they were at 5 plies. Removing two lines completely changed the character >>>>of the program, and it also _clearly_ shows that an eval for a shallow search >>>>can be quite different than what is needed for a significantly deeper search. >>>> >>> >>>Just to explain Vincent's difficulties! You have forseen it before the >>>tournament in Maastricht. Give us more details about the dependencies between >>>hardware and resulting qualitative differences. >> >> > >The following chapter is very important for me and many newcomers. Thanks again. > >>I don't know how to be very specific. Each machine offers particular >>architectural features that can be used to play chess. IE the cray is a >>vector machine and likes to work with arrays of data in parallel. It also >>has a _huge_ number of user-accessible registers (roughly 150, not counting >>the 8 vector registers that hold 128 words each). Parallel machines offer >>another performance advantage. But with that advantage comes some architectural >>quirks the engineers had to include to make the design (a) feasible; (b) >>affordable; (c) buildable; (d) scalable; (e) etc. And a program has to >>take advantage of the good features while avoiding the problems caused by the >>bad features. This takes a great deal of time to "get right". It took us >>_years_ to develop vectorizable algorithms for move generation, attack >>detection, etc. More time to code in assembly so we could use all those >>registers to avoid memory traffic. More time to handle the SMP features on >>the cray but not on other machines (very efficient semaphores, shared registers >>between cpus, etc.) This is _never_ a 2-week process. It is more a process >>measured in terms of years. > >Yes, but you must start the process on a particular day. And you have no >alternative. So doesn't Vincent. > >Rolf Tueschen Never said otherwise. But it is unrealistic to think you can move to a brand new architecture and run like blazes. It is more likely that you will actually run slower until you work around all the architectural quirks that are killing your initial performance. > >>> >>>> >>>>What if you only do very shallow searches. So shallow that you can't under- >>>>stand some simple positional idea. You add eval code to handle that. Then >>>>you search far deeper on different hardware and you both see the consequence >>>>of the positional idea thru search, _and_ you see it thru eval. A "double >>>>dose". If you tune the positional term down so that it doesn't double-deal you >>>>on fast hardware, it is ineffective on slow hardware. If you turn it up so that >>>>you don't make the positional mistake on slow hardware, you might find yourself >>>>paranoid about the problem on fast hardware since you see twice the penalty. >>>>That is what happened to us. Could it be avoided? No idea. But it _clearly_ >>>>can happen. It _did_ happen for one well-known program... Mine... >>> >>>The Hsu team of IBM did avoid it by introducing GM Benjamin into the testings. >>>IMO he had to check nonsense and contradictions of the play in relation to the >>>books. >> >>Apples and oranges. The DB guys _never_ tried to tune their program while >>running at 1/1000th the speed of the real machine. That was the problem we >>fell into. They had access to their machine all the time and could test in >>any way they wanted. We had little access to the Cray except right before >>an annual computer chess tournament, so all our development was _forced_ >>onto a VAX, which was far slower. >> >> >> >> >>> >>>> >>>> >>>>If you play on ICC long enough, you learn that you have to "turn up your king >>>>safety" to survive against IM/GM players in bullet/blitz games. Otherwise they >>>>attack you before you know you are being attacked. You then discover that this >>>>makes you very passive in long time controls. And you have to turn it back down >>>>or else you play so passively you get squeezed to death. Happens to most >>>>everyone that plays there. You get the right "setting" for say 1 0 bullet, >>>>then at game/60 minutes you become way too passive. Or vice-versa... >>> >>>I hope that you finally agree that Kasparov was far from trying such subtile >>>methods in 1997 against DEEP BLUE II. More he wasn't even able to try. Simply >>>because he didn't know the machine's performance at the time being. >> >>Kasparov was strong enough to discover the problems, if they existed. He did >>it in match 1. But not in match 2. Which suggests that the problems in match >>2 were _very_ difficult for anyone to "pick out". If the "surprise" wasn't a >>factor in match 1, it seems dishonest to suddenly claim it was an issue in match >>2. The only difference in the two matches was the "outcome". >> >> >> >> >> >>> >>>I know that you commented already, but this thread showed us that most people >>>still have no understanding for the real connections between hardware and >>>software. For some FRITZ is already as strong as DBII. >> >>Some believe pigs will one day fly, too... >> >> >>> >>>Rolf Tueschen
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.