Meta Motivo:Meta 推出能够控制数字智能体动作的 AI 模型,提升元宇宙互动体验的真实性

95 阅读4分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能:Meta Motivo 能够实现零样本学习、行为模仿与生成、多任务泛化等功能。
  2. 技术:基于前向-后向表示、条件策略正则化等技术,模型能够在无监督环境下进行高效学习。
  3. 应用:适用于机器人控制、虚拟助手、游戏角色动画等多个领域,提升交互体验的真实性。

正文(附运行示例)

Meta Motivo 是什么

公众号: 蚝油菜花 - metamotivo

Meta Motivo 是 Meta 公司推出的一款 AI 模型,旨在提升元宇宙体验的真实性。该模型通过控制虚拟人形智能体的全身动作,模拟人类行为,增强用户互动。Meta Motivo 采用无监督强化学习算法,特别是 FB-CPR 算法,利用大量动作数据进行预训练,无需额外训练即可执行动作轨迹跟踪、姿势到达等多种任务。

Meta Motivo 的核心优势在于其学习表示技术,能够将状态、动作和奖励映射到同一潜在空间,从而实现对复杂行为的统一表示,提升元宇宙体验的逼真度和自然感。

Meta Motivo 的主要功能

  • 零样本学习:Meta Motivo 能够在没有针对特定任务进行训练的情况下,直接处理多种不同的任务,如运动跟踪、目标达成和奖励优化。
  • 行为模仿与生成:基于学习未标记的行为数据集,Meta Motivo 能够模仿和生成类似人类的行为。
  • 多任务泛化:在不同的任务和环境中展现良好的性能,包括动态和静态的姿势,及不同的运动模式。
  • 状态、动作和奖励的统一表示:Meta Motivo 将状态、动作和奖励映射到同一潜在空间,实现对复杂行为的统一表示。

Meta Motivo 的技术原理

  • 前向-后向表示:基于前向-后向表示学习低秩近似的后继者度量,支持模型在没有进一步训练的情况下,对任何奖励函数进行零样本策略评估和优化。
  • 条件策略正则化:通过潜在条件判别器,Meta Motivo 鼓励策略“覆盖”未标记行为数据集中的状态,让学习到的策略与数据集中的行为保持一致。
  • 潜在空间的分布匹配:基于最小化模型诱导的分布与未标记数据集之间的差异,正则化策略学习过程。
  • 在线训练与策略学习:Meta Motivo 基于在线训练,将环境交互与模型更新交替进行,让策略学习过程更加高效和目标导向。
  • 变分表示和判别器网络:通过变分表示估计 Jensen-Shannon 散度,用训练判别器网络近似两个分布之间的对数比率,有助于模型捕捉和模仿未标记数据集中的行为。

如何运行 Meta Motivo

安装

首先,通过 pip 安装 Meta Motivo:

pip install "metamotivo[huggingface,humenv] @ git+https://github.com/facebookresearch/metamotivo.git"

下载预训练模型

以下代码展示了如何实例化模型:

from metamotivo.fb_cpr.huggingface import FBcprModel

model = FBcprModel.from_pretrained("facebook/metamotivo-S-1")

执行策略

这是一个最小的示例,展示了如何执行随机策略:

from humenv import make_humenv
from gymnasium.wrappers import FlattenObservation, TransformObservation
import torch
from metamotivo.fb_cpr.huggingface import FBcprModel

device = "cpu"
env, _ = make_humenv(
    num_envs=1,
    wrappers=[
        FlattenObservation,
        lambda env: TransformObservation(
            env, lambda obs: torch.tensor(obs.reshape(1, -1), dtype=torch.float32, device=device)
        ),
    ],
    state_init="Default",
)

model = FBcprModel.from_pretrained("facebook/metamotivo-S-1")
model.to(device)
z = model.sample_z(1)
observation, _ = env.reset()
for i in range(10):
    action = model.act(observation, z, mean=True)
    observation, reward, terminated, truncated, info = env.step(action.cpu().numpy().ravel())

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