CHAPTER 36 / 37
连续状态空间:当世界是一整条刻度
当世界变成连续的,系统不再追求完美答案,而是学会不断逼近更好的选择。
很多机器学习问题,刚开始都很简单。比如:
用户是否点击
库存是否充足
订单是否完成这些问题都有一个共同特点:状态是有限的。例如:
库存:高 / 中 / 低
用户:活跃 / 沉默
订单:完成 / 未完成你可以把它们列成一张表,但现实系统,很少这么简单。
状态往往不是“类别”,而是“数值”
假设你在做一个配送系统,以前你可能只关心:
天气:好 / 坏但后来你发现,这远远不够。你开始记录:
温度:28.6℃
降雨量:12.3 mm
风速:5.8 m/s
能见度:3200 m这时,你就进入了一个新的世界——连续状态空间(Continuous State Space)。
再举一个例子,以前是:
位置:1号点 / 2号点 / 3号点现在是:
位置:2.7 km任何数都可能出现。
这就是连续状态空间的本质:状态不再是几个选项,而是一个范围内的任意值。
当状态变成“向量”,系统复杂度会突然暴涨
假设你在做一个无人配送车。系统需要知道:
x 位置
y 位置
方向角
速度
转向速度
电量你会发现状态不再是一个数字,而是:
[ x, y, θ, vx, vy, ω, battery ]也就是一个向量,而且这些值可以是任意数。
这就是强化学习里最常见的形式:
状态 = 一组连续变量。为什么这会导致系统变得更加复杂?因为在离散状态里,你可以列出所有情况。例如:状态 1、状态 2、状态 3、状态 4。
但在连续状态里,可能有无限多个状态。例如:
速度 = 12.01
速度 = 12.02
速度 = 12.03
...你不可能为每一个状态建一张表,这就是为什么 Q Table 会失效。
这时候,神经网络开始登场
不是因为神经网络更高级,而是因为它可以做近似。以前:
Q(状态1, 动作A) = 12
Q(状态2, 动作B) = 7现在:
Q(任意状态, 任意动作)需要一个函数去计算。这就是:
Q(s,a) ≈ Neural Network(s,a)也就是用神经网络去逼近状态-动作值函数。
在工程实现上,早期实现是:
输入:状态 + 动作
输出:一个 Q 值但这样有一个问题——如果有 4 个动作(左、右、加速、停止),你就要跑 4 次模型,这非常低效。
于是工程师做了一个小改动:
输入:状态
输出:所有动作的 Q 值例如:Q(s,左) 、Q(s,右) 、Q(s,加速) 、Q(s,停止) ,一次计算就够。
这就是现代 DQN 常用结构。
系统如何学习?
我们来看一个典型流程。
系统运行时会不断产生这样的记录:
状态 S
动作 A
奖励 R
新状态 S'例如:
位置:12.5 km
动作:加速
奖励:+3
新位置:13.1 km这些记录会被存起来,通常只保留最近 10000 条。这叫:Replay Buffer(经验回放),然后系统用这些数据训练模型。
这就是强化学习里最核心的训练方式。
ε-greedy 策略。
一个很多产品经理会忽略的关键问题是,系统在学习时并不知道哪个动作是最优的,所以它必须尝试。
但如果一直尝试会导致效率太低,而如果一直用当前最优,则可能错过更好的方案。
于是就有一个经典策略:
95% 时间:用当前最优
5% 时间:随机尝试这就是: ε-greedy 策略。
不可能精确计算,只能不断逼近
在离散世界里,问题是有限的。而在连续世界里,问题是无限的。
于是系统必须接受一个现实——不可能精确计算,只能不断逼近。
这也是为什么,强化学习在论文里看起来很强大,但在真实系统里,往往没有想象中那么容易。
因为模拟环境相比于真实世界的复杂更加的简单。例如,自动驾驶仿真成功,但现实道路失败,这并不是算法的问题,而是:
环境差异
数据噪声
安全约束
成本限制所以很多团队在实际项目中,更多使用监督学习而不是强化学习。
当状态还是有限的时候吗,我们可以依靠规则。而当状态开始连续,我们就不得不依靠学习。
这并不是算法变得更复杂,而是世界本身变得更真实。
真实系统从来不会给你几个明确的选项,它只会不断变化,不断产生新的情况,不断逼迫你在不确定中做出选择。
所以,连续状态空间真正带来的,不只是计算方式的改变,而是一种思维方式的转变——从寻找唯一正确的答案,转向持续接近更好的答案。
而一个成熟的系统,往往也会逐渐接受这一点:它不再追求完美决策,而是追求在变化中始终保持可调整的能力。
附录:本文涉及的专有名词中英文对照(标红为最核心)