使用 AI 进行橄榄球教练指导

将人工智能、高级统计学和球员数据结合到一个橄榄球 Q-learning 算法中,能否带来更好的战术部署?
312 位读者喜欢这篇文章。
football

Opensource.com

我最近决定重新审视 Football-o-Genetics,这是一个我在 2013 年开发的应用程序,旨在“进化”出接近最优的橄榄球进攻战术部署策略。该应用程序 使用逐场比赛数据以及来自 人工智能(特别是 遗传算法)和高级统计学(以进攻驱动的 马尔可夫模型 的形式)的思想来实现其目标。我开发 Football-o-Genetics 是在我从进化生物学博士课程辍学后不久,因此我选择遗传算法(我第一次在 Russell 和 Norvig 的经典著作 人工智能教科书 中遇到)作为我的优化算法也就不足为奇了。

将近四年后,我对人工智能的理解比那时更广泛和深入,现在我很清楚,其他强化学习方法更适合解决这个特定问题。我认为尝试一下这些其他的强化学习方法会很有趣。具体来说,我选择使用 Q-learning,这是一种学习“最优动作选择[策略]”的技术;也就是说,它可以告诉你在不同情况下采取的最佳行动,当你试图最大化某些奖励时。Q-learning 是一种极其灵活和强大的技术,它是 Google 的 人工智能学会以超人水平玩 Atari 游戏 的关键组成部分。

Q-learning 算法实际上 出乎意料地简单 实现;它只需要状态(即情况)的某种表示、可用动作的列表和奖励信号。对于战术部署问题,我选择使用三个组成部分来表示每个状态:场地位置、档数,以及到首攻的距离的离散化表示(即“短”、“中”或“长”)。例如,如果球队在自己的 33 码线,并且是第二档,还差 10 码才能首攻,则状态编码为“33-2nd-Long”。这种编码对应于大约 100 × 3 × 3 = 900 个状态(由于我处理首攻和达阵情况的方式,实际状态数量较少)。(请参阅下文,了解我为什么选择离散化距离。)

算法可用的动作对应于不同的战术/球员组合。两种战术是“冲球”或“传球”,每种战术都与几名球员之一(冲球的跑卫和传球的四分卫)组合。这意味着对于任何给定状态,大约有 #跑卫 + #四分卫 = #动作 可供选择。

至此,算法已准备好进行训练。训练包括模拟进攻驱动(每次驱动是强化学习术语中的“episode”)并相应地更新 Q 值。进攻驱动开始于随机生成一个起始场地位置。然后,算法使用 ϵ-贪婪策略 选择一个动作。当选择一个动作时,该赛季特定战术/球员组合的实际数据中会抽样出该次进攻推进的码数。这就是我选择离散化距离的原因;它使得近似特定战术/球员组合的真实推进码数分布变得容易。更明确地说,给定的档数/距离/战术/球员组合与一个列表相关联,例如,down_and_distance["2ndMedPass"]["C Newton"] = [-2, 1, 4, 0, 0, 0, 17, 13, 11, 0, 0, 17, 0, 0, 0, 0, 3, 27, 4, 4, 5, 0, 0, -2, 0, 0, 3, 11, 1],并且进攻推进的码数是从该列表中随机抽取的。用于训练模型的数据来自 2012 年,因为那是我为原始应用程序收集的数据。

然后,模拟像典型的橄榄球比赛一样进行,档数和距离也相应更新。失误是根据该赛季实际失误数据估计的概率生成的。当发生失误或驱动达到第四档时,episode 终止,模拟从头开始重新启动。除了达阵之外,所有战术结果的奖励信号均为零,达阵的奖励信号为一。

Heat map of the Q values obtained for first-down play calls at different field positions for the 2012 Carolina Panthers following 100,000 offensive drive simulations.

opensource.com

如图 1 所示,你离端区(图的顶部)越近,驱动最终导致达阵的可能性就越大。你还可以看到,总的来说,在 2012 年的第一档中,允许 Cam Newton 跑球或传球通常是黑豹队的最佳策略。

