让AI多智能体学习合作、竞争和交流

1、多智能体强化学习

为什么需要多智能体(multi-agent)学习?

人工智能学习的梯度下降算法寻优方法,类似从山顶放置小球向下滚,希望寻找最快最好的路径,到达最低的谷底。

传统的单个智能体每次只使用一个小球,学习训练并使用一条路径,重复多次。

而多个智能体类似放置一群小球,同时分别学习训练并使用各自的多条路径,向下滚动过程中互相联系通信,相互告知自己的位置及状态,团队合作,引导共同到达最低的谷底。
让AI多智能体学习合作、竞争和交流
参见上图,多智能体(multi-agent)学习,相比单智能体:

  • 多智能体智能体保持各自独特性和总体多样性 多智能体协同学习互通信息,效率更高,梯度下降速
  • 更快 多智能体更易到达全局更优(上右图)
  • 多智能体收敛性

2. Actor-Critic和MADDPG

Google DeepMind 提出Actor-Critic,多个agent各自训练,分别更新主结构中的参数,协同进行寻优

OpenAI: MADDPG(Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments)用于实现多智能体环境中的集中式学习和分散式执行,让智能体学习互相合作、互相竞争

用MADDPG算法训练四个红色圆点追逐两个绿色圆点,红色圆点已经学会彼此合作追逐同一个绿色圆点,以获得更高的奖励。与此同时,绿色圆点学会了“分头行动”,其中一个被红点追逐,其他的则试图接近蓝色圆点获得奖励,同时避开红色圆点。

让AI多智能体学习合作、竞争和交流
每个协同的智能体无需具备中间的评委官;它们根据观察以及对其他智能体行为的预测,做出动作。由于一个中心化的评委是为每个智能体独立学习的,这种方法也可以用来模拟多智能体之间的任意奖励结构,包括拥有相反奖励的对抗案例。

OpenAI研究人员在多任务上经过测试,结果均优于DDPG上的表现。在上图的动画中,从上至下可以看到:两个智能体试图前往特定位置,并且学习分散,向对手隐藏真实的目的地;一个智能体将位置信息传递给另一个智能体,其他三个智能体协调前往此处,并且不会碰撞。

使用MADDPG训练的红色圆点比用DDPG训练的智能体行为更复杂。在上面的动画中可以看到,用MADDPG技术训练的智能体和用DDPG训练的智能体都试图穿过绿色的圆圈追逐绿色的小圆点,同时不撞到黑色障碍物。新方法MADDPG训练出来的智能体抓到的绿色圆点更多,也比用DDPG方法训练出的动作更协调。

通过多智能体建模的简单的游戏训练,让我们处理复杂的问题,比如交流和语言的高维度信息、复杂的交易博弈、以及量化投资策略。

3. ADOG多智能体化学习的实现

在 阿岛格:基于人工智能的量化投资系统(13)模型和训练 | 多智能体强化学习

创建多个并行的神经网络环境, 让多个 agent (代表无数个seller或buyer)同时训练学习,更新主结构中(manager)的参数。

将 Actor-Critic机制在多个agent中同步训练。多个智能体(代表无数个seller或buyer)同时模拟交易, 每步交易经验都会同步上传到一个首席大脑manager,然后他们又从*大脑manager中获取最新的优化交易策略。

global_agent = None #global agent for 首席大脑 manager
workers = []	 #collections of agents for workers(individual seller or buyer)
for m in top_modelers:
     # init random seed
     rd=random.randint(1,10000)
     np.random.seed(rd)
     tf.set_random_seed(rd) 
     restore_dir='./train_package/%s/netfile_%s'%(pre_folder_index,m )
     if os.path.exists(restore_dir+'.meta'):
         try:
             #首席大脑manager‘s agent
             agent=ADOGAgent(config, restore_dir=restore_dir, device=device,scope=m,globalAC=global_agent)
             #worker‘s agent, individual seller or buyer
             tt=Trainer(config, save_path=save_path, device=device,agent=agent,purpose='train',folder_index=index)
             workers.append(tt)
             time.sleep(1)
         except Exception ,e:
             print(e)
          
coord = tf.train.Coordinator()
worker_threads = []
for worker in workers:
    job = lambda: worker.train_net(log_file_dir=log_file_dir, index=index)
    t = threading.Thread(target=job,name=worker.name)
    t.start()
    worker_threads.append(t)
   
coord.join(worker_threads)

让AI多智能体学习合作、竞争和交流

保证每个智能体(代表无数个seller或buyer)独特性和多样性,以及首席大脑manager的全面性

在强化学习中manager拥有 global神经网络模型和参数, 每个智能体有一个 global神经网络模型副本,独自训练,同步向 global神经网络推送更新并获取经验。

这样为下一步协同学习及选拔机制,便捷快速地提供可选方案和策略。

参见:

OpenAI:MADDPG
阿岛格专栏:基于人工智能的量化投资

上一篇:pmp错题集2(强化三)


下一篇:redis manager desktop下载、安装、连接redis教程(官网)