6 强化学习从零学教程系列:Markov决策过程之折扣因子与价值函数
在上一篇文章中,我们探讨了 Markov决策过程(MDP)的基本概念,包括状态、动作和奖励。这些构成了强化学习的基础框架。在本篇中,我们将深入讨论 MDP 中的重要元素之一:折扣因子与价值函数。这些概念不仅是理论上的重要工具,而且在实际应用中也具有重要的意义。
价值函数
在强化学习中,价值函数用于评估某一状态或状态-动作对的价值。一般而言,价值函数可以分为两类:
- 状态价值函数 :给定一个状态 ,它表示从该状态出发,在策略 下,未来所能获得的期望回报。
- 动作价值函数 :给定一个状态 和一个动作 ,它表示在状态 下执行动作 ,然后遵循策略 所能获得的期望回报。
状态价值函数和动作价值函数的计算公式如下:
-
状态价值函数:
-
动作价值函数:
在上面的公式中:
- 是在时间步 获得的即时奖励。
- 是 折扣因子,其值在 的范围内。
折扣因子
折扣因子 是 MDP 中一个重要的超参数,它决定了未来奖励的当前值。其物理意义在于,随着时间的推移,未来的奖励会被“折扣”到现在的价值。具体来说:
- 当 接近 时,未来的奖励与当前的奖励几乎同等重要,模型将倾向于追求长期回报。
- 当 接近 时,模型更看重当前的奖励,短期决策将成为优先考虑的因素。
案例分析
假设我们有一个简单的游戏,玩家在一个 1 到 10 的数字上进行“拿奖励”的游戏。每个时刻玩家都有机会选择一个数字 ,获取该数字的奖励,而游戏会在 轮后结束。
选择一个折扣因子 和一个奖励序列 ,我们可以计算每一步的状态价值。假设奖励序列为 ,那么我们可以通过以下方式计算从初始状态 取得的折现价值:
def compute_value(gamma, rewards):
total_value = 0
for t in range(len(rewards)):
total_value += (gamma ** t) * rewards[t]
return total_value
rewards = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
gamma = 0.9
value = compute_value(gamma, rewards)
print("折现价值:", value)
执行上述代码,我们将获得该游戏的总折现价值。
小结
在本篇中,我们深入探讨了 Markov决策过程中的折扣因子与价值函数,它们不仅为我们提供了量化决策的工具,也为强化学习算法的设计奠定了基础。我们看到,折扣因子的选择直接影响到代理(Agent)的决策行为,在不同的环境中可能需要进行不同的调整。
下一篇文章将继续讨论动态规划,它是强化学习中的一种重要方法,我们将介绍其基本思想和框架,如何利用动态规划来解决 MDP 的问题。