Abstract
从Sarsa、Q-learning开始,到DQN,再到Policy Gradient,最后到DDPG,一步步走进了强化学习的世界。
在学习了这些基础算法之后,本文记录一下进阶算法SAC的学习心得。
SAC是Soft Actor-Critic的缩写,由伯克利人工智能研究实验室(BAIR)的Tuomas Haarnoja等人,提出于2018年。
传送门:Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor
说说论文
整个论文大概看下来,感觉SAC可以大致看成是DDPG的增强版,所以接下来主要说一说这个算法在DDPG基础上增强了什么。
论文认为,有两大因素使深度强化学习的实际应用变得困难:
- 非常高的采样复杂度(very high sample complexity)
- 脆弱的收敛性质(brittle convergence properties)
于是论文提出了SAC,一个基于最大熵RL框架的off-policy actor-critic深度强化学习算法。(soft actor-critic, an offpolicy actor-critic deep RL algorithm based on the maximum entropy reinforcement learning framework)
什么是最大熵强化学习呢?
先说一下,在DDPG中,我们是以使reward最大化为目标的。那么在SAC中,在使reward最大化的同时,也要最大化策略分布的熵。这就是最大熵。
跑个题,什么是熵呢?
我们不说热力学熵,也不说信息熵。在这里的熵,个人理解,是用来衡量分布的随机程度的。分布越随机,熵越大。
言归正传,加入熵最大化到底增强了什么呢。个人理解,就是使得决策的分布不要像DDPG一样,趋于集中到一个最优解。而是希望同时存在更多的,同样优的策略。
论文中还给出了理论推导,实验数据等内容,这里就不赘述了。
说说代码
一起看一看,百度飞桨PaddlePaddle的PARL框架中的SAC样例。
传送门:GitHub中的样例
(GitHub访问困难的同学可以自己搜索一下Gitee,也可以找到的)
因为使用了PARL框架封装好的算法,整个实现显得很整洁。共分为三个文件:
- mujoco_agent.py
- mujoco_model.py
- train.py