虽然这些结果很有趣,但它们实际上并不代表最优的战术部署策略,因为该模型将防守视为环境的一部分,而不是能够适应进攻趋势的对手。不幸的是,防守战术部署数据很难获得,但我已决定概述如果我有时间坐下来观看大量橄榄球比赛,我将如何处理这个问题。(人总要有点梦想,不是吗?)

进攻战术有一个很好的自然分类——冲球和传球——但对防守战术进行分类并不那么容易。虽然有一些关于防守战术的信息性描述符可用,例如“闪电战”或“区域防守”与“盯人防守”,但它们似乎都不能完全捕捉到防守战术的精髓。考虑到这种情况,我建议冲锋防守队员的数量可以填补这个角色。虽然你无法通过这种分类获得关于防守覆盖范围的精确信息,但它确实让你感觉到防守在战术中的“侵略性”,我怀疑这种属性会转化为有用的统计属性。例如,我预计冲锋防守队员的数量与进攻方在冲球战术中获得的平均码数之间存在负相关关系。

因此,在确定了防守战术部署的分类后,下一步是决定如何在给定进攻战术部署和防守战术部署的情况下生成码数。我认为我会采取类似于我对 (batter|pitcher)2vec 所做的方法,我在其中构建了一个模型,该模型通过尝试预测几个棒球赛季中每次投球的结果(例如,好球、坏球、左外野高飞球)来学习击球手和投手的分布式表示。类似的橄榄球模型,我将其称为 (offense|defense)2vec,可能如图 2 所示。

Hypothetical model architecture for generating play outcomes given an offense and defense

opensource.com

该模型的输入将是档数、距离、进攻动作(例如,“传球-C Newton”)、防守球队以及该战术中冲锋的防守队员人数。进攻动作的数量大约等于 #球队 × (#四分卫 + #跑卫),我们粗略估计约为 32 × (1.5 + 2.5) = 128。在输出的情况下,执行回归似乎是显而易见的选择,但从概率的角度来看,使用均方误差优化回归模型 等同于假设输出服从高斯分布(以模型和输入为条件),我认为高斯分布在这里并不合适。另一方面,将所有可能的推进码数(即从 -99 到 99)都视为不同的类别可能是不必要的细致,并且可能使学习变得嘈杂。

Histogram of the yards gained on every play from the 2015 NFL season.

opensource.com

查看图 3 中的直方图(从卡内基梅隆大学发布的 2015 NFL 数据集 生成),我认为合理的输出层可能有一个 100 到 40.5 码的区间(代表分布的 1%),一个零码区间,-15 到 -5.5 码和 -5.5 到 -0.5 码的区间,以及从 0.5 开始(因此 0.5 到 2.5 将是第一个区间)到 40.5 结束(因此最后一个区间是 38.5 到 40.5)的每个两码跨度的区间。

要为给定的战术生成码数,你首先要使用档数、距离、进攻动作、防守和冲锋防守队员人数提供的概率分布来抽样一个区间。从那里,你将从区间中包含的码数中均匀抽样。因此,对于范围从 18.5 到 20.5 码的区间,你将有 50% 的机会获得 19 码,50% 的机会获得 20 码。显然,你可以对这些分布做更复杂的事情,但分区间方法似乎是一个合理、简单的近似。至此,剩下要做的就是实现 minimax Q-learning,然后使用新的码数生成器重新运行模拟。

无论如何,这就是所有假设。你可以在 GitHub 上下载 Football-o-Genetics 源代码。如果你做过类似的工作,或者如果这个项目最终启发你从事自己的项目,我很乐意听到你的消息。

经 Red Hat 高级软件工程师 Michael A. Alcorn 的博客 许可转载。

User profile image.
Michael 目前是 USDA 农业研究服务中心的人工智能卓越中心研究员。此前,Michael 获得了奥本大学机器学习博士学位,并且曾经是 Red Hat 的机器学习工程师。你可以在他的网站上了解更多关于他的信息。

4 条评论

你的想法对那些玩梦幻橄榄球的人有用吗?

谢谢。我的儿子和女婿是梦幻橄榄球参与者,当我读到你的文章时,这让我产生了疑问。我会把你的链接分享给他们。

回复 作者 malcorn

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.