赞
踩
DRL学习小笔记,整理一些大佬们的图文资料,主要是帮助自己理解。资源放在最后啦,先感谢大佬们辛勤栽树,让后人能找个乘凉的好地方。
几年前的学习笔记了,放在草稿箱吃灰了,发出来慢慢改吧,当年的主流RL,应该现在还能行吧~~hhh
强化学习的过程简单说就是一个智能体(Agent)采取行动(Action)从而改变自己的状态(State)获得奖励(Reward)与环境(Environment)发生交互的循环过程。
先上莫烦大佬的Q Learning主循环程序。
根据代码来理解是最好理解的,构建一个状态跟动作对应的Q值表,在对应状态下选择不同的动作根据奖励函数会得到不同的Q值,Q值表会一直保持更新,直到出现结束信号。在每个回合中,每一步都先从Q 表中使用ϵ−贪婪基于当前状态 s 选择动作 a,得到得到新的状态s’和当前奖励r,并从Q表取得当前估计Q(s,a)值,然后选择状态s下max的动作得到实际值,根据下图公式更新Q(s,a)值。
Epsilon greedy 是用在决策上的一种策略,。比如 epsilon = 0.9 时, 就说明有90% 的情况我会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为.
alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数.
gamma 是对未来 reward 的衰减值.
同样建立一个Q Table来保存状态s和将会采取的所有动作a,Q(s,a)。在每个回合中,先随机初始化第一个状态,再对回合中的每一步都先从Q Table中使用ϵ−贪婪基于当前状态 s (如果Q表没有该状态就创建s-a的行,且初始为全0)选择动作 a,执行a,然后得到新的状态s’和当前奖励r,同时再使用ϵ−贪婪得到在s’时的a’,直接利用a’更新表中Q(s,a)的值,继续循环到终点。sarsa选了什么动作来更新Q就一定执行相应的动作。这就使它不贪心一昧求最大,而是会稍稍专注不走坑,所以sarsa相对来说十分的胆小,掉进坑里面下次争取会避免它(而Q不管,每次都直接向着最小的反向学习。)不管因为Sarsa太害怕坑,而容易陷入一个小角落出不来。
首先就判断on-policy和off-policy就在于估计时所用的策略与更新时所用的策略是否为同一个策略。比如Sarsa选了什么动作来估计Q值就一定会用什么动作来更新state,一定会执行该动作(会有贪婪率);而Q-Learning则不然,估Q值是一回事,但执行动作时一定是会选max的,即使用了两套策略,属于off-policy。
以玩游戏为例说明,我们(Agent)通过观察游戏(Environment)的运行情况(State),选择接下来要执行的操作(Action),游戏往往还会反馈给我们我们的得分(Rewards)。在不同的状态(State)采取的动作 Action 也就是我们所说的策略 Policy 。常用符号
π
\pi
π来表示策略。Policy Gradient就是基于我们的策略Policy来做梯度下降从而优化我们的模型。我们会希望Agent能够尽量能够执行较好的动作,并且根据奖惩值增大或减小对应动作被选择的概率。那么我们会使用执行了该动作后得到的反馈reward来判定本次的策略好坏。我们会希望Agent所做的Policy所做出来的反馈reward一直都会比较高。也就是说我们想要训练我们的Agent倾向于做出那些reward较高的动作。
Deep Q Network 简称为 DQN.
当状态集跟动作集数量庞大的时候,Q表会占用极大的内存而且检索起来非常耗时,影响效率。
利用神经网络可以很好解决这个问题。
将状态值作为神经网络的输入,通过神经网络的分析,输出所有的动作值,按照QL算法的原理选择最大Q值的动作作为下一步动作。我们只要训练好神经网络的参数,就可以实现使用一个神经网络对所有状态,动作的Q值进行输出。
Q现实则为模型训练中的ground_label,Q估计则为模型预测值。通过一个损失函数来更新神经网络参数。Fixed Q-targets 是一种打乱相关性的机理, 如果使用 fixed Q-targets, 我们就会在 DQN 中使用到两个结构相同但参数不同的神经网络, 预测 Q 估计 的神经网络具备最新的参数, 而预测 Q 现实 的神经网络使用的参数则是很久以前的. 有了这两种提升手段, DQN 才能在一些游戏中超越人类.
Actor基于概率做出动作,Critic基于动作给出相应价值.存在两个神经网络,。
它吸收了 Actor-Critic 让 Policy gradient 单步更新的精华, 而且还吸收让计算机学会玩游戏的 DQN 的精华, 合并成了一种新算法, 叫做 Deep Deterministic Policy Gradient.
Deep 顾名思义, 就是走向更深层次, 我们在 DQN 的影片当中提到过, 使用一个记忆库和两套结构相同, 但参数更新频率不同的神经网络能有效促进学习. 那我们也把这种思想运用到 DDPG 当中, 使 DDPG 也具备这种优良形式. 但是 DDPG 的神经网络形式却比 DQN 的要复杂一点点.
Policy gradient 我们也在之前的短片中提到过, 相比其他的强化学习方法, 它能被用来在连续动作上进行动作的筛选 . 而且筛选的时候是根据所学习到的动作分布随机进行筛选, 而 Deterministic 有点看不下去, Deterministic 说: 我说兄弟, 你其实在做动作的时候没必要那么不确定, 那么犹豫嘛, 反正你最终都只是要输出一个动作值, 干嘛要随机, 铁定一点, 有什么不好. 所以 Deterministic 就改变了输出动作的过程, 斩钉截铁的只在连续动作上输出一个动作值.
现在我们来说说 DDPG 中所用到的神经网络. 它其实和我们之前提到的 Actor-Critic 形式差不多, 也需要有基于 策略 Policy 的神经网络 和基于 价值 Value 的神经网络, 但是为了体现 DQN 的思想, 每种神经网络我们都需要再细分为两个, Policy Gradient 这边, 我们有估计网络和现实网络, 估计网络用来输出实时的动作, 供 actor 在现实中实行. 而现实网络则是用来更新价值网络系统的. 所以我们再来看看价值系统这边, 我们也有现实网络和估计网络, 他们都在输出这个状态的价值, 而输入端却有不同, 状态现实网络这边会拿着从动作现实网络来的动作加上状态的观测值加以分析, 而状态估计网络则是拿着当时 Actor 施加的动作当做输入.在实际运用中, DDPG 的这种做法的确带来了更有效的学习过程.
再次感谢大佬们。
莫烦python:https://morvanzhou.github.io
上杉翔二:https://blog.csdn.net/qq_39388410/article/details/88795124
知乎陈城:https://zhuanlan.zhihu.com/p/42055115
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。