价值迭代和策略迭代有啥区别? [关闭]
Posted
技术标签:
【中文标题】价值迭代和策略迭代有啥区别? [关闭]【英文标题】:What is the difference between value iteration and policy iteration? [closed]价值迭代和策略迭代有什么区别? [关闭] 【发布时间】:2016-09-19 02:18:04 【问题描述】:在强化学习中,策略迭代和价值迭代有什么区别?
据我所知,在价值迭代中,您使用贝尔曼方程来求解最优策略,而在策略迭代中,您随机选择一个策略 π,并找到该策略的奖励。
我的疑问是,如果您在 PI 中选择一个随机策略 π,即使我们选择多个随机策略,如何保证它是最优策略。
【问题讨论】:
在ai.stackexchange.com、stats.stackexchange.com 或datascience.stackexchange.com 等网站上问这个问题会更合适。 我投票结束这个问题是因为Machine learning (ML) theory questions are off-topic on Stack Overflow - gift-wrap candidate for Cross-Validated 【参考方案1】:在策略迭代算法中,您从一个随机策略开始,然后找到该策略的价值函数(策略评估步骤),然后根据之前的价值函数找到一个新的(改进的)策略, 等等。在这个过程中,保证每个策略都比前一个策略有严格的改进(除非它已经是最优的)。给定一个策略,它的价值函数可以使用贝尔曼算子获得。
在值迭代中,您从一个随机值函数开始,然后在迭代过程中找到一个新的(改进的)值函数,直到达到最优值函数。请注意,您可以从最优值函数轻松得出最优策略。此过程基于最优贝尔曼算子。
从某种意义上说,两种算法的工作原理是一样的,可以看成是generalized policy iteration的两种情况。然而,最优性 Bellman 算子包含一个 max 算子,它是非线性的,因此具有不同的特征。另外,纯值迭代和纯策略迭代可以混合使用。
【讨论】:
对此的描述很好。好吧,让我在策略迭代中添加这个东西,它使用贝尔曼期望方程,在价值迭代中使用梅尔曼最大方程。对于价值迭代,它可以是更少的迭代,但对于一个迭代,可能会有很多工作。对于策略迭代更多迭代 策略迭代中不是也有 max 运算符吗?否则如何根据新的价值函数更新策略? 不,SARSA算法是策略迭代的典型例子。正如您在此伪代码 (incompleteideas.net/book/ebook/node64.html) 中所见,值函数更新不包含任何最大运算符。但是,如果您的意思是从价值函数中选择最佳动作(即贪婪动作)的最大值运算符,是的,在这样的过程中有一个最大值运算。【参考方案2】:让我们并排看看它们。比较的关键部分被突出显示。图来自 Sutton 和 Barto 的书:强化学习:简介。
要点:
-
策略迭代包括:策略评估 + 策略改进,两者反复迭代直到策略收敛。
价值迭代包括:寻找最优价值函数 + 一次策略提取。两者没有重复,因为一旦价值函数是最优的,那么它的策略也应该是最优的(即收敛的)。
寻找最优价值函数也可以看作是策略改进(由于最大值)和截断策略评估(在一次扫描所有状态后重新分配 v_(s) 而不管收敛)的组合。
策略评估和寻找最优价值函数的算法非常相似,除了最大操作(如突出显示的那样)
同样,策略改进和策略提取的关键步骤是相同的,只是前者涉及稳定性检查。
根据我的经验,策略迭代比值迭代快,因为策略比值函数收敛得更快。我记得这在书中也有描述。
我想这种混淆主要来自所有这些有点相似的术语,这也让我感到困惑。
【讨论】:
我同意策略迭代在更少的迭代中收敛,而且我还在几个地方读到它更快。我在 Burlap 中用这两种方法做了一些简单的盒子世界和迷宫解决实验。我发现值迭代执行了更多的迭代,但达到收敛所需的时间更少。 YMMV。 @Chrom,你应该读过相反的。这是本书2017nov5版本的第65页中的一句话,“策略迭代通常会在令人惊讶的少数迭代中收敛。图 4.1 中的示例说明了这一点。”。 是的,我玩过几种不同的网格世界。我只是想指出,在迭代方面“更快”可能会支持 PI。但以秒为单位的“更快”实际上可能有利于 VI。 澄清一下,策略迭代将需要更少的迭代,但比值迭代在计算上更复杂;哪个更快取决于环境。 我知道这是一篇旧帖子。但我强烈建议,看看这个 (medium.com/@m.alzantot/…) 该链接提供了一个代码,它让我更清楚。【参考方案3】:就我而言,与@zyxue 的想法相反,VI 通常比 PI 快得多。
原因很简单,正如您已经知道的,贝尔曼方程用于求解给定策略的价值函数。由于我们可以直接求解最优策略的价值函数,所以求解当前策略的价值函数显然是浪费时间。
关于你关于 PI 收敛性的问题,我认为你可能忽略了这样一个事实,即如果你改进了每个信息状态的策略,那么你改进了整个游戏的策略。这也很容易证明,如果你熟悉 Counterfactual Regret Minimization——每个信息状态的后悔之和形成了整体后悔的上界,因此最小化每个状态的后悔将最小化整体后悔,即导致最优策略。
【讨论】:
【参考方案4】:基本区别是——
在Policy Iteration中 - 你随机选择一个策略并找到它对应的价值函数,然后根据之前的价值函数找到一个新的(改进的)策略,这样会导致最优政策 。
在价值迭代中 - 你随机选择一个价值函数,然后在一个迭代过程中找到一个新的(改进的)价值函数,直到达到最优价值函数,然后从那个最优价值推导出最优策略功能。
政策迭代的工作原理是“政策评估——>政策改进”。
价值迭代的工作原理是“最优价值函数-->最优策略”。
【讨论】:
【参考方案5】:速度上的主要差异是由于值迭代(VI)的每次迭代中的最大操作。
在 VI 中,每个状态将仅使用一个动作(具有最大效用值)来计算更新后的效用值,但它首先必须计算所有可能动作的值才能通过贝尔曼方程找到该动作。
在策略迭代 (PI) 中,此最大操作在步骤 1(策略评估)中被省略,只需遵循中间策略来选择操作。
如果有 N 个可能的动作,VI 必须为每个状态计算贝尔曼方程 N 次,然后取最大值,而 PI 只计算一次(对于当前策略规定的动作)。
但是在 PI 中,有一个策略改进步骤仍然使用 max 运算符,并且与 VI 中的步骤一样慢,但由于 PI 在较少的迭代中收敛,因此该步骤不会像 VI 中那样频繁发生。
【讨论】:
以上是关于价值迭代和策略迭代有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章