IMPALA强化学习算法的学习和解读

IMPALA是DeepMind于2018年提出的可扩展分布式深度强化学习架构。

全名Importance Weighted Actor-Learner Architecture,让单个智能体能同时学习多个任务。

IMPALA采用分离式Actor-Learner架构和V-trace off-policy,通过高效分布式计算提升训练速度。

这里深入分析探索IMPALA的Actor-Learner架构和V-Trace off-policy修正算法。

所用内容参考自网络资料。

1 解耦Actor与Learner

区别于A3C(Asynchronous Advantage Actor-Critic),IMPALA将行动与学习两个过程分离。

Actor,即行动者,成千上万个游戏玩家Actor,在各自环境中探索,收集经验数据(即<状态、动作、奖励>序列),并将这些经验数据发送给中心学习器,而不是计算梯度然后发送梯度。

Learner,即学习学习器,一个或多个中心化的教练(Learner)负责接收所有Actor传来的经验,利用GPU批量学习,更新模型参数。

Actor和Learner解耦,使得Actor不必再像A3C等待Learner计算梯度,而是一刻不停地生成数据。

2 策略滞后与解决方案V-trace

2.1 策略滞后

解耦Actor和Learner虽然提高了吞吐量,但引入了新的问题,即策略滞后。

Actor本地策略(记作μ)可能已经过时,生成经验时用的是旧版本的参数。

而此时Learner正在更新的目标策略(记作π)已经进化了好几版。

这造成了行为策略和目标策略的不一致,即变成了Off-policy(离策略)学习。

直接用旧策略产生的数据来更新新策略,会导致学习不稳定甚至失败。

2.2 V-trace

IMPALA提出了一个创新---V-trace。V-trace是一种专门设计的off-policy修正方法。它像一个翻译官,能够精准地评估并修正因策略滞后带来的数据偏差,解决行为策略和目标策略不一致的问题。

假设想学习一位大师(目标策略π)的下棋风格,但手头只有一位业余爱好者(行为策略μ)的对局记录。不能直接照搬业余爱好者的走法,因为水平差距太大。V-trace就像一个智能过滤器,它能分析业余爱好者的棋局,从中提取出那些接近大师思路的走法,并剔除那些明显错误的,从而安全有效地学习。

具体为通过重要性采样等技术,确保了Learner即使在使用过时的旧数据时,也能正确、稳定地更新目标策略π,让训练过程既快速又稳健。这是IMPALA能够成功的技术基石。

具体过程参考如下链接

https://blog.csdn.net/liliang199/article/details/158238739

3 实际效果与应用

3.1 性能突破

凭借上述设计,IMPALA在性能上取得了显著突破:

1)惊人吞吐量

在实验中,IMPALA可以达到每秒处理25万帧游戏画面的速度,比单机版的A3C快了30倍以上。

2)卓越的数据效率

在DeepMind的DMLab-30多任务测试集中,IMPALA的数据利用效率是分布式A3C的10倍,最终得分也是后者的2倍。

3.2 典型应用

IMPALA最初就是为了解决多任务学习问题而设计的。

例如让一个智能体学会DMLab-30中的全部30个任务。此外,它在Atari 57款游戏上的表现也证明了其强大的泛化能力和有效性。

IMPALA是分布式强化学习的一个里程碑式,通过解构传统框架,将数据生成和模型学习分离,并创造性地引入V-trace算法解决了由此产生的off-policy问题,在训练速度、数据效率和可扩展性上实现了巨大飞跃。

reference


IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures

https://ar5iv.labs.arxiv.org/html/1802.01561

前沿 | DeepMind提出新型架构IMPALA:帮助实现单智能体的多任务强化学习

https://cloud.tencent.cn/developer/article/1119569?from=15425

从框架到经典方法,全面了解分布式深度强化学习DDRL

https://cloud.tencent.com.cn/developer/article/2391129?from=15425

V-trace的核心公式与计算过程

https://blog.csdn.net/liliang199/article/details/158238739

相关推荐
Nil2086 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
wanderist.8 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
All for pursuit.9 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_307779139 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂9 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
光影少年10 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
HEJOO910 小时前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
小雪崩10 小时前
嵌入式学习 day61-62:IMX6ULL驱动——系统移植
学习
Code_Solitude10 小时前
c语言:递归
java·c语言·算法
一隅论数智10 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务