神经网络最佳设置的近似值?
Approximation of best settings for a neural network?
我是一名编程爱好者所以请原谅并帮助填补任何空白..
据我了解,神经网络的良好结果需要正确设置 sigmoid 和学习率或步进率(取决于训练方法)以及学习迭代。
虽然对这些价值观以及泛化和避免过度拟合的原则进行了很多教育,但似乎并没有太多关注它们与数据和网络的关系。
我注意到样本、神经元和输入的数量似乎在这些设置最适合的地方缩放。 (例如,更多或更少的输入可能会改变迭代要求)。
是否有一种数学方法可以根据样本、输入、输出、层等已知值找到 sigmoid、学习率、步数、迭代等的良好(近似)起点?
在深度学习爆炸之前,确定网络中最佳参数数量的一种常用方法是使用贝叶斯正则化。贝叶斯正则化是一种避免过度拟合的方法,即使您的网络比必要的大。
关于 learning/step 速率,问题在于选择较小的步进速率会使学习速度非常慢,而较大的步进速率可能会使您的网络发散。因此,一种常见的技术是使用一种可以自动调整学习率的学习方法,以便在必要时加速并在梯度的某些区域减速。
因此,在解决这两个问题的同时学习神经网络的一种常用方法是使用 Levenberg-Marquardt learning algorithm with Bayesian Regularization。 Levenberg-Marquardt 算法是一种自适应算法,因为它可以在每次迭代后调整学习率,能够从高斯-牛顿更新(使用二阶信息)切换回梯度下降算法(仅使用一阶信息) ) 根据需要。
它还可以让您估算网络中真正需要的参数数量。参数的数量是考虑网络中所有神经元的权重总数。然后您可以使用此参数来估计您应该首先使用多少个神经元。
此方法由 MATLAB function trainbr. However, since you also included the accord-net tag, I should also say that it is implemented by the LevenbergMarquardtLearning class 实现(您可能希望在 NuGet 中使用最新的 alpha 版本,以防您处理多个输出问题)。
我是一名编程爱好者所以请原谅并帮助填补任何空白.. 据我了解,神经网络的良好结果需要正确设置 sigmoid 和学习率或步进率(取决于训练方法)以及学习迭代。
虽然对这些价值观以及泛化和避免过度拟合的原则进行了很多教育,但似乎并没有太多关注它们与数据和网络的关系。
我注意到样本、神经元和输入的数量似乎在这些设置最适合的地方缩放。 (例如,更多或更少的输入可能会改变迭代要求)。
是否有一种数学方法可以根据样本、输入、输出、层等已知值找到 sigmoid、学习率、步数、迭代等的良好(近似)起点?
在深度学习爆炸之前,确定网络中最佳参数数量的一种常用方法是使用贝叶斯正则化。贝叶斯正则化是一种避免过度拟合的方法,即使您的网络比必要的大。
关于 learning/step 速率,问题在于选择较小的步进速率会使学习速度非常慢,而较大的步进速率可能会使您的网络发散。因此,一种常见的技术是使用一种可以自动调整学习率的学习方法,以便在必要时加速并在梯度的某些区域减速。
因此,在解决这两个问题的同时学习神经网络的一种常用方法是使用 Levenberg-Marquardt learning algorithm with Bayesian Regularization。 Levenberg-Marquardt 算法是一种自适应算法,因为它可以在每次迭代后调整学习率,能够从高斯-牛顿更新(使用二阶信息)切换回梯度下降算法(仅使用一阶信息) ) 根据需要。
它还可以让您估算网络中真正需要的参数数量。参数的数量是考虑网络中所有神经元的权重总数。然后您可以使用此参数来估计您应该首先使用多少个神经元。
此方法由 MATLAB function trainbr. However, since you also included the accord-net tag, I should also say that it is implemented by the LevenbergMarquardtLearning class 实现(您可能希望在 NuGet 中使用最新的 alpha 版本,以防您处理多个输出问题)。