一. 强化学习的分类
1.Model-free 和 Model-based
Model-free 即机器人不知道外界环境信息,只能在机器人执行每一步动作后从环境中得到反馈然后去学习,只能按部就班,一步一步等待真实世界的反馈,再根据反馈采取下一步行动。诸如Q Learning, Sarsa,Policy Gradients等算法。
Model-based 指机器人对环境有一定的了解,可以对环境进行建模,通过模型机器人再也不必等真实世界的反馈做出动作。可以这么理解,当机器人要学习的时候,由于有了环境的模型,机器人可以将建立的环境模型当做是真实世界,不断的学习。在模型世界中,选择学习情况最好的那一种。
2.基于概率和基于价值(value)
基于概率:是强化学习中最直接的一种,通过state(观测)直接输出下一步采取的action(动作)的概率,然后根据概率采取行动,所以每一种action(动作)都有可能被选中,只是可能性不同。诸如 Policy Gradient。
基于价值:输出所有动作的价值,相比基于概率的方法,基于价值的决策部分更为铁定,即选择价值最高的。诸如 Q Learning, Sarsa 等算法。
同时也有结合这俩种方式的算法,诸如Actor-Critic,在Actor-Critic 基础上扩展的 DDPN (Deep Deterministic Policy Gradient)、A3C (Asynchronous Advantage Actor-Critic)、DPPO (Distributed Proximal Policy Optimization)。
3.回合更新(Monte-Carlo update,蒙特卡洛更新)和单步更新(Temporal-Difference update)
回合更新:指游戏开始到结束整一个过程,只有等到结束后,才能够总结这个回合的所有转折点,再更新我们的行为准则。诸如Monte-carlo Learning 和 基础版的 policy gradient等。
单步更新:在游戏中的每一步都可以更新其行为准则(例如如何选择action等),不用等到整个过程都结束。诸如Qlearning、Sarsa 和升级版的 policy gradient 等都是单步更新的。
4.在线学习(On-Policy)和 离线学习(Off-Policy)
在线学习(On-Policy):在当前时间当前采取的动作紧接着通过得到的反馈下进行学习。诸如 Sarsa 算法 和 Sarsa lambda 算法。
离线学习(Off-Policy):可以根据过往的经验及数据进行学习,举个例子,就是白天收集的数据可以在晚上通过离线学习进行。诸如 Q-Learning,Deep-Q-Network 等算法。
二. Q-learning
1.基本概念
a.假设我们现在处于状态s1(在写作业),有俩个行为,分别是a1(看电视),a2(写作业)。根据经验,在这种状态下,选择a2(写作业)的值(value,可理解为分数)要比选择a1(看电视)要高。这里的state(状态)、action(动作)、值(value)都可以用一个有关s、a和value的Q表格代替。
b.在这个例子中,在状态s1下选择a1的值为 Q(s1,a1)=-2, 选择a2的值为 Q(s2,a2)=2, 所以我们选择a2这个动作然后到达状态s2。重复上面的过程,我们可以得到Q(s2,a1), Q(s2,a2) 的值(value),并比较他们的大小,从而确定下一个action(动作)达到状态 s3,并不断的重复这个过程,这就是Q表,如下图所示。
2.Q-learning 的更新
如何去更新Q表中的值?
根据Q表的估计,因为在状态s1中,a2的值比较大,通过之前的决策方法,我们在s1采取了a2,并达到了s2状态,这时候我们开始更新用于决策的Q表。在s2状态下,我们通过某种手段得到了在s2状态下采取某种action的值,分别是Q(s2,a1) 和 Q(s2,a2), 这时候对于 Q(s1,a2),我们可用如下公式更新Q(s1,a2)的值:
Q(s1,a2)=Q(s1,a2)+α[R+γ∗max Qa(s2,a)−Q(s,a)] Q ( s 1 , a 2 ) = Q ( s 1 , a 2 ) + α [ R + γ ∗ m a x Q a ( s 2 , a ) − Q ( s , a ) ]
其中R为达到s2状态是所获得的奖励, γ γ 为衰减因子, α α 为学习效率。在这里值得注意的是,我们用maxQ(s2,a) 估算了s2的状态,但是还没有做出任何的action(动作),需要等到更新完后再做出action。
这就是off-policy 的 Q learning 是如何决策和学习优化决策过程的。
3.伪代码
Initialize Q(s,a) arbitrarily
Repeat(for each episode):
Initialize s
Repeat (for each step of episode):
Choose a from s using policy derived from Q (e.g., greedy) (上面的更新过程我们就是用了贪婪算法)
Take action a,observe r,s'
Q(s,a)<-Q(s,a)+ \alpha[r+ \gamma* \underset{a'}{max} Q(s',a') - Q(s,a)] (该公式为latex语言)
s<-s';
until s is terminal
伪代码概括了Q-learning中的所有内容,每次更新都用到了Q(s’,a’) 和 Q(s,a)。在choose a from s using policy derived from Q
中,我们还有时会用到 ϵ−greedy ϵ − g r e e d y , 当 ϵ=0.9 ϵ = 0.9 的时候,说明有 90%的情况会按照Q表最优值选择行为(即最大值),10%的时间使用随机选行为。 α α 是学习率,来决定这次的误差有多少是要被学习的, α α 是一个小于1的数。