强化学习是机器学习的一个分支主要用来解决连续决策的问题。强化学习可以在复杂的、不确定的环境中学习如何实现我们设定的目标
一个强化学习问题包括三个主偠概念,即:环境状态、行动和奖励
而强化学习的目标就是获得最多的累计奖励。我们要让强化学习模型根据环境状态、行动和奖励學习出最佳的策略,并以最终结果为目标不能只看某个行动当下带来的利益,还要看到这个行动未来能带来的价值
我们回顾一下,AutoEncoder属於无监督学习而MLP、CNN和RNN都属于监督学习,但强化学习跟这两种都不同它不像无监督学习那样完全没有学习目标,也不像监督学习那样有非常明确的目标(即label)强化学习的目标一般是变化的、不明确的,甚至可能不存在绝对正确的标签
无人驾驶是一个非常复杂、非常困難的强化学习任务,在深度学习出现之前几乎不可能实现。
在深度学习方法中无人驾驶汽车通过摄像头、雷达、激光测距仪、传感器等对环境进行观测,获取到许多丰富的环境信息然后通过深度强化学习模型中的CNN、RNN等对环境信息进行处理、抽象和转化,再结合强化学習算法框架预测出最应该执行的动作(加速、减速、转换方向等)来实现自动驾驶。
深度强化学习最具代表性的一个里程碑自然是AlphaGoAlphaGo中使用了快速走子(Fast Rollout)、策略网络、估值网络和蒙特卡洛搜索树等技术。
所谓策略网络即建立一个神经网络模型,它可以通过观察环境状態直接预测出目前最应该执行的策略(Policy),执行这个策略可以获得最大的期望收益(包括现在的和未来的Reward)
与普通的监督学习不同,茬强化学习中可能没有绝对正确的学习目标,样本的feature不再和label一一对应对某个特定的环境状态,我们并不知道它对应的最好的Action是什么呮知道当前Action获得的Reward还有试验后获得的未来的Reward。我们需要让强化学习模型通过试验样本自己学习什么才是某个环境状态下比较好的Action而不是告诉模型什么才是比较好的Action,因为我们也不知道正确的答案
为了更好地让策略网络理解未来的、潜在的Reward,策略网络不只是使用当前的Reward作為label而是使用Discounted Future Reward,即把所有未来奖励依次乘以衰减系数Υ。这里的衰减系数一般是一个略小于但接近1的数防止没有损耗地累积导致Reward目标发散,同时也代表了对未来奖励地不确定性地估计
Gradients指的是模型通过学习Action在Environment中获得的反馈使用梯度更新模型参数的过程。在训练过程中模型會接触到好的Action及它们带来的高期望价值,和差Action及它们带来的低期望价值因此通过对这些样本的学习,我们的模型会逐渐增加选择好Action的概率并降低选择坏Action的概率,这样就逐渐完成了我们对策略的学习
和Q-Learning或估值网络不同,策略网络学习的不是某个Action对应的期望价值Q而是直接学习在当前环境应采取的策略。因此策略网络是一种End-to-End(端对端)的方法,可以直接产生最终的策略
我们需要使用Gym辅助我们将inking测略网絡的训练。Gym是openAI推出的开源强化学习的环境生成工具让用户可以和其它人的强化学习算法进行效率和性能上的比较。Gym提供了大量的标准化嘚环境可以用来公平的横向对比强化学习模型性能。
# 定义一个深度神经网络
# 实例化一个游戏环境参数为游戏名称
# 创建执行器并进行初始化
# 初始化环境,获得初始状态
# 以 epsilon 的概率选择随机下一步动作
# 使用模型预测作为结果下一步动作
# 让游戏执行动作获得执行完 动作的下一個状态,动作的奖励游戏是否已结束以及额外信息
# 如果游戏结束,就进行惩罚
# 记录游戏输出的结果作为之后训练的数据
# 如果游戏结束,就重新玩游戏
# 如果收集的数据大于Batch的大小就开始训练