今天,DeepMind开源了一个基于TensorFlow的强化学习库,名字叫TRFL。
思路是模块化,强调灵活度:如果把造智能体想象成搭积木,许多关键的、常用的木块都在这里集合了:
比如,DQN (深度Q网络) 、DDPG (深度确定策略梯度),以及IMPALA (重要性加权演员学习者架构) ,都是DeepMind功勋卓著的组件。
库里面的组件,虽然来源各不相同,但都经过严密测试,因而相对可靠;并且只要一个API,对开发者比较友好。
DeepMind团队自身做研究,也严重依赖这个库。
这个库,写作TRFL,读作“Truffle”。翻译成中文叫“松露”。
那么,松露为何而生?
深度强化学习智能体,里面常常包含大量的交互组件:
至少要有环境,加上价值网络或者策略网络;
通常,还会有环境学习模型 (Learned Model) 、伪奖励函数 (Pseudo-Reward Functions) 、或者重播系统 (Replay System) 这样的部分。
可是,交互组件到底用什么方式交互?论文里一般没有细致的讨论,有bug也很难发现。
为此,OpenAI写过一篇博客,研究了10个热门的强化学习智能体,发现6个都有隐藏bug。
虽然,用一个开源的、完整的智能体,对复现研究成果是有帮助的,但灵活度不够,要修改就很难了。
所以,才有了松露。
深度强化学习 (DRL) ,依赖价值网络或策略网络的不断更新。
DeepMind团队发现,比起传统的RL更新,损失函数更加模块化,更容易结合到监督/无监督的目标里去。
松露里包含了许多损失函数和运算,全部在纯TensorFlow里实现。
不是完整算法,但是各自经过严密测试,可以用来搭成完整的智能体。
并且,只要一个API来解决各种核心组件,即便各自来源是天南地北,也很容易互相组合。
松露里的许多函数和运算,既可以用在经典RL算法里,也可以用在尖端技术上。
针对基于价值的强化学习,松露提供了各种TensorFlow运算,用于在离散动作空间 (Discrete Action Spaces) 里学习:时间差分法,Sarsa,Q学习,以及它们的变体。还有连续控制算法 (比如DPG) 需要的运算。
除此之外,也有学习分布式价值函数 (Distributional Value Function) 用的运算。
以上运算都支持批量 (Batches) ,返回的损失可以用TensorFlow优化器来最小化。不论是Transition的批量,还是Trajectory的批量。
针对基于策略的强化学习,这里既有工具可以轻松实现在线方法,比如A2C ,也支持离线的修正技术,比如v-trace。
另外,连续动作里策略梯度的计算,松露也支持。
最后的最后,松露还提供辅助的伪奖励函数 (Pseudo-Reward Functions) ,用来提升数据效率。
如今,松露已经开源了,传送门在文底。
不过,团队在博客里写到,这不是一次性发布。
因为,DeepMind在做研究的过程中,也非常依赖这个库,所以会持续对它进行维护,也会随时添加新功能。
当然,团队也欢迎强化学习界的小伙伴们,为松露添砖加瓦。
如果你还记得,今年8月谷歌开源了强化学习框架Dopamine,中文叫多巴胺,也是基于TensorFlow。
名字取自人类大脑奖励机制中的主角物质多巴胺,为了表达神经科学和强化学习之间的缘分联系。
多巴胺框架,也是强调灵活性、稳定性和复现性。
至于,多巴胺和松露之间有怎样的关系,或者怎样的差别,如果你也好奇的话,可以自行探索一下。
松露传送门:
https://github.com/deepmind/trfl/
多巴胺传送门:
https://github.com/google/dopamine
— 完 —
加入社群
量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;
此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。
进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态