Journal

Learning to Ball: Composing Policies for Long-Horizon Basketball Moves

Pei Xu, Zhen Wu, Ruocheng Wang, Vishnu Sarukkai, Kayvon Fatahalian, Ioannis Karamouzas, Victor Zordan, C. Karen Liu

Stanford University; University of California, Riverside; Roblox; Clemson University

问题与动机

许多现实任务由一连串性质迥异的子任务组成,成功完成这类多阶段、长时程任务既需要掌握异构技能,也需要在技能之间无缝切换。篮球是一个典型例子:像”运球中起跳投篮”(shoot-off-the-dribble)这样的基本动作,包含运球、收球(gather)、投篮等子任务,而收球是一个起止状态都不清晰的过渡子任务。

强化学习在训练单一技能策略方面表现良好,但把这些策略组合成一个连贯系统仍是难题。已有两类主要方法都存在局限:

  • 专家混合(mixture of experts):依赖各策略之间充分探索到的共享状态,而运球与投篮几乎没有共享状态,条件不成立。
  • 技能链接(skill chaining):允许策略拼接,但要求每个技能都有明确定义的终止状态集合,无法处理”目标依赖后续策略上下文”的中间任务。例如收球可以直观描述为”把角色带到一个可以投篮的状态”,但仅凭状态或动作变量很难为这一目标设计奖励函数。

本文要解决的核心问题就是:如何为起止状态定义不清的中间子任务构建策略,从而把差异极大的技能组合成一个多阶段长时程任务。

核心方法

策略集成框架

核心思想是先独立训练定义明确的子任务策略,再用它们来引导训练目标模糊的中间子任务。对于一个由子任务 A、B、C 组成的序列,其中 A 和 C 目标明确而 B 不明确,方法用策略 A 提供 B 的有效初始状态分布,用策略 C 的状态值函数来塑造 B 的终止奖励,并在训练 B 的同时对预训练的 C 做自适应,使其能处理 B 产生的状态。

作者把子任务之间的过渡按难度分为三类:

  • A. 直接执行(Direct Execution):后续策略可以直接从前置策略的终止状态执行,适用于两个连续策略普遍共享状态的情况(如投篮到移动,移动到防守)。
  • B. 相互适应(Mutual Adaptation):后续策略需要适应前置策略产生的新初始状态,同时前置策略要把系统带到后续策略可管理的状态(如接球到投篮)。只需值函数奖励塑造加策略自适应,无需专门的中间策略。
  • C. 中间策略(Intermediate Policy):需要训练一个中间策略来桥接不兼容的子任务(如运球到投篮之间需要收球策略)。这是最难的情况,也是本文重点。

从非结构化动作数据学习原始策略

系统用 PPO 作为骨干强化学习算法,并采用对抗式模仿学习(GAN 类架构)训练原始策略。关键在于放弃对结构化动作数据集(全身、手指、篮球轨迹一一对应)的假设,转而从非结构化数据学习:

  • 网络视频:用 ExAvatar 和 TRAM 从在线视频中提取手部和身体姿态。
  • 无手部全身动捕:来自 LAFAN1 的跑步动作和 CMU 动捕库的其他动作。
  • 仅手部数据:作者用 Rokoko Smartgloves 自行采集投篮和运球的手指动作。

方法不假设有对应的篮球轨迹,控制策略在任务奖励引导下自行探索与球的合法交互。

学习运球:把全身姿态分为下身、上身、双手三组,并把双手(含腕部旋转)作为独立于手臂的一组(以肘部为根链接),以便利用仅手部动作并改善双手协调、防止双手同时运球等不自然姿态。运球策略用两个模仿目标(手部与其余身体部位,各由判别器提供奖励)和两个任务奖励(速度控制导航与运球)训练。系统还实现两类违规检测来遵守篮球规则:球与手以外身体部位的非法接触,以及持球走步。

学习投篮:不做身体部位分组,直接用三段全身跳投演示做模仿学习,配合衡量投篮精度与出手前持球表现的任务奖励。

学习中间子任务(收球)

收球策略用运球 rollout 的终止状态作为初始状态分布,用投篮策略的状态值函数塑造奖励,使角色学会到达投篮策略容易成功的状态。收球奖励定义为:

\[r_{gather} = \begin{cases} -1 & \text{若检测到违规} \\ r_{pose} + 0.25\,\mathrm{Clip}(\bar{V}_{shoot}(s_t, g_t), -v, v) & \text{否则} \end{cases}\]

其中 \(r_{pose} \in [0, 1]\) 评估持球表现(手指与手掌相对球的姿态、身体相对篮筐的朝向),\(\bar{V}_{shoot}\) 是从状态 \(s_t\) 起遵循投篮策略累积的任务奖励,被限制在 \([-v, v]\) 内(实验中 \(v = 1\)),并用 PopArt 对 critic 输出做值归一化。启发式姿态奖励 \(r_{pose}\) 仍然必要,因为当角色远离投篮姿态时值函数普遍给出低值,引导不足。

一个关键设计选择是在训练收球策略的同时对投篮策略做自适应,而非先训完收球再适应。方法用 AdaptNet 的隐空间操纵来适应投篮策略:从收球训练中筛出”好状态”(由不断演化的 \(\bar{V}_{shoot}\) 评估得分大于 \(-v\))作为投篮策略的初始状态。由于早期收球产生的姿态与投篮高值状态差异明显,作者通过随机允许 25% 值估计低于 \(-v\) 的状态(只要球在手中且角色大致朝向篮筐)来引导学习。收球策略还引入了指示中枢脚的额外变量以防止走步。

