Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Simple AI Game Improved

Author: Ricardo Gibert

Date: 13:29:21 07/27/03

Go up one level in this thread


On July 27, 2003 at 15:19:00, Graham Laight wrote:

>On July 27, 2003 at 12:12:05, Tim Foden wrote:
>
>>On July 27, 2003 at 08:34:10, Ricardo Gibert wrote:
>>
>>>On July 26, 2003 at 18:23:31, Graham Laight wrote:
>>>
>>>>Finally, I got around to doing what I've been promising to do for a long time.
>>>>
>>>>Since nearly everyone who plays my matching pennies game chooses to have 49
>>>>goes, I've tuned the pattern recogniction algorithm to work best at this level.
>>>>You should now find it noticeably harder to beat than it was before.
>>>>
>>>>http://mysite.freeserve.com/grahamlaight/jscript/GuessWhichHand.htm
>>>>
>>>>Have fun - and don't forget to post your game records here, please!
>>>>
>>>>Take care,
>>>>-g
>>>
>>>Such programs try to take advantage of non-random play of the opponent. In order
>>>to do so, it must also play in a non-random way. This leaves it vulnerable to a
>>>sophisticated opponent. The more aggressive the program is in taking advantage
>>>of non-random play, the more non-random its own play must be and the more
>>>vulnerable it is.
>
>Ah - but even as you're getting better at learning how to beat the algorithm,
>the algorithm is also getting better at learning how to beat you!


Of course, this is the idea, but the "better at learning how to beat you" it
gets, the less random its play must neccesarily be and the more vulnerable it
should get. There is no way around this. Paradoxically, you have to limit how
good it gets.


>
>The more goes you have, the better the algorithm becomes at anticipating your
>moves. In all the games I've analysed (mostly from the CTF forum), people have
>scored fewer points in the second half of the game than in the first half.


If program is getting a minus score in the 1st half and a plus score in the 2nd
half, then maybe the best human strategy should be to rely on garnering a plus
score in the early going and prevent the computer's comeback in the 2nd half by
reverting to a random strategy by flipping a coin.


>
>>>For example, someone posted a link on a usenet group to precisely the same game
>>>you tackle. The programmer even dressed it up a bit with a high scores list.
>>>This had the desired effect of encouraging participation.
>>>
>>>Unfortunately, the program was very agressive to the point of being completely
>>>deterministic. A number of jokers realized this and worked out the precise
>>>sequence required to win with a nearly perfect score! I was one of them, but not
>>>as patient as some of the others at working out a really long sequence that won
>>>consistently.
>
>My game is not deterministic. If you play the same sequence of 49 moves twice,
>you'll get different results.


That's what I meant by it not being aggressive. It does not always make the
"greediest" decision.

BTW, I wonder if you noticed a witty point about Ed's "debugging." By always
clicking left he was really always guessing right! Viewed in this way, he got
the highest score by the most trivial means!  ;)


>
>>>Interestingly, despite this going on, there were enough unsophisticated players
>>>to give the program a very comfortable plus score overall. It seems the
>>>sophisticated players were too few in number to really hurt it. Kind of the same
>>>situation as in Las Vegas and the BlackJack card counters.
>
>I thought they'd implemented mechanisms to prevent counting?


There are still casinos where card counting is made difficult, but not
prevented. The ones that prevent it, effectively chase the players to the
casinos that don't. Most people that count make enough mistakes to offset their
advantage, which is tiny even with perfect play. Therefore, it's better to not
prevent it completely IMO.


>
>>>I did not do a lot of testing, but I think your program does not seem to be very
>>>aggressive. It can't be taken advantage of as ruthlessly as the aforementioned
>>>program, but I'm not sure if this is really the best way. Maybe the best way is
>>>to rely on the much greater abundance of unsophisticated players.
>>>
>>>It would be interesting to compare both approaches on a large pool of players.
>>>It may be best to be aggressive, but not so aggressive that it becomes easy to
>>>join the sophisticated group of players. Ruthlessness should require hard work!
>>
>>Maybe it would be interesting to have a program that is very aggressive, but
>>detects when this is failing (e.g. say, score worse than 3/10), and then
>>randomly changes to a less aggressive algorithm (of which it may have more than
>>1).
>
>How about the following strategy: you play with a high level of aggression, and
>when the opponent is having a winning streak, you automatically start reversing
>your guesses before playing? Of course - when the opponent starts winning again,
>you revert to normal play again.
>
>-g
>
>>Cheers, Tim.

L1 L1 R0 L0 L1 L1 R0 R1 L1 R1 L1 L1 R1 L0 R0 L1 L0 L1 L1 R1 L1 R0 R1 R1 L0 L0 L1
L1 R0 R1 R0 R0 L0 R1 R1 L0 R0 L0 L1 L1 L1 L0 L0 L0 R1 L0 L0 R1 R0



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.