神经符号方法构建可执行动作模型:从运动程序到智能动作理解
1. 项目概述:从动作标签到可执行模型
在机器人、人机交互和智能监控领域,理解人类动作一直是个核心挑战。过去十年,我们习惯了用深度学习模型给视频或动捕数据打上“行走”、“搅拌”、“切割”这样的标签。这确实解决了“是什么”的问题,但离真正的“理解”还差得很远。想象一下,你教一个机器人助手做菜,它识别出你在“搅拌”,但它能判断你搅拌的力度是否均匀、节奏是否正确、手腕的弧度是否标准吗?它能从你一个不自然的停顿中,预判出你可能需要递盐,还是锅底要糊了?传统基于标签的方法对此无能为力,因为它丢失了动作的“内部结构”和“执行质量”这两个关键维度。
这正是“可执行动作模型”要解决的问题。它不满足于当一个被动的分类器,而是要成为一个能“模拟”和“推理”动作的智能体。其核心思想是,将一个动作(比如“搅拌”)不再看作一个静态的标签,而是看作一个可以“运行”的程序。这个程序定义了动作的意图(让酱汁乳化)、结构(手腕的圆周运动、肘部的稳定支撑)以及与环境交互的规则(适应锅的尺寸和热度)。这种从“识别”到“模拟”的范式转变,正是神经符号方法大显身手的地方:用神经网络强大的感知能力从原始数据(如动捕数据)中提取模式,再用符号系统(如领域特定语言)将其编码为结构化、可组合、可推理的程序。
我最近深入研究了爱丁堡大学团队提出的ExAct框架,它正是这一思路的杰出实践。他们设计了一种名为ExAct的领域特定语言,将人体运动数据直接“编译”成一种称为“运动程序”的中间表示。这个程序不是详尽的脚本,而是一个“欠指定”的奖励生成函数,结合“前向-后向表示”这一强化学习技术,可以实现零样本的策略推断和动作生成。最终,通过聚合这些程序,构建出一个可执行的神经符号模型。这不仅在理论上优雅,在动作分割和异常检测两个下游任务上的实验也表明,它能用更少的数据学到更本质的动作关系,泛化能力更强。接下来,我将拆解这套方法的每一个环节,分享其设计精妙之处、实操中的关键点,以及我们如何借鉴其思想来解决实际问题。
2. 核心思路拆解:为什么是“神经符号”与“可执行模型”?
要理解ExAct的价值,我们得先看清现有方法的局限。当前主流的人体动作理解,无论是基于视频还是动捕数据,本质上是一个模式匹配问题。卷积网络、时序卷积网络(TCN)、甚至Transformer,都在努力寻找数据中的统计规律,以完成分类(这是什么动作)、分割(动作的起止点在哪)、检测(动作是否异常)等任务。这些方法取得了巨大成功,但它们存在一个根本性缺陷:模型学到的是一张复杂的“照片”,而非一个可操作的“蓝图”。
照片再清晰,你也无法用它来搭建一座房子或调试一台机器。同样,一个深度神经网络模型即使达到了99%的识别准确率,它也无法告诉你“行走”和“跑步”在关节运动机制上有何异同,也无法生成一个符合物理规律的“搅拌”动作,更无法在动作执行到一半时,判断其质量并预测后续可能发生什么。这就是“黑箱”模型的表征能力天花板。
神经符号方法试图打破这个天花板。它的核心优势在于组合性与可解释性。
- 组合性:复杂动作由简单动作组合而成(如“切菜” = “拿起刀” + “下压” + “收回”)。符号系统天生擅长描述这种层次化和结构化的组合关系。一个可执行的模型可以像搭积木一样,将基础动作单元组合成复杂的程序。
- 可解释性:模型决策的依据不再是难以捉摸的神经网络激活值,而是人类可读的程序逻辑(如
[0,100]LArm.x(0.3)表示“在0到100时间步内,将左臂关节的x轴位置调整到0.3”)。这使得调试、验证和信任模型成为可能。 - 可执行/可模拟:这是最关键的一步。一个符号化的程序可以被“执行”,从而生成动作或评估动作。在ExAct中,运动程序被解释为一个奖励函数,驱动一个物理仿真环境中的智能体产生运动。这意味着模型不仅知道动作“看起来什么样”,还知道“怎么做出来”。
ExAct框架的巧妙之处在于,它找到了连接神经与符号的桥梁——“前向-后向表示”。这是一种从大规模人类运动数据中预训练得到的表示,它编码了人类运动的先验知识。ExAct运动程序通过指定某些关节在特定时间的目标位置(即奖励),可以在这个表示空间中计算出一个潜在向量 z,进而通过一个简单的公式 Q(s,a) = F(s,a)^T z 直接得到最优动作值函数,实现零样本策略推断。这相当于用符号程序“编程”了一个神经网络策略生成器。
注意:这里的“零样本”并非指识别从未见过的动作类别,而是指对于一个新的运动程序(可能从未在训练数据中完整出现过),模型无需额外训练,就能直接推断出执行该程序所需的控制策略。这得益于前向-后向表示已经编码了通用的人类运动动力学。
所以,整个技术路线的逻辑链条非常清晰:原始动捕数据(高维、连续) -> 神经网络编码器 -> 运动程序(低维、符号化、结构化) -> 解释为奖励函数 -> 利用前向-后向表示生成可执行策略 -> 聚合程序形成可执行动作模型。这个模型既保留了神经网络处理原始信号的能力,又具备了符号系统的推理和组合优势。
3. ExAct领域特定语言(DSL)深度解析
ExAct DSL是整个框架的“编程语言”,是将连续运动离散化、符号化的关键。它的设计直接决定了模型的表达能力和可操作性。我们来看其核心语法(基于巴科斯范式):
<program>(程序):由一个或多个<motion>(运动段)按顺序组成,用分号分隔。这允许描述复杂的、多阶段的动作序列。<motion>(运动段):定义了一个时间区间[t1, t2]内的运动目标。t1和t2是整数时间步。<sensors>(传感器组):由一个或多个<sensor>(传感器)组成,指定在该时间区间内需要被控制的关节及其目标。<sensor>(传感器):基本单元,形式为joint(x)。其中joint是特定关节的标识符(如LArm.x表示左臂关节的x轴旋转),x是一个在[-1, 1]范围内的目标位置值。
一个具体的例子:程序 [0, 150]RWrist.y(0.3)RElbow.y(0.2); [150, 300]RWrist.y(-0.1)RElbow.y(0.0) 描述了一个两段式的右臂动作。第一阶段(0-150步)控制右手腕和右肘的y轴旋转到特定位置;第二阶段(150-300步)改变手腕位置,并将肘部复位。
设计哲学与优势:
- 欠指定性:这是ExAct DSL最精妙的设计。一个运动程序不需要指定所有23个关节(以SPML模型为例)在每个时刻的状态。它只关注动作意图相关的“关键”关节。例如,“挥手”可能只指定手腕和肘部,而肩部和躯干的协调运动则由前向-后向表示中编码的运动先验来自动补全。这极大地提高了程序的简洁性和泛化性,也更符合人类描述动作的习惯(我们不会说“走路时第13节脊椎旋转0.02弧度”)。
- 时间组合性:程序可以通过分号将多个运动段串联起来,自然地表征动作的阶段性和时序结构。
- 函数组合性:多个传感器目标在同一运动段内是同时生效的,它们共同定义一个复合的运动目标。
语义与执行:如何让这段“代码”动起来?ExAct定义了程序的语义,将其编译为潜在空间向量 z。具体来说,对于程序中的每个运动段,根据其指定的关节目标,计算一个奖励信号(使用sigmoid函数将目标误差转化为奖励),然后利用预计算的经验缓冲区 D,通过公式 z = (1/|D|) Σ r * B(s) 计算出该运动段对应的 z 向量。这个 z 向量就是驱动策略的“意图编码”。对于任何时间步 t,如果它落在某个运动段内,就使用该运动段的 z_t,否则 z_t 为零向量。最终的动作价值函数为 Q(s_t, a_t) = F(s_t, a_t)^T z_t,智能体只需选择使 Q 值最大的动作 a_t 即可。
实操心得:在设计自己的DSL时,平衡表达力与复杂度是关键。ExAct选择关节位置作为基本谓词,是因为其与动捕数据直接对应且物理意义明确。如果你的应用场景涉及力控或更复杂的运动基元(如“画圆”、“直线推进”),可能需要扩展DSL的词汇表。但切记,每增加一个原语,都会增加解析器和后续推理的复杂度。
4. 从数据到程序:运动-程序解析器的构建与训练
有了ExAct DSL,下一个核心问题就是:如何从一段真实的、连续的人体运动捕捉(MoCap)数据,自动生成对应的ExAct运动程序?这就是解析器(Parser)的任务。这是一个典型的“代码生成”问题,输入是姿态序列,输出是符合语法的程序字符串。
解析器架构:ExAct采用了一个经典的编码器-解码器架构,但针对运动数据的特点进行了精心设计。
- 编码器:采用时空图卷积网络(ST-GCN)。为什么是GCN?因为人体骨架本质上是一个图结构,关节是节点,骨骼是边。ST-GCN能同时捕捉关节间的空间关系(同一帧内,手腕移动如何影响肘部)和时间上的动态演变(手腕的运动轨迹)。它将一段T帧的MoCap数据编码为一组m个运动token
c1:m。这个编码过程提取了运动的时空特征,为后续生成程序提供了紧凑的表示。 - 解码器:采用大型语言模型(LLM),具体是Qwen2.5-Coder-3B,并使用了LoRA进行高效微调。LLM在这里扮演“程序员”的角色,它根据编码器提供的运动token作为前缀,自回归地生成ExAct程序字符串(如
[0,128]rwrist.y(0.3)relbow.y(0.2);...)。选择代码LLM是因为其本身在理解和生成结构化文本(代码)上就有优势。
训练数据从何而来? 这是最大的挑战之一。我们并没有“运动-程序”配对的大规模真实数据集。ExAct的解决方案非常巧妙:利用DSL语法和前向-后向表示,反向合成数据。
- 步骤一:利用ExAct的BNF语法,随机生成大量(如5万条)语法正确但语义多样的运动程序。通过控制程序长度、运动段数量、关节选择等参数来保证多样性。
- 步骤二:对于每一条生成的程序,利用其“可执行”的特性,将其作为奖励函数,在前向-后向表示驱动的仿真环境中,生成对应的人类运动数据。这就得到了一个高质量的
(程序,运动)配对数据集。 - 步骤三:用这个合成数据集来训练编码器-解码器解析器。
损失函数:训练时使用联合损失函数 L = L_LM + λ * L_InfoNCE。
L_LM是标准的语言建模交叉熵损失,确保生成的程序字符串正确。L_InfoNCE是对比损失,用于对齐运动编码空间和语言模型的理解空间。这是关键的一步,它迫使编码器产生的运动tokenc与解码器LLM在生成程序tokeny时所期待的上下文表示在潜在空间中对齐。没有这个约束,编码器可能学到与程序语义无关的运动特征。
语法引导生成:为确保生成的程序100%符合ExAct语法,在解码过程中采用了语法引导生成技术。它约束LLM在每个生成步骤只能从符合语法规则的token中进行选择,彻底避免了生成非法程序的问题。
避坑指南:在复现或类似项目实践中,合成数据的质量决定了解析器的上限。需要确保生成的程序在运动上是合理且多样的。此外,λ参数平衡了两个损失项,需要小心调整。λ太大可能使模型过于关注对齐而忽视程序准确性,λ太小则可能导致生成程序与输入运动不匹配。论文中通过初步实验将其设为0.15是一个不错的起点。
5. 可执行动作模型的构建与聚合策略
单个运动程序只能描述一个动作实例。要形成一个具有泛化能力的“动作概念”(如“切割”),我们需要将多个相似的实例聚合起来,构建一个可执行动作模型。ExAct的聚合策略充分利用了其符号表示的组合性优势。
核心操作:程序的逻辑析取。假设我们已经通过解析器,为某个动作类别(如“切割”)收集了一组运动程序 Φ = {φ1, φ2, ..., φk}。每个程序 φi 都能为每个时间步 t 计算出一个潜在向量 z_t^{φi}(对于程序未覆盖的时间步,该向量为零)。如何将它们合并成一个统一的模型?
ExAct采用了一种算术形式的逻辑“或”操作。对于每个时间步 t,聚合后的潜在向量 z_t^Φ 计算如下:
z_t^Φ = 1 - Π_{φ∈Φ} (1 - z_t^φ)
这个公式的直观解释是:只要集合 Φ 中任何一个程序 φ 在时间步 t 有活跃的意图(z_t^φ 非零),那么聚合模型在该时间步就应该表现出相应的意图。当所有 z_t^φ 都很小时,z_t^Φ 接近0;当任何一个 z_t^φ 接近1时,z_t^Φ 也接近1。这类似于一个“软或”门。
最终,可执行动作模型对于状态 s_t 和动作 a_t 的价值评估为:Q_Φ(s_t, a_t) = F(s_t, a_t)^T z_t^Φ。
程序选择与多样性:直接聚合所有解析出的程序可能效率低下且会引入噪声。因此,需要为每个动作类别选择最具代表性的程序子集。论文中采用了一种基于多样性的选择策略:
- 边界设定:每个动作最多聚合100个程序(防止模型过于臃肿)。
- 多样性度量:优先选择那些在程序长度和使用的关节谓词种类上差异大的程序。例如,对于“行走”,既要有描述正常步态的程序,也要有包含手臂摆动变体的程序。这确保了聚合模型能覆盖该动作的多种执行方式。
神经符号模型的最终形态:至此,我们得到了一个混合模型。
- 符号部分:是一组ExAct运动程序
Φ,它们是人类可读、可编辑、可组合的。这部分提供了可解释性和组合性。 - 神经部分:是预训练的前向-后向表示函数
F和B,以及用于计算z的机制。这部分提供了从符号到连续动作的映射和强大的生成能力。 这个模型可以被“执行”来生成符合该动作类别的运动,也可以被用来评估一段新运动与该动作模型的匹配程度(即异常检测)。
6. 下游任务验证:动作分割与异常检测
理论再优美,也需要实践检验。ExAct论文在人体动作分割和人体动作异常检测两个经典任务上验证了可执行动作模型的价值。这两个任务恰好分别考验了模型的“生成”和“判别”能力。
6.1 动作分割:可执行模型作为数据增强器
任务定义:给定一段连续的人体姿态序列,为每一帧打上动作标签。这是一个密集预测问题。
传统方法的瓶颈:严重依赖大量标注数据,且对于长尾、细粒度的动作(如烹饪中的“撒盐”和“撒胡椒”),模型容易过拟合。
ExAct的解决方案:利用可执行动作模型进行语义感知的数据增强。
- 模型构建:在训练集上,为每个动作类别构建其可执行动作模型(如“切割”、“搅拌”等)。
- 数据生成:从一个随机的初始姿态开始,使用某个动作类别的可执行模型作为策略,在仿真中生成一段新的、符合该动作力学特征的运动序列。这个过程可以批量进行,生成大量额外的训练样本。
- 模型训练:将原始数据、传统数据增强(镜像、加噪)的数据、以及新生成的合成数据混合,训练动作分割模型(如MS-TCN3, C2F-TCN等)。
实验结果分析:在HumanAct12和EPFL-Smart-Kitchen (ESK) 数据集上的实验表明:
- 提升数据效率:在数据量有限的情况下,使用合成数据增强(+synthetic)相比仅用原始数据(original)或传统增强(+perturbed),在多个模型和数据集上取得了更高的分割F1分数和PR-AUC。这说明可执行模型生成的数据质量更高,包含了更本质的动作动力学信息,而非简单的像素/姿态扰动。
- 对细粒度动作更有效:在ESK Verbs(33个细粒度动词)数据集上,增益尤为明显。因为细粒度动作更需要模型理解微妙的运动差异,而可执行模型恰好能捕捉这种差异。
- 局限性:对于ESK Activities(6个粗粒度活动,如“备菜”、“烹饪”)提升不明显。论文分析认为,这是因为解析器倾向于生成较简单的程序(通常只含1-2个运动段),难以捕捉“烹饪”这种长时间、多步骤复合活动的整体复杂结构。
实操启示:这为小样本动作识别提供了一个强有力的新工具。当你只有少量“焊接”、“拧螺丝”的示范视频时,可以先用ExAct这类方法构建其可执行模型,然后生成大量符合物理规律的变体数据,从而极大地扩充训练集。关键在于,要确保你的解析器能够从复杂活动中解析出有意义的子程序。
6.2 动作异常检测:超越密度估计的模型比对
任务定义:判断一段给定的动作执行是否“异常”,或计算不同动作之间的相似度/差异度。
传统方法:通常基于密度估计,例如使用标准化流(Normalizing Flow)模型。它学习正常动作数据的分布,然后将低概率的样本判为异常。这种方法的问题是,它只关注“数据看起来是否奇怪”,而不理解动作“为什么奇怪”。
ExAct的解决方案:利用可执行模型的符号本质,进行程序层面的差异度量。
- 模型构建:同样,为每个动作构建可执行模型(即一组程序
Φ)。 - 差异度量:对于一段查询动作,先用解析器将其解析为一个程序
ψ。然后,计算ψ与目标动作模型Φ中所有程序φ的无序树编辑距离。- 树编辑距离:一种衡量两个树结构(程序可以表示为语法树)差异的度量。编辑操作包括插入、删除、替换节点。
- 代价设置:替换关节(如
LArm换成RArm)代价最高,替换关节轴(如.x换成.y)次之,替换目标值代价最低。这反映了不同修改的语义重要性差异。
- 异常分数:将编辑距离通过sigmoid函数转化为一个相似度分数
σ(-d_edit(φ, ψ))。最终,可以用所有程序相似度的均值(mean-σ)或最小值(min-σ)作为整个动作模型与查询动作的匹配分数。分数低则表示差异大(可能异常)。
实验结果分析:通过计算AUROC矩阵(以某个动作为目标训练评估器,测试在所有动作上的性能),可以发现:
- 捕捉语义相似性:在HumanAct12数据集中,基于ExAct的评估器认为“行走”和“跑步”高度相似(AUROC接近0.5,即难以区分),因为两者使用的关键关节(腿部)和运动模式相似。而基于密度估计的NF模型则倾向于将两者区分开。ExAct的结果更符合直觉——它们本质上是同一类动作的不同强度版本。
- 对复杂活动不敏感:在ESK Activities数据集上,所有方法表现都不佳。再次印证了当前解析器对长时序、复合活动的解析能力有限。
- 提供可解释的差异:如果检测到“切割”动作异常,通过检查编辑距离最大的地方,我们可以定位到是程序中的哪个关节或哪个时间区间出现了不符,从而解释“哪里不对”(是手腕角度不对,还是下压节奏有问题?)。这是纯神经方法无法提供的。
7. 局限、挑战与未来展望
尽管ExAct框架展示了神经符号方法在动作理解上的巨大潜力,但作为一项前沿研究,它也存在明显的局限和挑战,这也是我们未来可以深耕的方向。
1. 数据依赖与模态局限:
- 高质量动捕数据稀缺:整个流程始于MoCap数据,但高精度光学动捕设备昂贵、使用场景受限。未来需要探索如何从更易得的多视角视频数据中学习可执行模型。这涉及到从2D/3D姿态估计开始,并引入视觉上下文(如物体、场景)来丰富动作语义。
- 多模态融合:当前模型只关注人体自身的运动。但在真实场景中,动作意义严重依赖于环境(如“搅拌”的对象是汤锅还是碗盆?)。未来的可执行模型需要整合视觉、触觉甚至听觉模态,形成多模态动作程序。
2. 解析器的表达能力瓶颈:
- 程序过于简单:如实验所示,解析器倾向于生成短程序,难以描述复杂的、层次化的长时程活动。需要设计更强大的DSL和解析架构,或许需要引入循环、条件分支等高级程序结构。
- 从视频到程序的“语义鸿沟”:如何从RGB视频帧中直接解析出“拿起水杯”、“拧开瓶盖”这种带有物体交互语义的程序,是极大的挑战。可能需要结合大型视觉-语言模型(VLMs)来提供高层语义指导。
3. 可执行模型的仿真与现实差距:
- 仿真到现实的迁移:模型在物理仿真中训练和执行。仿真参数(摩擦、阻尼等)与真实世界存在差异,可能导致“仿真器”与真实动作不符。需要研究sim-to-real技术来弥合这一差距。
- 个性化与适应性:不同的人执行同一动作风格各异。当前模型学习的是一个“平均”模式。如何让模型快速适应特定个体的运动风格,是个性化机器人助手和康复训练应用的关键。
4. 计算成本与实时性:
- 训练解析器、前向-后向表示,以及运行仿真都需要可观的计算资源。在机器人实时交互场景下,如何降低推理延迟是一个工程挑战。
从研究到应用的思考:对于工业界和研究者而言,ExAct的价值不仅在于其具体方法,更在于它指明了一条道路:将动作视为可执行、可组合、可推理的程序。我们可以借鉴其思想,在更垂直的领域设计DSL。例如,在工业质检中,可以将“拧螺丝”、“焊接”等操作程序化;在体育训练中,可以将标准动作(如高尔夫挥杆)程序化,用于比对学员动作。核心是找到该领域动作的“关键谓词”和组合逻辑。
这条路虽然漫长,但将符号系统的可解释性、组合性与神经系统的学习能力、泛化能力相结合,无疑是实现真正“智能”动作理解的必由之路。ExAct是一个出色的起点,它让我们看到,AI不仅能看到我们在“做什么”,更有潜力理解我们“怎么做”,以及“为什么这么做”。