基于“蘑菇书”的强化学习知识点(一):奖励函数(Reward Function)和价值函数(Value Function)的区别

摘要

本系列知识点讲解基于蘑菇书EasyRL中的内容进行详细的疑难点分析!具体内容请阅读蘑菇书EasyRL


对应蘑菇书EasyRL——1.4.2 价值函数


在强化学习中,奖励函数(Reward Function)和价值函数(Value Function)是两个核心但作用截然不同的概念。以下是它们的详细区别及具体示例:


1. 定义与目标

奖励函数(Reward Function)
  • 定义:奖励函数是环境对智能体在某一状态下执行某个动作后给出的即时反馈信号,是一个标量值。
  • 目标:直接量化当前动作的“好坏”,引导智能体学习短期行为。
  • 数学表示
    R ( s , a , s ′ ) R(s, a, s') R(s,a,s) 表示在状态 s s s 执行动作 a a a 后转移到状态 s ′ s' s 时获得的即时奖励。
价值函数(Value Function)
  • 定义:价值函数是智能体对长期累积奖励的预期值,评估当前状态或状态-动作对的“潜在价值”。
  • 目标:帮助智能体进行长期规划,权衡即时奖励与未来收益。
  • 数学表示
    • 状态值函数 V π ( s ) V^\pi(s) Vπ(s): 在策略 π \pi π 下,从状态 s s s 出发的预期累积奖励
    • 动作值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a): 在策略 π \pi π 下,从状态 s s s 执行动作 a a a 后的预期累积奖励

2. 核心区别

特征奖励函数价值函数
时间范围仅关注当前时刻的反馈关注长期累积的预期收益
来源由环境直接给出通过智能体学习或计算得到
依赖关系与环境动态相关依赖于策略、环境动态和折扣因子
用途定义任务目标指导策略优化

3. 具体示例

场景:迷宫导航问题
  • 环境:智能体需要从起点(S)移动到终点(G),途中可能遇到陷阱(X)。
    S . . X
    . X . .
    . . X G
    
(1) 奖励函数的设计
  • 规则
    • 到达终点(G):+100
    • 踩到陷阱(X):-50
    • 每移动一步:-1(鼓励快速到达终点)
  • 数学表示
    R ( s , a , s ′ ) = { + 100 if  s ′ = G − 50 if  s ′ = X − 1 otherwise R(s, a, s') = \begin{cases} +100 & \text{if } s' = G \\ -50 & \text{if } s' = X \\ -1 & \text{otherwise} \end{cases} R(s,a,s)= +100501if s=Gif s=Xotherwise
(2) 价值函数的计算
  • 目标:计算每个状态的价值,例如:
    • 终点附近的状态价值较高(因为容易到达终点)。
    • 靠近陷阱的状态价值较低(可能被惩罚)。
  • 贝尔曼方程
    V π ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V π ( s ′ ) ] V^\pi(s) = \sum_{a} \pi(a|s) \sum_{s'} P(s'|s,a) \left[ R(s,a,s') + \gamma V^\pi(s') \right] Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]
    其中 γ \gamma γ 是折扣因子(如0.9),表示未来奖励的衰减。
对比结果
  • 奖励函数:在终点位置获得+100,陷阱位置-50,其他位置-1。
  • 价值函数:假设智能体在靠近终点时, V ( s ) ≈ 90 V(s) \approx 90 V(s)90(考虑折扣因子);在陷阱旁, V ( s ) ≈ − 45 V(s) \approx -45 V(s)45

4. 关系与协同作用

  • 奖励函数是价值函数的基础:价值函数通过贝尔曼方程将即时奖励(来自奖励函数)和未来奖励(来自后续状态的价值)结合。
  • 策略优化的核心:智能体通过最大化价值函数(而非单纯追求即时奖励)找到最优策略。例如,可能暂时接受-1的移动惩罚,以避开陷阱并最终获得+100的高奖励。

总结

  • 奖励函数是环境的“直接反馈”,定义任务的短期目标;
  • 价值函数是智能体的“长期规划工具”,通过计算未来收益的预期值指导决策。

两者共同作用,使智能体在即时奖励和长期收益之间找到平衡。

### 状态值函数的定义 状态值函数(State-Value Function),通常表示为 \( V^\pi(s) \),是在给定策略 \( \pi \) 下的状态 \( s \) 的期望回报。具体来说,它衡量的是从某个特定状态出发,在遵循策略 \( \pi \) 的情况下,未来可以获得的累积奖励的期望值[^1]。 \[ V^\pi(s) = \mathbb{E}_\pi[G_t | S_t = s] \] 其中: - \( G_t \) 是时间步 \( t \) 后的总折扣回报, - \( G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ... \), - \( \gamma \in [0, 1] \) 表示折扣因子,用于减少远期奖励的重要性。 该公式表明,\( V^\pi(s) \) 反映了智能体在当前状态下采取行动并按照策略继续执行所能获得的长期收益预期。 ### 计算方法 状态值函数可以通过动态规划的方法来求解,例如通过贝尔曼方程迭代更新: \[ V^\pi(s) = \sum_a \pi(a|s) \left( \sum_{s',r} p(s', r | s, a)[r + \gamma V^\pi(s')] \right) \] 这里涉及以下几个要素: - \( \pi(a|s) \): 给定状态下的行为概率分布; - \( p(s', r | s, a) \): 转移模型的概率密度函数,描述了从状态 \( s \) 执行动作 \( a \) 到达新状态 \( s' \) 并得到奖励 \( r \) 的可能性; - \( \gamma \): 折扣因子,控制对未来奖励的重视程度; 当采用最优策略时,可以进步简化为最优状态值函数 \( V^*(s) \): \[ V^*(s) = \max_\pi V^\pi(s) \] 这代表了无论初始状态如何,都能找到种最佳方式使得未来的累计奖励最大化。 ```python def value_iteration(states, actions, transition_probabilities, rewards, gamma=0.9, theta=1e-6): """ 使用价值迭代算法计算状态值函数。 参数: states (list): 所有可能的状态列表. actions (dict): 每个状态对应的动作集合字典. transition_probabilities (function): 转移概率函数 P(s'|s,a). rewards (function): 奖励函数 R(s,a,s'). gamma (float): 折扣因子 γ ∈ [0,1]. theta (float): 收敛阈值. 返回: dict: 存储每个状态对应的估计值V[s]. """ V = {state: 0 for state in states} while True: delta = 0 for s in states: v = V[s] max_value = float('-inf') for action in actions.get(s, []): expected_reward = sum( transition_probabilities(next_s, s, action) * (rewards(s, action, next_s) + gamma * V[next_s]) for next_s in states ) if expected_reward > max_value: max_value = expected_reward V[s] = max_value delta = max(delta, abs(v - V[s])) if delta < theta: break return V ``` 上述代码实现了基于动态规划的价值迭代法,逐步逼近真实的状态值函数直到满足收敛条件为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值