深度强化学习简介
强化学习(reinforcement Learning)是机器学习的一个重要分支,主要用来解决连续决策的问题。强化学习可以在复杂的、不确定的环境中学习如何实现我们设定的目标。
一个强化学习问题包括三个主要概念,即
- 环境状态(Environment State)
- 行动(Action)
- 奖励(Reward)
而强化学习的目标就是获得最多的累计奖励。我们要让强化学习模型根据环境状态、行动和奖励,学习出最佳的策略,并以最终结果为目标,不能只看某个行动当下带来的利益,还要看到这个行动未来能带来的价值。
我们回顾一下,AutoEncoder属于无监督学习,而MLP、CNN和RNN都属于监督学习,但强化学习跟这两种都不同。它不像无监督学习那样完全没有学习目标,也不像监督学习那样有非常明确的目标(即label),强化学习的目标一般是变化的、不明确的,甚至可能不存在绝对正确的标签。
Google DeepMind结合强化学习与深度学习,提出了DQN(Deep Q-Network,深度Q网络)。DeepMind使用的这些深度强化学习模型(Deep Reinforcement Learning)本质上也是神经网络,主要分为策略网络和估值网络两种。
无人驾驶是一个非常复杂、非常困难的强化学习任务,在深度学习出现之前,几乎不可能实现。
在深度学习方法中,无人驾驶汽车通过摄像头、雷达、激光测距仪、传感器等对环境进行观测,获取到许多丰富的环境信息,然后通过深度强化学习模型中的CNN、RNN等对环境信息进行处理、抽象和转化,再结合强化学习算法框架预测出最应该执行的动作(加速、减速、转换方向等),来实现自动驾驶。
深度强化学习最具代表性的一个里程碑自然是AlphaGo。AlphaGo中使用了快速走子(Fast Rollout)、策略网络、估值网络和蒙特卡洛搜索树等技术。
Policy-Based(或者Policy Gradients)和Valued-Based(或者Q-Learning)是强化学习中最重要的两类方法:
- Policy-Based的方法直接预测在某个环境状态下应该采取的Action
- Value Based的方法则预测某个环境状态下所有Action的期望价值(Q值),之后可以通过选择Q值最高的Action执行策略。
这两种方法的出发点和训练方式都不同,一般来说,Value Based方法适合仅有少量离散取值的Action的环境,而Policy Based方法则更通用,适合Action种类非常多或者连续取值的Action的环境。而结合深度学习后,Policy-Based的方法就成了Policy Network,而Value-Based的方法则成了Value Network。
Tensorflow实现策略网络
所谓策略网络,即建立一个神经网络模型,它可以通过观察环境状态,直接预测出目前最应该执行的策略(Policy),执行这个策略可以获得最大的期望收益(包括现在的和未来的Reward)。
与普通的监督学习不同,在强化学习中,可能没有绝对正确的学习目标,样本的feature不再和label一一对应。对某个特定的环境状态,我们并不知道它对应的最好的Action是什么,只知道当前Action获得的Reward还有试验后获得的未来的Reward。我们需要让强化学习模型通过试验样本自己学习什么才是某个环境状态下比较好的Action,而不是告诉模型什么才是比较好的Action,因为我们也不知道正确的答案。
为了更好地让策略网络理解未来的、潜在的Reward,策略网络不只是使用当前的Reward作为label,而是使用Discounted Future Reward,即把所有未来奖励依次乘以衰减系数 Υ 。这里的衰减系数一般是一个略小于但接近1的数,防止没有损耗地累积导致Reward目标发散,同时也代表了对未来奖励地不确定性地估计