现在有一个新的开源扑克机器人叫做PokerPirate。我对网络应用可以检测/阻止/击败扑克机器人的任何创造性方法感兴趣。(这纯粹是一个学术讨论,与PokerPirate的编写精神相同。)
回答:
从服务器端视角击败机器人
-
许多在线扑克网站使用弹出式验证码输入,这些验证码由可疑活动触发。
-
一些扑克网站监控玩家的在线时间和模式(例如,最坏的情况是玩家24×7全天候持续玩16个牌桌,几乎不可能是真人。(然而,有些玩家确实有能力玩非常大的手牌量,这在没有经验的人看来可能像是机器人)
-
制造一些小故障。如果你怀疑一个玩家是机器人,稍微改变他们的牌在屏幕上的位置几个像素,使他们的牌的颜色/设计/图案在1/100的手牌中有所不同,看看是否会让他们出错。如果它无法进行屏幕截图,它将在所有决策上超时,这就可以相当肯定地证明是机器人。
-
时间提示,如果一个电脑玩家在毫秒内响应选项,而没有时间思考重大决策,这可能是可疑的。
-
自我监控。扑克网站pokertableratings.com挖掘了大量大型网站的数据。它受到了褒贬不一的评价,有些人喜欢这种透明度,另一些人则讨厌它。然而,好处是,曾经出现过可疑的玩家统计数据(VPIP百分比、PFR百分比是一些可以记录的大量可量化统计数据中的几个),这些统计数据导致了作弊的结论。
-
人工智能分类网络可以监控可量化的统计数据,以对流氓作弊或机器人玩家进行分类。
-
当在线扑克还是一个相当新的实体时,有传言和谈论(证据有限),一些扑克客户端软件会对可疑玩家的桌面进行屏幕截图,以查看他们是否正在运行辅助他们的程序。然而(即使这是真的),运行两台计算机来独立执行这两项任务也可以绕过这一点。
-
一些机器人的设计可能相当简单,如果你能发现他们的玩法风格,看看他们在相同情况下的行为(请注意,这只有在不复杂的机器人使用非常基本的策略时才有可能),你就可以相当快地发现它们。
-
程序功能使用不一致会倾向于玩家是真实的。例如,许多扑克网站的游戏中都有一个“轮到我时弃牌”按钮。如果你拿到一手坏牌,并且正在等待另一个玩家决定该怎么做,很多玩家会勾选这个按钮。机器人可能会使用这些按钮。不同之处在于,机器人在使用频率上会处于极端状态,他们可能会一直使用这些按钮,或者根本不使用。然而,一个玩家通常可能会按下“自动弃牌”,但有时他们会点击弃牌,即使在最有利的条件下也是如此。例如,一个真正的玩家通常会按下自动弃牌,但这次他们没有。轮到他们弃牌了,没有其他玩家采取行动,现在他们已经被赋予了尽可能有利的条件。现在,如果他们按下弃牌,他们从一开始就很可能按下自动弃牌。这种行为是不一致/未优化/随机的,与人类的行为一致。点击这些功能的时间提示是其他的指标。重要的是要认识到这些都是指标,而不是确凿的证据。所有这些行为指标都可以很容易地模拟出来。
从玩家的角度击败机器人
-
尝试使用像PokerTracker这样的软件尽可能多地记录和收集数据
-
尝试识别其玩法风格的模式
-
尝试找到下注大小与彩池/#玩家和手牌强度之间的关系
-
尝试计算它的手牌范围。一个低级别的机器人可能不会经常虚张声势,以至于引起任何重要的战略关注,所以为其构建高度准确的手牌范围应该不会太难。
-
尝试通过数据分析和试错找到它游戏中的漏洞。一旦发现漏洞/模式,就尝试反复利用它们,并避免任何其他情况。
人类有适应能力,而机器人可能不那么擅长,而且人类会被上头、以结果为导向的思维和挫折感所牵制,而机器人不会。你可以利用这一点。
所以本质上,如果机器人足够聪明,能够在决策过程中模拟真实的时间延迟,以及创建合理和真实的玩法模式,你就无法阻止它。再加上一些随机的条件和简单的回击(扑克玩家的词汇通常相当有限),你就会拥有一个很难被检测到的人工智能玩家。
机器人可能会做什么来避免被检测到
避免被检测到的关键是从尽可能多的角度思考问题。你试图在一个非常小且受限制的世界中模拟智能的人类行为。你可以运行的大多数行为模拟都相当明显,但你的机器人越不一致和不可预测,就越不容易被发现。
-
创建真实的玩牌时间表(即,每周3-5次,每次4小时,一年中偶尔休息一周)。
-
运行程序在单独的计算机上做出决策,控制一台僵尸计算机,以防任何网站进行屏幕截图。
-
随机化行动时间(不要立即行动,每次行动等待0.5-2秒)
-
在大决策时超时。如果一个决策是模棱两可的,计算出决策,然后等待一段时间来模拟思考。
-
随机使用客户端软件功能。通过点击所有牌桌上的“暂时退出”按钮来模拟上厕所,并且时不时地休息5分钟。
-
模拟聊天,扑克聊天通常是非常简单的单行,通常不会有讨论或辩论。在适当的可检测的时刻说一些像“倒霉”或“闭嘴”这样的话。或者甚至让编码员监控他的机器人,并在执行过程中参与聊天。
-
确保鼠标移动是真实的。如果牌桌是平铺的,不要在左上角的牌桌上做出决定,然后立即在右下角的牌桌上做出决定。大多数网站软件现在都提供键盘快捷键,这些可能比使用鼠标移动更可取。
-
做一些人工智能分类器根本不会期望的事情。例如,一年一次给他们打电话,提出一个简单的非复杂的问题(“我今天无法登录!”或“互联网坏了!”)不太可能产生太大的影响,但是如果为扑克公司工作的人足够聪明,他们可能会将其识别为一个可靠的指标。
-
零星的输钱会话。可以模拟上头,机器人可以玩得很糟糕,并且时不时地输掉一些钱。每个人都会在某个时候上头。
令人担忧的是,扑克网站并不特别关心是否有机器人在他们的网络上运行,每个玩家在抽水方面都价值很大,并且从纯粹愤世嫉俗的商业角度来看,唯一的缺点是如果被发现会带来负面新闻。
即使已经发现了公然的漏洞利用(在谷歌上搜索Cereus网络丑闻或Absolute Poker丑闻,这令人非常震惊),但这项业务似乎仍然能够生存和保持健康,只会失去受过良好教育的盈利玩家(其中没有多少)。这增加了网络中技能较低的玩家的比例,这反过来又吸引了优秀的玩家回来。这是一个经典的双刃剑。这是进行适当市场监管的绝佳论据。
重要的是要注意,对于每场游戏,都存在纳什均衡。在线扑克按照现在的运行方式有一个时间线,为了让人们在未来信任它(如果人们信任它),它将不得不转向更社交的东西(摄像头/VoIP),因为机器人最终将因为在数学上更胜一筹,并且在心理上具有免疫力而接管。扑克人工智能社区非常活跃,由学术界和/或资本利益推动。
诸如限制性扑克之类的更简单的扑克版本已经在小型搜索空间中接近解决。人工玩家击败更复杂的游戏版本(无限注变体/底池限注奥马哈等)只是时间问题。
结论
在行业转向更社交的在线游戏设置之前,复杂的机器人根本无法被检测到。这不会解决问题,但肯定会使机器人在较低级别上更难获胜。我们已经看到PKR的发布略有变化,3D和更具互动性,每小时手牌数更少,在其他网站上多桌游戏很难完成。
这个问题也受到行业性质的影响,这是坚持规模更大、信誉更高的网站的另一个原因,在这些网站上,信誉已越来越融入其商业模式。缺乏透明度以及虚假的透明度无济于事。
目前机器人开发人员面临的真正挑战是编写一种获胜的算法,这并不像看起来那么简单。每个玩扑克的人都认为自己是一个优秀的、盈利的或盈亏平衡的玩家,这根本不是真的。这就是人们继续玩下去的原因,即使他们输了钱,因为他们仍然认为自己只是运气不好,或者他们的玩法风格不被理解。人类心理上的这种傲慢和弱点已经让输钱的玩家损失了很多钱,这也是扑克仍然可以盈利的根本原因。
扑克是一种极其复杂的游戏,需要数年才能擅长(古老的格言仍然适用,“十分钟学习,一生掌握”)。运气因素在长期内极其有限。
像任何其他职业一样,要变得优秀,你需要学习数百上千个小时,并玩数千次。你会理解那些经验较少的玩家不会理解的事情,发现那些经验较少的玩家不会发现的事情。学习会持续很长很长的时间,也许比我们一生还要长。这是一款复杂的游戏。
你多久在电视上看到一场高额现金游戏,听到有人对着它大喊“这是一个简单的跟注!”从而证明业余爱好者确实不理解或认识到游戏的复杂性,并且真正相信那个级别的游戏仍然非常简单。事实并非如此。那些高额玩家(很多时候)出现在电视上是因为他们真的非常非常擅长。也可能在玩一个复杂的元游戏,而我们的业余爱好者无法识别它的存在。业余爱好者不会站在一位国际象棋大师面前并大喊让他们移动他们的骑士,但由于扑克作为不完全信息博弈的动态,他们的心理使他们真正相信自己所说的话。就像在国际象棋中一样,决策可能是复杂、敏感的,并且对整个游戏极其重要。随着游戏复杂性的增加,微不足道的决定不再那么微不足道,因为你的对手期望它们。
一旦你将你的机器人或你的游戏提升到更高的级别,你不可避免地会遇到更多更熟练的玩家。然后,你的策略的复杂性将不得不提升到下一个级别,考虑到牌桌形象、范围平衡、复杂而巧妙的虚张声势(即不仅仅是在弱点时虚张声势,还在范围上虚张声势,并在形象上虚张声势等),以及更详细的手牌范围分析。随着你不断进步,这确实变成了一个不同的游戏。
一旦编写出一个获胜的机器人,毫无疑问,编码员将拥有足够的技能、知识和常识来以一种无法检测到的方式应用该机器人。这对他们来说微不足道。
所以你真的什么也做不了。如果你想在线玩,请了解风险。永远不要冒险超过你能承受的金额,并尝试准确记录支出,这样你就不会对自己的能力产生错误引导、不切实际且最终有害的过度估计。设置止损点,如果你没有优势,或者你不确定自己是否有优势,请离开牌桌!当然,如果每个人都这样做,就没有人会赢,这就是游戏掠夺性和剥削性的本质,这就是竞争的来源,这就是它有趣的所在。