Comment faire pour convertir la sortie d'un réseau de neurones artificiels dans les probabilités?
J'ai lu à propos du réseau de neurones il y a peu, et je comprends comment une ANN (surtout un perceptron multicouche qui apprend via les) peuvent apprendre à classer un événement comme vrai ou faux.
Je pense qu'il y a deux façons :
1) Vous obtenez un neurone de sortie. C'est la valeur > 0.5 événements est probablement vrai, si c'est la valeur <=0,5 l'événement est susceptible d'être faux.
2), on obtient deux neurones de sortie, si la valeur de la première > que la valeur de la deuxième, l'événement est probablement vrai, et vice-versa.
Dans ces cas, l'ANN vous indique si un événement est probablement vrai ou faux probables. Il ne dit pas comment elle est susceptible.
Est-il un moyen de convertir cette valeur de cotes ou pour obtenir directement des chances de sortir de l'ANN. Je voudrais avoir une sortie comme "L'événement a 84% de probabilité d'être vrai"
Vous devez vous connecter pour publier un commentaire.
Une fois un NN a été formé, par exemple. à l'aide de backprogation comme mentionné dans la question (à laquelle le backprogation logique a "poussé" les poids de façon à minimiser la fonction d'erreur), le poids associé à toutes les entrées individuelles ("à l'extérieur", des entrées ou intra-NN entrées) sont fixes. Le NN peuvent ensuite être utilisées à des fins de classification.
Selon laquelle les mathématiques (et les "options") au cours de la phase d'apprentissage peut obtenir un peu d'épaisseur, il est relativement simple et simple lorsqu'il fonctionne comme un classificateur. L'algorithme consiste à calculer une valeur d'activation de chaque neurone, comme la somme de l'entrée x poids de ce neurone. Cette valeur est ensuite transmis à une fonction d'activation dont le but est de normaliser et de la convertir en une valeur de type boolean (dans les cas typiques, comme certains réseaux n'ont pas une question de tout ou rien de la règle pour certains de leurs couches). La fonction d'activation peut être plus complexe que ce que vous avez indiqué, en particulier, il n'a pas besoin d'être linéaire, mais quelle que soit sa forme, généralement sigmoïde, il opère de la même façon: déterminer d'où l'activation correspond sur la courbe, et, le cas échéant, au-dessus ou en dessous d'un seuil. L'algorithme de base, puis les processus de tous les neurones à une couche donnée avant de passer à la suivante.
Avec cela à l'esprit, la question de l'utilisation du perceptron la capacité à qualifier ses deviner (ou, en fait, devine - pluriel) avec une valeur en pourcentage, trouve une réponse facile: vous pariez qu'il peut, à sa sortie(s) est à valeurs réelles (si quoi que ce soit dans le besoin de normalisation) avant de la convertir en une valeur discrète (un booléen ou un ID de la catégorie dans le cas de plusieurs catégories), en utilisant les fonctions d'activation et le seuil/la comparaison des méthodes décrites dans la question.
Donc... Comment et Où puis-je obtenir "mon pourcentages"?... Tout dépend de la NN de la mise en œuvre, et plus important encore, la mise en œuvre dicte le type de normalisation des fonctions qui peuvent être utilisées pour l'activation de valeurs dans le 0-1 gamme et de façon que la somme de tous les pourcentages "ajouter" à 1. Dans sa forme la plus simple, la fonction d'activation peut être utilisée pour normaliser la valeur et le poids de l'entrée vers la couche de sortie peuvent être utilisés comme facteurs pour s'assurer que les "ajouter" à 1 question (à condition que ces poids sont en effet de manière normalisée eux-mêmes).
Et voilà!
Claritication: (à la suite Mathieu de la note)
On n'a pas besoin de changer quelque chose dans la façon dont le Réseau de Neurones lui-même; la seule chose nécessaire est de faire en quelque sorte "crochet dans" la logique de l' sortie neurones pour accéder à la [vraie valeur] activation de la valeur calculée, ou, peut-être mieux, pour accéder à la vraie valeur de sortie de la fonction d'activation, avant sa conversion booléenne (qui est généralement basée sur une valeur de seuil ou sur certains stochastique fonction).
En d'autres termes, le NN fonctionne comme auparavant, ni sa formation, ni la reconnaissance de la logique sont modifiés, des entrées à la NN de rester le même, de même que les connexions entre les différentes couches, etc. Nous obtenons seulement une copie de la vraie valeur d'activation des neurones de la couche de sortie, et nous nous en servons pour calculer un pourcentage. La formule pour le calcul du pourcentage dépend de la nature de l'activation de la valeur et de sa fonction associée (à son échelle, sa gamme par rapport à d'autres neurones de sortie, etc.).
Voici quelques cas simples (prises à partir de la question de la sortie suggéré règles)
1) Si il y a un seul neurone de sortie: le ratio de la valeur fournie par la fonction d'activation par rapport à la gamme de cette fonction devrait le faire.
2) Si il y a deux (ou plus de neurones de sortie), comme avec les classificateurs par exemple: Si tous les neurones de sortie ont la même fonction d'activation, le pourcentage pour un neurone donné est celui de l'activation de la fonction de valeur, divisée par la somme de toutes les valeurs de la fonction d'activation. Si les fonctions d'activation varient, il devient un cas-par-cas, parce que les différentes fonctions d'activation peut être le signe d'une volonté délibérée de donner plus de poids à certains des neurones, et le pourcentage qu'ils le respectent.
"Percentage or confidence"
(POC) ou quelque chose de similaire. Bien que manquant d'une déclaration formelle de la variable, ils sont les probabilités de, ces valeur jamais le moins avoir toutes les caractéristiques principales des probabilités, en particulier de leur intervalle de 0 à 1, le fait que leur somme soit égale à 1 (le POC c'est Une catégorie plus le POC c'est de catégorie B de plus... le Cop de toutes les autres catégories, d'un montant de 1.), et aussi le fait que les POC(pas X) = 1 - POC(X).hidden
couche. Unoutput
couche voudrez peut-être dans l'intervalle [0..1], ce qui permettrait d'utiliser une autre normalisation de la fonction, peut-être la en.wikipedia.org/wiki/Softmax_function .Ce que vous pouvez faire est d'utiliser un la fonction de transfert sigmoïde sur la couche de sortie nœuds (qui accepte les plages de données (-inf,inf) et les sorties d'une valeur dans [-1,1]).
Ensuite, à l'aide de la 1 de n d'encodage de sortie (un nœud pour chaque classe), vous pouvez mapper l'intervalle [-1,1] à [0,1] et l'utiliser comme la probabilité pour chaque valeur de classe (notez que cela fonctionne naturellement pour plus de deux classes).
L'activation de la valeur d'un seul neurone de sortie est une somme pondérée linéairement, et peut être directement interprété comme une probabilité approximative si le réseau est formé pour donner les sorties d'une plage de 0 à 1. Cela devrait être le cas si la fonction de transfert (ou de sortie de la fonction) dans l'étape précédente et de fournir le résultat final est dans l'intervalle de 0 à 1 trop (généralement le sigmoïde de la fonction logistique). Cependant, il n'existe aucune garantie qu'il sera, mais les réparations sont possibles. En outre, à moins que le sigmoids sont la logistique et le poids sont contraints d'être positifs et de somme 1, il est peu probable. Généralement, un réseau de neurones s'entraîner de manière plus équilibrée, à l'aide de la tanh sigmoïde et le poids et les activations qui vont positif et négatif (en raison de la symétrie de ce modèle). Un autre facteur est la prédominance de la classe si elle est de 50%, puis 0,5 seuil est susceptible d'être efficace pour la logistique et une 0.0 seuil pour tanh. Le sigmoïde est conçu pour pousser les choses vers le centre de la plage (sur backpropogation) et le contraint de passer hors de la portée (feedforward). L'importance de la performance (par rapport à la loi de Bernoulli de distribution) peut aussi être interprétée comme la probabilité pour que le neurone est de réaliser de véritables prédictions plutôt que de deviner. Idéalement le biais du prédicteur à positifs doit correspondre à la prévalence de positif dans le monde réel (qui peut varier à différents moments et endroits, par exemple, bull vs ours marchés, par exemple, la solvabilité des demandeurs de prêts vs les gens qui ne parviennent pas à faire des paiements de prêt) - calibrage des probabilités a l'avantage que les biais peuvent être facilement réglée.
Si vous avez deux neurones pour deux classes, chacune peut être interprété de façon indépendante comme ci-dessus, et la moitié de la différence entre eux peuvent également être. C'est comme faire le négatif de la classe le neurone et le calcul de la moyenne. Les différences peuvent aussi donner lieu à une probabilité de signification estimation (à l'aide du T-test).
Le Brier score et de ses Murphy décomposition donner une estimation directe de la probabilité qu'un moyen de réponse est correct, alors que Informedness donne la probabilité que le classificateur est prise d'une décision éclairée plutôt que d'une supposition, ROC de l'ASC donne la probabilité positive de la classe d'un rang plus élevé que négatif de la classe (par un prédicteur positif), et Kappa donnera un nombre similaire qui correspond à Informedness, lorsque la prévalence = bias.
Ce que vous souhaitez normalement est à la fois une signification de probabilité pour l'ensemble du classificateur (pour s'assurer que vous jouez sur un vrai terrain, et non dans un imaginaire cadre de guestimates) et une estimation de la probabilité pour un exemple précis. Il ya plusieurs façons de le calibrer, y compris en faisant la régression (linéaire ou non-linéaire) par rapport à la probabilité et à l'aide de sa fonction inverse pour le reconfigurer à une plus juste estimation de la probabilité. Ceci peut être vu par le Brier score à l'amélioration, avec l'étalonnage de la composante réduction vers 0, mais la discrimination composant restant le même, tout comme le ROC de l'ASC et de Informedness (Kappa est soumis à des biais et peut s'aggraver).
Un simple non-linéaire moyen de calibrer de probabilités est d'utiliser la courbe de ROC - comme les changements de seuil pour la sortie d'un neurone unique ou la différence entre deux concurrents neurones, nous avons tracé les résultats vrais et les taux de faux positifs sur une courbe ROC (le faux et le vrai négatif des taux sont naturellement complémentaires, que ce n'est pas vraiment un positif, un négatif). Ensuite, vous analyse de la courbe ROC (polyligne) point par point (à chaque fois que le gradient) de l'échantillon par échantillon, et la proportion d'échantillons positifs vous donne une estimation de la probabilité de positifs correspondant au seuil de neurones qui a produit ce point. Les valeurs entre les points sur la courbe peut être interpolée linéairement entre ceux qui sont représentés dans l'ensemble d'étalonnage - et en fait tous les mauvais points de la courbe ROC, représentée par deconvexities (bosses) peuvent être lissées par l'enveloppe convexe - de manière probabiliste interpolation entre les points de terminaison de la coque segment. Flach et Wu proposer une technique qui fait des pirouettes le segment, mais cela dépend de l'information utilisée dans le mauvais sens et bien qu'il puisse être utilisé à plusieurs reprises pour arbitraire d'amélioration sur l'ensemble d'étalonnage, il sera de plus en plus rare de généraliser à une situation de test.
(Je suis venu ici à la recherche pour les études, j'avais vu il y a longtemps sur ces CRO-les approches basées sur c'est donc à partir de la mémoire, et sans ces références manquantes.)
avez-vous essayé le prof. Hinton suggestion de la formation, le réseau avec softmax fonction d'activation et de la croix de l'entropie d'erreur?
comme un exemple pour créer une à trois couches de réseau avec les éléments suivants:
puis train avec la croix de l'entropie d'erreur softmax de transfert de votre choix de l'optimiseur stochastique de descente/iprop plus/grad descente. Après la formation des neurones de sortie devrait être normalisée à la somme de 1.
Veuillez voir http://en.wikipedia.org/wiki/Softmax_activation_function pour plus de détails. Requin Machine Learning framework fournit Softmax fonctionnalité grâce à la combinaison de deux modèles. Et le prof. Hinton un excellent cours en ligne @ http://coursera.com ce qui concerne les détails.
Je vais être très prudent dans l'interprétation des résultats d'un des réseaux de neurones (en fait, tout l'apprentissage de la machine classificateur) comme une probabilité. La machine est formé à la discrimination entre les classes, pas pour estimer la densité de probabilité. En fait, nous n'avons pas cette information dans les données, nous devons nous en déduire qu'il. Pour mon expérience j'din pas de conseils de quelqu'un pour interpréter directement les sorties comme des probabilités.
Je me souvienne, j'ai vu un exemple de réseau de Neurones formés avec le dos de propagation de l'approximation de la probabilité d'un résultat dans le livre Introduction à la théorie de calcul neuronal (hertz krogh palmer). Je pense que la clé pour l'exemple était un apprentissage de la règle, de sorte que vous n'avez pas à convertir la sortie d'une unité de probabilité, mais au lieu de cela vous avez automatiquement la probabilité de sortie.
Si vous avez l'occasion, essayez de vérifier que le livre.
(en passant, "boltzman machines", bien que moins connus, sont des réseaux de neurones spécifiquement conçu pour apprendre les distributions de probabilité, vous voudrez peut-être vérifier eux)
Lors de l'utilisation de l'ANN pour les 2-classe de la classification et de sigmoide fonction d'activation est utilisé dans la couche de sortie, les valeurs de sortie pourrait être interprété comme des probabilités.
Donc, si vous avez le choix entre 2 classes, vous vous formez à l'aide de 1-de-C de codage, où 2 ANN sorties ont la formation des valeurs (1,0) et (0,1) pour chacune des classes respectivement.
Pour obtenir la probabilité de la première classe, en pour-cent, il suffit de multiplier la première ANN sortie à 100. Pour obtenir la probabilité de l'autre catégorie d'utiliser la deuxième sortie.
Cela pourrait être généralisé pour le multi-classe de la classification à l'aide de softmax fonction d'activation.
Vous pouvez en lire plus, y compris les preuves de l'interprétation probabiliste ici:
[1] l'Évêque, Christopher M. de réseaux de Neurones pour la reconnaissance des formes. Oxford university press, 1995.