问题标签 [value-iteration]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 价值迭代和策略迭代有什么区别?
在强化学习中,策略迭代和价值迭代有什么区别?
据我所知,在价值迭代中,您使用贝尔曼方程来求解最优策略,而在策略迭代中,您随机选择一个策略 π,并找到该策略的奖励。
我的疑问是,如果您在 PI 中选择一个随机策略 π,即使我们选择多个随机策略,如何保证它是最优策略。
algorithm - 具有价值迭代的马尔可夫决策过程的动态规划
我正在学习MDP
和value iteration
自学,我希望有人能提高我的理解。
考虑一个有数字的 3 面骰子的问题1, 2, 3
。如果您掷出 a1
或 a 2
,您将获得该值,$
但如果您掷出 a 3
,您将失去所有钱,游戏结束 ( finite horizon problem
)
从概念上讲,我了解如何使用以下论坛完成此操作:
所以让我们分解一下:
由于这是一个finite horizon
我们可以忽略的问题gamma
。
如果我observe 1
,我可以go
要么stop
。那utility/value
就是:
我observe 2
,我可以go
或者stop
:
我观察3,游戏结束。
直觉V(3)
上是0
因为游戏结束了,所以我们可以从方程中去掉那一半Q(1, g)
。我们在上面也定义V(2)
了,因此我们可以将其替换为:
这就是事情发生转折的地方。Q(1, g)
如果它的解决方案中有自己的定义,我不确定如何解决。这可能是由于糟糕的数学背景。
我所理解的是,效用或状态的价值会根据奖励而改变,因此决定也会改变。
具体来说,如果滚动三给了您$3
而滚动一结束了游戏,那将影响您的决定,因为实用程序已更改。
但我不确定如何编写代码来计算它。
有人可以解释动态编程是如何工作的吗?我该如何解决Q(1,g)
或Q(1,s)
当它在自己的定义中?
credit-card - 通过马尔可夫决策过程对信用卡的盈利能力进行建模。
这是参考发表在建模信用卡盈利能力上的一篇论文,由处理的马尔可夫决策。我正在尝试使用 Mdptoolbox 在 python 中实现相同的功能,但没有获得预期格式的输出。
我的状态是客户当前风险评分和当前信用额度的组合。我的行动是增加客户的限额。
我已经为每个状态准备了我的转换概率。
在使用 Python MDPtoolbox 运行 MDP 代码时,我得到了一个不足以满足我使用的策略向量,因为我需要为每个风险评分和信用额度的组合制定最佳策略。我当前的输出告诉我将特定风险范围的限制增加到一个新的限制,这太通用了。
我得到的最终政策是:
这只表示将风险评分为 S1 的客户的限制增加到限制 2,依此类推。这太笼统了。我期待的是矩阵策略,它告诉我应该为信用风险评分和限制的每种组合增加多少限制。
python - 如何避免创建不必要的列表?
我经常遇到从文件或任何地方提取一些信息的情况,然后必须通过几个步骤将数据按摩到最终所需的形式。例如:
按照上面的例子:
鉴于我不能将所有编辑放入一行或循环中(因为每个编辑都取决于之前的编辑),有没有更好的方法来构建这样的代码?
如果问题有点含糊,请道歉。非常感谢任何输入。
reinforcement-learning - 如何使用值迭代解决强化学习网格世界示例?
我发现无论是理论还是 Python 示例都不能满足初学者的要求。我只需要理解一个简单的例子来理解逐步迭代。任何人都可以向我展示我为价值迭代上传的图像的第一次和第二次迭代吗? 网格世界问题
python - 更快地访问 2D numpy/array 或大型 1D numpy/array
我正在执行优先扫描,我有一个矩阵,它有 1000*1000 个单元格(gridworld),我必须在一个真正的循环中重复访问这些单元格以进行分配(我本质上不是迭代列表,但所有单元格都被访问超过一次)。现在我正在映射我的矩阵位置(i,j)以存储在一维数组中。所以我的 1000*1000 矩阵是一个大的 1*(1000000) 列表。我想知道这是否会减慢获取时间,我最好使用 1000*1000 矩阵。还有哪个更快 numpy 或使用列表?如果您能帮我解决这个问题,那就太好了!
python - 遍历字典列表中所有不同的字典值
假设一个字典列表,目标是遍历所有字典中的所有不同值。
例子:
迭代应该结束1,2,3,5,6
,不管是集合还是列表。
python - 为什么策略迭代和价值迭代方法对最优值和最优策略给出不同的结果?
我目前正在研究强化学习中的动态规划,其中我遇到了两个概念Value-Iteration和Policy-Iteration。为了理解这一点,我正在实施来自 Sutton 的 gridworld 示例,它说:
非终结状态是 S = {1, 2, . . . , 14}。每个状态有四个可能的动作,A = {上、下、右、左},它们确定性地导致相应的状态转换,除了使代理离开网格的动作实际上保持状态不变。因此,例如,对于所有属于 R . 这是一个不折不扣的、偶发的任务。在达到最终状态之前,所有转换的奖励都是 -1。终端状态在图中用阴影表示(虽然在两处表示,但形式上是一种状态)。因此,对于所有状态 s、s' 和动作 a,预期奖励函数为 r(s, a, s') = 1。假设代理遵循等概率随机策略(所有动作均等)。
下面是这两种方法的实现
但是我的两个实现都给出了不同的最优策略和最优值。我完全遵循了书中给出的算法。
策略迭代的结果:
值迭代的结果:
此外,价值迭代在 4 次迭代后收敛,而策略迭代在 2 次迭代后收敛。
我哪里做错了?他们能给出不同的最优策略吗?但是我认为在我们获得的第 3 次迭代值之后的书中所写的内容是最优的。那么我的代码的策略迭代肯定存在一些我看不到的问题。基本上,我应该如何解决这个政策?
value-iteration - 为什么策略迭代比价值迭代快?
我们知道策略迭代直接为我们提供策略,因此速度更快。但是任何人都可以用一些例子来解释它。