Skip to content

Commit

Permalink
docs: 5.2 对动作价值的蒙特卡洛估计
Browse files Browse the repository at this point in the history
  • Loading branch information
qiwihui committed Mar 20, 2019
1 parent 2b15167 commit f0ae180
Showing 1 changed file with 26 additions and 31 deletions.
57 changes: 26 additions & 31 deletions source/partI/chapter5/monte_carlo_methods.rst
Original file line number Diff line number Diff line change
Expand Up @@ -171,45 +171,40 @@
如果我们仅仅对某一点或者某一小块区域的高度感兴趣,这个蒙特卡洛(MC)方法要比之前的迭代方法高效的多。


5.2 对动作价值的蒙特卡洛估计
5.2 动作价值的蒙特卡洛估计
----------------------------

  如果模型不可用,那么估计*动作(action)* 价值(即状态-价值(state-action)对的值)而不是 *状态* 价值就会特别有用。如果模型可用,那么仅使用状态价值(state
value)就可以决定策略。决定下一步只需要看哪个动作导致的累积奖励最多,就像我们在动态规划(DP)那章所讲的一样。而如果模型不可用,仅使用状态价值(state
value)是不够的。我们必须清楚地估计每个动作的价值,这样才能联系到策略(policy)。所以,蒙特卡洛方法(MC
methods)主要用来估计 :math:`q_*` 。为此,我们首先考虑对动作价值(action
value)的估计问题。

  对于动作价值(action
value)的策略评估问题,即估计 :math:`q_\pi{(s,a)}` 。 :math:`q_\pi{(s,a)}` 定义为,从状态 :math:`s` 开始,做出动作 :math:`a` ,之后遵循策略 :math:`\pi` ,所得到的期望回报(return)。在这里使用的蒙特卡洛方法(MC
methods)与上一节对状态价值(state
value)使用的基本相同,只不过现在谈论的是状态-动作对(state-action
pair)而不是状态。一个状态-动作对(state-action
pair) :math:`s,a` 即是说在一个回合里,访问到状态 :math:`s` ,并做出动作 :math:`a` 。在每次访问
MC方法中,每次访问状态-动作对都会计算,最后求平均;而首次访问
MC方法每个回合只计算最多一次。当访问次数趋近于无穷时,这两种方法(指每次访问
如果模型不可用,那么估计 *动作* 价值(即状态-价值对的值)而不是 *状态* 价值就会特别有用。
如果模型可用,那么仅使用状态价值就可以决定策略;
决定下一步只需要看哪个动作导致的奖励和下一状态组合最佳,就像我们在动态规划(DP)那章所讲的一样。
而如果模型不可用,仅使用状态价值是不够的。我们必须清楚地估计每个动作的价值,以使价值在建议策略时有用。
所以,蒙特卡洛方法主要用来估计 :math:`q_*` 。为此,我们首先考虑对动作价值的策略估计问题。

对于动作价值的策略评估问题,即估计 :math:`q_\pi{(s,a)}` 。:math:`q_\pi{(s,a)}` 定义为,
从状态 :math:`s` 开始,做出动作 :math:`a`,之后遵循策略 :math:`\pi`,所得到的期望回报(return)。
在这里使用的蒙特卡洛方法与上一节对状态价值使用的基本相同,只不过现在谈论的是状态-动作对而不是状态。
一个状态-动作对 :math:`s,a` 即是在一个回合里,访问到状态 :math:`s` ,并做出动作 :math:`a`。
在每次访问MC方法中,每次访问状态-动作对都会计算,最后求平均;
而首次访问MC方法每个回合只计算最多一次。当访问次数趋近于无穷时,这两种方法(指每次访问
MC 和首次访问 MC)都会以二次方收敛到期望值。

  唯一的问题是,可能会有许多状态-动作对(state-action
pairs)从未被访问到。如果 :math:`\pi` 是一个确定性的策略(deterministic
policy),那么遵循策略 :math:`\pi` ,每个状态将会仅仅观察到一个动作的回报(return)。如果不能观察到其他动作的回报(return),也就不能求平均,那么蒙特卡洛的估计就不能随着经验的增加而提高。这是一个严重的问题,因为我们学习动作价值,就是为了在每个状态选择合适的动作。为了比较所有的可能,我们需要估计每个状态 *所有* 可能的动作,而不仅仅是当前选择的动作。
唯一的问题是,可能会有许多状态-动作对从未被访问到。如果 :math:`\pi` 是一个确定性的策略,
那么遵循策略 :math:`\pi`,每个状态将会仅仅观察到一个动作的回报。
如果不能观察到其他动作的回报,也就不能求平均,那么蒙特卡洛的估计就不能随着经验的增加而提高。
这是一个严重的问题,因为我们学习动作价值,就是为了在每个状态选择合适的动作。
为了比较所有的可能,我们需要估计每个状态 *所有* 可能的动作,而不仅仅是当前选择的动作。

  这是一个很普遍的问题,即*保持探索(maintaining
exploration)* 。我们在第二章的k-臂赌博机问题中提到过。要使策略评估能够工作,我们必须保证持续的探索。一个办法是, *从特定的状态动作对出发* ,对每种动作都有大于零的概率选择到。这能够保证经历无限个回合后,所有的状态-动作对(state-action
pair)都会被访问到无限次。我们称这种假设为 *探索开端(exploring
starts)* 。
这是一个很普遍的问题,即 *保持探索*。我们在第二章的k-臂赌博机问题中提到过。
要使策略评估能够工作,我们必须保证持续的探索。一个办法是, *从特定的状态动作对出发* ,对每种动作都有大于零的概率选择到。
这能够保证经历无限个回合后,所有的状态-动作对都会被访问到无限次。我们称这种假设为 *探索开端*。

  这个探索开端的假设有时是很有用的。但是它不具普遍意义,特别是当我们直接从与真实环境的交互中学习时,这种方法就不太适用了。在这种情况下(指从与真实环境的交互中学习)起始状态不是很有用。为了让所有状态-动作对(state-action
pair)都能访问到的更加普遍的一种方法是,让我们的策略是随机策略,即每个状态下,选择任意动作的概率都不为零。我们将会在后面的小节里讨论这种方法的两个变种。现在,我们假设是探索开端,然后完整地表述蒙特卡洛控制方法(Monte
Carlo control method)。
这个探索开端的假设有时是很有用的。但是它不具普遍意义,特别是当我们直接从与真实环境的交互中学习时,这种方法就不太适用了。
在这种情况下(指从与真实环境的交互中学习)起始状态不是很有用。
为了让所有状态-动作对都能访问到的更加普遍的一种方法是让我们的策略是随机策略,即每个状态下,选择任意动作的概率都不为零。
我们将会在后面的小节里讨论这种方法的两个变种。现在,让我们假设是探索开端,然后完整地表述蒙特卡洛控制方法。

--------------

练习 5.2
*练习 5.2* 请问蒙特卡洛估计 :math:`q_\pi` 的备份图怎样的?

请问蒙特卡洛估计 :math:`q_\pi` 的备份图表怎样的?

--------------

5.3 蒙特卡洛控制
----------------
Expand Down

0 comments on commit f0ae180

Please sign in to comment.