我已经尝试成功地应用GridSearch方法来找到SVM的最佳参数,现在我想将其应用于神经网络(MLPClassifier
)以找到最佳体系结构(即层和神经元/层),最好的激活函数,...
但是,我想知道这是否不会太计算昂贵?此外,我应该如何为层和神经元的数量定义"网格"?这已经进行了测试吗?谢谢
是的,许多层和神经元被认为是超级参数的一部分。
我认为,由于维度的诅咒,网格搜索不是神经网络的最佳选择。人们通常考虑简单的随机搜索,尤其是在开发的早期阶段。它之所以起作用,是因为经常有些超级参数不会严重影响损失功能,因此详尽的搜索没有任何可能的组合。
所以,我建议以下循环:
- 确定合理的超参数值集(下/上限,步骤)
- 启动不同组合的随机抽样
- 一段时间后,您将能够(希望)缩小搜索空间
- 重复新界限
在某些特殊情况下,您可以使用基于梯度和贝叶斯优化的优化,但是这些选项非常有问题。