[杂谈] 机器学习与优化算法的对比
机器学习算法的本质:
在求解一个问题(输入X,输出什么?)时,不清楚问题的模型是什么,不知道各个变量之间符合什么规则(式子),所以干脆把现成的各种万能模型(线性回归、逻辑回归、SVM、神经网络等等)套用进去,希望这些万能的模型可以拟合实际问题的模型。
但是这些万能模型里面具体的参数是未定的,需要使用大量数据进行学习。等参数确定之后,我们的拟合模型才完全确定。参数的学习相当于损失函数最小化这么一个优化问题。
但是就算把模型的参数求出来,就算拟合模型确定了,也不代表这个模型能准确描述我们待解决的问题。因为用来学习参数的大量数据,不能完全反应待解决问题的解的分布,而且数据采集过程中也会混入噪声,所以这些数据并不完全可信。
所以参数的学习不能一味地依赖训练数据的拟合,还要根据“奥卡姆剃刀定理”减小模型的复杂度。模型复杂度在一定程度上也是可以用一个式子模拟表达的,因此可以把复杂度放入损失函数中。
因此得出结论,机器学习的本质就是,带有训练集拟合精度和模型复杂度的损失函数的最小化问题,可以使用各种优化算法来求解,不过因为机器学习某些模型的独特性,有些模型参数的求解也有独特的算法,例如EM算法等。
优化算法的本质:
在求解一个问题(输入X,输出什么?)时,问题的模型是早就知道的,模型内部的结构、参数、参数之间的关系都是知道的,因此可以将问题模型用数学式子表达出来,一般都可以归纳为一个最小化问题或最大化问题,目标是求出最优解。
求解优化问题一般有:
- 最速下降法
- 牛顿法
- 拟牛顿法
- 共轭梯度法
- 启发式优化法(GA/ACO/PSO等)
- 拉格朗日乘数法。解决带约束的优化问题。
启发式优化算法与机器学习的联系
其实启发式优化算法与机器学习算法很相似。
在求解一个问题(输入X,输出什么?)时,它们都不要求知道问题的模型,只需要套用一些万能的模型就可以了,启发式优化算法就是套用GA、ACO、PSO等模型,机器学习算法则是套用线性回归、逻辑回归、SVM、神经网络等模型。
但是启发式优化算法套用的模型里的参数是使用者自己调整的,例如交叉概率、变异概率等等,而且这些模型加入了很多的随机性,每次求解的结果可能不能复现。而机器学习算法套用的模型里的参数是用训练集学习得出的,例如线性回归系数、SVM分类超平面系数、神经网络权重等等。