免模型控制
文章目录
- 免模型控制
- Q-Learning 算法
-
- 原理
- Sarsa 算法
-
- 区别:
免模型控制
免模型控制要解决的问题是,如何选择动作以达到最高得分
Q-Learning 算法
原理
首先Q-Learning 确定了一个前提最优策略: π(s)=arg max a Q(s,a) \\pi(s) = \\arg\\max_a Q(s,a) π(s)=argmaxaQ(s,a) 。这个策略本质上就是 “贪心”。只要 Q 函数能收敛到 Q ∗ Q^* Q∗(最优动作价值),那么这个贪心策略就等价于最优策略 π ∗ \\pi^* π∗(因为每一步都选 “理论上长期收益最大的动作”)。
参考下面的公式,
V π ( s ) = ∑ a ∈ Aπ ( a ∣ s ) Q π ( s , a ) V_{\\pi}(s)=\\sum_{a \\in A} \\pi(a \\mid s) Q_{\\pi}(s, a) Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
策略固定了,我们只需要直接预测动作价值函数,在决策时选择动作价值即 Q 值最大对应的动作即可。那如何实现这个逻辑呢?主要是根据下面的更新公式不断迭代而成
Q - learning 算法更新公式如下图所示。
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ max a Q ( s t + 1 , a ) − Q ( s t , a t ) ] Q\\left(s_{t}, a_{t}\\right) \\leftarrow Q\\left(s_{t}, a_{t}\\right)+\\alpha\\left[r_{t}+\\gamma \\max _{a} Q\\left(s_{t+1}, a\\right)-Q\\left(s_{t}, a_{t}\\right)\\right] Q(st,at)←Q(st,at)+α[rt+γamaxQ(st+1,a)−Q(st,at)]
时序差分方法中状态价值函数的更新公式:
V ( s t ) ← V ( s t ) + α [ r t + 1 + γ V ( s t + 1 ) − V ( s t ) ] V\\left(s_{t}\\right) \\leftarrow V\\left(s_{t}\\right)+\\alpha\\left[r_{t+1}+\\gamma V\\left(s_{t+1}\\right)-V\\left(s_{t}\\right)\\right] V(st)←V(st)+α[rt+1+γV(st+1)−V(st)]
两者存在惊人的相似,不过这不是巧合,因为两者都采用的是基于时序差分的更新方法
不过也有不一样的地方: γ max a Q ( s t + 1, a ) V S γ V ( s t + 1) \\gamma \\max_{a} Q(s_{t+1}, a) \\quad VS \\quad \\gamma V(s_{t+1}) γamaxQ(st+1,a)VSγV(st+1)由于这一点的不同引入了一个下新的概念就是叫过估计;
动作价值函数更新时是直接拿最大的未来动作价值的来估计的,而在状态价值函数更新中相当于是拿对应的平均值来估计的。这就会导致这个估计相当于状态价值函数中的估计更不准确,称之为Q值过估计。
Sarsa 算法
区别:
Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] Q\\left(s_{t}, a_{t}\\right) \\leftarrow Q\\left(s_{t}, a_{t}\\right)+\\alpha\\left[r_{t}+\\gamma Q\\left(s_{t+1}, a_{t+1}\\right)-Q\\left(s_{t}, a_{t}\\right)\\right] Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)−Q(st,at)]
与Q-learning区别在于一个是同策略一个是异策略。