1. 决策算法概述:定义、分类、应用场景与挑战
1.1 到底什么是决策算法?
先说说我的理解。决策算法,说白了就是一套让机器在多个选项中选出最优解的方法论。
你想想看,我们每天都在做决策。早上吃什么?走哪条路去上班?这些小事靠直觉就行。但换成自动驾驶汽车遇到行人突然横穿,或者股票交易系统在毫秒级判断买卖时机,那就必须靠算法了。
我个人习惯把决策算法拆成三个核心要素:
- 状态空间——当前你掌握了哪些信息
- 动作空间——你能做什么选择
- 目标函数——什么样的结果算「好」
我在项目中遇到过不少新手,上来就调模型,结果连状态空间都没定义清楚。嗯,这其实是大忌。
核心定义:决策算法 = 在给定约束下,从可行方案中寻找最优或近似最优解的数学过程。
1.2 决策算法的分类
分类方式有很多种。我按最常见的维度来梳理,这样你理解起来更直观。
按决策环境分类
| 类型 | 特点 | 典型算法 |
|---|---|---|
| 确定性决策 | 所有信息已知,结果可预测 | 动态规划、线性规划 |
| 不确定性决策 | 部分信息未知,但概率已知 | 贝叶斯决策、马尔可夫决策过程 |
| 对抗性决策 | 存在对手,互相博弈 | 极小化极大算法、博弈树搜索 |
按决策方式分类
- 基于规则:if-else 硬编码,简单但死板。我早期做工业控制时常用。
- 基于优化:数学建模求最优解,比如线性规划、整数规划。
- 基于学习:从数据中学习策略,比如强化学习、模仿学习。
我的经验:实际项目中很少只用一种。往往是规则兜底 + 优化调优 + 学习进化,三层配合着来。
1.3 应用场景——我踩过的坑
决策算法不是纸上谈兵。我挑几个典型场景说说。
自动驾驶
路径规划、行为预测、轨迹优化,全是决策问题。我记得有一次做变道决策,算法在高速上死活不敢并线,因为对后车速度估计太保守。后来加了不确定性建模才解决。
推荐系统
你以为推荐只是排序?其实背后是「探索 vs 利用」的决策平衡。多臂老虎机算法就是干这个的。
金融交易
高频交易里,毫秒级的决策失误就是几百万的损失。我见过一个策略因为没考虑滑点,回测漂亮,实盘亏惨。
避坑指南:我曾经在一个物流调度项目里,直接套用经典算法,结果忽略了实际路况的随机性。后来加了实时反馈机制才稳住。记住:场景决定算法,不是算法决定场景。
1.4 核心挑战——为什么决策算法难做?
说实话,决策算法是算法领域里最难啃的骨头之一。为什么?
- 维度灾难——状态空间太大,穷举不可能。比如围棋的状态数比宇宙原子还多。
- 实时性要求——很多场景必须在几十毫秒内出结果。你算得再准,慢了就是废的。
- 不确定性——传感器噪声、对手行为、环境变化,你永远无法完美建模。
- 多目标冲突——既要快又要准还要省资源,这本身就是个优化难题。
我个人的体会是:没有银弹。每个挑战都需要针对性地设计折中方案。
1.5 知识体系总览
下面这张图是我梳理的决策算法知识框架。你可以把它当成整个课程的地图。
1.6 学习路径建议
最后,说说怎么学这门课。
我建议你按这个顺序来:
- 先理解基础概念(就是本章内容)
- 然后掌握确定性决策方法(动态规划、线性规划)
- 再进入不确定性决策(马尔可夫决策过程、贝叶斯方法)
- 最后挑战对抗性和多智能体决策
一个小技巧:每学完一个算法,立刻找个实际场景手写一遍。代码跑通了,才算真懂了。我当年就是这么过来的。
好了,决策算法的全景图已经铺开。接下来每一章,我们都会深入一个具体方向。准备好了吗?