这种超参数优化方法是否产生最佳超参数?

人工智能 机器学习 超参数 超参数优化
2021-11-07 16:52:09

假设我有一个训练成本不高的 ML 模型。它有大约 5 个超参数。

选择最佳超参数的一种方法是保持所有其他超参数固定,并通过在特定范围内仅更改一个超参数来训练模型。为了数学方便,我们假设超参数h1,保持所有其他超参数固定为其初始值,模型在以下情况下表现最佳 hlow1<h1<hhigh1(我们通过在大范围内运行模型发现h1)。现在我们,修复h1最好的价值观之一和调整h2同样的方式,在哪里h1被选中,其余的超参数再次固定在它们的初始值上。

我的问题是:这种方法是否找到模型的最佳超参数选择?我知道如果超参数是独立的,那么这肯定会找到最佳解决方案,但在一般情况下,围绕这个的一般理论是什么?(注意:我不是在问选择超参数的问题,而是在问前面提到的选择超参数的方法)

2个回答

计算后hoptimal1你唯一可以确定的是这是最好的(假设有约束的情况)值h1(关于某些模型性能指标)给定您的初始值h2,...,hn. 如果你改变一点h2,...,hn你不再确定价值h1你发现是最佳的。所以是的,这里的关键是关于独立性的假设。

超参数优化(HPO)背后的理论还没有得到很好的发展。尽管如此,还是有几种超参数优化方法,例如贝叶斯优化(使用高斯过程)、随机搜索、网格搜索、遗传算法等。例如,参见论文Hyperparameter Search in Machine Learning (2015),它尝试形式化机器学习中的超参数优化问题,Random Search for Hyper-Parameter Optimization (2012),以及相关的维基百科文章

机器学习中的超参数搜索(以及类似地,在超参数优化的随机搜索中)一文中,作者正式定义了超参数优化问题如下

(1)λ=arg minλL(Xtest;M=A(Xtrain;λ))

在哪里λ学习算法的超参数(例如梯度下降,其超参数是学习率和batch size),也就是用来训练模型的算法M(例如,具有固定架构的卷积神经网络)使用训练(Xtrain) 和测试 (Xtest) 数据集(为简单起见,忽略交叉验证和相关技术)。

简而言之,在等式中1,我们想找到超参数λ学习算法A最大限度地减少损失L在测试数据集上Xtest, 当模型M训练使用A和训练数据集Xtrain.

方程1因此忽略与模型相关的超参数(例如,多层感知器的层数)并且只考虑与学习算法相关的超参数。但是,请注意学习算法的最优超参数A取决于给定的训练和测试数据集,损失函数L和模型M. 最终,公式在1可以扩展到包括与模型相关的超参数(和其他超参数)。

因此,总的来说,HPO 方法(包括您提出的方法)的选择取决于几个因素,包括模型(及其架构)、需要解决的任务、损失函数、训练和测试数据集,以及 HPO 方法的计算复杂性和运行时效率。例如,如果超参数的空间是离散的并且很小,那么网格搜索(可以是穷举搜索)将为给定的任务和数据集找到超参数的最佳组合。但是,如果搜索空间很大,则网格搜索可能不切实际。

一般来说,您提出的方法不会是最佳的,因为正如您所说,超参数可能不是彼此独立的。例如,如果您使用随机梯度下降(即一次训练一个示例),您可能不想太快地更新模型的参数(也就是说,您可能不希望高学习率),假设单个训练样例不太可能给出能够在适当方向(即损失函数的全局甚至局部最优)更新参数的误差信号。但是,如果您使用批量梯度下降,批量大小越大,您就越有可能使用更高的学习率。这个例子只是为了给你一些直觉,但这可能并不适用于所有情况。

最常用的超参数优化方法(我上面提到的)似乎假设超参数通常不是相互独立的。事实上,这可能是一个正确的假设,因为在现实世界中,独立性假设几乎从不成立(例如,参见朴素贝叶斯分类器上下文中的相关讨论)。