强化学习中的策略是“看到某种情况,怎样选择动作”的规则。确定性策略直接给出一个动作,随机策略给出动作的概率分布。价值函数负责估计好坏,训练算法负责调整参数,三者不应混成同一个概念。
先写一个不需要训练的策略
以自拟的恒温控制教学场景为例,观察只有当前温度,动作只有“加热”和“停止”。手工规则可以是:低于 20 度就加热,否则停止。下面是策略函数,不是强化学习训练器,更不是适合真实设备的控制系统。

def policy(temperature):
return "加热" if temperature < 20.0 else "停止"
for t in [18.0, 20.0, 22.0]:
print(t, policy(t))
核对输出:18 对应加热,20 和 22 对应停止。相同输入重复调用会给出相同动作,这就是此例的确定性。策略也可以由神经网络产生,是否确定性取决于如何选择动作,而不是有没有神经网络。
随机策略输出的是概率
再看一个纯教学例子:在“等待”状态下,把两个合法动作 A、B 的概率设成 0.25 和 0.75。运行下列标准库代码,先检查概率和,再重复采样统计动作分布。代码不连接设备,也不声称这样的概率是最优的。
import random
from collections import Counter
actions = ["A", "B"]
probabilities = [0.25, 0.75]
assert all(p >= 0 for p in probabilities)
assert abs(sum(probabilities) - 1.0) < 1e-12
rng = random.Random(11)
sampled = rng.choices(actions, weights=probabilities, k=10000)
print({a: Counter(sampled)[a] / len(sampled) for a in actions})
两项频率应分别接近 0.25 和 0.75,而不是要求每四次必然出现一次 A。随机策略描述总体概率,不指定短序列的确切排列。若输出概率有负数或总和不为 1,应先修正分布,再交给环境执行。
为什么价值函数不是策略
假设在某个状态,Q 表对 A、B 的估计分别是 3 和 7。这两个数表示动作价值的估计,不是概率,不能直接说“选 B 的概率是 70%”。如果你的策略是贪心规则,就选 B;如果策略是 ε-greedy,还需要按探索率决定是否随机。相同 Q 值可以配不同的动作选择规则。
| 对象 | 它回答的问题 | 检查什么 |
|---|---|---|
| 策略 | 现在选择哪个动作 | 动作是否合法,随机分布是否有效 |
| 价值函数 | 按某个规则行动,预计能获得多少回报 | 估计是否与后续经历一致 |
| 训练算法 | 怎样用数据改进参数 | 更新目标、样本与参数变化 |
读一段训练代码时怎么找策略
从传给环境的动作往前追:它来自最大值选择、随机采样,还是 actor 网络?再看这个函数接受的是完整状态、观察,还是历史信息。把“输入字段 → 动作选择函数 → 合法动作”写下来,通常比先数网络层数更容易确定策略是什么。
确定性和随机性都不等于优劣。部分场景需要混合动作,另一些场景更重视可重复决策;真实控制还要处理噪声、约束和失败保护。本文只有自拟规则与采样演示,没有训练或工业控制测试。
术语依据 2026 年 10 月 3 日读取的 Spinning Up 对策略与价值函数的说明。阅读论文时同时核对作者对状态、观察和策略符号的定义。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32952.html