MLPClassifier参数设置

MLPClassifier parameter setting

我正在开发一个使用反向传播算法的项目。所以我正在学习 scikit-learn 中的反向传播算法。

mlp = MLPClassifier(hidden_layer_sizes=(hiddenLayerSize,), solver='lbfgs', learning_rate='constant',learning_rate_init=0.001, max_iter=100000, random_state=1)

有不同的求解器选项,如 lbfgs、adam 和 sgd,还有激活选项。关于应该使用哪个选项进行反向传播,是否有任何最佳实践?

solver是这里设置优化算法的参数。一般设置 sgd (stochastic gradient descent) 效果最好,收敛速度也更快。在使用 sgd 时,除了设置 learning_rate 之外,您还需要设置 momentum 参数(默认值 =0.9 有效)。

激活函数选项用于引入模型的非线性,如果您的模型有很多层,则必须使用 relu (rectified linear unit) 等激活函数来引入非线性,否则使用多层将成为无用。 relu是最简单也是最有用的激活函数。

另外需要考虑的是当激活函数为ReLu时学习率不能太大

ReLu 函数的主要问题是所谓的 'Dying Relu' 问题。当一个神经元卡在消极的一面时,它就被认为是死的,当学习率太大时最有可能发生这种情况。