zoey, perhaps you wont read this but I hope you do.
I want to first make a distinction between a machine having an 'understanding' of the human mind and humans programing a machine to behave as if it had a human mind.
The computer is not conscious. It doesn't understand things. It simply performs instructions written by people who do understand things. It is a tool. It no more understands things than does a brick.
The only smarts the computer has must come from human input. Computer science has come up with inventions such as minimax with alpha-bete pruning and so on, but the programmers have always needed the input of human master players in order to tune the program to the specifics of the target game.
The understanding that a master such as you has, and the insight into how other humans think, is all taken as input into the way the program is designed and written. Deep Blue had a hand-picked team of grandmasters working with the IBM Computer guys to develop the program. This is how it has always been done.
It is not possible to capture all human elements of course. But where this cannot be done, the computer has other strengths which humans do not posses, and so it is a blend of human and computer strengths on which the software depends.
That such a program as Deep Blue can be created is, in my view, a celebration of the human mind for two reasons.
Firstly that the coming together of human desires and motivation, psychology, intellect, skill, cunning, spatial and logical capabilities, planning and tactics, ability to analyse opponent's play, anticipation, and competitive spirit, in combination with some of the best scientific minds of the 20th century to produce such an amazing machine is a very significant thing. One commentator at the time remarked that "Deep Blue is possibly the most complex thing ever built my human beings". This is a great human achievement.
Secondly, that it took such an effort to finally beat the best human chess player in history says something about how amazing humans are.
You might, in consideration of this, think that to be asked as a pente master to participate in an attempt to create such a program for pente, a compliment to you and an opportunity to supply something without which the program would surely fail - human input. In other words it would take your input in order to have any hope of creating something capable of beating you. This is a compliment, not an insult.
It has never been my position, and I am sure the same goes for others like piecraft and Aleph1 etc, to suggest that such a program could be successful without that input. I have not changed my position on this at all. I have not made any kind of concession on this point because my position was never otherwise. I have known from the start that master level input is the crucial ingredient.
Lastly, please do not think that because you are not a software programmer that your input is not valued here. Everyone knows you are a genius and extremely creative and an awesome pente master. Your questions and input in this discussion are as valuable as would be your input into creating such a program should you decide to provide it. Your points are well taken and I have had to put some thought into my responses.
I am sorry if you are offended zoey. Please please continue to provide your thoughts on this topic. All your contributions are very much valued.
ahh ok thank you for clearing that up for me. pie's response had me confused and thinking you had some how said opposite when he disagreed with me saying you had already covered my points ext.. and these posts have been very long so ive been finding my self lost in the text.
the way you explained it leaves me not feeling so offended on the idea of a super AI-P2.
although, i remember you said that there would be no need to design the P1 and P2 differently. this although not a programmer my self, i find to be not logical.
a P1 would not need human input so much. just understand the board and brute force ext... to find perfect play each move maintaining the advantage. much simpler to make the P1.
the P2 how ever is not searching for perfect play, its searching for human error, which requires extra tactics to achieve that the P1 would have no use for.
this means that the P1 would calculate faster than the P2 would calculate in my own theory of it. because the P2 would have more criteria to go through as a check list. the P2 like the P1 would find a strong line, but would need to continue searching long after the P1 would had already settled on good enough.
to add to this, and im not 100%, but ive always believed its better to give P1 and P2 to separate opening books to build on. a P1 only needs a tree thats very narrow in comparison. the P2's tree would be much wider. because in a choice juncture the P1 only needs one move to rely on, where the P2 in a choice juncture needs multiple routes sometimes to try something new and switch it up with novelties ext... or to do the other way this time because the type of human opponent makes the other path stronger this time, where last time against the other opponent the other way was stronger, based on human behavior criteria.
z
Scire hostis animum - Intelligere ludum - Nosce te ipsum - Prima moventur conciliat - Nolite errare
Re: Hypothetical question: Pente software
Posted:
Nov 17, 2010, 12:08 AM
I think the gist of it is this. The point perhaps is not so much that there are not some requirements for features during P2 play not needed during P1 play, but also that this is all built into one program. When playing as P1 it may be that not all of these features are invoked, but that the program nevertheless is still one piece of software.
Another point to consider though is that of course we could write the program to refer to a database of the opponent's previous games. We could write some sort of logic to place more weight on moves that are known to be good responses to what that player plays. There is a problem with this approach though. If master players know that the program will play particular responses to attack their db games, they will secretly prepare alternative lines to second guess the program. So this approach could quickly backfire. I think we must be careful to remember that once the program is playing, it cannot adapt to the situation as might a human being.
If you try to build in features that place non-standard biases on particular moves, but then the expected moves are not played by the opponent, this will probably lead to disaster, and the computer will not necessarily be able to recover during the game to the same degree as a human might because it is locked into a biased framework.
This is why I think that the best approach is to play the objectively best move. It will of course only ever win a small number of P2 games against masters, but if it wins all its P1s and match the masters in terms of P2 wins, then the computer is effectively the No.1 player.
> I think the gist of it is this. The point perhaps is > not so much that there are not some requirements for > features during P2 play not needed during P1 play, > but also that this is all built into one program. > When playing as P1 it may be that not all of these > features are invoked, but that the program > nevertheless is still one piece of software.
i was scratching my head for a couple minutes looking at this and then realized the extra "not" you put there might be a typo. is it? im confused.
but i think i agree with you here. and it isn't really different than what i was saying i think. even if you use the same AI software, and simply invoke for P2 and don't invoke for P1, this is still basically 2 different AIs. they are not identical in every way, thus they must be considered different even if they share commonalities by way of being one in the same basic core design. the different AI-P2 is the features invoked at that point basically.
any how, i agree with you. and i think you would agree with me that invoking would cause the AI to take longer to process, yes? just seems a logical deduction to me.
> > Another point to consider though is that of course we > could write the program to refer to a database of the > opponent's previous games.
i think i had made that point too already, and i agree it would be best to do so.
> could write some sort > of logic to place more weight on moves that are known > to be good responses to what that player plays.
this is only one tactic of several for utilizing the db to help the AI-P2
> There > is a problem with this approach though. If master > players know that the program will play particular > responses to attack their db games, they will > secretly prepare alternative lines to second guess > the program. So this approach could quickly backfire. > I think we must be careful to remember that once the > program is playing, it cannot adapt to the situation > as might a human being.
yes and no, all this means is you didn't add enough stuff to invoke. what would a human master do when faced with that situation? the answer to this although complex, is simply the next step to code as a invoking feature to continue with a plan B ext... like you said, if a human can explain how he thinks, it can be programmed... so i don't see why you would limit your self as a programmer in a situation like you just described there.
> > If you try to build in features that place > non-standard biases on particular moves,
honestly im not sure what you mean by this...
> but then the > expected moves are not played by the opponent, this > will probably lead to disaster, and the computer will > not necessarily be able to recover during the game to > the same degree as a human might because it is locked > into a biased framework.
again not fully getting it, but i have a feeling i covered this by saying you just need to add more invoking features of what a human master would do in these situations that have been explained in a way that can be coded.
> > This is why I think that the best approach is to play > the objectively best move.
yea, just not buying the need to do that yet. seems like giving up and settling for second best to me. just cus its easier to code, as opposed to because the better way was actually impossible, which i don't think its impossible now that you have me thinking on it.
> It will of course only > ever win a small number of P2 games against masters, > but if it wins all its P1s and match the masters in > terms of P2 wins, then the computer is effectively > the No.1 player.
ok, yes i see. not because the AI-P2 surpasses, but because the AI-P2 equaled, and in 100 games the AI-P1 can pull ahead by one win, since in 100 games the human master will lose one P1 game. ehhh but im still not convinced the AI-P2 can hit equal to human master with out some major add-ons to invoke. a ton of them.. simply best move to a AI will fall short in my opinion. and none of can prove it one way or the other in theory, simply impossible in my opinion to prove, unless.. unless you make it and show it in action in reality.
but, im pretty sure that best move + human concepts invoked working together, will be stronger that simply best moves alone. but again, i have no proof to back up that theory i guess... just opinions just seems logical to me.
Scire hostis animum - Intelligere ludum - Nosce te ipsum - Prima moventur conciliat - Nolite errare
Re: Hypothetical question: Pente software
Posted:
Nov 18, 2010, 12:57 AM
Yes the extra 'not' is a typo.
I think Pete said made the point about the game's design in that it would react to not having the initiative regardless of which side it is playing as. Remember that such a program would be designed to play at different levels like Mark's program does. So, as P1 it would play sub-optimally at a lower level and would therefore get into trouble occasionally against a good human P2 response. The program will need to be able to 'play from behind' in such a situation. This will not be able to be assisted by access to the db but will have to rely on the raw cabilities of the software. So, when we say we would not have a separate program to play as P2, what we are saying is that it would be designed so that it has features that would be utilised by both sides should the situation warrant it.
Now, as for writing some sort of 'second guessing' code. The problem you have here zoey is complexity. Just to write that code and make it effective might be a huge undertaking. This doesn't mean it can't be done, but it may mean that no-one will try. And also the processing overhead to have the program do that might be too much. As Pete said, this is going too far into top down thinking, and I agree with that.
By non-standard biases I mean that player targeting might result in AI moves that would not agree with the result returned by the minimax function. Once you start doing this you step into a branch of the game tree that is an unknown quantity. This is not an ideal way to approach an AI program design - ignoring the advise of your own program.
I agree that ultimately we will have to see what the program does when it is built. My money is on the AI but if and only you people like you provide input.
Posts:
2,233
Registered:
Mar 4, 2007
From:
San Francisco
Age:
45 Home page
Re: Hypothetical question: Pente software
Posted:
Nov 18, 2010, 11:06 AM
> Yes the extra 'not' is a typo.
ok, thought so.
> > I think Pete said made the point about the game's > design in that it would react to not having the > initiative regardless of which side it is playing as.
please define your usage of initiative. implies forcing moves? implies sure win? what does it imply? what does it not imply?
> Remember that such a program would be designed to > play at different levels like Mark's program does.
as a P1 it should do strongest level always.
> So, as P1 it would play sub-optimally at a lower > level and would therefore get into trouble > occasionally against a good human P2 response.
we'll sub optimal P1 just wont do now will it.
> The > program will need to be able to 'play from behind' in > such a situation.
if the AI-P1 is playing from behind then the super killer AI is a Failure. since the logical approach is to not allow it to get in this situation in the first place this scenario is a moot point.
> This will not be able to be > assisted by access to the db but will have to rely on > the raw capabilities of the software.
the AI-P1 has no need for a pente.org data base to play perfect in my opinion.
> So, when we say > we would not have a separate program to play as P2, > what we are saying is that it would be designed so > that it has features that would be utilized by both > sides should the situation warrant it.
makes no sense. all of the features for the P2 are 100% useless for the P1. the P1 will never need these things.
> > Now, as for writing some sort of 'second guessing' > code. The problem you have here zoey is complexity.
in some situations maybe, but there are situations im thinking of you may not have considered that are possibly very easy to do with little over head used.
> Just to write that code and make it effective might > be a huge undertaking.
or maybe not...
> This doesn't mean it can't be > done, but it may mean that no-one will try. And also > the processing overhead to have the program do that > might be too much.
or it might not...
> As Pete said, this is going too > far into top down thinking, and I agree with that.
maybe,..
i have a feeling that the answers that will work and cost little over head are possibly available, the problem is we haven't figured out the right questions yet perhaps.
> > By non-standard biases I mean that player targeting > might result in AI moves that would not agree with > the result returned by the minimax function. Once you > start doing this you step into a branch of the game > tree that is an unknown quantity. This is not an > ideal way to approach an AI program design - ignoring > the advise of your own program.
you need to think out side of the box i think. by not limiting your self to just minimax alone you expand your AI's potential in design. i have a feeling minimax doesn't mind having a invoke to pause it at certain points to let another design take over for a bit.
> > I agree that ultimately we will have to see what the > program does when it is built. My money is on the AI > but if and only you people like you provide input.
we'll ill have a blast trying to defeat it of course.
mark's was extremely easy to defeat over and over at level 8.
just curious, if i supplied the forcing lines that defeat the mm_AI8's P1 consistently, and you viewed the code he used, would this help to figure out where it went wrong in some way to then apply to the design of a new one? if so i have a file that shows several forcing wins against it. it will show the way it can lose as P1. to better identify what aspects the AI struggles with most.
just a thought.
Scire hostis animum - Intelligere ludum - Nosce te ipsum - Prima moventur conciliat - Nolite errare
Posts:
2,233
Registered:
Mar 4, 2007
From:
San Francisco
Age:
45 Home page
Re: Hypothetical question: Pente software
Posted:
Nov 18, 2010, 11:49 AM
for fun, this is a AI_12 using VCT to search a position as P2. 100,000 moves per second with visualization active. and close to 200,000 moves per second with visualization disabled. note all the far out region moves it checks, wasting its time. after 24 hours it will realize that not only is M11 its sure win move, but its P2's only sure win move.
and, i thought about this a little. i think there was a different order of scanning the tree of potentials that would had settled on the M11 sure win move much faster.
any how, enjoy the film. yes, its like watching paint dry.
Scire hostis animum - Intelligere ludum - Nosce te ipsum - Prima moventur conciliat - Nolite errare
> I think Pete said made the point about the game's > design in that it would react to not having the > initiative regardless of which side it is playing as.
Zoey. please define your usage of initiative. implies forcing moves? implies sure win? what does it imply? what does it not imply?
I don't want to get bogged down in defining initiative here. We could be here forever. I will only say that I am not using your definition and leave it at that for now.
> Remember that such a program would be designed to > play at different levels like Mark's program does.
Zoey. as a P1 it should do strongest level always.
That's your opinion, but if I was designing it, I would write it for players of all levels. At full strength of course we presume it would not need some of the features that may be added to enhance P2 play (if they are needed).
> So, as P1 it would play sub-optimally at a lower > level and would therefore get into trouble > occasionally against a good human P2 response.
Zoey. we'll sub optimal P1 just wont do now will it.
Please allow me to convey how I would design such software. I would design it to play at lower levels as well so that us little people feel we have a fighting chance.
> The > program will need to be able to 'play from behind' in > such a situation.
Zoey. if the AI-P1 is playing from behind then the super killer AI is a Failure. since the logical approach is to not allow it to get in this situation in the first place this scenario is a moot point.
That is only logical for you because don't like the idea of a multi-level design. Try to be a bit more accommodating, we seem to be stuck on this point and it really is a minor one.
> This will not be able to be > assisted by access to the db but will have to rely on > the raw capabilities of the software.
zoey. the AI-P1 has no need for a pente.org data base to play perfect in my opinion.
In your design, yes. Not in mine.
> So, when we say > we would not have a separate program to play as P2, > what we are saying is that it would be designed so > that it has features that would be utilized by both > sides should the situation warrant it.
zoey. makes no sense. all of the features for the P2 are 100% useless for the P1. the P1 will never need these things.
Again, in your design it makes no sense. But it makes perfect sense in light of what I am saying.
> > Now, as for writing some sort of 'second guessing' > code. The problem you have here zoey is complexity.
Zoey. in some situations maybe, but there are situations im thinking of you may not have considered that are possibly very easy to do with little over head used.
> Just to write that code and make it effective might > be a huge undertaking.
Zoey.or maybe not...
The word "might" covers both possibilities.
> This doesn't mean it can't be > done, but it may mean that no-one will try. And also > the processing overhead to have the program do that > might be too much.
Zoey. or it might not...
It seems to me you are just trying to be argumentative.
> > By non-standard biases I mean that player targeting > might result in AI moves that would not agree with > the result returned by the minimax function. Once you > start doing this you step into a branch of the game > tree that is an unknown quantity. This is not an > ideal way to approach an AI program design - ignoring > the advise of your own program.
Zoey. you need to think out side of the box i think. by not limiting your self to just minimax alone you expand your AI's potential in design...
Zoey, so far you have told me I am being illogical, I make no sense, that I need to be reminded of the opposite of 'might' and also that I have no imagination. Don't you love me any more?
At any rate, I feel that we have reached an impasse on this topic. I don't think I can really say more than I have, but it has been an interesting discussion. I wish Aleph the best of luck with this challenge!
Message was edited by: alisontate at Nov 18, 2010 6:33 AM
it seems a misunderstanding. this thread and topic was initially about making a super killer perfect play can never lose AI-P1. i didn't really gather you meant to do other wise. so assuming you are talking to make a perfect AI-P1, yet speaking of it as flawed,.. just didn't make sense to me. a misunderstanding. so ok you want to add levels of imperfection as well to it to select from, ok. but why? we already have AI's that do this? or perhaps im missing the point..
sorry for the might not maybe not,.. although that was my way of agreeing with you that it could go either way. as far as which way we think is more probable is another story.
and, im still not sure where it was explained that a P1 needs to resort to trickery in order utilize its heavy first mover advantage. and by trickery, these are essentially the things P2 would invoke in my opinion. ive never known P1 to require trickery unless P1 has made an error.
now, if the AI-P1 is at lower levels, thus errors, P1 is now actually the P2 from error. so once in error, it makes perfect sense for P1 to use the tactics that P2 would normally use. although, there are certain P2 tactics i can think of that would literally be impossible for P1 to pull off in the same manner,.. but probably not the point here..
your a very smart person ali. i don't think your not logical generally speaking. because i misunderstand something you say it can read to me as unlogical. either my fault for not reading good, or your fault for not explaining clear enough for me, i have no idea. i will assume it was my bad tho.
as far as me saying think out side of the box, thats what i say to people when they give up, and say it cant be done, or they set limitations, because it seems hard, where no short cuts are obvious yet. doesn't mean it can be done with creative thinking, but ya never know..
im not saying your not imaginative... your very creative ali. im sure your ai design would be great. and i am probably wrong about my ideas for a AI. im goina just stick to playing pente, and look forward to the amazing AI's one of you makes.
thanks.
Scire hostis animum - Intelligere ludum - Nosce te ipsum - Prima moventur conciliat - Nolite errare
------------------------ zoeyk: mark's was extremely easy to defeat over and over at level 8.
just curious, if i supplied the forcing lines that defeat the mm_AI8's P1 consistently, and you viewed the code he used, would this help to figure out where it went wrong in some way to then apply to the design of a new one? if so i have a file that shows several forcing wins against it. it will show the way it can lose as P1. to better identify what aspects the AI struggles with most. -------------------------
Just a quick couple of points about this. First, players generally find it extremely difficult to beat mm_AI8's P1 in general until they have reached a very high understanding of the game. I'm sure that when you were first learning the game you lost an amazing number of games against it, as did I. I don't think you were meaning that it's an easy AI to defeat in general -- it is actually quite sophisticated imo.
Next, one of the flaws with this AI is that it is very repeatable. In other words, if you show it a specific midgame position and tell a certain level (level 8 for example) to pick its next move with no change to any of its parameters, it will ALWAYS pick the same move. If that move is flawed, it will ALWAYS make that mistake. This can lead us to create such a library of ways to defeat this AI just on sheer trial and error -- once you find a flaw, it will always work. It does not learn from its mistakes. This might lead us to steer towards positions that we already know will work and then we feel like we are always beating the AI...
Next, remember that this AI, even at high levels, is still pulling from a very wide and very flawed opening book. It will select openings from its book pretty much at random in order to give the user some variety. Even the documentation provided which shows it's opening book will score some openings as better than others, and showing that some openings actually should be a win for black! And it will still randomly choose an opening like this occasionally! (In addition, not only are the openings themselves outdated and flawed, but the scores assigned to these openings are also flawed -- so there is significant inaccuracies here). The software follows the opening book until it is exhausted, before any of its searching or evaluation algorithms even get a chance to work. So, sometimes it is already in a losing position by the time it gets started even though it is playing as P1. Of course, there are other positions that it "should" win, but consistantly makes the same error in the midgame as already noted, which brings me to the next point...
Remember that mm_ai8 is only looking 4 moves ahead. That's it. Once it has looked 4 moves ahead, if the game is not already won by either player then it has to use an evaluation algorithm to view a snapshot of the board and score it based on what it sees in the picture. Remember that humans will look at a board and subconsciously look a few moves ahead without even realizing it -- that's just part of how we evaluate the state of the game. The computer cannot do this. Once it is done looking ahead, it cannot even look another 1/2 move further. It cannot visualize placing one more single stone on the board. It has to look at what's there and score it. I believe that this is the piece of the algorithm that is extremely difficult to program with 100% accuracy and this is generally where all AIs are beaten.
For our killer AI to avoid this problem, it has to solve the game. This means that instead of looking 4 moves ahead, it will look 27 moves ahead. In other words, instead of mm_ai8 you'd be playing against mm_ai54. That's a pretty serious difference.
zoey. OK, the original thread was only about killer AI and I even gave it a name - "KAI". All I was really saying was that if I was to write an AI program to be a killer app, I would still write it for play at multiple levels. But I agree that point is probably moot. Sorry for my part in any misunderstanding.
I think there seems to be a desire for you to drive the point home: That the requirements of P1 and P2 are so different that although I would bundle the program together, there are essentially two functionally seperate applications. Well, you can look at it that way if you want, but my strong feeling is that P2 will not need most of the additional features suggested by myself or others in order to play very strongly. I could be wrong, but the only way to know for sure is to wait until someone writes the thing.
Nearly ten years have passed since this question was posed and I haven't seen most of the original participants in the thread for quite awhile, but let's revisit the question in light of AI developments in the past decade. Go is now played by AI at a level beyond any human player's ability; so Pente, Boat Pente, ninuki renju, swap Gomoku, swap renju and swap ninuki renju should be achievable at a superhuman level of play given enough computer time and resources devoted to them. A couple of years ago, following in the footsteps of alphaGo Zero, Yuan Wang wrote a Master's thesis called Mastering the Game of Gomoku without Human Knowledge - https://digitalcommons.calpoly.edu/theses/1865/ In the thesis, the author states that with a few modifications of the training strategy other games could also be easily be trained, with examples given of chess and Go. If such programs were actually to be developed, a comparison of databases of games played by the superhuman AI against itself could answer questions like: Which lines are the same or largely similar in Boat Pente and ninuki renju and which lines would differ between them? Can ninuki renju (with tournament rule second move restrictions) be played optimally so that a drawn game isn't an option for the player who would otherwise lose on a 19x19 (or 15x15) board? What sized board is optimal for swap ninuki renju in order to lead to a drawn game with optimal play after many opening proposals - by many opening proposals let's say, roughly the same ratio of drawn games to won games as in swap renju between two master level players.
I think these questions are interesting to ponder, and perhaps someday we'll have answers to them. Looking at the continued interest in chess and Go despite AI superiority in these games, I don't think that AI superiority in Pente and related games would negatively affect their popularity. In fact, the opposite might be the case, with all students interested in the games able to study with AI teachers calibrated to their learning stage.
Retired from TB Pente, but still playing live games & exploring variants like D, poof and boat
Re: Hypothetical question: Pente software
Posted:
May 29, 2020, 3:18 AM
The barrier has become pretty low, there's this github repo that can train an alpha zero framework for any 2-player game. The code to add or alter is fairly minimal (you have to provide legal moves, a state update for a possible move, and a method to decide if the game is over and who won). I think you can then go rent some GPU time somewhere to train a model and have your questions answered.
Re: Hypothetical question: Pente software
Posted:
May 29, 2020, 3:27 AM
Nice, thanks for that link rainwolf! Now I just need to figure out how much I want answers to those questions in terms of GPU hours and hours to understand the github code well enough to alter it correctly AlphaZero renju on github, I see: https://github.com/kongjiellx/AlphaZero-Renju Ninuki, but not AlphaZero: https://github.com/jeremycare/Gomoku-ninuki
Message was edited by: watsu at May 29, 2020, 4:08 AM
Retired from TB Pente, but still playing live games & exploring variants like D, poof and boat