107 votes

Vaincre un robot de poker

Il existe un nouveau robot de poker Open Source appelé PokerPirate . Je m'intéresse à tous les moyens créatifs par lesquels une application Web pourrait détecter, contrecarrer ou vaincre un robot de poker. (Il s'agit d'une discussion purement académique, dans le même esprit que celui dans lequel PokerPirate a été écrit).

209voto

Tom Gullen Points 20826

Vaincre un bot du point de vue du serveur

  1. De nombreux sites de poker en ligne utilisent des popups Captcha qui sont déclenchées par une activité suspecte.

  2. Certains sites de poker surveillent le jeu temps et les habitudes de jeu (par exemple, le pire des scénario le plus défavorable est celui d'un joueur qui joue 24x7 et 16 tables en permanence, il y a une infime chance qu'il s'agisse d'un véritable humain. (Cependant, certains joueurs ont la capacité de jouer de très gros volumes de main qui, pour l'œil inexpérimenté, semblerait être un bot)

  3. Jetez-le dans le vide. Si vous suspectez un joueur est un bot, changez toutes ses positions des cartes à jouer de quelques pixels sur l'écran, faites-les couleurs/designs/motifs différents pour 1/100 de main et voyez si cela les déstabilise. les lance. S'il ne peut pas faire de capture d'écran, il il va perdre toutes ses décisions et c'est une preuve bot assez concluante preuves.

  4. Le timing indique, si un joueur d'ordinateur répond aux options en millisecondes à la fois sans pause pour réfléchir sur des décisions importantes, cela peut être suspect

  5. Autocontrôle. Le site de poker pokertableratings.com données exploite un grand nombre de sites importants. Il a été été reçu avec un accueil mitigé, certains aiment la transparence, autres le détestent . L'avantage est, cependant, que il y a eu des cas où des joueurs suspects statistiques (pourcentages VPIP, les pourcentages de PFR sont quelques-unes des grandes nombre de statistiques quantifiables qui peuvent être enregistrées) ont conduit à des des conclusions de tricherie

  6. Intelligent artificiellement réseaux de classification pourrait contrôler des statistiques quantifiables pour classer les tricheurs malhonnêtes ou les robots robots.

  7. À l'époque où le poker en ligne était une activité assez nouvelle entité, il y avait des rumeurs et parler avec des preuves limitées que certains logiciels clients de poker des captures d'écran de joueurs suspects ordinateurs de bureau pour voir s'ils exécutaient programmes qui les assistent. Toutefois (même si cela était vrai), l'utilisation de deux ordinateurs pour effectuer les deux tâches indépendamment permettrait de contourner ce problème.

  8. Partage d'informations entre les répétitions contrevenants entre plusieurs sites serait bénéfique pour l'industrie, si seulement ils étaient honorables et géré par des personnes compétentes et responsables

  9. Certains robots seraient probablement assez simples par conception, si vous pouviez découvrir leur style de jeu et voir comment ils agissent dans des situations identiques (notez que ceci n'est possible qu'avec bots non sophistiqués jouant une stratégie de base), vous pourriez découvrir les découvrir assez rapidement.

  10. Utilisation incohérente du programme fonctions du programme pourrait inciter à penser joueur est authentique. Prenez par exemple exemple, de nombreux sites de poker en jeu ont un bouton "Se coucher quand c'est mon tour". bouton. Si vous recevez une mauvaise mauvaise main et que vous attendez qu'un autre joueur décide de ce qu'il doit faire, de nombreux de joueurs cocheront ce bouton. Un robot peut utiliser ces boutons. La différence entre différence est qu'un robot serait aux extrémités de la fréquence d'utilisation, il les utiliserait probablement soit tout le temps, soit pas du tout. Alors qu'un joueur appuie généralement sur sur 'pliage automatique', mais parfois il va se couchera quand même, même dans les conditions les plus favorables. Par exemple, un vrai joueur appuie habituellement sur mais cette fois, il ne le fait pas. Il s'agit d'un tour de table sans qu'aucun autre joueur n'intervienne. sans qu'aucun autre joueur n'agisse. ils ont été présentés avec la condition la plus condition la plus favorable possible. Maintenant s'ils pressentent le pli, ils auraient il aurait été fortement enclin à appuyer sur le pli automatique dès le départ. Ceci est incohérent/non optimisé/aléatoire. aléatoire, qui correspond au fait d'être un humain. Les indications de temps sur le moment où l'on clique sur ces fonctions sont d'autres indicateurs. Il est important de reconnaître que ce sont tous des indicateurs et non des preuves concluantes. Tous ces indicateurs comportementaux peuvent être simulés facilement.

Vaincre un bot du point de vue des joueurs

  1. Essayez d'enregistrer et de collecter autant de données que possible en utilisant des logiciels tels que PokerTracker

  2. Tenter d'identifier des modèles dans son style de jeu

  3. Tenter de trouver des relations entre la taille des mises en proportion du le pot/nombre de joueurs et la force de la main

  4. Essayez de calculer son gammes de produits . Un robot à faibles enjeux ne bluffera probablement pas assez souvent pour avoir un intérêt stratégique significatif, donc construire des gammes de mains très précises pour lui ne devrait pas être trop difficile.

  5. Tenter de trouver fuites dans son jeu via l'analyse de données et l'essai Une fois que les fuites/les modèles ont été trouvé, essayez de les exploiter de manière les exploiter et d'éviter toute autre situations.

Lorsqu'un humain est capable de adaptation les bots le sont probablement moins, et là où les humains sont pondérés par les chaînes de inclinaison , une réflexion axée sur les résultats y frustrations mais pas les robots. Vous pouvez utiliser cela à votre avantage.

En fait, il n'y a rien que vous puissiez faire pour l'empêcher si le robot est suffisamment intelligent pour simuler des délais réels lors des décisions, ainsi que pour créer des modèles de jeu raisonnables et réalistes. Ajoutez-y quelques conditions aléatoires et une simple conversation à l'envers (le lexique des joueurs de poker est le suivant généralement assez limité ) et vous avez un joueur d'IA qui va être assez difficile à détecter.

Ce que les bots peuvent faire pour éviter d'être détectés

La clé pour éviter la détection serait de penser au problème sous autant d'angles que possible. Vous tentez de simuler un comportement humain intelligent dans un monde très restreint et restrictif. La plupart des simulations comportementales que vous pouvez effectuer sont assez évidentes, mais plus votre robot est incohérent et imprévisible, moins il a de chances d'être découvert.

  1. Créez des horaires de jeu réalistes (c'est-à-dire, 3 à 5 fois par semaine, 4 heures par session, avec une semaine impaire ici et semaine de repos au cours de l'année).

  2. Exécuter des programmes pour prendre des décisions sur ordinateur séparé, contrôlant un ordinateur zombie au cas où des sites capture d'écran.

  3. Randomisez les temps d'action (ne pas agir immédiatement, attendez 0,5 à 2 secondes par action)

  4. Temps réduit sur les grandes décisions. Si une décision est à la limite, calculez la décision puis attendez un peu pour simuler la réflexion.

  5. Utilisation aléatoire des fonctionnalités du logiciel client. Simuler des pauses toilettes en cliquant en cliquant sur le bouton " distribue-moi " sur toutes les tables et faites une pause de 5 minutes de temps en temps.

  6. Le chat simulé, le poker chat est souvent des phrases toutes simples, jamais généralement de discussion ou de débat. Dites des choses comme "malchanceux" ou "stfu" à des moments moments appropriés et détectables. Ou même demander au codeur de surveiller son bot et de participer à des discussions pendant l'exécution.

  7. Assurez-vous que les mouvements de la souris sont réalistes. Si les tables sont carreaux ne prenez pas de décision sur en haut à gauche de la table puis faire instantanément sur le tableau en bas à droite. La plupart des logiciels de sites proposent désormais des raccourcis clavier, qu'il peut être préférable d'utiliser plutôt que de déplacer la souris.

  8. Faire des choses qui, tout simplement, sont des IA ne s'attendent pas. Par exemple, Par exemple, une fois par an, téléphonez-leur avec une requête simple et non complexe (" Au secours, je ne peux pas me connecter aujourd'hui ! me connecter aujourd'hui" ou "Internet est en panne"). Il est peu probable que cela fasse une grande différence, mais si la personne qui travaille pour la société de poker est assez intelligente, elle peut y voir un indicateur réel.

  9. Des sessions de perte sporadiques. L'inclinaison peut être simulé et le robot peut jouer mal et perdre de l'argent de temps en temps. de temps en temps. Tout le monde s'incline à un certain point.

Le problème est aussi que les sites de poker ne se soucient pas particulièrement de savoir si des bots fonctionnent sur leurs réseaux, chaque joueur vaut une somme importante en rake et théoriquement, d'un point de vue purement cynique, le seul inconvénient serait une mauvaise presse en cas de découverte.

Même lorsque des exploits flagrants ont été découverts (recherchez sur Google les termes suivants Réseau Cereus scandales ou Scandale d'Absolute Poker (c'est assez choquant), l'entreprise semble survivre et rester saine, ne perdant que les joueurs bien éduqués et gagnants (qui ne sont pas nombreux). Cela augmente la proportion de joueurs moins qualifiés dans le réseau, ce qui attire à nouveau les bons joueurs. C'est un bon vieux cercle vicieux. Un excellent argument en faveur d'une réglementation adéquate du marché.

Il est important de noter, que pour chaque jeu, une nash l'équilibre existe . Le poker en ligne a une durée de vie limitée de la façon dont il fonctionne maintenant, il va devoir évoluer vers quelque chose de plus social (webcam/voip) pour que quelqu'un puisse lui faire confiance à l'avenir (si les gens lui font confiance) car les bots finiront par prendre le dessus car ils sont mathématiquement supérieurs et psychologiquement immunisés. La communauté de l'IA du poker est très actif alimentée par le monde universitaire et/ou les bénéfices du capital.

Des versions plus simples du poker, comme le poker limite, ont été presque résolu dans de petits espaces de recherche. Ce n'est qu'une question de temps avant que des versions plus complexes du jeu (variations No Limit/ Omaha Pot Limit etc) deviennent battables pour les joueurs artificiels.

Conclusion

Les bots sophistiqués ne peuvent tout simplement pas être détectés tant que l'industrie n'évolue pas vers un environnement de jeu en ligne plus social. Cela ne résoudra pas le problème, mais il sera certainement plus difficile pour les bots de gagner aux niveaux inférieurs. Nous avons déjà constaté un léger changement avec la sortie de PKR , 3D et plus interactif Il s'agit de la version avec moins de mains par heure des autres sites où le multitabling est assez difficile à réaliser pour un joueur.

Le problème est également lié à la nature du secteur, ce qui constitue une raison supplémentaire de s'en tenir aux sites Web plus importants et plus réputés, dont la réputation fait de plus en plus partie intégrante de leur modèle économique. Le manque de transparence et transidentité feinte n'aident pas la cause.

Le véritable défi actuel pour les développeurs de robots consiste à écrire un algorithme gagnant, ce qui n'est pas aussi trivial qu'il y paraît. Tous ceux qui jouent au poker se considèrent comme des bons joueurs, des gagnants ou des équilibristes, ce qui est tout simplement faux. C'est pourquoi les gens continuent à jouer, même lorsqu'ils perdent de l'argent, car ils ont l'illusion d'être simplement malchanceux ou que leur style de jeu est mal compris. Cette arrogance et cette faiblesse de la psychologie humaine ont coûté beaucoup d'argent aux joueurs perdants et constituent la raison fondamentale pour laquelle le poker peut encore être rentable.

Le poker est un jeu extrêmement compliqué qui demande des années pour être maîtrisé (le vieil adage reste vrai, "Dix minutes pour apprendre, une vie pour maîtriser"). L'élément chance est extrêmement limité sur le long terme.

Comme pour toute autre profession, pour devenir bon, vous devez étudier pendant des centaines et des centaines d'heures, et jouer pendant des milliers d'heures. Vous comprendrez des choses que les joueurs moins expérimentés ne comprendront pas, vous repérerez des choses que les moins expérimentés ne repéreront pas. L'apprentissage se poursuit pendant très très longtemps, peut-être plus longtemps que nous ne pourrons jamais vivre. C'est un jeu compliqué.

Combien de fois avez-vous vu une partie de cash game à enjeux élevés à la télévision et entendu quelqu'un crier "C'est un appel facile !", prouvant ainsi que les amateurs ne comprennent pas ou ne reconnaissent pas la sophistication du jeu, et croient vraiment que le jeu à ce niveau est finalement simple. Ce n'est pas le cas. Ces joueurs aux enjeux élevés (la plupart du temps) sont présents à la télévision parce qu'ils sont vraiment realmente realmente bon. Il y a probablement aussi un méta-jeu compliqué qui se joue, dont notre amateur ne peut pas reconnaître l'existence. L'amateur ne se tiendrait pas au-dessus d'un maître d'échecs et ne lui crierait pas de déplacer son cavalier, mais à cause de la dynamique du poker, qui est une information imparfaite, sa psychologie le pousse à croire vraiment ce qu'il dit. Comme aux échecs, les décisions peuvent être complexes, sensibles et extrêmement importantes pour l'ensemble du jeu. Au fur et à mesure que la complexité du jeu augmente, les décisions triviales ne sont plus aussi triviales, car votre adversaire s'y attend.

Lorsque vous faites progresser votre robot ou votre jeu, vous rencontrez inévitablement une population plus nombreuse de joueurs plus habiles. La complexité de votre stratégie devra alors passer au niveau supérieur, en tenant compte de images de table , équilibrage des gammes le bluff sophistiqué et intelligent (c'est-à-dire ne pas se contenter de bluffer en cas de faiblesse, mais bluffer en fonction des fourchettes de valeurs et de l'image, etc. C'est vraiment un jeu différent à mesure que vous progressez.

Une fois qu'un bot gagnant a été écrit, il ne fait aucun doute que le codeur aura suffisamment de compétences, de connaissances et de bon sens pour appliquer le bot de manière indétectable. C'est trivial pour eux.

Donc il n'y a vraiment rien que vous puissiez faire. Si vous voulez jouer en ligne, comprenez les risques. Ne risquez jamais plus d'argent que ce que vous pouvez vous permettre, et essayez de garder une trace précise de vos dépenses afin de ne pas avoir une surestimation erronée, irréaliste et finalement préjudiciable de vos propres capacités. Prévoyez des limites de pertes et quittez la table si vous n'avez pas d'avantage ou si vous n'êtes pas sûr d'avoir un avantage ! Bien sûr, si tout le monde faisait cela, personne ne gagnerait, c'est la nature prédatrice et exploitante du jeu, c'est de là que vient la compétition et c'est ce qui le rend amusant.

9voto

drawnonward Points 35444

Il y a trois domaines distincts à prendre en compte. Le robot doit déterminer l'état de la table, prendre une décision et la renvoyer à l'hôte.

Il est beaucoup plus facile de comprendre l'état du tableau s'il est envoyé sur le fil sous une forme reconnaissable ou affiché à l'utilisateur sous forme de texte standard. Tout d'abord, faites de la reconnaissance d'image la seule option, puis rendez-la aussi difficile que possible. Affichez les cartes en 3D et changez lentement l'orientation et la position des cartes. Animez de petits scintillements ou des feux d'artifice devant les cartes, de sorte que toute capture d'écran puisse être illisible, mais qu'il faille un certain temps pour le déterminer.

Il n'y a rien à faire pour prendre la décision. Essayer de décider si une décision a été prise par un humain ou non, c'est comme un test de Turing avec presque aucune information.

Le renvoi de la décision peut être rendu difficile en utilisant à nouveau la 3D. Rendez difficile l'envoi direct de paquets ou la soumission d'une décision par tout autre moyen que le clic sur un bouton de la souris. Déplacez légèrement les boutons à chaque action ou faites-les flotter lentement dans la zone de jeu en attendant une décision. Désactivez toutes les fonctions d'accessibilité qui permettent de trouver ou de manipuler les boutons.

8voto

Cerin Points 9851

PokerPirate, comme presque tous les robots de poker jamais écrits, fonctionne par grattage d'écran et simulation des clics de souris dans une application de poker Windows. Par conséquent, la clé de voûte du système est sa capacité à reconnaître les objets dans le jeu et à effectuer des actions dans la fenêtre. Aussi intelligent qu'il puisse être au poker, il a probablement encore des difficultés avec ces opérations de base.

Par conséquent, les moyens évidents pour contrecarrer ce robot seraient les suivants :

  1. Mettez en place un CAPTCHA, soit avant le jeu, soit lorsque d'autres facteurs suggèrent qu'un joueur pourrait être un bot.
  2. Rendez les graphiques de la table plus compliqués, ou changez de thème tout au long du jeu.
  3. Détecter les mouvements et les clics de souris anormalement rapides et/ou robotiques (un humain ne déplacera jamais une souris selon une ligne mathématiquement parfaite).

5voto

Idéalement, la seule solution valable consiste à créer une logique de pot de miel qui attire un bot engagé en lui offrant la tentation d'une condition logique plus favorable qui favorise les réponses comportementales les plus idéales du bot. Une fois que le bot est engagé dans le pot de miel, vous devez continuellement lui fournir les conditions qu'il préfère, en supposant que le bot n'a pas de délai d'attente défini. Le bot peut alors être mesuré, enregistré et étudié. En plus du robot, les données du réseau et de la session sont également isolées pour être étudiées, à condition que le robot ne se connecte pas via TOR.

Dans cette situation, les considérations déterministes permettant de différencier un bot d'un humain sont moins importantes, mais les considérations déterministes lors de l'identification du comportement du bot deviennent plus importantes. Malheureusement, le propriétaire du bot peut apporter des modifications au bot pour empêcher une telle identification s'il est conscient de la condition de pot de miel, ou de la considération logique qui en découle.

4voto

Aaron Points 672

Vaincre les robots de poker peut prendre deux formes : vous pouvez essayer de les identifier et de les bannir du système, ou vous pouvez simplement les battre au poker. La question académique la plus intéressante est de les battre au poker :-)

Voir ici pour des articles sur la façon de battre les robots de poker : http://www.cs.cmu.edu/~sganzfri/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X