Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A Practical, Implementable Self Learning Chess Computer

Author: Graham Laight

Date: 14:19:07 10/18/00

Go up one level in this thread


On October 18, 2000 at 13:24:25, Bruce Moreland wrote:

>On October 18, 2000 at 05:47:21, Graham Laight wrote:
>
>>It's a shame this post was in response to the wrong thread. To save people
>>having to jump between threads, I've reproduced the plan at the end of this
>>post.
>>
>>On October 17, 2000 at 13:46:02, Bruce Moreland wrote:
>>
>>>Your proposal is the same sort of nonsense that you've been promoting for the
>>>past several years, and I'll give you the same sort of response I've given you
>>>for the past several years.
>>
>>You make it sound like you're an expert!  :)
>
>You've posted the same kind of thing several times.  The idea you posted in
>r.g.c.c. some years ago was:
>
>1) Build a collection of patterns and plans.
>2) Figure out what pattern applies.
>3) Make the appropriate move.

Step 1 is half right. Patterns, yes. Plans - no.

Step 2 is right. Nobody has ever argued against the notion that the human GM has
the ability to recognise 50,000 patterns (from research described in "Chess
Skill In Man And Machine"), and 50,000 is a manageable number for a computer
database.

Step 3 is profoundly wrong. I am disappointed with how you've written it,
because it shows that, however many times you've read my ideas, you've not taken
it seriously enough to try to understand it.

Step 3 is to use the evaluation function that goes with the pattern to evaluate
the current node.

>This is terrible on the surface, and the reason is that chess doesn't work like
>this.  Chess positions are organic.  You don't just identify pattern and do
>appropriate thing.  That is what it might feel like in some cases, but there is
>a tremendous amount of discrimination going on in order to realize that it is
>safe or logical to push down a particular path.  I think the only reason that

Absolute nonsense. You think this because you misunderstood step 3. Because in
step 3 we're not selecting a move - we're evaluating a node. And because the
evaluation function is suited to the position, if it's looking at a node where a
pawn has been pushed, it will have the correct algorithms to determine whether
that pawn is now well placed.

>you haven't rejected this is that you haven't really tried to do it.

There is not the slightest iota of doubt in my mind that the systems I have
designed would play well. I discussed it with some of the programmers at WMCCC
2000. The main problem they forsaw was that of obtaining sufficient knowledge,
and possibly of tuning the new knowledge to work with the old knowledge
(although my approach does a lot to remove this problem).

The method would work, and work well. Obviously, the time it would take to
evaluate a position would increase enormously - but if you're not an NPS junkie,
you can live with this.

The additional element of self learning could attack the problem of obtaining
the knowledge, and it's this I want to focus on (given my 100% conviction that
the evaluation function selection system would deliver good evaluations).

I've noticed that you like analogies - so here's one for you. You're like the
birdman who's been trying to make wings from bird feathers all his life. When
someone shows you a diagram of an airofoil wing (as used on airplanes), you
aggressively refuse to countenance its practicality.

>Another argument I used against this last time is that if you can do all of
>this, there's no reason to rely on a bunch of set-piece situations, you can just
>have the thing determine its own plans.

Eh?  I'm afraid I cannot identify with the above statement in any way, shape or
form.

>If you add this enhancement, your idea boils down to:  Understand chess and do
>the right thing.  That is not particularly helpful.

Likewise, the prevailing doctrine boils down to: search some chess positions and
choose your favourite line. Equally unhelpful.

>Your new idea is:  Teach yourself chess.  That is not particularly helpful
>either.
>
>I have one or two more comments interspersed below.
>
>>>Some of the steps toward your solution are important enough that if those steps
>>>could be completed, chess wouldn't be anywhere near the most interesting problem
>>>to use those tools on.  Your "practical" plan calls for enormous work and
>>>several major breakthroughs in AI.
>>
>>Where?  Why?
>
>I can't cope with this at the moment.

And it shows.

>>It's all very well to make sweeping generalisations, but the discussion would be
>>SO much more meaningful if only we knew what these generalisations referred to.
>>
>>>Several of your steps are described in a few sentences, but the amount of work
>>>involved to solve then would be national in scale, if they are solvable by
>>>hmans at all in a practical time-frame.
>>
>>Like the brilliant, well planned, well funded scientific project to evolve
>>humans from chimpanzees, for example?
>
>Any project proposal that describes itself as "practical and implementable", and
>uses as proof of concept that humans evolved from lower primates over a period
>of several million years, and suggest emulating that, would seem a bit to
>ambitious to merit the adjectives "practical and implementable".

