首页 > 编程语言 >【记录】Cordial Sync具身智能协作源码复现及问题解决

【记录】Cordial Sync具身智能协作源码复现及问题解决

时间:2024-11-07 13:17:00浏览次数:3  
标签:Cordial git policies 具身 SYNC 智能 源码 版本 FurnMove

论文简要总结

智能体需要合作将家具移动到客厅的指定位置。这个任务与现有的任务不同,它要求智能体在每个时间步都必须进行协调。

模型部分

1. SYNC-policies (Synchronize Your Actions Coherently)

为了解决智能体在每个时间步都需要协调的问题,研究者提出了SYNC-policies。这种策略允许分布式智能体表达联合策略,同时使用可解释的通信。

在SYNC-policies中,智能体通过共享随机数流和共享函数来共同构建一个策略,然后从这个策略中采样动作。这意味着智能体可以同意一个策略,然后根据这个策略来选择动作。

2. CORDIAL (Coordination Loss)

为了鼓励智能体学习协调动作,研究者提出了协调损失(CORDIAL)。这种损失函数替代了传统的熵损失函数,引导智能体远离相互不兼容的动作。

CORDIAL通过增加一个损失项来鼓励智能体在动作上保持一致性,从而提高协作效率。

3. 架构

文中提到了TBONE架构,这是一个用于多智能体的通信和策略学习的架构。在这个架构中,每个智能体都有一个CNN-LSTM网络来处理输入的图像,并进行通信以形成策略。

SYNC-policies通过在TBONE架构上增加额外的线性层来实现,这些层用于计算多个策略的混合。

实验部分

1. 实验设置

模拟器:使用AI2-THOR环境进行实验,这是一个交互式的3D环境,用于视觉AI研究。

任务:FurnMove、Gridworld-FurnMove和FurnLift。FurnMove是本文提出的新任务,Gridworld-FurnMove是FurnMove的网格世界版本,FurnLift是一个现有的任务,用于比较。

数据:在30个客厅场景中进行训练、验证和测试。

训练:使用A3C算法进行训练,并结合CORDIAL损失函数。

2. 评估指标

成功率(Success)、平均步数(Ep len)、最终距离目标的距离(Final dist)、TVD(Total Variation Distance)和无效动作概率(Invalid prob)等。

3. 实验结果

SYNC-policies在FurnMove任务中的表现优于其他方法,成功率提高了25.9%。

在Gridworld-FurnMove任务中,所有方法的性能都有所提高,因为任务简化了。

在FurnLift任务中,SYNC-policies在某些指标上优于边际模型(marginal model)。

源码下载

A Cordial Sync: Going Beyond Marginal Policies for Multi-Agent Embodied Tasks

环境安装

下载好代码文件后,里面的readme特别详细,注意几点:

1.python要求3.6

2.最好使用pipenv进行安装(推荐),但是要更改其中的Pipfile,见下文的Numpy版本限制

3.数据下载不下来,点击提供的链接就可以下载

Numpy版本限制

matplotlib要求numpy版本>1.15,pipfile中没有对numpy的版本进行要求,默认安装的话会安装1.14.5,我改numpy版本好几次,都会报错存在两个版本的numpy,于是把numpy移到最后并加上版本限制。

使用pipenv --rm可以删除建立的虚拟环境。

找不到rl_base文件夹

export PYTHONPATH=$(pwd):$PYTHONPATH

该命令只在当前会话有效,如果需要永久添加到系统路径

编辑 .bashrc 文件,添加 PYTHONPATH 设置: 在文件末尾添加以下行:

export PYTHONPATH=/path/to/your/rl_base:$PYTHONPATH

git报错

在此目录下建立一个git仓库即可,在电脑安装好git的情况下,使用git init命令(可以不链接远程仓库),没有安装的可以看这篇:

git版本控制学习笔记-CSDN博客

ps:理论上来说把这部分注释掉应该也没问题

OpenGL版本问题

Traceback (most recent call last):
  File "/home/ja/.conda/envs/ai_env/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/home/ja/.conda/envs/ai_env/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/home/ja/.conda/envs/ai_env/lib/python3.6/site-packages/ai2thor/controller.py", line 697, in _start_unity_thread
    raise Exception("command: %s exited with %s" % (command, returncode))
Exception: command: ['/home/ja/.ai2thor/releases/thor-201909171243-Linux64/thor-201909171243-Linux64', '-screen-fullscreen', '0', '-screen-quality', '7', '-screen-width', '300', '-screen-height', '300'] exited with 1

出现这个错误的原因,是ai2thor环境,使用unity开发,对应的OpenGL版本应该在3.2以上。
查看OpenGL的版本

glxinfo | grep "OpenGL version"

如果提示没有这个命令,安装

sudo apt update
sudo apt install mesa-utils

成功页面如下: 

标签:Cordial,git,policies,具身,SYNC,智能,源码,版本,FurnMove
From: https://blog.csdn.net/qq_51308160/article/details/143418772

相关文章