【问题标题】:Bellman Equation definition贝尔曼方程定义
【发布时间】:2020-08-05 12:40:37
【问题描述】:
我正在尝试理解贝尔曼方程并面临一些令人困惑的时刻。
1)在不同的来源中,我遇到了贝尔曼方程的不同定义。
有时它被定义为值状态函数
v(s) = R + y*V(s')
有时它被定义为动作状态函数
q(s, a) = r + max(q(s', a'))
这两个定义都正确吗?原论文中是如何引入贝尔曼方程的?
【问题讨论】:
标签:
dynamic-programming
reinforcement-learning
definition
【解决方案1】:
Bellman 方程为动态规划解决方案提供了明确的形式,并且使用它我们可以将解决方案推广到本质上是递归并遵循 最佳子结构 属性的优化问题的解决方案。
用更简单的术语来说,最优子结构意味着给定的问题可以分解成更小的子问题,这些子问题需要相同的解决方案和更小的数据。如果可以计算出较小问题的最佳解决方案,则意味着也可以计算给定问题(较大的问题)。
让我们用值V(S) 表示给定状态S 的问题解决方案,S 是状态或子问题。让我们表示通过在状态S 选择动作a(i) 是R 将产生的成本。 R 将是一个函数f(S, a(i)),其中a 是可以对状态S 执行的所有可能操作的集合。
V(S) = max{ f(S, a(i)) + y * V(S') } 其中max 是通过遍历所有可能的i 来获取的。 y 是一个固定常数,它将子问题征税到更大的问题转换,对于大多数问题y = 1,所以你现在可以忽略它。
所以基本上在任何给定的子问题S,V(S) 将通过选择可以执行的所有操作组合a(i) 以及将使用该操作创建的下一个状态来为我们提供最佳解决方案。如果你递归思考并且习惯于这样的东西,那么很容易看出为什么上面的等式是正确的。
我建议解决动态规划问题并查看一些标准问题及其解决方案,以了解如何将这些问题分解为较小的类似问题并递归解决。在那之后,上面的等式将更有意义。另外,你会发现你上面写的两个方程几乎是一样的,只是它们的写法有点不同。
Here 是更常见的 DP 问题及其解决方案的列表。