- 马尔可夫性质(Markov Property): 如果某一个过程未来的转移跟过去是独立的,即只取决于现在,那么其满足马尔可夫性质。换句话说,一个状态的下一个状态只取决于它当前状态,而跟它当前状态之前的状态都没有关系。
- 马尔可夫链(Markov Chain):概率论和数理统计中具有马尔可夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochastic process)。
- 状态转移矩阵(State Transition Matrix):状态转移矩阵类似于一个 conditional probability,当我们知道当前我们在 这个状态过后,到达下面所有状态的一个概念,它每一行其实描述了是从一个节点到达所有其它节点的概率。
- 马尔可夫奖励过程(Markov Reward Process, MRP): 即马尔可夫链再加上了一个奖励函数。在 MRP之中,转移矩阵跟它的这个状态都是跟马尔可夫链一样的,多了一个奖励函数(reward function)。奖励函数是一个期望,它说当你到达某一个状态的时候,可以获得多大的奖励。
- horizon: 定义了同一个 episode 或者是整个一个轨迹的长度,它是由有限个步数决定的。
- return: 把奖励进行折扣(discounted),然后获得的对应的收益。
- Bellman Equation(贝尔曼等式): 定义了当前状态与未来状态的迭代关系,表示当前状态的值函数可以通过下个状态的值函数来计算。Bellman Equation 因其提出者、动态规划创始人 Richard Bellman 而得名 ,同时也被叫作“动态规划方程”。 ,特别地,矩阵形式:。
- Monte Carlo Algorithm(蒙特卡罗方法): 可用来计算价值函数的值。通俗的讲,我们当得到一个MRP过后,我们可以从某一个状态开始,然后让它让把这个小船放进去,让它随波逐流,这样就会产生一个轨迹。产生了一个轨迹过后,就会得到一个奖励,那么就直接把它的 Discounted 的奖励 直接算出来。算出来过后就可以把它积累起来,当积累到一定的轨迹数量过后,然后直接除以这个轨迹,然后就会得到它的这个价值。
- Iterative Algorithm(动态规划方法): 可用来计算价值函数的值。通过一直迭代对应的Bellman Equation,最后使其收敛。当这个最后更新的状态跟你上一个状态变化并不大的时候,这个更新就可以停止。
- Q函数 (action-value function):其定义的是某一个状态某一个行为,对应的它有可能得到的 return 的一个期望( over policy function)。
- MDP中的prediction(即policy evaluation问题):给定一个 MDP 以及一个 policy ,去计算它的 value function,即每个状态它的价值函数是多少。其可以通过动态规划方法(Iterative Algorithm)解决。
- MDP中的control问题: 寻找一个最佳的一个策略,它的 input 就是MDP,输出是通过去寻找它的最佳策略,然后同时输出它的最佳价值函数(optimal value function)以及它的这个最佳策略(optimal policy)。其可以通过动态规划方法(Iterative Algorithm)解决。
- 最佳价值函数(Optimal Value Function):我们去搜索一种 policy ,然后我们会得到每个状态它的状态值最大的一个情况, 就是到达每一个状态,它的值的极大化情况。在这种极大化情况上面,我们得到的策略就可以说它是最佳策略(optimal policy)。optimal policy 使得每个状态,它的状态函数都取得最大值。所以当我们说某一个 MDP 的环境被解了过后,就是说我们可以得到一个 optimal value function,然后我们就说它被解了。
学习链接:https://www.cnblogs.com/pinard/p/9426283.html
构成强化学习MDP的四元组?
答:状态、动作、状态转移概率和奖励,分别对应(S,A,P,R),后面有可能会加上个衰减因子构成五元组。
Q-learning和Sarsa的区别?
答:Sarsa算法是Q-learning算法的改进。
首先,Q-learning 是 off-policy 的时序差分学习方法,Sarsa 是 on-policy 的时序差分学习方法。
其次,Sarsa 在更新 Q 表格的时候,它用到的 A' 。我要获取下一个 Q 值的时候,A' 是下一个 step 一定会执行的 action 。这个 action 有可能是 -greddy 方法 sample 出来的值,也有可能是 max Q 对应的 action,也有可能是随机动作。但是就是它实实在在执行了的那个动作。
但是 Q-learning 在更新 Q 表格的时候,它用到这个的 Q 值 对应的那个 action ,它不一定是下一个 step 会执行的实际的 action,因为你下一个实际会执行的那个 action 可能会探索。Q-learning 默认的 action 不是通过 behavior policy 来选取的,它是默认 A' 为最优策略选的动作,所以 Q-learning 在学习的时候,不需要传入 A',即 的值。
-
更新公式的对比(区别只在target计算这一部分):
- Sarsa的公式: ;
- Q-learning的公式:
Sarsa 实际上都是用自己的策略产生了 S,A,R,S',A' 这一条轨迹。然后拿着 去更新原本的 Q 值 。 但是 Q-learning 并不需要知道,我实际上选择哪一个 action ,它默认下一个动作就是 Q 最大的那个动作。