内容主要参考自莫烦python,很适合入门学习。
强化学习是一类算法, 是让计算机实现从一开始什么都不懂, 脑袋里没有一点想法, 通过不断地尝试, 从错误中学习, 最后找到规律, 学会了达到目的的方法. 这就是一个完整的强化学习过程.。
我们将所有强化学习的方法分为理不理解所处环境,如果我们不尝试去理解环境,叫做 model-free。还可以分为基于概率还是基于价值。基于概率直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动, 所以每种动作都有可能被选中, 只是可能性不同. 而基于价值的方法输出则是所有动作的价值, 我们会根据最高价值来选着动作, 相比基于概率的方法, 基于价值的决策就选价值最高的, 而基于概率的, 即使某个动作的概率最高, 但是还是不一定会选到他。如根据价值选行为的Q-learning算法,sarsa算法,Deep Q network算法,直接选行为的PG算法,与想象环境并从虚拟学习的Model based RL算法等。 而Actor-Critic算法, actor 会基于概率做出动作, 而 critic 会对做出的动作给出动作的价值, 这样就在原有的 policy gradients 上加速了学习过程.此外,还可以分为回合更新与单步更新,在线学习与离线学习等、
Q-learning算法:
Q learning 的算法, 每次更新我们都用到了 Q 现实和 Q 估计, 而且 Q learning 的迷人之处就是 在 Q(s1, a2) 现实 中, 也包含了一个 Q(s2) 的最大估计值, 将对下一步的衰减的最大估计和当前所得到的奖励当成这一步的现实。Epsilon greedy 是用在决策上的一种策略, 比如 epsilon = 0.9 时, 就说明有90% 的情况我会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为. alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数. gamma 是对未来 reward 的衰减值.
Sarsa:
决策依然是Q表的形式,但是其更新方式不同。Q-learning 在这一步只是估计了一下接下来的动作值. 而 Sarsa 是实践派, 他说到做到, 在 s2 这一步估算的动作也是接下来要做的动作. 所以 Q(s1, a2) 现实的计算值, 我们也会稍稍改动, 去掉maxQ, 取而代之的是在 s2 上我们实实在在选取的 a2 的 Q 值. 最后像 Q learning 一样, 求出现实和估计的差距 并更新 Q 表里的 Q(s1, a2)。Sarsa 是说到做到型, 所以我们也叫他 on-policy, 在线学习, 学着自己在做的事情. 而 Q learning 是说到但并不一定做到, 所以它也叫作 Off-policy, 离线学习. 而因为有了 maxQ, Q-learning 也是一个特别勇敢的算法。lambda 值来代替我们想要选择的步数。和之前我们提到过的 奖励衰减值 gamma 一样, lambda 是脚步衰减值, 都是一个在 0 和 1 之间的数.。当 lambda 取0, 就变成了 Sarsa 的单步更新, 当 lambda 取 1, 就变成了回合更新, 对所有步更新的力度都是一样。
Deep Q Network:
将状态和动作当成神经网络的输入, 然后经过神经网络分析后得到动作的 Q 值, 这样我们就没必要在表格中记录 Q 值, 而是直接使用神经网络生成 Q 值. 还有一种形式的是这样, 我们也能只输入状态值, 输出所有的动作值, 然后按照 Q learning 的原则, 直接选择拥有最大值的动作当做下一步要做的动作。
DQN 有一个记忆库用于学习之前的经历。fixed Q-targets, 我们就会在 DQN 中使用到两个结构相同但参数不同的神经网络, 预测 Q 估计 的神经网络具备最新的参数, 而预测 Q 现实 的神经网络使用的参数则是很久以前的.
Policy Gradients:
Policy Gradients 直接输出动作的最大好处就是, 它能在一个连续区间内挑选动作。起反向传递的目的是让这次被选中的行为更有可能在下次发生,通过reward实现。
Actor Critic:
Actor-Critic 的 Actor 的前生是PG, 这能让它毫不费力地在连续动作中选取合适的动作,Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新。
拿一个 Critic 去学习这些奖惩机制Critic 通过学习环境和奖励之间的关系, 能看到现在所处状态的潜在奖励, 所以用它来指点 Actor 便能使 Actor 每一步都在更新。
改进版 Deep Deterministic Policy Gradient (DDPG) :
DQN 网络加入进 Actor Critic 系统中, 这种新算法叫做 Deep Deterministic Policy Gradient。最大的优势就是能够在连续动作上更有效地学习。Deep 顾名思义, 就是走向更深层次。Deterministic 就改变了输出动作的过程, 只在连续动作上输出一个动作值。
DDPG 中所用到的神经网络. 它其实和 Actor-Critic 形式差不多, 也需要有基于 策略 Policy 的神经网络 和基于 价值 Value 的神经网络, 但是为了体现 DQN 的思想, 每种神经网络都需要再细分为两个, Policy Gradient 这边, 有估计网络和现实网络, 估计网络用来输出实时的动作, 供 actor 在现实中实行. 而现实网络则是用来更新价值网络系统的. 所以我们再来看看价值系统这边, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同, 状态现实网络这边会拿着从动作现实网络来的动作加上状态的观测值加以分析, 而状态估计网络则是拿着当时 Actor 施加的动作当做输入.在实际运用中, DDPG 的这种做法的确带来了更有效的学习过程。
Asynchronous Advantage Actor-Critic (A3C):
A3C 其实是这种平行方式的一种, 它采用的是我们之前提到的A-C 的形式. 为了训练一对 Actor 和 Critic, 我们将它复制多份、每个都悄悄告诉Actor-Critic 自己在那边的世界玩得怎么样, 有哪些经验值得分享. 然后还能从 这边再次获取综合考量所有副本经验后的通关秘籍. 这样一来一回, 形成了一种有效率的强化学习方式。使用 A3C 的方法, 我们可以给他们安排去不同的核, 并行运算,可以大大提高实验效率。