了解政策和价值函数强化学习
Understanding policy and value functions reinforcement learning
你有一个策略,它实际上是我所有状态的动作概率分布。价值函数决定了获得最高奖励的最佳行动方案。
所以我有一个随机策略。我得到价值函数。我根据价值函数用新的分布更新我的政策。我得到了这个新的更新策略的价值函数并再次重新评估。
根据这个定义,我很难理解值迭代将如何工作,我认为这是由于对值函数是什么的误解。
价值函数不是最佳行动方案,它只是决定奖励的行动方案吗?策略迭代是否只是寻找一个提供比当前奖励更高奖励的价值函数,然后立即更新,为我的状态(一个新策略)提供新的行动分布,然后对其每个状态迭代执行此操作直到收敛?
在那种情况下,值迭代是在序列中的每个状态下寻找单一的最佳可能动作(而不是更好的动作)?我正在努力理解为什么 不会 更新政策?
我对策略和价值函数等的理解是否正确?
非常感谢!
我认为我对政策的理解肯定是不正确的:如果政策只是对我的状态的所有可能行动的分布,那么我不完全确定 "updating" 它意味着什么。如果它只是更新分布,那么如果它使用 "worse" 分布,值迭代究竟如何工作,因为初始化时策略最初不是随机的吗?我不明白这些如何收敛并且同样好?
编辑:维基百科很好地解释了所有这些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。策略 returns 最佳动作,而价值函数给出状态的价值。策略函数如下所示:
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' 是下一个可能的状态。这将收敛,因为奖励是状态的 'truth',将我们拉向正确的方向。有定理可以证明这一点,但这超出了问题的范围。
另一方面,策略迭代看起来像这样:
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)。
You have a policy, which is effectively a probability distribution of actions for all my states.
是
A value function determines the best course of actions to achieve highest reward.
没有。价值函数告诉您,对于给定的策略,在状态 s
中采取行动 a
的预期累积奖励是多少。
暂时忘掉价值迭代和策略迭代。您应该尝试了解的两件事是政策评估和政策改进。
在政策评估中,您计算出给定政策的状态价值函数(它告诉您处于某种状态然后根据此政策采取行动的预期累积奖励)。对于每个状态,您查看所有相邻状态并计算该状态下策略的期望值(按策略概率计算的邻居值的加权和)。您必须遍历所有状态,一遍又一遍地执行此操作。这会收敛到该策略的真实状态值函数的极限(实际上,当变化变小时就停止)。
在政策改进中,你检查一个状态值函数并询问,在每个状态下,根据该值函数我可以采取的最佳行动是什么?当前策略采取的操作可能不会导致最高价值的邻居。如果没有,我们可以通过采取行动以达到更好的邻居的方式轻松制定更好的政策。结果的新政策更好(或最坏情况下,相同)。
政策迭代就是重复政策评估和政策改进。
在值迭代中,您截断了评估步骤。因此,您不是遵循完整的评估过程来收敛,而是采取查看相邻状态的步骤,而不是根据策略采取期望,而是通过存储最大相邻值立即进行策略改进。评估和改进被弄脏了。您一遍又一遍地重复这个弄脏的步骤,直到值的变化非常小。为什么会收敛的主要思想是相同的;您正在评估政策,然后对其进行改进,直到无法再改进为止。
您可以通过多种方式来理解策略和价值迭代。您可以在 强化学习:简介 第 2 版中阅读有关此评估和改进框架的更多信息。我遗漏了一些有关折扣的重要细节,但希望现在整体情况更加清晰。
你有一个策略,它实际上是我所有状态的动作概率分布。价值函数决定了获得最高奖励的最佳行动方案。
所以我有一个随机策略。我得到价值函数。我根据价值函数用新的分布更新我的政策。我得到了这个新的更新策略的价值函数并再次重新评估。
根据这个定义,我很难理解值迭代将如何工作,我认为这是由于对值函数是什么的误解。
价值函数不是最佳行动方案,它只是决定奖励的行动方案吗?策略迭代是否只是寻找一个提供比当前奖励更高奖励的价值函数,然后立即更新,为我的状态(一个新策略)提供新的行动分布,然后对其每个状态迭代执行此操作直到收敛?
在那种情况下,值迭代是在序列中的每个状态下寻找单一的最佳可能动作(而不是更好的动作)?我正在努力理解为什么 不会 更新政策?
我对策略和价值函数等的理解是否正确?
非常感谢!
我认为我对政策的理解肯定是不正确的:如果政策只是对我的状态的所有可能行动的分布,那么我不完全确定 "updating" 它意味着什么。如果它只是更新分布,那么如果它使用 "worse" 分布,值迭代究竟如何工作,因为初始化时策略最初不是随机的吗?我不明白这些如何收敛并且同样好?
编辑:维基百科很好地解释了所有这些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。策略 returns 最佳动作,而价值函数给出状态的价值。策略函数如下所示:
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' 是下一个可能的状态。这将收敛,因为奖励是状态的 'truth',将我们拉向正确的方向。有定理可以证明这一点,但这超出了问题的范围。
另一方面,策略迭代看起来像这样:
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)。
You have a policy, which is effectively a probability distribution of actions for all my states.
是
A value function determines the best course of actions to achieve highest reward.
没有。价值函数告诉您,对于给定的策略,在状态 s
中采取行动 a
的预期累积奖励是多少。
暂时忘掉价值迭代和策略迭代。您应该尝试了解的两件事是政策评估和政策改进。
在政策评估中,您计算出给定政策的状态价值函数(它告诉您处于某种状态然后根据此政策采取行动的预期累积奖励)。对于每个状态,您查看所有相邻状态并计算该状态下策略的期望值(按策略概率计算的邻居值的加权和)。您必须遍历所有状态,一遍又一遍地执行此操作。这会收敛到该策略的真实状态值函数的极限(实际上,当变化变小时就停止)。
在政策改进中,你检查一个状态值函数并询问,在每个状态下,根据该值函数我可以采取的最佳行动是什么?当前策略采取的操作可能不会导致最高价值的邻居。如果没有,我们可以通过采取行动以达到更好的邻居的方式轻松制定更好的政策。结果的新政策更好(或最坏情况下,相同)。
政策迭代就是重复政策评估和政策改进。
在值迭代中,您截断了评估步骤。因此,您不是遵循完整的评估过程来收敛,而是采取查看相邻状态的步骤,而不是根据策略采取期望,而是通过存储最大相邻值立即进行策略改进。评估和改进被弄脏了。您一遍又一遍地重复这个弄脏的步骤,直到值的变化非常小。为什么会收敛的主要思想是相同的;您正在评估政策,然后对其进行改进,直到无法再改进为止。
您可以通过多种方式来理解策略和价值迭代。您可以在 强化学习:简介 第 2 版中阅读有关此评估和改进框架的更多信息。我遗漏了一些有关折扣的重要细节,但希望现在整体情况更加清晰。