让AI多智能体学习合作、竞争和交流
作者:互联网
1、多智能体强化学习
为什么需要多智能体(multi-agent)学习?
人工智能学习的梯度下降算法寻优方法,类似从山顶放置小球向下滚,希望寻找最快最好的路径,到达最低的谷底。
传统的单个智能体每次只使用一个小球,学习训练并使用一条路径,重复多次。
而多个智能体类似放置一群小球,同时分别学习训练并使用各自的多条路径,向下滚动过程中互相联系通信,相互告知自己的位置及状态,团队合作,引导共同到达最低的谷底。
参见上图,多智能体(multi-agent)学习,相比单智能体:
- 多智能体智能体保持各自独特性和总体多样性 多智能体协同学习互通信息,效率更高,梯度下降速
- 更快 多智能体更易到达全局更优(上右图)
- 多智能体收敛性
2. Actor-Critic和MADDPG
Google DeepMind 提出Actor-Critic,多个agent各自训练,分别更新主结构中的参数,协同进行寻优
OpenAI: MADDPG(Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments)用于实现多智能体环境中的集中式学习和分散式执行,让智能体学习互相合作、互相竞争
用MADDPG算法训练四个红色圆点追逐两个绿色圆点,红色圆点已经学会彼此合作追逐同一个绿色圆点,以获得更高的奖励。与此同时,绿色圆点学会了“分头行动”,其中一个被红点追逐,其他的则试图接近蓝色圆点获得奖励,同时避开红色圆点。
每个协同的智能体无需具备中间的评委官;它们根据观察以及对其他智能体行为的预测,做出动作。由于一个中心化的评委是为每个智能体独立学习的,这种方法也可以用来模拟多智能体之间的任意奖励结构,包括拥有相反奖励的对抗案例。
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)
保证每个智能体(代表无数个seller或buyer)独特性和多样性,以及首席大脑manager的全面性
在强化学习中manager拥有 global神经网络模型和参数, 每个智能体有一个 global神经网络模型副本,独自训练,同步向 global神经网络推送更新并获取经验。
这样为下一步协同学习及选拔机制,便捷快速地提供可选方案和策略。
参见:
OpenAI:MADDPG
阿岛格专栏:基于人工智能的量化投资
标签:训练,AI,圆点,agent,交流,学习,智能,manager 来源: https://blog.csdn.net/weixin_41192839/article/details/121968504