文章目录
一个具体的应用过程
在之前提到的一个项目里,有一个重要的细节被一带而过了。
原文链接:凸约束机器学习模型的探索及其可解释性思考 https://blog.csdn.net/qq_36870202/article/details/116889535
我们搭建一个凸(拟凸)的机器学习模型,主要有三点考虑:
- 让输入-输出的变化关系更合理,进而保证模型可解释;
- 训练模型参数(或优化求解)过程中,尽量稳定和鲁棒,即容易收敛到全局最优解;
- 问题可以这样简化:输入小幅度变化时,输出关于输入的泰勒展开高阶项( ≥ 2 \ge 2 ≥2)趋向于0。即当输入满足小扰动条件时,小容量的线性模型也基本足以拟合真实问题。
其中,前两点在原文中已经有涉及,这里重点看第3点。
对于问题的落地场景来说(可参考原文#2例举的出租车调度问题),输入的确会是试探性地、小规模地增减调节的,因此符合小扰动条件。所以按照这个思想来简化问题、简化模型,是不违和的,也满足实际的需求。
相反的,如果一定要对任意范围内的输入建立全面的、完善的、至少可用的模型,一方面数据需要丰富且均匀、至少不单一,另一方面模型复杂度上升、训练难度加大、稳定性降低、正向推理耗时增加,等等。
小扰动思想
建立小扰动模型的灵感,或者说思路,可能更多的来源于本科时候的课程,《自动控制原理》《飞行器动力学》之类的,类似机械和自动化相关领域。
乍一看,似乎和机器学习没什么关系,各种公式推导也忘得一干二净,不过这种解决问题的思路和方法论,着实还是挺有帮助的。在其他领域也是一样,似乎很多地方都是相通的,也算是一种普遍联系吧。
附上一些小扰动、线性化的理论介绍:
【百度百科】小扰动理论:https://baike.baidu.com/item/小扰动理论/19136784?fr=aladdin
【知乎】如何获得飞机的小扰动模型:https://zhuanlan.zhihu.com/p/71717022
和算法的联系
考虑机器学习或其他算法,感觉下面三个说法或者思想是很相似的;
- 小扰动线性化,也就是上面提到的思想;
- 分段函数拟合,如计算方法中的B样条;
- 分而治之思想,如模式识别中的决策树;
概括来说,都是算法里面分而治之的思想。只不过上面三种说法,只有第一个里面的线性化体现了模型容量的降低,所以这篇博客的题目用了这个说法。
事实上,还有一个类似的例子,即LS-PLM(Large Scale Piece-wise Linear Models),大规模分片线性模型。
LS-PLM:
- 阿里巴巴曾经的主流推荐模型、一个CTR预估算法;
- CTR, Click-Through-Rate,即点击通过率。
- 论文:
- Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction
- https://arxiv.org/abs/1704.05194
- 别人的博客:
- 大概算法:
- 对样本聚类(N类),即在样本空间划分N个片区;
- 为每个类(每个片区)别建立一个LR模型,计算样本在分片中的CTR;
- 按照softmax的类别概率,对所有片区的CTR加权平均;
不同的是模型的更新过程:
- 对于LS-PLM,需要维护多个模型,包括计算类别概率和CTR。
- 对于上面提到的项目场景和算法,使用K临近作为划分的片区,同时模型又非常简单,所以模型更新更简单。这也是得益于更简单的使用场景。