用于分类的 MLP 与用于回归的 MLP 如何以及为什么会有所不同?不同的反向传播和传递函数?

机器算法验证 回归 机器学习 反向传播
2022-03-22 14:32:11

我正在使用两个 3 层前馈多层感知器 (MLP)。使用相同的输入数据(14 个输入神经元),我进行一种分类(真/假)和一种回归(如果为真,“多少”)¹。到目前为止,我已经分别懒惰地使用了 Matlabs patternnetfitnet懒惰,因为我还没有花时间真正了解发生了什么——我应该这样做。此外,我需要过渡到OSS 库(可能是 FANN),这可能需要比 Matlab NN Toolbox 更多的手动设置。因此,我试图更准确地了解发生了什么。

patternnet和创建的网络fitnet几乎相同:14 个输入神经元、11 个隐藏神经元、1 个目标神经元(2 个用于fitnet,但只有 1 个信息)。但是,它们并不完全相同。默认情况下的区别是:

这些差异应该是什么?

哪种反向传播函数最适合分类,哪种适合回归,为什么?

哪种传递函数最适合分类,哪种最适合回归,为什么?


¹分类用于“多云”或“无云”(2 个互补目标),回归用于量化“有多少云”(1 个目标)。

1个回答

关键区别在于训练标准。最小二乘训练标准通常用于回归,因为这给出了模型参数的(惩罚)最大似然估计,假设高斯噪声破坏了响应(目标)变量。对于分类问题,通常使用交叉熵训练标准,在假设 Bernoilli 或多项损失的情况下给出最大似然估计。无论哪种方式,模型输出都可以解释为类成员概率的估计,但通常在输出层使用逻辑或 softmax 激活函数,因此输出被限制在 0 和 1 之间,并且总和为 1。如果您使用 tanh 函数,您可以通过加一除以二将它们重新映射到概率(但其他方面相同)。

就泛化性能而言,缩放共轭梯度和 Levenberg-Marquardt 之间的差异可能相当小。

我强烈推荐 MATLAB 的NETLAB工具箱,而不是 MATLAB 自己的神经网络工具箱。研究贝叶斯正则化以避免过度拟合可能是一个好主意(Chris Bishop 的非常值得一读,其中大部分内容都包含在 NETLAB 工具箱中)。