Grid Search 网格搜索 介绍

什么是Grid Search 网格搜索?

网格搜素是一种常用的调参手段,是一种穷举方法。给定一系列超参,然后再所有超参组合中穷举遍历,从所有组合中选出最优的一组超参数,其实就是暴力方法在全部解中找最优解。

为什么叫网格搜索,因为假设有两个超参,每个超参都有一组候选参数。这两组候选参数可以两两组合,把所有组合列出来就是一个二维的网格(多个超参两两组合可以看作是岗高维空间的网格),遍历网格中的所有节点,选出最优解。所以叫网格搜索。

存在的问题

使用网格搜索会导致,测试集上的表现效果比真实情况要好一些,因为测试集是用来对参数进行调整,参数会最终被调整为在测试集上表现效果最优的情况,而测试集样本量小,真实情况的样本量应该会远大于测试集的情况,所以测试集的样本数据分布情况与真实的样本数据分布情况有所偏差。

解决办法

对数据集多一次划分,模拟真实数据集的情况。将数据集划分为训练集、验证集、测试集。训练集是用于模型训练,验证集用于模型调参,测试集用于衡量调参后模型的好坏。这里有个疑问,如果验证集划分的太小,那么验证集对整体数据集的表现越弱,越具有偶然性,那么调参的结果可能对于整体数据集更差。这里可以引入交叉验证的方法减少偶然性。

使用场景

网格搜索可以使用在机器学习算法调参中,而很少使用在深度神经网络的调参中。因为网络搜索其实并没有什么特别的优化方法,就是简单的穷举。这种方法不使用网格搜索手动去穷举也是可以实现的,只不过网格搜索自动化一些,不需要手工的去一个一个尝试参数。本质就是把所有参数的可能都运行了一遍,对于深度神经网络来说,运行一遍需要很长时间,穷举的去调参,效率太低,更何况随着超参数数量的增加,超参组合呈几何增长。而对于机器学习的算法来说,运行时间相对较短,甚至对于朴素贝叶斯这种算法不需要去多次迭代所有样本,训练时间很快,可以使用网格搜索来调参。

你可能感兴趣的:(历程,机器学习,深度学习,python,神经网络,网格搜索)