Learning就是通过迭代的方法找到更接近真实值的手段。
蒙特卡洛方法 当研究的问题动态模型未知的时候,怎么做策略估计?怎么做策略的改进?
在实际应用中,经常遇到模型未知的情况,无法像上一章节讲的,通过Bellman公式计算状态价值是根据模型(状态传递概率$p(s’,r|s,a)$)得到的,但是实际应用中经常遇到没有这样的概率可以依赖。
思路就是既然MDP利用环境状态传递概率(State Transition Probability)$p(s’,r|s,a)$来加权计算期望,在不知道这个概率的情况下,能否利用多次采集某状态出现的时候,环境给出的奖励Reward来平均计算,作为状态价值。
解法就是通过实验,多次执行episode,在每次的循环中,记录特定状态出现的次数以及循环结束之后所获得的奖励,最后依据大数定律,对积累起来的奖励求平均值,就当作该状态的价值。如果我们事先知道所有的可能状态(在该特定的policy下面,应该可以确定出来),那么就维护一个数组,存储每一种状态的上面的信息,最后所有状态的价值都计算出来就意味着策略评估完成了。 但是问题来了:如果一个episode持续很长时间,或者就无法结束,那么,蒙特卡洛方法这种依赖episode结束才可以获得状态价值的方法就无法应用,需要找到替代的方法来近似。 TD-learning就解决了这个问题。基于TD-Learning就衍生出一系列的方法解决这类问题。
MC Policy Evaluation and Control $$G_t=R_{t+1} + \gamma R_{t+2}+ \gamma^2 R_{t+3} \cdots + \gamma^{T-1} R_{T}$$ $$v_\pi(s)=\mathbb{E}_\pi(G_t|S_t=s)$$
需要循环多次episode, 每次episode开始之后,每一次遇到感兴趣的$s$,记录$N(s)=N(s)+1$,并且把Return加进来:$G(\boldsymbol s,a)=G(\boldsymbol s,a)+r$ 完成当前的episode后,计算$Q(\boldsymbol s,a)=G(\boldsymbol s,a)/N(\boldsymbol s,a)$ ->类似于累加Reward的过程 然后遍历$a$,更新策略:$\pi(s)=argmax_aQ(\boldsymbol s, a)$ Monte Carlo ES,是指每一个episode起始的状态选择是随机的,不能固定,避免有些状态永远无法被访问到。下图是书中的算法流程。
这部分也叫做MC Policy Improvement。 从给定的$\pi_0$开始,$E$代表策略估计(Policy Estimation),得到动作价值函数$Q_{\pi_0}$,采用贪心算法(greedy)找到使得$Q_\pi(\boldsymbol s, a)$最大的action: $\pi_1(\boldsymbol s) \leftarrow \arg max_{a}Q_{\pi_0}(\boldsymbol s, a)$
$$ \pi_0 \xrightarrow{\text{E}}Q_{\pi_0}\xrightarrow{\text{I}}\pi_1\xrightarrow{\text{I}}\pi_2\cdots \xrightarrow{\text{I}}\pi_*\xrightarrow{\text{E}}Q_{\pi_ *} $$
广义策略迭代(Generalized Policy Iteration)
On-Policy and Off-Policy 在学习Q值的过程中,我们会遇到两种情况:
...