Human Characteristics in AI Program
Hi Z,
I appreciate your thoughts on the matter. I understand your approach is to work towards a win from the starting point. I am interested in working backwards. Allow me to enhance the concept.
The AIProgram will not know what a win or loss is. It knows only when it is it's turn and whether it will play X or O. The human player, after winning against AIP, must tell the program the status: win, loss or tie. All the AIP has in its history file are two things:
1. A 9 square image pattern of each move in a game.
2. The winning pattern in which the human indicates that human is winner by virtue of X's in the 1st column (for example).
At this point, the AIP sees this as a desired pattern to achieve. However, the human plays other games and the results are that there are 8 possible ways to win. Now as you suggest, the AIP initially selects moves randomly until it begans to accumulate useful data.
At this point AIP knows the results to win, but must derive preceding patterns that lead to a win...I think 34 or 26 possible 2nd to last moves that could lead to a next move win.
The AIP must then investigate all moves prior to the last move to see what patterns led up to final win. It searches through database for all pattern combinations. It tries to predict successful preceding patterns of play.
Eventually the program, by playing 100 games with the human, works out all first initial moves that could lead to a tie or win.
It's database will eventually yield two components. 1) History file and 2) Rules for winning file.
Now imagine a variable representing state of happiness. Each time the human wins, the AIP gets sad. Its motivating goal is to be happy which is connected to its win/tie/loss record. The result is that the program is quite content with a tie instead of a loss.
The end result is a program that my children can teach to play tic-tac-toe...much the same as we teach our younger children.
Let me know if this too much rambling and I will stop. My goal of course is to write such a program eventually. You know, it is not a difficult thing for me to write code to crunch lots of data and place it into databases or flat-text files, manipulate 2D/3D graphics. But, making the PC almost human is for me the most difficult thing and therefore the 'holy grail' of my programming pursuits.
Remember the computer program that beat the world's best chess player a few years ago? The problem is that it could not play tic-tac-toe. It did not have the framework to learn.
I would like to create variations of tic-tac-toe by having the human define a different winning goal such as getting X's on 4 corners. The AIP then has the framework to play another game without any coding changes.
Evenutually, it would be interesting to write a program that couple play checkers, tic-tac-toe, connect 4, etc without knowing how to do...but yet capable of learning from a human teacher.
Thanks again for your input and that of anyone else.
Regards,
Chuck