在如今机器学习的浪潮中,机器学习相关的岗位日益增多,而运筹优化的岗位却相对较少。这是今年我秋招过程中看到的现象。企业越来越希望候选人不仅能建模求解,还能理解如何用数据驱动优化。需要我们有一个完整的技术栈。那么我们就来看看OR与ML的关系,探索一下两者结合的方向,以便认清后续发展道路。
首先,ML和OR并非替代关系,而是互补协同的两种决策科学工具。
ML擅长预测:从历史数据中学习模式;OR擅长决策:在资源约束下寻找最优解或可行解。
1.ML for OR
1.1 ML不直接做决策,而是提升OR模型的输入质量。
这里有一个很重要的概念Predict-then-Optimize,指的是先用ML模型预测不确定性参数,再讲预测值带入优化模型求解。
这其中会有一些潜在的风险,首先就是目标错配,这是指ML模型通常以MAE/MSE为目标训练,但这些误差对决策的影响可能不对称。比如:高估了需求导致库存积压、低估了需求导致缺货,这两者代价在实际应用总是不同的,但是如果我们使用MAE/MSE为目标进行训练,将会把两者一视同仁。也就是说,我们想直接将决策风险(也就是上面说的高估了多少还是低估了多少)作为损失函数。但是,通过Predict-then-Optimize的流程:
输入数据 → ML 模型 → 预测值 → 优化模型 → 决策 → 实际成本
会发现这当中的优化模型,也就是我们通常可能调用求解器求解的数学模型(这就是OR的部分),是一个“黑箱算子”,通常不可导,那么对于我们的ML来说就没法进行它的核心算法——反向传播。
为了解决这个问题,有学者提出了SPO(Smart Predict-then-Optimize),这是一个框架,他的核心思想就是训练的损失应该与最终决策的代价挂钩。将决策风险定义为:使用预测值求解后的成本与使用真实值求解的成本之差。训练目标是最小化这个决策风险。可以通过次梯度、平滑近似等方式来近似梯度。
此外还可以使用可导的近似模型、不依赖中间梯度的强化学习等方式来解决这个问题。
上面说的不可导性与黑箱性也是潜在风险之一。
还有就是误差放大的潜在风险。对于解空间敏感的OR问题,小的预测误差可能导致完全不同的最优解。需要引入敏感性分析,评估预测误差对解的影响。
1.2 OR求解器集成ML技术,加速求解过程。
学习策略分支:使用ML模型预测哪个变量分支最有希望,替代部分强分支调用;
节点选择策略:学习哪种策略(深度优先、最佳有限、最佳估计)更适合当前问题结构;
启发式参数自动调优;割平面选择等等。
2.OR for ML
用运筹优化(OR)来提升机器学习(ML)性能。
最优实验设计:建模为子集选择问题;
神经网络剪枝与结构搜索:保留哪些连接可以建模为0-1变量,使用OR压缩模型;
强化学习中嵌入求解器;可解释机器学习中的规则生成等等。
3.End-to-End Learning for Optimization
跳过显式建模,直接用神经网络学习从输入到最优解的映射。在这个过程中,输出可能违反问题的约束,因此需要结合OR使用。我认为当前最好的做法是:用端到端ML模型生成候选解,再用 OR 模型校正或排序。
4.未来方向
我们做运筹优化的最担心的就是未来ML取代传统的OR。但是从目前来看是不会的,两者将会进行深度融合,会有ML for OR,也会有OR for ML。首先,OR的优势是不可替代的,给出能够满足硬约束的最优解、解释性强等等。其次,ML是由局限性的,无法保证约束满足、解释性差(黑箱性)、泛化能力依赖于数据分布等等。
结合我做的来说一下吧,在一些控制策略(红绿灯)中我会用OR的数学规划和元启发式算法得到这个问题的baseline,然后在环境突然发生改变(救护车来到)时,使用RL实现动态调整。在智能驾驶的场景中,自动驾驶需要感知和规划的协同,对环境的感知需要ML,对路径和时间的精确规划需要OR。