NN + Game Theory (Mafia)
Right now I'm still in the learning phase when it comes to Nueral Nets. I've made myself reasonably familiar with genetic algorithms, and am only now implementing my first NN from the example on ai-junkie. But already I'm brainstorming where next I could go with this, something a bit more out-of-the-box. I'd like to have a NN that can play a reasonable game of Mafia, the rules of which vary and can become hideously complex, but the most simple form is as follows: There are n players, divided into teams Mafia (M) and Townspeople (T), such that M is much smaller than T... for a game of 16 players, 2 or 3 on team M should be the limit. The game is then divided into two phases which alternate. In Phase 1 ("Night"), the members of team M (who all know each other) secretly decide who from team T they wish to remove from the game. At the end of this phase, the player who is picked is removed. In Phase 2 ("Day"), ALL the players vote on who to remove from the game (Lynch Mob). Members of team T have no idea who is on team T and who is on team M. There will be much arguing, but once a majority is reached, the player chosen is removed. The game ends when one team has no members left. Clearly, the game ALSO ends if team M has as many (or more) members as team T, since team M can form a voting block. To prevent stalemates, during the day there may be a time limit set, at which point whoever has the most votes is removed regardless of whether or not there is a clear majority (bandwagon). (In more complex forms of the game, there may be multiple mafia "families" who compete with each other, and the townspeople may have one or two "helper" roles, like an investigator who can infailably determine the team affiliation of one other player per night... not that anyone knows who this player is but himself. But for starters, I'd like to stick with the simplest scenario as described above) Now games of Mafia can be played over the internet via chatroom or messageboard, and can get quite intruiging, with impassioned pleas of logic and wild accusations and pop-psychology all being applied... analysis of voting patterns, seeing who gets too defensive, seeing who is standing up on behalf of another... good games involve a LOT of heavy thinking, a lot of logic, a lot of charisma. But after playing several games, I think that each "Move" of the game during the day can be summed up as one of the following-- In order of Least Offensive to Most Offensive Outright Defending a player Implied defending of a player Implying Suspicion on a player Pointing the "Finger of Suspicion" on a player Accusing a player Voting to remove a player (Do Nothing/Inactivity is also a valid move, and "lying low" can be a good defense) (Note that "a player" might also mean one's self... and voting for yourself can actually get other people to stop voting for you on occasion, or it might improve the odds of your team winning, etc... there are reasons for doing so) Now, with a codified list of actions (and I've been asking some other human players of the game about this, they may have additional actions I could add to the list) it looks to me like I have a good setup for a NN. Every move made would be a node, and the inputs to that node would be "Player making the move", "Action being taken", "Player action is directed at". Output would thus, obviously, be "Action being taken" and "Player action is directed at". The first problem I see, however, is that this calls for an absurdly large net. I mean, games can consist of HUNDREDS of moves over the course of a dozen or more cycles. If EVERY move requires its own node, the network will be ginormous! On the other hand, if not every move is stored and given to the network each turn, then the NN isn't really playing the game, which works based on analyzing patterns of moves... Any thoughts for how to trim down the number of inputs are required? If not, any thoughts for a good way to manage such a tremendous network? I'm thinking that each "Day" should be given it's own sub-network which then feeds into a larger net... which I guess could work, but not having a lot of experience so far with NNs, I'd love to hear your thoughts on the subject.
1) What sort of neural network are you planning on using? A standard feedforward multilayer perceptron probably won't be of much use in this situation...look up networks which can store long-term memories in their activity (not synapses)...e.g. LSTM
2) Why neural networks? Have you considered probabilistic or fuzzy logic?
-Alex
2) Why neural networks? Have you considered probabilistic or fuzzy logic?
-Alex
Well, I'm thinking NN mostly because I am currently in the process of learning about them, and MOSTLY this is a situation of me wanting a cool project that I can really sink my teeth into to help me learn.
As it is, I'm not entirely certain how fuzzy logic works, and I'm not 100% certain what you mean by probabilistic. Do you mean, determine the probability of a given player being a member of team M, determine the probability of links/alliances between players, that sort of thing? Because if so... well, I've tried that before. It failed dismally, was way too predictable, way too easy to trick, and most of all, didn't learn anything about player's playing habits, which I'd hope a NN could handle.
And yes, since I am currently learning about Feedforward Networks, that was in fact what I was considering, and I agree that it probably isn't the best method, looking at it now. Can you point me towards a resource for a NN that has longterm memory? What is this LSTM thing? Until just now, I wasn't actually aware that there was anything but FFNNs...
Since I'm currently eatting ramen until the semester is over, I would prefer a free resource, but if there's a REALLY REALLY good book I can probably beg the folks for some educational money.
As it is, I'm not entirely certain how fuzzy logic works, and I'm not 100% certain what you mean by probabilistic. Do you mean, determine the probability of a given player being a member of team M, determine the probability of links/alliances between players, that sort of thing? Because if so... well, I've tried that before. It failed dismally, was way too predictable, way too easy to trick, and most of all, didn't learn anything about player's playing habits, which I'd hope a NN could handle.
And yes, since I am currently learning about Feedforward Networks, that was in fact what I was considering, and I agree that it probably isn't the best method, looking at it now. Can you point me towards a resource for a NN that has longterm memory? What is this LSTM thing? Until just now, I wasn't actually aware that there was anything but FFNNs...
Since I'm currently eatting ramen until the semester is over, I would prefer a free resource, but if there's a REALLY REALLY good book I can probably beg the folks for some educational money.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement