[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [computer-go] Using floating point sounds very strange to me
A lot of programs measure influence by means of probabilities, where a
floating point representation is much more natural. So you might see
a point on the board as being BLACK with 0.70 probability.
To understand the nature of this discussion, which was initiated by
the chess programmers in the group, you have to understand the history
of computer chess. Computer chess has always been a contest of
extreme optimization and hardware acquisition. Especially in the old
days, a computer running 50% faster (programs being equal) had a
significant advantage. Some of these programs were insanely fast due
to months and years of tiny optimizations. It was extremely common in
those days to find 1% here, 2% there, another 1/2 % somewhere else and
combine these little tweaks found over time to produce a program that
would be much faster. It was something to brag over to produce an
upgrade that was 25% faster due to these tiny little tweaks. I
remember that we once spent about a month obtaining a 15% speedup,
which was a combination of several individual small speedups. This
was a program that was written in assembly language.
The older Fritz program used to be insanely fast, and this was
achieved by the use of piece/square tables, an extremely fast way to
do evaluation based on table lookup. The Fritz programmer used to
jokingly complain about "those expensive table lookups" killing the
speed of his program. It really was a joke, but it emphasized the
point that everything was under suspicion as a potential bottlneck and
even this would be eliminated if it possibly could be.
So the idea of doing floating point in a chess program, especially to
an old-timer, is likely to elicit howls of derision.
It has been complained in the past that Chess is far ahead of Go in
the sense that it has been around longer, more is known about it, it
has been researched more, etc. But in a way, I think chess has to
catch up. Chess programs seem to be coming to a point where the
quality of evaluation is more critical than ever. It's always been
important but in the past the faster program usually was the winning
program. And there is also the fact that a 20% speedup doesn't buy
what it used to. The program with the better evaluator is now the
favorite if the speed is not grossly unequal (although speed still
remains important.) Even Fritz has changed the way it does
evaluation.
A few years ago, I was experimenting with automated evaluation tuning
and changed all the evaluation terms to floating point doubles in C.
I expected an enormous slowdown, perhaps conditioned by years of
extreme performance tuning. I got the slowdown, but it was
suprisingly modest. I cannot remember the exact slowdown percentage,
but it seems like it was something around 15% or so. At the time I
felt it was almost something I could live with if I had to. In the
end I could find no reason to give up 15% (or whatever it was) but I
never forgot that it wasn't that huge of a deal. Of course it might
be a lot bigger (or smaller) for any particular program, depending on
how much time they spend actually crunching numbers. I believe more
sophisticated evaluation would tend to spend proportionally less time
crunching numbers and more time testing and branching.
Don
Do you really even need integers for playing go. I thought the basic
metric for Go was stones(which may be fundamentally different than an
integer). Maybe this one of those cultural issues that will have to be
over come. I don't know if it is true or not, but I am going to share
it with you regardless, "The Eastern Go schools resemble mathematics
schools, in the training and organization, and that while many
mathematical lemmas and proofs are generated in the west, go lemmas and
proofs are produced in the east."
Have you ever heard that joke, "A don is doing pretty good if he can
count to 1".
Sincerely,
Robin Kramer
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/