Chaque exemple de réseau de neurones pour la reconnaissance d'image que j'ai lu produit une réponse simple "oui" ou "non". Un nœud de sortie correspond à "Oui, c'est un visage humain" et l'autre correspond à "Non, ce n'est pas un visage humain".
Je comprends que c'est probablement pour la simplicité de l'explication, mais je me demande comment un tel réseau de neurones pourrait être programmé pour donner une sortie plus spécifique. Par exemple, disons que je classais les animaux. Au lieu de dire "Animal" ou "Pas un animal", je voudrais des réponses comme "Chien", "Poisson", "Oiseau", "Serpent", etc., avec un nœud de sortie final étant "Pas un animal / je ne le reconnais pas ".
Je suis sûr que cela doit être possible, mais j'ai du mal à comprendre comment. Cela semble dû à l'algorithme de formation de la rétroprogation d'erreur, lorsque vous entraînez un nœud de sortie (c'est-à-dire "Ceci est un chien") et que les poids des neurones sont modifiés, puis l'état idéal pour un autre nœud de sortie que vous avez précédemment formé (c.-à-d. «Ceci est un oiseau») commencera à dévier et vice versa. Ainsi, entraîner le réseau à reconnaître une catégorie reviendrait à saboter toute formation effectuée pour une autre catégorie, nous limitant ainsi à une simple conception «oui» ou «non».
Est-ce que cela rend impossible une telle reconnaissance? Ou est-ce que je comprends mal l'algorithme? Les deux seules choses auxquelles je peux penser sont les suivantes:
Soit nous pourrions former un réseau de neurones pour chaque chose que nous voulons classer et en quelque sorte les utiliser pour construire un plus grand super-réseau (donc par exemple, un réseau pour "chien", un réseau pour "oiseau", etc., que nous avons en quelque sorte additionner pour créer le super-réseau pour les "animaux"); ou,
Créez une sorte de méthodologie d'entraînement ridiculement compliquée qui nécessiterait des mathématiques incroyablement avancées et produirait en quelque sorte un état de poids de neurone idéal pour toutes les sorties possibles (en d'autres termes,
insert math magic here
).
(Note 1: je regarde spécifiquement les perceptrons multicouches comme une sorte de réseau neuronal.)
(Note 2: Pour la première "solution possible" à puces, avoir chaque réseau neuronal spécifique et l'itérer à travers eux jusqu'à ce que nous recevions une réponse "Oui" n'est pas assez bon. Je sais que cela pourrait être fait assez facilement, mais c'est une fonction simple la programmation plutôt que l'apprentissage automatique. Je veux savoir s'il est possible d'avoir un réseau de neurones pour alimenter l'information et recevoir la réponse appropriée.)
La réponse de @ anaximander est plutôt bonne, j'ai pensé commenter cette partie de votre question:
Eh bien, je pense que votre hypothèse est fausse ici; si je comprends bien, vous avez un NN avec une sortie par catégorie que vous essayez de classer. Idéalement, vous souhaitez qu'ils fonctionnent de manière presque indépendante, afin que les classifications "chien" et "oiseau" ne se déclenchent pas en même temps. Donc, vraiment, pendant l'entraînement, ce qui se passera, c'est que lorsque vous entraînez le NN avec un résultat "chien", la rétropropagation essaiera de s'assurer que "l'oiseau" et les autres neurones de sortie ne produisent pas de faux positifs. Donc, théoriquement, cela fonctionnera très bien, contrairement à votre commentaire; le renforcement d'un résultat négatif pour "oiseau" est correct.
Cependant, votre problème sera l'évolutivité de cette approche. À mesure que vous ajoutez plus de catégories au réseau, la formation deviendra plus complexe d'une manière au moins linéaire (mais probablement bien pire). Pour cette raison, de nombreuses personnes utilisent une approche dans laquelle des NN individuels sont formés pour chaque catégorie; cela permet de garder les choses assez simples et relativement évolutives. Le méta-niveau de la façon dont ceux-ci sont combinés dépend alors de vous. Vous pouvez simplement parcourir tous les NN et voir lesquels produisent des résultats positifs, vous pouvez créer des NN heuristiques de niveau intermédiaire qui essaient de restreindre le type d'animal pour vous, ou vous pouvez même avoir un NN géant qui combine les NN individuels comme neurones . Essentiellement, ce que j'essaie de dire, c'est que vous avez une connaissance préalable de la structure du problème - les classifications individuelles sont très probablement distinctes les unes des autres;
EDIT: Pour répondre à la question du titre, bien sûr, les NN peuvent fournir plus que des réponses oui / non. Dans les modèles "standard", chaque neurone de sortie se déclenche généralement oui / non (bien que ce comportement puisse être modifié, si vous en aviez envie), représentant un bit d'information; mais tout comme avec votre ordinateur, les bits peuvent être combinés pour fournir une plage de valeurs discrètes, qui peuvent être interprétées comme vous le souhaitez. Un exemple assez visuel de sorties non binaires serait une carte auto-organisée , qui a généralement une sortie 2D.
la source
Réponse courte et peu rigide: oui, chaque NN peut fournir plus d'informations que juste
yes
, ouno
. C'est dû au seuil. Si les poids sont supérieurs à un certain seuil, la réponse est l'une des classes de classification, si elle est inférieure, la réponse est la deuxième classe de classification. Fondamentalement:La sortie de Neuron est dans l'intervalle [0..1] (ou [-1,1] cela dépend), et vous ne voulez pas savoir si la sortie est inférieure ou supérieure au seuil mais la sortie (la sortie que vous peut facilement se convertir en intervalle de 0..1 et cela signifie%)
la source