2.1 什么是Q-Learning
行为准则
我们做事都会有自己的行为准则,Q-Learing是一个决策过程,举例说明。假设现在我们处于写作业的状态而且我们以前并没有尝试过写作业时看电视, 所以现在我们有两种选择,1 继续写作业,2 跑去看电视。因为以前没有被罚过,所以我选看电视,然后现在的状态变成了看电视,我又选了继续看电视,接着我还是看电视。最后,爸妈回家,发现我没写完作业就去看电视了,狠狠地惩罚了我一次,我也深刻地记下了这一次经历,并在我的脑海中将 “没写完作业就看电视”这种行为更改为负面行为,我们再看看 Q learning 根据很多这样的经历是如何来决策的吧。
Q-Learing决策

假设我们的行为准则已经学习好了,现在我们处于状态s1,我在写作业,我有两个行为 a1、a2,分别是看电视和写作业,根据我的经验,在 s1 状态下,a2 写作业带来的潜在奖励要比 a1 看电视高,这里的潜在奖励我们可以用一个有关于 s 和 a 的 Q 表格代替,在我的记忆Q表格中,Q(s1, a1)=-2 要小于 Q(s1, a2)=1,所以我们判断要选择 a2 作为下一个行为。现在我们的状态更新成 s2,我们还是有两个同样的选择,重复上面的过程, 在行为准则Q 表中寻找 Q(s2, a1) ,Q(s2, a2)的值,并比较他们的大小,选取较大的一个。接着根据 a2,我们到达 s3 并在此重复上面的决策过程。Q learning的方法也就是这样决策的。看完决策, 再来研究一下这张行为准则表 Q 表是通过什么样的方式更改,提升的。
Q-Learning 更新

对Q表进行更新。根据 Q 表的估计, 因为在 s1 中, a2 的值比较大, 通过之前的决策方法, 我们在 s1 采取了 a2, 并到达 s2,这时我们开始更新用于决策的 Q 表, 接着我们并没有在实际中采取任何行为, 而是想象自己在 s2 上采取了每种行为, 分别看看两种行为哪一个的Q 值大, 比如说 Q(s2, a2) 的值比 Q(s2, a1) 的大, 所以我们把大的 Q(s2, a2) 乘上一个衰减值 gamma(未来奖励) 并加上到达s2时所获取的奖励 R (即时奖励), 因为会获取实实在在的奖励 R ,我们将这个作为我现实中 Q(s1, a2) 的值, 但是我们之前是根据 Q 表估计 Q(s1, a2) 的值. 所以有了现实和估计值,我们就能更新Q(s1, a2) , 根据 估计与现实的差距, 将这个差距乘以一个学习效率 alpha 累加上老的 Q(s1, a2) 的值变成新的值. 但时刻记住, 我们虽然用 maxQ(s2) 估算了一下 s2 状态, 但还没有在 s2 做出任何的行为, s2的行为决策要等到更新完了以后再重新另外做. 这就是 off-policy 的 Q learning 是如何决策和学习优化决策的过程.
Q-Learning 整体算法

Epsilon greedy 是用在决策上的一种策略, 比如 epsilon = 0.9 时, 就说明有90% 的情况我会按照 Q表的最优值选择行为, 10% 的时间使用随机选行为. alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数.gamma 是对未来 reward 的衰减值.
Q-Learning 中的Gamma

重写一下 Q(s1) 的公式, 将 Q(s2) 拆开, 因为Q(s2)可以像 Q(s1)一样,是关于Q(s3) 的, 所以可以写成这样,然后以此类推, 不停地这样写下去, 最后就能写成这样, 可以看出Q(s1) 是有关于之后所有的奖励, 但这些奖励正在衰减, 离 s1越远的状态衰减越严重.
Q-Learning的思想
Q-Learning是value-based的,Q(s,a)就是在某一时刻的 s 状态下(s∈S),采取 动作a (a∈A)能够获得收益的期望,环境会根据agent的动作反馈相应的回报reward R,所以算法的主要思想就是将State与Action构建成一张Q表来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。
出自莫烦Python强化学习课程:强化学习 Reinforcement Learning 教程系列 | 莫烦Python