我正在使用两个 3 层前馈多层感知器 (MLP)。使用相同的输入数据(14 个输入神经元),我进行一种分类(真/假)和一种回归(如果为真,“多少”)¹。到目前为止,我已经分别懒惰地使用了 Matlabs patternnet和fitnet。懒惰,因为我还没有花时间真正了解发生了什么——我应该这样做。此外,我需要过渡到OSS 库(可能是 FANN),这可能需要比 Matlab NN Toolbox 更多的手动设置。因此,我试图更准确地了解发生了什么。
由patternnet
和创建的网络fitnet
几乎相同:14 个输入神经元、11 个隐藏神经元、1 个目标神经元(2 个用于fitnet
,但只有 1 个信息)。但是,它们并不完全相同。默认情况下的区别是:
- Matlab对分类网络 ( )使用缩放共轭梯度反向传播,对回归网络 ( ) 使用Levenberg-Marquardt 反向传播。
patternnet
fitnet
- 分类网络在输入和隐藏层之间以及隐藏和输出层之间使用双曲正切 sigmoid 传递函数。回归网络 (
fitnet
) 在输入和隐藏层之间使用双曲正切 sigmoid 传递函数,在隐藏层和输出层之间使用纯线性传递函数。
这些差异应该是什么?
哪种反向传播函数最适合分类,哪种适合回归,为什么?
哪种传递函数最适合分类,哪种最适合回归,为什么?
¹分类用于“多云”或“无云”(2 个互补目标),回归用于量化“有多少云”(1 个目标)。