Hyperparameters
Posted ytxwzqin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hyperparameters相关的知识,希望对你有一定的参考价值。
参数是机器学习算法的关键。它们通常由过去的训练数据中总结得出。在经典的机器学习文献中,我们可以将模型看作假设,将参数视为对特定数据集的量身打造的假设。
模型是否具有固定或可变数量的参数决定了它是否可以被称为“参数”或“非参数”。
模型参数是根据数据自动估算的。但模型超参数是手动设置的,并且在过程中用于帮助估计模型参数。
定义
我们虽然无法知道给定问题的模型超参数的最佳值,但是我们可以使用经验法则,在其他问题上使用复制值,或通过反复试验来搜索最佳值。
如果必须手动指定模型参数,那么它可能是一个模型超参数。
在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数。 相反,其他参数的值通过训练得出。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
超参数:定义关于模型的更高层次的概念,如复杂性或学习能力。
不能直接从标准模型培训过程中的数据中学习,需要预先定义。
可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定
超参数的一些示例:
- 树的数量或树的深度
- 矩阵分解中潜在因素的数量
- 学习率(多种模式)
- 深层神经网络隐藏层数
- k均值聚类中的簇数
优化问题
超参数优化或模型选择是为学习算法选择一组最优超参数时的问题,通常目的是优化算法在独立数据集上的性能的度量。 通常使用交叉验证来估计这种泛化性能。
超参数优化与实际的学习问题形成对比,这些问题通常也被转化为优化问题,但是优化了训练集上的损失函数。
实际上,学习算法学习可以很好地建模/重建输入的参数,而超参数优化则是确保模型不会像通过正则化一样通过调整来过滤其数据。
网格搜索
执行超参数优化的传统方法是网格搜索或参数扫描,这仅仅是通过学习算法的超参数空间的手动指定子集的详尽搜索。 网格搜索算法必须由某些性能度量指导,通常通过训练集合上的交叉验证或对被保留验证集进行评估来衡量。由于机器学习者的参数空间可能包括某些参数的实值或无界值空间,因此在应用网格搜索之前可能需要手动设置边界和离散化。
贝叶斯优化
贝叶斯优化包括从超参数值到在验证集上评估的目标的功能的统计模型。直观上,该方法假设有一些平滑但嘈杂的功能,作为从超参数到目标的映射。在贝叶斯优化中,一个目的是收集观察结果,以便尽可能少地显示机器学习模型的次数,同时尽可能多地显示关于该功能的信息,特别是最佳位置。贝叶斯优化依赖于假设一个非常普遍的先验函数,当与观察到的超参数值和相应的输出结合时,产生函数分布。该方法通过迭代地选择超参数来观察(实验运行),以抛售(结果最不确定的超参数)和利用(预期具有良好结果的超参数)的方式。实际上,贝叶斯优化已经被证明 ,因为在实验的质量运行之前,能够对网格搜索和随机搜索进行更少的实验获得更好的结果。随机搜索
由于网格搜索是一种穷尽且潜在昂贵的方法,因此已经提出了几种替代方案。 特别地,已经发现,简单地对参数设置进行固定次数的随机搜索,比在穷举搜索中的高维空间更有效。 这是因为事实证明,一些超参数不会显着影响损失。 因此,随机分散的数据给出了比最终不影响损失的参数的详尽搜索更多的“纹理”数据。基于梯度的优化
对于特定的学习算法,可以计算相对于超参数的梯度,然后使用梯度下降优化超参数。 这些技术的第一次使用集中在神经网络。从那时起,这些方法已经扩展到其他模型,如支持向量机或逻辑回归 。训练集/测试集/验证集
首先,需要说明一点的是,训练集(training set)、验证集(validation set)和测试集(test set)本质上并无区别,都是把一个数据集分成三个部分而已,都是(feature,label)造型。尤其是训练集与验证集,更无本质区别。
测试集可能会有一些区别,比如在一些权威计算机视觉比赛中,测试集的标签是private的,也就是参赛者看不到测试集的标签,可以把预测的标签交给大赛组委会,他们根据你提交的预测标签来评估参赛者模式识别系统的好坏,以防作弊。
【训练集】:每个样本都是(feature,label)造型,用来训练模式识别系统。
【验证集】:在训练集上训练好系统后,有些参数是不可学习的,需要人为设定的,比如支持向量机SVM中的超参数松弛参数C。但是人为设定可能不是最优的,怎样寻找最优的这个参数呢?这就需要验证集。在验证集上不断调试这个人为设定的超参数,直到在验证集上得到的结果满意为止,这一步通常采用验证集上的交叉验证来确定最优超参数。需要人为设定的超参数确定后,到此这个系统的所有参数都确定了,然后看一下这个系统在测试集上的效果怎么样。
【测试集】:用来最终评估模式识别系统的性能。
需要注意的是,当整个模式识别系统中没有需要人为设定的超参数,所有参数都是通过学习得到的,则不需要验证集,训练集和测试集就够了。
参考:https://blog.csdn.net/u011501388/article/details/78359133
以上是关于Hyperparameters的主要内容,如果未能解决你的问题,请参考以下文章