Se connecter

Informatique

Programmation

Sujet : Reseau de neurones : Softmax
1
Romuald_78
Niveau 5
05 mars 2020 à 22:34:00

Hello

J'ai implémenté un systeme de reseau de neurones avec backpropagation pr l apprentissage supervisé.
J avais une question concernant un type de fonction d'activation : softmax

J ai l impression que pr des problemes de classification elle apporte de biens meilleurs resultats que Tangeante hyperbolique par exemple.
Est ce du hasard dans ma topologie de reseau ou bien ?
J ai un exemple de réseau qui detecte un caractere (chiffre lettre minuscule ou majuscule) donc 62 sorties, et il ne converge quasi jamais avec TanH mais converge tres vite avec Softmax.

Merci par avance pr vos conseils

Romuald

doxmixter
Niveau 6
16 mars 2020 à 09:12:44

Salut,
En dehors de ton problème, il faut savoir que les fonctions d'activation Softmax et TanH souffre d'un problème qu'on appelle disparition du gradient. En très rapide, ça veut dire que des fois, ton réseau ne va pas réussir à apprendre avec ces fonctions. Utilise plutôt un relu, voir un Leaky ReLU si tu es brave.

Après si ta question sur Softmax et TanH c'est savoir si l'un est plus propice à une tache que l'autre, eh bien je n'ai pas de réponse.

blackapplex
Niveau 10
17 mars 2020 à 02:15:22

J ai l impression que pr des problemes de classification elle apporte de biens meilleurs resultats que Tangeante hyperbolique par exemple.

C'est possible

Est ce du hasard dans ma topologie de reseau ou bien ?

C'est possible

J ai un exemple de réseau qui detecte un caractere (chiffre lettre minuscule ou majuscule) donc 62 sorties

Faut faire gaffe avec les interprétations des résultats des réseaux de neurones. C'est vrai pour les données très complexes (vidéo, grandes images) mais c'est d'autant plus vrai pour les petits modèles avec des données simples (caractères sur fond unicolor).

il ne converge quasi jamais avec TanH mais converge tres vite avec Softmax.

C'est possible
M'voilà, toutes ces réponses pour dire deux choses.
-La 1ere c'est qu'on a pas beaucoup de règles générales sur la façon de faire une architecture de réseau de neurone efficace (d'où les gens qui font du Neural Architecture Search ou qui testent/créent constamment de nouvelles couches).
-La 2eme c'est que c'est possible qu'on ait jamais de réponse générique et de règles générales, une fonction ajoutée à un modèle change le modèle, ce nouveau modèle peut être plus ou moins adapté aux données ciblées, il y a pas beaucoup de règles générales qui font qu'une chose marchera mieux qu'une autre systématiquement (sinon en fait ça devient une bonne pratique et tout le monde le fait comme la batchnorm, mais même ça au final des gens trouvent des alternatives).

Pour faire un design efficace de réseau de neurone, il faut lui faciliter la tâche le plus possible, visiblement dans ton cas le réseau trouve qu'apprendre sur tes données est plus facile quand on lui applique une non-linéarité qui somme à 1 les scores de sortis plutôt que quand on lui applique un tanh. Mon instinct sur ça c'est que c'est pratique quand t'as des classes très différenciables sans vraiment d'ambiguité (si ton réseau met 1 à une classe ça fait sens de mettre 0 aux autres). Tu peux très bien tenter de faire un tanh puis softmax. A prior le résultat avec sigmoid sera identique qu'avec tanh si tu ne l'appliques qu'en sortie vu la similarité des réseaux. Et comme VDD l'a dit aujourd'hui RELU est apprécié en traitement d'image

Romuald_78
Niveau 5
30 mars 2020 à 02:14:19

Ok les vdds
Deja merci des reponses
Je suis pas super avancé sur le fond mais tu as raison en fonction des donnees et structures certaines fonctions d'activation seront certainement plus propices.... encore du tps d'expérimentation devant moi 😉

1
Sujet : Reseau de neurones : Softmax
   Retour haut de page
Consulter la version web de cette page