[译]基于模型的机器学习 - 3 匹配你的对手
每一天,全世界数以百万计的玩家登录 Xbox Live®,在数百款不同的游戏里彼此对战。他们的乐趣取决于是否能被匹配到实力相当的其他玩家,从而获得良好的游戏体验。那么,我们如何用基于模型的机器学习来自动匹配实力相近的玩家呢?
对于游戏而言,在线世界的一大优势在于随时随地都能找到对手,无论白天黑夜。Xbox Live 的一项重要需求,是能够找到技能水平相当的对手,以便让玩家获得愉快的游戏体验。这一需求意味着系统必须有办法估计玩家的技能。然而,要做到这一点会面临一些重大挑战——尤其是,实力更强的玩家并不总能赢得一局游戏。许多游戏都带有运气成分,在某一局中运气可能会偏向较弱的玩家。更普遍地说,一名玩家的表现会因疲劳或热情起伏等因子而在不同对局之间发生变化。因此,我们不能假设某一局的胜者一定比败者技能更高。另一方面,我们确实预期实力更强的玩家在与较弱玩家的对局中,赢的次数会多于输的次数,所以对局结果确实能提供关于玩家相对技能的有用信息。
图 3.1:Xbox Live® 为在线游戏提供实时的对战匹配服务。
另一个挑战与游戏的新玩家有关。在看到若干对局结果之前,我们对他们的能力几乎一无所知。新玩家并不总是弱玩家——他们可能曾以不同的身份游玩过,或者拥有其他类似游戏的经验。无论哪种情况,关键在于要在仅仅几局之后就对他们的技能给出相当可靠的评估,这样才能把他们匹配给实力相当的玩家。这确保了新玩家拥有良好的游戏体验,从而更有可能继续订阅 Xbox Live。因此,对技能的快速评估对该服务的商业成功至关重要。
最后一个挑战出现在由多名玩家组成的团队进行的对局中。我们观察到一支队伍获胜、另一支队伍落败,而我们必须利用这一信息来了解各个玩家的技能。乍一看,这个“功劳分配”问题似乎无法解决。但我们可以利用这样一个事实:尤其是在在线游戏中,队伍的组成会频繁变化,因此在多局游戏的过程中,我们能够厘清各个玩家对其所在队伍成败的贡献。
在为玩家做对战匹配时,我们需要使用 Xbox Live 中可获得的数据。表 3.1 展示了我们需要处理的那类数据的一个样本,这里取自 Xbox 游戏《光环 2》(Halo 2)。
表 3.1:可用数据的样本,展示了《光环 2》“一对一”(Head to Head)模式下的十局游戏。各列分别给出匿名化的玩家 id、他们的得分、对局结果、对局 id 以及所进行游戏的模式变体。
总结来说,我们的目标是利用上述形式的数据来推断各个玩家的技能,以便在未来的对局中把玩家匹配给技能水平相近的其他玩家。一个次要目标是利用推断出的技能水平来创建“排行榜”,展示某个锦标赛或联赛中玩家的排名。系统还必须考虑到玩家可能一对一对战,也可能组队协作这一事实。此外,我们必须以一种能高效利用对局结果的方式来解决这个问题,从而在只观察到涉及某玩家的相对少量对局之后,就能对该玩家的技能得出准确的评估。
本章开发的模型基于 Herbrich 等人 [2007] 的 TrueSkill 模型。你可以使用配套源代码 [Diethe et al., 2019] 重现本章的所有结果。
参考文献
[Herbrich et al., 2007] Herbrich, R., Minka, T., and Graepel, T. (2007). TrueSkill(TM): A Bayesian Skill Rating System. In Advances in Neural Information Processing Systems 20, pages 569–576. MIT Press.
[Diethe et al., 2019] Diethe, T., Guiver, J., Zaykov, Y., Kats, D., Novikov, A., and Winn, J. (2019). 基于模型的机器学习一书的配套源代码。https://github.com/dotnet/mbmlbook 。
下一节:建模游戏的结果
- 本文作者:BeanHsiang
- 本文链接:https://beanhsiang.github.io/post/2026-07-26-mbml-trueskill/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。