优化和机器学习

机器算法验证 机器学习 优化
2022-01-28 15:54:32

我想知道有多少机器学习需要优化。据我所知,对于从事机器学习工作的人来说,统计学是一个重要的数学主题。同样,对于从事机器学习工作的人来说,学习凸优化或非凸优化有多重要?

2个回答

我的看法是统计/机器学习告诉你应该优化什么,而优化就是你实际这样做的方式。

例如,考虑的线性回归,其中统计数据告诉我们,这(通常)是一个很好的模型,但我们通过解决优化问题Y=Xβ+εE(ε)=0Var(ε)=σ2Iβ^

β^=argminbRp||YXb||2.

的性质是我们通过统计知道的,所以我们知道这是一个很好的优化问题要解决。在这种情况下,这是一个简单的优化,但这仍然显示了一般原则。β^

更一般地说,大部分机器学习可以被视为解决 我在没有正则化的情况下写这个,但可以很容易地添加。

f^=argminfF1ni=1nL(yi,f(xi))

统计学习理论 (SLT) 的大量研究已经研究了这些 argminima 的性质,它们是否是渐近最优的,它们与的复杂性的关系,以及许多其他类似的事情。但是,当您真正想要得到时,通常会遇到困难的优化,并且研究该问题的是一组完全不同的人。我认为 SVM 的历史就是一个很好的例子。我们有像 Vapnik 和 Cortes(以及许多其他人)这样的 SLT 人员,他们展示了 SVM 是如何解决一个很好的优化问题。但后来是其他人,如 John Platt 和 LIBSVM 的作者,使这在实践中变得可行。Ff^

要回答您的确切问题,了解一些优化肯定会有所帮助,但通常没有人是所有这些领域的专家,因此您可以尽可能多地学习,但某些方面对您来说永远是一个黑匣子。也许你没有正确研究你最喜欢的 ML 算法背后的 SLT 结果,或者你不知道你正在使用的优化器的内部工作原理。这是一生的旅程。

在实践中,很多包都会为您处理优化和大部分数学细节。例如,TensorFlow 可以自动为您执行反向传播+随机梯度下降来训练神经网络(您只需指定学习率)。scikit-learn 的 ML 工具通常不需要您真正了解优化实际发生的方式,但可能只需设置一些调整参数,它会处理其余的(例如优化器运行的迭代次数)。例如,您可以在不了解 scikit-learn 中的任何数学知识的情况下训练 SVM——只需输入数据、内核类型,然后继续。

话虽如此,了解基本优化(例如,在 Boyd 和 Vandenberghe 的凸优化/Bertsekas 的非线性规划级别)有助于算法/问题设计和分析,尤其是在您从事理论工作时。或者,自己实现优化算法。

请注意,教科书的优化方法通常需要调整才能在现代环境中实际发挥作用;例如,您可能不使用经典的 Robbins-Munroe 随机梯度下降,而是使用更快的加速变体。不过,您可以从处理优化问题中获得一些见解。