在阅读机器学习 (ML) 并通过一些基本示例进行操作时,在我看来,大多数学习算法都使用通用优化器。我使用“优化器”这个词来描述学习者用来最小化损失函数的技术。梯度体面,它的变体,似乎是最常见的。但 ML 的总体思路似乎是不断迭代学习算法,每次调整各种事物以尝试改善损失。
梯度体面和类似技术是通用的,因为它们适用于各种学习模型。这很直观,您所需要的只是预测值和已知目标值。
但是,与通用技术的权衡通常是,虽然它们在任何地方都可以工作,但它们很慢。换句话说,理论上你可以构建一个特定于学习器的优化器,利用学习算法的特性来避免像 SGD 这样的东西可能必须做的一些工作。因此,如果您知道您将使用学习算法 XYZ,那么也许您可以通过使用专门为学习器 XYZ 设计的损失最小化技术来显着加快计算速度。
作为一个粗略的类比,由于我的背景是编程,请考虑排序算法。快速排序经常被认为是最好的通用排序算法。但是,如果您事先知道您的数据在某些方面受到限制,那么在给定特定用例的情况下,其他算法会更快(如果条件合适,即使是好的旧冒泡排序也可以很快!)。
那么,问题来了:是否已经开发了特定于学习者的优化器?(还有一个相关的问题,“优化器”是在这里使用的正确词吗?)
(FWIW,我在Kaggle Q&A上发布了同样的问题,但没有得到任何回复。)