组合策略完成长时程任务

作者引入一个高层路由策略来组装子任务策略。与传统只在每步激活一个策略的硬路由不同,该路由做软合并。定义参考指令 \(c_t\) 为 one-hot 向量(指示运球、收球或投篮),路由策略输出相对 \(c_t\) 的偏移来产生原始策略动作的线性组合权重:

\[\omega_t = c_t + \pi_c(s_t, g_t, c_t), \quad a_t = \omega_t \cdot A_t\]

其中 \(A_t = [a_t^{dribble}, a_t^{gather}, a_t^{shoot}]\) 是三个子任务策略的确定性输出集合。运球时 \(c_t = [1, 0, 0]\),收到投篮指令后变为 \([0, 1, 0]\);当 \(\bar{V}_{shoot}(s_t, g_t) > -v\) 时设 \(c_t = [0, 0, 1]\),表示投篮策略可以接管。训练初期 \(\pi_c\) 输出很小,探索以 \(c_t\) 为引导;随训练进行 \(\omega_t\) 可偏离 \(c_t\) 以生成更稳定的过渡。

为鼓励每步只有一个策略主导,路由策略的训练奖励定义为:

\[r = \begin{cases} r_{gather} & \text{若收球策略主导控制} \\ 0.5 I_{switch} + r_{shoot} & \text{若投篮策略主导} \\ 0 & \text{否则} \end{cases}\]

一个策略”主导”是指其在 \(\omega_t\) 中的权重大于其余两者之和;\(I_{switch} = 1\) 仅在主导策略首次从收球切到投篮时成立。训练完成后,作者还通过在线采样的监督学习把分层策略蒸馏成单个神经网络以降低推理开销,蒸馏后性能几乎无损。

其他技能过渡

同样的方法直接用于”运球中传球”(也属于 C 类过渡)。系统还支持抢篮板、接球、防守、通用移动等技能。A 类过渡靠直接执行后续策略实现;B 类过渡是 C 类的简化版,只需用后续策略值函数做奖励塑造并用前置策略 rollout 做自适应。训练接球与传球时用了 B 类的变体:先分别预训练两个策略,再通过两个交互智能体的协同自适应和协同奖励塑造联合微调,使传球方学会投出可接的球,接球方学会以可立即传球/投篮的状态接球。

实验与结果

实验用 IsaacGym 作物理引擎,所有策略用 PPO 训练。定量分析聚焦最难的 C 类过渡(运球到投篮),采用两个指标:接球率(发出投篮指令后、出手前球是否被成功收住持有)和命中率(成功投中占尝试的比例,因接球失败或未响应指令而失败也计入尝试)。

对比三个基线:

  • DirectExecution:直接用预训练投篮策略,无自适应无中间策略,靠网格搜索状态值找最优切换点。
  • NoAdapt:加入收球策略但不适应投篮策略,\(\bar{V}_{shoot}\) 固定。
  • SequentialChaining:把收球和投篮当作一个整体阶段,用混合参考动作训练单一策略。

主要结果:

  • 接球率:本文方法在各运球速度下达到 98.3%,稳健一致。DirectExecution 几乎完全失败(0.7%),暴露动态运球状态与未适应投篮策略之间的不兼容。NoAdapt 的收球部分表现好,但预训练投篮策略泛化差导致整体下降。SequentialChaining 优于 DirectExecution 但不如带独立收球策略的 NoAdapt,说明缺乏显式阶段划分会损害策略效果。
  • 命中率:本文方法总体 91.8%,接近仅从对齐参考状态初始化的原始投篮策略(93.0%)。三个基线分别只有 1.3%、6.1%、12.7%。按接近方向细分,正面接近 95.4%,背对 90.4%,左右正交约 92.7% 和 92.4%。多数漏投源于离篮筐过远的位置,而非策略过渡失败。

消融研究

  • 中间策略训练策略对比表明,基于状态值的状态转移(”Value”)能显著稳定接球率,而随机转移表现最差。基于预训练投篮策略做自适应(A.Shoot)比从头训练(S.Shoot)有更好的命中率。方法采用值转移加随机采样互补的策略以提升鲁棒性,因为与收球策略同步训练的值估计器并不总可靠。Gather+Shoot(SequentialChaining)表现劣于 Gather→A.Shoot (Value),证明为差异巨大的子任务显式设置多阶段过渡的必要性。
  • 高层路由策略对比表明,引入高层策略后接球率从 86.0% 提升到 98.3%,命中率从 67.4% 提升到 91.8%。没有高层策略时用启发式规则切换会导致响应延迟、卡在持球姿态不投篮甚至角色摔倒。软路由也明显优于硬路由,后者甚至不如仅用启发式参考指令的基线,说明即便有预训练原始策略,学会有效组合它们仍是非平凡挑战。

系统还展示了多智能体协作与对抗:传球接球、运球中传球、接球即投篮,以及带防守(掩护、封盖、举手阻挡)的 2 对 2 实时对战。

局限与未来工作

  • 动作质量仍不及熟练人类球员,主要受限于参考数据不足。例如角色常采用手在胸前的高位运球姿态(类似跑步时的手臂位置),球控可靠但缺乏人类运球的流畅感;因只用一段低跳动作,抢篮板时垂直起跳很小。
  • 未来方向包括引入生物力学上更精确的手部模型以促成更自然的球手交互,以及用大语言模型为多个模拟球员规划高层战术,从而在协作与对抗设定下训练多个自主智能体。