How about this stupid simple idea. How hard is it to program a computer to play chess, but only giving it the rules. Make it so that when it gets mated that is bad. Give it a storage database, so that it can learn from its mistakes, but only in the "I got mated, therefore I must try something else" sense. Or I suppose, the "I checkmated the other guy so that was a good move" sense. Then simply open it up to challenges from all of RHP, or all of the interweb, and let it learn the game just like we did. Lose, lose, lose, learn something, lose, lose, win, learn something. Would this lead to a computer that played more "human" chess?
Originally posted by Exuma How about this stupid simple idea. How hard is it to program a computer to play chess, but only giving it the rules. Make it so that when it gets mated that is bad. Give it a storage database, so that it can learn from its mistakes, but only in the "I got mated, therefore I must try something else" sense. Or I suppose, the "I checkmated the other guy so th ...[text shortened]... lose, win, learn something. Would this lead to a computer that played more "human" chess?
It's "learning process" would be extremely slow, even if it was it somehow playing a million games a second. The storage database would grow unfeasibly.
Suppose it was White and it played: 1.f3 e5 2.g4 a6 3.Nc3 Qh4#, what would it learn? If it learned that 3.Nc3 was a bad move, then maybe next time it would try 3.Na3 and so on - a slow process.
If hypothetically the process could be done then I don't think it would play like a human. For example, we're often too materialistic and I don't think this aspect would be reproduced, etc.
Originally posted by Exuma How about this stupid simple idea. How hard is it to program a computer to play chess, but only giving it the rules. Make it so that when it gets mated that is bad. Give it a storage database, so that it can learn from its mistakes, but only in the "I got mated, therefore I must try something else" sense. Or I suppose, the "I checkmated the other guy so th ...[text shortened]... lose, win, learn something. Would this lead to a computer that played more "human" chess?
"I opened with 1.e2e4 and I lost the game. e2e4 must be a bad move." 🙂
The idea is interesting, but it doesn't work in practice.
How would a lost game show which one of all moves leading up to the mate be the bad one? What would happen if I resigned against this AI computer program long before it lead to a mate? What about I resigned when the computer made a bad move (of some reason), would the computer try that move again, and again?
And so on...
As I said, The idea is interesting, but it doesn't work in practice.
Originally posted by FabianFnas How would a lost game show which one of all moves leading up to the mate be the bad one?
You're right, by itself it doesn't show which moves were good or bad. But the process would evolve similar to how endgame tablebases are constructed. i.e. you derive perfect information about the final positions and then work backwards. It would initially learn about positions with mate in one, before using this knowledge to learn about mate in two, etc. Unfeasible in practice, agreed.
Originally posted by Varenka You're right, by itself it doesn't show which moves were good or bad. But the process would evolve similar to how endgame tablebases are constructed. i.e. you derive perfect information about the final positions and then work backwards. It would initially learn about positions with mate in one, before using this knowledge to learn about mate in two, etc. Unfeasible in practice, agreed.
Well, I don't think so. End end-game table is nothing more than a product of massive numbercrunching. There is no intelligence involved.
I once thought of programming an intelligent learning program of another game called [I don't the name in English]. I was reasoning like you. Every loss should provide information to void it in the future. I failed. It didn't work. So I have given it a good thought about the problem.
In theory it would be very well work. In practice - no.
I would very much like to find a program like this, just to prove me wrong though.
Originally posted by FabianFnas In theory it would be very well work. In practice - no.
Is this because of the time and space requirements to learn about chess? If so, then we agree.
Using the same theory, I believe I could get a computer to "learn" how to play tic tac toe (noughts and crosses) perfectly. The theory works; it just doesn't scale to the complexity of chess using real hardware.
Originally posted by FabianFnas Well, I don't think so. End end-game table is nothing more than a product of massive numbercrunching. There is no intelligence involved.
I once thought of programming an intelligent learning program of another game called [I don't the name in English]. I was reasoning like you. Every loss should provide information to void it in the future. I failed. I e - no.
I would very much like to find a program like this, just to prove me wrong though.
There was such a program playing on RHP for sometime years ago. I can't recall the username but it was short and I think started with a c. Somebody figured it out and posted in the forums because it always moved in exact 10 minute increments. Further interwebs searching found a graduate student research project with a similar name. When called out in the forums, it stopped moving and never returned.
Originally posted by tmetzler There was such a program playing on RHP for sometime years ago. I can't recall the username but it was short and I think started with a c.
Originally posted by Varenka Is this because of the time and space requirements to learn about chess? If so, then we agree.
Using the same theory, I believe I could get a computer to "learn" how to play tic tac toe (noughts and crosses) perfectly. The theory works; it just doesn't scale to the complexity of chess using real hardware.
Years ago I did have a go at writing a learning noughts and crosses game inspired by the film "War Games". I managed to reduce the combinations and get it to learn faster by exploiting its reflection and rotational symmetry.
It was written on the Sinclair QL and was rather slow (I think my algorithms were quite inefficient) and it took a very long time to learn anything significant because there were still quite a lot of combinations (probably because I didn't trim them down very well). I wouldn't mind having another go at doing it again on a modern PC. My mathematical knowledge has also improved since the first time.
I have just read the dscp thread and I'm impressed. It appears someone wrote a programme that *learned* how to play better chess (based on early mistakes, and not closing out won positions).
I believe a key requirement of the dscp experiment/test/study was that people weren't aware they were playing a computer so once the cover was blown, so was the experiment, and the programme was disabled. So despite the best efforts of flexmore to not have the account disabled, his bring the subject up resulted in the death of the experiment.
Even if dscp wasn't learning chess (and instead was referring to databases or an automaton to feed an analysis programme), then I still believe a computer could be programmed to learn chess. Why? The simple reason being that we all learned how to play chess with a starting knowledge base of zero - programme the computer to mimic human behaviour.
One often quoted constraint is the sheer number of combinations of moves to test, but I respectfully disagree. I have learned with my own (non-chess) programming that problems that have an (apparent) exponential profile of possible solutions can have massive amounts of nonsensical/illogical combinations discarded - so the number of combinations that need to be tested are drastically reduced. Much like the use of a sieve or a filter.
You could also programme a number of general principles such that the programme sought and took advantage of open files, skewers, pins, forks etc in the mid-game etc plus followed known opening lines for the first x moves, and maybe it always starts with 1 e4 as White. Furthermore you could introduce time constraints and limits on how many moves it looked forward to reduce the analysis combinations. As the programme 'learned' you would instruct it to look ahead more moves (just as humans learn).
On the subject of having played 1 e4 and losing, in order to 'learn' the programme would only unwind the last move and try another. So if it lost at move 10, it would seek another move 9, not another move 1. Where there are no good 9th moves, then it would go back another move and try something else at move 8 (and so on). Yes it may be a slow process but so is learning chess for a (normal) human.
From what I have read there was a divergence of opinion when programmers became serious about chess computers. One way was to "teach" a program how to play and learn, the other way was brute strength through examining positions one by one. Because the speed of processing kept increasing at an exponential level, brute strength won almost by default. It was simply quicker to arrive at a successful program by using the computers speed. Of course this doesn't close the issue forever. Just for right now.
Yes the incomplete game history thing has been an occasional and sad thing, I think Russ was clearing those games out, except that there is a way to correct the game score, and so incorrectly "corrected" games may still be in the database.
@ Andrew, Buzz, Varenka, Fabian (geez I guess everyone sorry)
- yeah that's what I'm talking about. It is a pattern recognition model in a sense. I suppose the computer would still have the machine advantage of perfect recall of every game it ever played, but at least it would have to improve through its comparison to past experience, instead of crunching away materialistically.