文章目錄
- 免模型控制
- Q-Learning 算法
- 原理
- Sarsa 算法
- 區別:
免模型控制
免模型控制要解決的問題是,如何選擇動作以達到最高得分
Q-Learning 算法
原理
首先Q-Learning 確定了一個前提最優策略:π(s)=arg?max?aQ(s,a)\pi(s) = \arg\max_a Q(s,a)π(s)=argmaxa?Q(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(st,at)←Q(st,at)+α[rt+γmax?aQ(st+1,a)?Q(st,at)]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?+γamax?Q(st+1?,a)?Q(st?,at?)]
時序差分方法中狀態價值函數的更新公式:
V(st)←V(st)+α[rt+1+γV(st+1)?V(st)]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?aQ(st+1,a)VSγV(st+1)\gamma \max_{a} Q(s_{t+1}, a) \quad VS \quad \gamma V(s_{t+1})γamax?Q(st+1?,a)VSγV(st+1?)由于這一點的不同引入了一個下新的概念就是叫過估計;
動作價值函數更新時是直接拿最大的未來動作價值的來估計的,而在狀態價值函數更新中相當于是拿對應的平均值來估計的。這就會導致這個估計相當于狀態價值函數中的估計更不準確,稱之為Q值過估計。
Sarsa 算法
區別:
Q(st,at)←Q(st,at)+α[rt+γQ(st+1,at+1)?Q(st,at)]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區別在于一個是同策略一個是異策略。