理解策略和价值函数强化学习

Posted

技术标签:

【中文标题】理解策略和价值函数强化学习【英文标题】:Understanding policy and value functions reinforcement learning 【发布时间】:2017-05-24 11:42:18 【问题描述】:

你有一个策略,它实际上是我所有状态的动作概率分布。价值函数决定了获得最高回报的最佳行动方案。

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

根据这个定义,我很难理解价值迭代是如何工作的,我认为这是对价值函数是什么的误解。

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

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

我对政策和价值函数等的理解是否正确?

非常感谢!

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

【问题讨论】:

您在多个帖子中提出多个问题,而不是一个单一的整体问题。 【参考方案1】:

你有一个策略,它实际上是我所有状态的动作概率分布。

是的

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

没有。价值函数告诉您,对于给定的策略,在状态 s 中采取行动 a 的预期累积奖励是多少。

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

在策略评估中,您计算​​给定策略的状态价值函数(它告诉您处于某个状态然后根据该策略执行的预期累积奖励)。对于每个状态,您查看所有相邻状态并计算该状态中策略的预期值(按策略概率计算的邻居值的加权总和)。您必须一遍又一遍地遍历所有执行此操作的状态。这会在该策略的真实状态值函数的极限处收敛(实际上,当变化变小时就停止)。

在策略改进中,您检查状态-价值函数并询问在每个状态下,根据价值函数我可以采取的最佳行动是什么?当前策略采取的行动可能不会导致最高价值的邻居。如果不是这样,我们可以通过采取行动接触更好的邻居来轻松制定更好的政策。产生的新政策更好(或者最坏的情况相同)。

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

在值迭代中,您会截断评估步骤。因此,您不必遵循完整的评估过程来收敛,而是执行查看相邻状态的一步,而不是根据策略进行期望,而是通过存储最大相邻值来立即进行策略改进。评价和改进是混在一起的。你一遍又一遍地重复这个弄脏的步骤,直到值的变化非常小。为什么会收敛的主要思想是相同的;您正在评估政策,然后对其进行改进,直到无法再改进为止。

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

【讨论】:

【参考方案2】:

编辑:***很好地解释了这一切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)。

【讨论】:

以上是关于理解策略和价值函数强化学习的主要内容,如果未能解决你的问题,请参考以下文章

强化学习(十三) 策略梯度(Policy Gradient)

基于Pytorch的强化学习(DQN)之价值学习

强化学习的基本迭代方法

强化学习笔记之动态规划法

强化学习笔记4:强化学习分类

强化学习—— Actor-Critic