网格搜索还是梯度下降?

数据挖掘 机器学习 神经网络 优化 梯度下降 超参数
2021-10-01 12:51:24

假设我们有一个神经网络,它的激活函数之一是参数a的函数。我们想找到导致验证集损失最小的权重和参数 a 哪个更好?:

  1. 将a视为超参数。对a进行网格搜索:考虑 a 的范围评估该范围内几个点的损失。选择范围内最好的 a以及导致最小损失的权重。
  1. 将a视为参数。由于网络的损失是参数a的函数,因此在每次迭代时使用梯度下降来更新权重和参数a 。

对我来说,第二个选项更好,因为它可以导致最佳点,但网格不能导致最佳点,它可以根据您的选择导致最佳点周围的点。但是,第二种方法对吗?

有没有更好的方法?

最后,在网格搜索中,我们如何选择范围?

1个回答

这里要进行的主要区别是参数参数之间的区别;一旦我们澄清了这一点,剩下的就很容易了:网格搜索不用于调整参数(仅超参数),这些参数通过梯度下降进行调整。

现在,粗略地说,参数是在训练期间发生变化的东西在神经网络中,唯一的参数是权重和偏差,它们通过梯度下降进行调整。

参数可以被认为是“结构”的东西,例如层数,每层的节点数(请注意,这两者也间接决定了参数的数量,即我们的模型中有多少权重和偏差) ,即在训练期间不会改变的东西。超参数不仅限于模型本身,它们也适用于所使用的学习算法(例如优化算法、学习率等)。一组特定的超参数定义了一系列模型,它们在参数的确切值上有所不同;相反,特定的参数集(例如 NN 中的权重和偏差)定义了一个独特的模型

澄清上述内容后,应该很容易看出上面示例中的a是超参数而不是参数;因此,它通常会使用网格搜索进行优化。

对我来说,第二种选择更好,因为它可以导致最佳点

没那么快;梯度下降并不适用于任何地方:一个函数有数学上的先决条件,以便有资格使用梯度下降进行优化,即连续和可微。这确实是作为权重和偏差函数的损失的情况,但不清楚作为参数a的函数的损失是否也是这种情况。如果不是,我们根本不能使用梯度下降来调整a

相反,像网格搜索这样的技术没有这样的先决条件,因此它们可以用于更广泛的情况。

在网格搜索中,我们如何选择范围?

当我们在 ML 和 DL 中选择几乎所有其他内容时:凭经验,并通过反复试验(实际上背后没有太多理论)。

更新(评论后):

现在假设满足 a 的先决条件,以便我们可以使用梯度下降。现在哪个好?网格搜索还是梯度下降?

抱歉,我没有意识到这是一个“超人与蝙蝠侠”的问题……嗯,梯度下降是一种严谨的数学运算,可以保证找到函数的全局最小值(尽管 NN 损失函数不是凸函数) ),而网格搜索实际上只是一个临时的、快速而肮脏的过程,它不能保证任何事情(正如您已经正确怀疑的那样),所以......

但要当心,特别是如果这是任何家庭作业或考试的一部分:这个问题,尽管它的措辞,实际上并不是问你在抽象和假设的上下文中哪个“更好”,而是在非常具体的上下文中哪个更好,即神经网络模型;如果某些东西甚至不适用,它实际上不可能更好,对吧?

换句话说,如果有人真的在这里测试你的 ML & NN 知识,他们肯定对上面的阐述更感兴趣,而不是总体上哪个“更好”;并且选择(2)将是一个巨大的错误(毕竟,假设 NN 损失是 a 的连续和可微函数不是问题的一部分)