理解政策和价值功能强化学习

时间:2017-05-24 11:42:18

标签: dynamic-programming policy reinforcement-learning

你有一个政策,它实际上是我所有州的行动的概率分布。价值函数决定了实现最高回报的最佳行动方案。

所以我有一个随机的政策。我得到了价值功能。我根据值函数使用新的分发更新我的策略。我得到了这个新更新政策的价值函数,并再次重新评估。

根据这个定义,我无法理解价值迭代将如何发挥作用,我认为这是对价值函数的误解。

价值功能不是最佳行动方案,它只是一个决定奖励的行动方案吗?策略迭代是否只是寻找一个值函数,它提供比当前奖励更高的奖励,然后立即更新,为我的状态(新策略)提供新的动作分布,然后迭代地为每个状态执行此操作直到收敛?

在这种情况下,是值迭代在序列中的每个状态下寻找单个最佳可能的动作(而不是更好的一个)?我在这里努力理解为什么不会更新政策?

我对政策和价值功能的理解是否正确?

非常感谢!

我认为我对政策的理解肯定是不正确的:如果政策只是对我所有州的所有可能行动的分配,那么我不完全确定它意味着什么“更新”。如果只是简单地更新分布,那么如果值处理“更差”的分布,那么值迭代究竟是如何工作的,因为初始化时策略最初是随机的?我无法理解这些会如何收敛并且同样好?

2 个答案:

答案 0 :(得分:1)

  

你有一个政策,它实际上是我所有州的行动的概率分布。

  

价值函数决定了获得最高回报的最佳行动方案。

没有。值函数会告诉您对于给定的政策,在州a中采取行动s的预期累积奖励是什么。

暂时忘记值迭代和策略迭代。您应该尝试理解的两件事是政策评估和政策改进。

  • 在政策评估中,您可以计算出给定政策的州值函数(它告诉您您在某个州的预期累积奖励,然后根据该政策行事)。对于每个州,您查看所有邻国并计算该州政策的预期价值(按政策概率加权邻居的价值总和)。你必须一遍又一遍地遍历所有这样做的状态。这收敛于该政策的真实国家价值函数的限制(实际上,当变化变小时停止)。

  • 在政策改进中,你检查了一个状态值函数,并在每个状态中询问根据值函数我可以采取的最佳操作是什么?当前策略采取的操作可能不会导致最高价值的邻居。如果不这样做,我们可以通过采取行动以达到更好的邻居来制定更好的政策。结果的新政策更好(或最坏的情况,相同)。

政策迭代只是重复的政策评估和政策改进。

在值迭代中,您将截断评估步骤。因此,不是按照完整的评估过程进行收敛,而是执行一个查看邻近状态的步骤,而不是根据策略采取预期,您可以通过存储最大邻近值立即进行策略改进。评估和改进被混淆在一起。您反复重复此污迹步骤,直到值的变化非常小。为什么这种收敛的主要思想是相同的;您正在评估该政策,然后对其进行改进,直至无法再对其进行改进。

您可以通过多种方式了解策略和值迭代。您可以在强化学习:简介第二版中阅读有关此评估和改进框架的更多信息。我遗漏了一些关于折扣的重要细节,但希望现在整体情况更清晰。

答案 1 :(得分:0)

编辑:维基百科很好地解释了所有这些https://en.wikipedia.org/wiki/Markov_decision_process#Value_iteration

Sutton在这个主题上也有很多资源可以解释比下面更好:

http://incompleteideas.net/sutton/book/ebook/node34.html
http://incompleteideas.net/sutton/book/ebook/node43.html
http://incompleteideas.net/sutton/book/ebook/node44.html

我无法用措辞来表达,但我认为你的价值功能与政策混在一起。

值函数为您提供每个州的值。使用贝尔曼方程,它看起来像这样。

V(S) = max_a[R(s,a) + gamma * ∑_s'T(s,a,s')V(s')]

特定州的价值是给您奖励加上折扣奖励的最大行动。请注意,它有一个max而不是argmax。这是因为它为您提供了价值。

另一方面,该政策是给定该政策的预期折扣奖励的argmax。策略返回最佳操作,而值函数提供状态值。政策功能如下:

optimal_policy(s) = argmax_a ∑_s'T(s,a,s')V(s')

最优政策将转向产生最高价值的行动,正如您在argmax中所看到的那样。

考虑到这一点,值迭代将从每个状态的初始实用程序开始,然后运行:

V_t+1(s) = R(s) + gamma * max_a (∑_s'T(s,a,s')V_t(s'))

其中t是时间步长,s'是下一个可能的状态。这将会收敛,因为奖励是真实的'国家,把我们拉向正确的方向。有定理可以证明这一点,但这超出了问题的范围。

另一方面,政策迭代看起来像这样:

optimal_policy_t+1(s) = argmax_a (∑_s' T(s,a,s')V_t(s')

其中a是所有可能的操作,V_t是值。更新值类似于:

V_t+1(s) = R(s) + gamma * max_a(∑_s' T(s,policy_t(s),s')V_t(s')

因为该政策代表了该时间步的最佳行动。策略迭代的运行时间为O(N ^ 3)。