【强化学习】——03 Model-Free RL
【强化学习】——03 Model-Free RL
\quad\quad
\quad\quad 动态规划算法是基于模型的算法,要求已知状态转移概率和奖励函数。但很多实际问题中环境
可能是未知的,这就需要不基于模型的RL方法。
一、不基于模型的“预测”——更新 V π ( s ) V_\pi(s) Vπ(s)
(一) 蒙特卡洛算法MC
- 主要思想:
\quad\quad 通过大量采样来逼近真实值,用频率来估计概率。通过多次采样,使用一个事件发生的频率来替代其发生的概率,以解决状态转移概率未知的问题。
\quad\quad Agent与环境交互产生若干完整的轨迹(从初态到末态),通过对多条轨迹的回报进行平均,进而估计状态价值或动作价值。
- 整体思路:
\quad\quad 模拟——抽样——估值
\quad\quad 强化学习的目标是寻找最优策略,方法是求 V π ( s ) V_\pi(s) Vπ(s)和 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)
- 实现:
(1)策略评估:
\quad\quad 初始化——选择一个 ( s , a ) (s,a) (s,a)
\quad\quad 模拟——使用当前策略 π \pi π,从 ( s , a ) (s,a) (s,a)进行一次模拟,随机产生一段轨迹
\quad\quad 抽样——获得这段轨迹上每个 ( s i , a i ) (s_i,a_i) (si,ai)的收获 G ( s i , a i ) G(s_i,a_i) G(si,ai)
G t = R t + 1 + γ R t + 2 + . . . + γ T − t − 1 R T G_t=R_{t+1}+\gamma R_{t+2}+...+\gamma^{T-t-1}R_T Gt=Rt+1+γRt+2+...+γT−t−1RT
V π ( s ) = E [ G t ∣ S t = s ] V_\pi(s)=E[G_t|S_t=s] Vπ(s)=E[Gt∣St=s]
\quad\quad 注意:实际上我们使用N个样本回报来估计期望回报,即 V π ( s ) ≈ 1 / N ∑ G t V_\pi(s)\approx1/N\sum G_t Vπ(s)≈1/N∑Gt
\quad\quad 但在等待一个轨迹的过程中,会产生估计误差。
\quad\quad 我们可以使用真实回报来纠偏,使得新的估计=原有估计+学习率×实际回报和估计回报的误差
V ( S t ) ← V ( S t ) + α [ G t − V ( S t ) ] V(S_t)\leftarrow V(S_t)+\alpha[G_t-V(S_t)] V(St)←V(St)+α[Gt−V(St)]
\quad\quad 直至预测的回报无限接近真实的回报
(2)策略优化:
\quad\quad 如选择贪心地改进策略, π ( s ) = ˙ arg max a q ( s , a ) \pi(s)\dot=\argmax_a q(s,a) π(s)=˙argmaxaq(s,a)
\quad\quad 优化 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a)和 π ( s ) \pi(s) π(s)
(二)时序差分算法TD
\quad\quad MC要求所有采样序列都是完整的状态序列。如果没有完整的状态序列,可采用时序差分算法
- 引导:
\quad\quad 由于没有完整的状态序列,因此收获的计算不能用 G t G_t Gt的公式。
\quad\quad 根据状态价值函数的定义,用 R t + 1 + γ V π ( S t + 1 ) R_{t+1}+\gamma V_\pi(S_{t+1}) Rt+1+γVπ(St+1