Are you saying that a genetic algorithm is incapable of going through 400,000
iterations?

If you're saying something different, feel free to explain!

>>>And tying together these monumental tasks is a plan that could have been devised
>>>by any vaguely technical person during their first few moments of thought about
>>>the problem.
>>
>>The plan is a first draft - it's not meant to be the finished design. Any
>>suggestions for refinements in the plan cordially welcomed.
>
>This isn't a rough draft.  This is the whole thing.  You've added the bit about
>learning, but this is the same thing you have been talking about for like five
>years.

I've drawn upon my previous thinking, but what I want to focus on are the
details of how we can set up genetic algorithms to learn stuff that can usefully
be used in a chess game.

I was hoping that this is where the discussion would go - but I did invite
criticism in any shape or form, so I'm not in a position to complain.

>I would like to be charitable and say that there are some good ideas in here,
>and that perhaps someone will be inspired by something in here and do something
>practical, but I don't think I can say that.  The idea that you can understand
>chess, make moves based upon known plans, and learn from your mistakes, is very
>superficial.  Everyone starts from that point, then immediately realizes, since
>they want to actually build something, that this is too ambitious and needs to
>be simplified.  If you could actually *do* something from this starting point,
>you'd be in great shape, but you don't do anything, you just bring up these same
>issues every once in a while, and think that this puts you in some sort of
>visionary position on top of the computer chess field.

Not on top of - within.

In a world where everyone's glueing together feathers, the man who thinks about
aerofoil wings is providing a useful service (even if he is ostracised by the
feather gluers).

This is a Computer Chess Club discussion forum. I hope that people reading
Bruce's posts are not put off discussing ways in which computers could play
chess!

>Do something, anything.  Any research at all rather than "above the field"
>proposals.  Make some practical progress, no matter how slight.  Then I will be
>able to respond to your next proposal is much more constructive fashion.

I am not 100% without experience. When people talk about "expert systems" (and
things like them), the prevailing doctrine is that the subject area must be
narrow for them to be effective.

However, I have written a demo system in Lotus Notes which covers a wide area of
expertise, and uses a combination of techniques to get to the right knowledge
for the user.

Everyone I have shown it to has been impressed!

-g

>bruce
>
>>At the start of the plan, the first line says it's a first draft.
>>
>>>bruce
>>
>>This post reminds me - you still owe me a beer, by the way!
>>
>>Copy of the plan:
>>
>>The purpose of this is to build a program that can teach itself to do a good job
>>of evaluating chess positions, using only technology that is available today,
>>and can be applied on a PC which can be bought off the shelf today.
>>
>>Steps to building a self learning chess machine - 1st draft:
>>
>>* assemble a collection of evaluation components. There should be sufficient
>>eval components to be able to theoretically evaluate any position, if combined
>>correctly
>>
>>* set up a genetic algortithm to be able to combine these components into a
>>single evaluation function, and to be able to vary them from game to game
>>
>>* write a program that can "categorise" chess positions, and come up with a
>>measure of "similarity" between them
>>
>>* assemble a collection of categorisation components
>>
>>* set up a genetic algorithm to to be able to combine these components into a
>>single categorisation function, and to be able to vary them from game to game
>>
>>* new categories and evaluation functions can be made by combining components
>>from existing evaluation functions (chosen for their "similarity"), when the
>>"similarity" between the new position and existing categories is sufficiently
>>small
>>
>>* seed the system with some categories
>>
>>* seed the system with a categorisation function that works
>>
>>* seed the system with working eval functions suited to the categories
>>
>>* ensure the system is clever enough to get to check-mate from the 1st game of
>>the experiment
>>
>>* start the system playing against another copy of itself
>>
>>* During the game, every legal move will be evaluated (1 ply) and the best one
>>chosen
>>
>>* when the system loses a game, it must evolve. From the move list, the
>>evaluation function used prior to the eval score falling will be subjected to
>>the genetic algorithm, as will the categorisation
>>
>>There is a problem in computer chess that the problem may have occured before
>>the evaluation started to fall. In this system, the problem will be solved
>>because, with sufficient play, the poor evaluation will eventually make its way
>>back to the source of the problem (though other eval functions will temporarily
>>be messed up on the way!).
>>
>>It took roughly 400,000 generations to change chimpanzees into humans (based on
>>average generation of 15 years - a number I admit I've plucked out of the air,
>>but which is at least the right order of magnitude).
>>
>>Could 400,000 generations of the above system produce a great chess player?
>>
>>Comments please!
>>
>>-g



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.