Comment et pourquoi les MLP pour la classification différeraient-ils des MLP pour la régression? Différentes fonctions de rétropropagation et de transfert?


8

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 patternnetet fitnetsont 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:

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).

Réponses:


2

La principale différence réside dans le critère de formation. Un critère d'apprentissage des moindres carrés est souvent utilisé pour la régression car cela donne une estimation (pénalisée) du maximum de vraisemblance des paramètres du modèle en supposant que le bruit gaussien altère la variable de réponse (cible). Pour les problèmes de classification, il est courant d'utiliser un critère d'apprentissage à entropie croisée, pour donner une estimation du maximum de vraisemblance en supposant une perte de Bernoilli ou multinomiale. Dans les deux cas, les sorties du modèle peuvent être interprétées comme une estimation de la probabilité d'appartenance à une classe, mais il est courant d'utiliser des fonctions d'activation logistique ou softmax dans la couche de sortie, de sorte que les sorties sont contraintes de se situer entre 0 et 1 et de résumer à 1. Si vous utilisez la fonction tanh, vous pouvez simplement les remapper sur les probabilités en ajoutant une et en divisant par deux (mais c'est la même chose autrement).

La différence entre les gradients conjugués à l'échelle et Levenberg-Marquardt est susceptible d'être assez mineure en termes de performances de généralisation.

Je recommanderais fortement la boîte à outils NETLAB pour MATLAB sur la propre boîte à outils du réseau neuronal MATLAB. C'est probablement une bonne idée d'enquêter sur la régularisation bayésienne pour éviter un ajustement excessif (le livre de Chris Bishop vaut la peine d'être lu et la majeure partie est couverte dans la boîte à outils NETLAB).


Intéressant - pourquoi recommandez-vous fortement NETLAB plutôt que la propre boîte à outils NN de MATLAB? Je suis assez satisfait de ce dernier, mais je compte m'éloigner pour me libérer des licences commerciales. Netlab est clairement toujours Matlab, donc ne résout que la moitié du problème en ce qui concerne l'indépendance; Je préfère utiliser quelque chose que je peux utiliser avec Python.
gerrit

Je soupçonne que NETLAB fonctionne également avec l'octave, ce qui résout le problème de licence commerciale. Je préfère NETLAB car il a les outils de base pour la classification et la régression mis en place assez simplement et encourage l'utilisation de réseaux régularisés, ce qui est très important pour éviter le sur-ajustement. Il complète également très bien le livre de Chris Bishop, et c'est le livre que je recommanderais à quiconque souhaite utiliser les réseaux de neurones en colère. Les processus gaussiens sont une option plus moderne, la boîte à outils et le livre GPML sont également fortement recommandés ( gaussianprocess.org/gpml ).
Dikran Marsupial

OK je vois. Cela a toujours très bien fonctionné pour moi, je n'ai pas eu de problèmes de sur-ajustement avec un arrêt précoce. Je vois le point avec Octave mais si j'ai quand même besoin de faire une transition, je préfère passer immédiatement à Python (j'applaudis Octave, et j'aimerais pouvoir y exécuter mon code Matlab, qui s'appuie fortement sur les classes post-R2008a ; mais je n'aime pas suffisamment Matlab comme langue pour choisir un clone FOSS Matlab sur Octave. Quoi qu'il en soit, cette discussion est hors sujet).
gerrit

Cela fait un bon moment que j'apprends moi-même le python, il est beaucoup utilisé dans la communauté du machine learning, donc je m'attends à ce qu'il y ait de bonnes bibliothèques disponibles.
Dikran Marsupial
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.