1. 决策算法概述:定义、分类、应用场景与挑战

1.1 到底什么是决策算法?

先说说我的理解。决策算法,说白了就是一套让机器在多个选项中选出最优解的方法论。

你想想看,我们每天都在做决策。早上吃什么?走哪条路去上班?这些小事靠直觉就行。但换成自动驾驶汽车遇到行人突然横穿,或者股票交易系统在毫秒级判断买卖时机,那就必须靠算法了。

我个人习惯把决策算法拆成三个核心要素:

  • 状态空间——当前你掌握了哪些信息
  • 动作空间——你能做什么选择
  • 目标函数——什么样的结果算「好」

我在项目中遇到过不少新手,上来就调模型,结果连状态空间都没定义清楚。嗯,这其实是大忌。

核心定义:决策算法 = 在给定约束下,从可行方案中寻找最优或近似最优解的数学过程。

1.2 决策算法的分类

分类方式有很多种。我按最常见的维度来梳理,这样你理解起来更直观。

按决策环境分类

类型 特点 典型算法
确定性决策 所有信息已知,结果可预测 动态规划、线性规划
不确定性决策 部分信息未知,但概率已知 贝叶斯决策、马尔可夫决策过程
对抗性决策 存在对手,互相博弈 极小化极大算法、博弈树搜索

按决策方式分类

  • 基于规则:if-else 硬编码,简单但死板。我早期做工业控制时常用。
  • 基于优化:数学建模求最优解,比如线性规划、整数规划。
  • 基于学习:从数据中学习策略,比如强化学习、模仿学习。

我的经验:实际项目中很少只用一种。往往是规则兜底 + 优化调优 + 学习进化,三层配合着来。

1.3 应用场景——我踩过的坑

决策算法不是纸上谈兵。我挑几个典型场景说说。

自动驾驶

路径规划、行为预测、轨迹优化,全是决策问题。我记得有一次做变道决策,算法在高速上死活不敢并线,因为对后车速度估计太保守。后来加了不确定性建模才解决。

推荐系统

你以为推荐只是排序?其实背后是「探索 vs 利用」的决策平衡。多臂老虎机算法就是干这个的。

金融交易

高频交易里,毫秒级的决策失误就是几百万的损失。我见过一个策略因为没考虑滑点,回测漂亮,实盘亏惨。

避坑指南:我曾经在一个物流调度项目里,直接套用经典算法,结果忽略了实际路况的随机性。后来加了实时反馈机制才稳住。记住:场景决定算法,不是算法决定场景。

1.4 核心挑战——为什么决策算法难做?

说实话,决策算法是算法领域里最难啃的骨头之一。为什么?

  1. 维度灾难——状态空间太大,穷举不可能。比如围棋的状态数比宇宙原子还多。
  2. 实时性要求——很多场景必须在几十毫秒内出结果。你算得再准,慢了就是废的。
  3. 不确定性——传感器噪声、对手行为、环境变化,你永远无法完美建模。
  4. 多目标冲突——既要快又要准还要省资源,这本身就是个优化难题。

我个人的体会是:没有银弹。每个挑战都需要针对性地设计折中方案。

1.5 知识体系总览

下面这张图是我梳理的决策算法知识框架。你可以把它当成整个课程的地图。

决策算法 定义与要素 状态空间 · 动作空间 · 目标函数 分类体系 确定性 · 不确定性 · 对抗性 应用场景 自动驾驶 · 推荐 · 金融 · 物流 核心挑战 维度灾难 · 实时性 · 不确定性 常用方法 动态规划 · 强化学习 · 博弈论 没有最好的算法,只有最合适的决策框架 —— 资深算法工程师的实战心得

1.6 学习路径建议

最后,说说怎么学这门课。

我建议你按这个顺序来:

  • 先理解基础概念(就是本章内容)
  • 然后掌握确定性决策方法(动态规划、线性规划)
  • 再进入不确定性决策(马尔可夫决策过程、贝叶斯方法)
  • 最后挑战对抗性和多智能体决策

一个小技巧:每学完一个算法,立刻找个实际场景手写一遍。代码跑通了,才算真懂了。我当年就是这么过来的。

好了,决策算法的全景图已经铺开。接下来每一章,我们都会深入一个具体方向。准备好了吗?

可可精品资料库