J'utilise deux perceptrons multicouches à action directe (MLP). Avec les mêmes données d'entrée (14 neurones d'entrée), je fais une classification (vrai / faux) et une régression (si vrai, "combien") ¹. Jusqu'à présent, je l' ai utilisé paresseusement Matlabs patternnet et FITNET , respectivement. Paresseusement, parce que je n'ai pas pris le temps de vraiment comprendre ce qui se passe - et je devrais. De plus, j'ai besoin de faire la transition vers une bibliothèque OSS (probablement FANN), qui nécessitera probablement plus de configuration manuelle que Matlab NN Toolbox. Par conséquent, j'essaie de comprendre plus précisément ce qui se passe.
Les réseaux créés par patternnet
et fitnet
sont presque identiques: 14 neurones d'entrée, 11 neurones cachés, 1 neurone cible (2 pour le fitnet
, mais seulement 1 élément d'information). Mais, ils ne sont pas complètement identiques. Les différences par défaut sont:
- Matlab utilise une rétropropagation à gradient conjugué à l'échelle pour le réseau de classification (
patternnet
) et une rétropropagation de Levenberg-Marquardt pour le réseau de régression (fitnet
). - Le réseau de classification utilise une fonction de transfert sigmoïde tangent hyperbolique entre la couche d'entrée et la couche cachée, et entre la couche cachée et la couche de sortie. Le réseau de régression (
fitnet
) utilise la fonction de transfert sigmoïde tangent hyperbolique entre la couche d'entrée et la couche cachée, et une fonction de transfert purement linéaire entre la couche cachée et la couche de sortie.
Ces différences devraient-elles être?
Quel type de fonctions de rétropropagation sont optimales pour la classification, et quel type pour la régression, et pourquoi?
Quel type de fonctions de transfert sont optimales pour la classification, et quel type pour la régression, et pourquoi?
¹ La classification est pour "nuageux" ou "sans nuage" (2 cibles complémentaires), la régression est pour quantifier "la quantité de nuage" (1 cible).