Jupyter AI

6 强化学习从零学教程系列:Markov决策过程之折扣因子与价值函数

📅 发表日期: 2024年8月15日

分类: 🤖强化学习入门

👁️阅读: --

在上一篇文章中,我们探讨了 Markov决策过程(MDP)的基本概念,包括状态、动作和奖励。这些构成了强化学习的基础框架。在本篇中,我们将深入讨论 MDP 中的重要元素之一:折扣因子与价值函数。这些概念不仅是理论上的重要工具,而且在实际应用中也具有重要的意义。

价值函数

在强化学习中,价值函数用于评估某一状态或状态-动作对的价值。一般而言,价值函数可以分为两类:

  1. 状态价值函数 V(s)V(s):给定一个状态 ss,它表示从该状态出发,在策略 π\pi 下,未来所能获得的期望回报。
  2. 动作价值函数 Q(s,a)Q(s, a):给定一个状态 ss 和一个动作 aa,它表示在状态 ss 下执行动作 aa,然后遵循策略 π\pi 所能获得的期望回报。

状态价值函数和动作价值函数的计算公式如下:

  • 状态价值函数:

    Vπ(s)=Eπ[t=0γtRtS0=s]V_\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s \right]
  • 动作价值函数:

    Qπ(s,a)=Eπ[t=0γtRtS0=s,A0=a]Q_\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s, A_0 = a \right]

在上面的公式中:

  • RtR_t 是在时间步 tt 获得的即时奖励。
  • γ\gamma折扣因子,其值在 [0,1][0, 1] 的范围内。

折扣因子

折扣因子 γ\gamma 是 MDP 中一个重要的超参数,它决定了未来奖励的当前值。其物理意义在于,随着时间的推移,未来的奖励会被“折扣”到现在的价值。具体来说:

  • γ\gamma 接近 11 时,未来的奖励与当前的奖励几乎同等重要,模型将倾向于追求长期回报。
  • γ\gamma 接近 00 时,模型更看重当前的奖励,短期决策将成为优先考虑的因素。

案例分析

假设我们有一个简单的游戏,玩家在一个 1 到 10 的数字上进行“拿奖励”的游戏。每个时刻玩家都有机会选择一个数字 xx,获取该数字的奖励,而游戏会在 1010 轮后结束。

选择一个折扣因子 γ=0.9\gamma = 0.9 和一个奖励序列 R0,R1,,R9R_0, R_1, \ldots, R_9,我们可以计算每一步的状态价值。假设奖励序列为 Rt=10tR_t = 10 - t,那么我们可以通过以下方式计算从初始状态 S0S_0 取得的折现价值:

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 的问题。