Cela fait longtemps que Deep Learning n'a pas fermement établi sa position dans le domaine de l'apprentissage d'opportunité. Cette fois, je voudrais présenter un bref résumé et quelques démos de Deep Metric Learning, qui est appliqué dans divers domaines en raison de ses hautes performances et de sa polyvalence. Comme la reconnaissance de caractères manuscrits et la reconnaissance de caractères manuscrits seuls ne sont pas intéressants, nous détectons également des anomalies.
Deep Metric Learning
L'apprentissage métrique est une méthode appelée «apprentissage à distance», qui est une méthode d'apprentissage de la conversion (mappage) de l'espace des fonctionnalités des données d'entrée vers l'espace des fonctionnalités qui reflète la similitude des données.
En un mot
--Les données appartenant à la même classe sont proches
Apprenez à convertir en espace d'entités.
Dans la classification des classes, même dans les cas où la distance est trop proche et qu'il est difficile de classer, il est possible d'améliorer la précision de la discrimination en apprenant l'espace des caractéristiques de sorte que la même classe soit proche et les différentes classes éloignées. Je peux le faire.
L'apprentissage métrique lui-même est une méthode ancienne, mais l'apprentissage métrique profond est une méthode de conception de cette transformation non linéaire par le réseau neuronal profond. Le Deep Metric Learning est très polyvalent car il s'agit d'une méthode d'apprentissage de la «distance» entre les données, et en raison de ses hautes performances, il a un large éventail de domaines d'application comme suit.
C'est une méthode qui apparaît fréquemment dans le concours "Kaggle" où les data scientists du monde entier se disputent leurs performances, et cette fois nous effectuerons la classification des images et la détection des anomalies.
Deep Metric Learning est utilisé pour reconnaître les caractères manuscrits MNIST familiers. Données: 0-9 image de texte manuscrite de 28 x 28 pixels Données d'apprentissage: 50000 feuilles Données de test: 10000 feuilles
Plusieurs méthodes ont été proposées comme méthodes d'apprentissage métrique profond, Cette fois, nous utiliserons Softmax Loss sous contrainte L2 en raison de la vitesse d'apprentissage, des performances élevées et de la simplicité du modèle lui-même.
L2-constrained Softmax Loss Softmax Loss sous contrainte L2 est une méthode pour contraindre la norme L2 de la sortie de la couche finale du Deep Neural Network à une constante $ \ alpha $, qui est une hypersphère avec un rayon de $ \ alpha $ pour les données d'entrée. C'est synonyme d'intégration ci-dessus.
La formule de la perte Softmax contrainte L2 est:
\text{minimize } -\frac{1}{M} \sum_{i=1}^{M} \log \frac{e^{W_{y_{i}}^{T} f\left(\mathbf{x}_{i}\right)+b_{y_{i}}}}{\sum_{j=1}^{C} e^{W_{j}^{T} f\left(\mathbf{x}_{i}\right)+b_{j}}}\\
\text { subject to } \quad\left\|f\left(\mathbf{x}_{i}\right)\right\|_{2}=\alpha, \forall i=1,2, \dots M\\
En mettant une contrainte pour incorporer des données dans une forme hypersphérique, il est possible d'apprendre de sorte que la similitude cosinus entre les données de la même classe est grande et la similitude cosinus avec différentes classes est petite.
Dans Softmax Loss normal, par exemple, dans le cas d'une photographie faciale, la norme L2 est grande pour une image facile à comprendre qui fait face directement à l'avant, et la norme L2 est grande pour une image difficile à prendre des caractéristiques telles que faire face sur le côté ou allongé. Il a la propriété de devenir plus petit. En conséquence, l'apprentissage est attiré par des images faciles à comprendre qui regardent droit devant, et les images avec une petite norme L2, ce qui est difficile en somme, ont tendance à être ignorées.
Softmax Loss avec contrainte L2 surmonte ce problème en rendant la norme L2 constante quelles que soient les données, rendant uniforme l'effet de toutes les données sur la perte.
La mise en œuvre de Softmax Loss sous contrainte L2 elle-même est très facile et peut être réalisée en ajoutant la couche de normalisation de la norme L2 et la couche de mise à l'échelle constante $ \ alpha $ à la sortie de la couche finale du réseau neuronal profond et en calculant la perte Softmax. Je vais.
La mise en œuvre se fera à l'aide de Keras sur Google Colaboratory. Comme indiqué ci-dessous, empilez 3 couches de convolution et insérez une contrainte L2 (couche Lambda) entre la couche FC (couche entièrement connectée) et Softmax. Cette contrainte L2 est la seule différence avec le réseau neuronal convolutif normal (CNN).
** Présentation du modèle **
** Sortie du modèle dans Keras **
** Divers paramètres d'apprentissage **
--Nombre d'époques: 15
Afin de confirmer l'effet du Deep Metric Learning, visualisons l'espace des fonctionnalités d'entrée et l'espace des fonctionnalités converti en les abaissant à deux dimensions avec t-SNE. Le t-SNE est un algorithme qui effectue une compression dimensionnelle de telle sorte que la "proximité" des données dans un espace dimensionnel élevé soit maintenue même dans un espace dimensionnel faible. Puisqu'une étiquette de professeur n'est pas utilisée pour la compression, les données sont purement dans un espace dimensionnel élevé. Vous pouvez voir à quel point ils sont séparés.
** 1. Visualisation de l'espace d'entrée (784 dimensions → 2 dimensions) ** Chaque point correspond à une image et la même couleur représente des données appartenant à la même classe de nombres. Même dans l'espace d'entrée, bien qu'il soit généralement séparé pour chaque classe, il existe de nombreux chevauchements et variations.
** 2. Visualisation de la couche finale avec CNN normal (64ème dimension → 2ème dimension) **
Comme le CNN lui-même offre des performances élevées, vous pouvez voir que même un CNN normal est assez bien séparé (des grappes sont formées pour chaque classe) dans la couche finale. Bien qu'il soit bien séparé, si vous regardez de près, vous pouvez souvent voir une petite valeur de saut.
** 3. Visualisation de la couche finale avec Softmax Loss contraint L2 (64ème dimension → 2ème dimension) **
Dans Softmax Loss contraint par L2, vous pouvez voir que les clusters sont plus clairement séparés que dans un CNN normal. Grâce à la normalisation de la norme L2, toutes les données contribuent à l'apprentissage, et il n'y a presque pas de valeurs de saut. Vous pouvez voir pourquoi le Deep Metric Learning est appelé «apprentissage à distance».
Les résultats d'identification pour 10 000 images de test sont les suivants. Comme vous pouvez voir le degré élevé de séparation dans la visualisation de la couche finale, on peut voir que la précision est améliorée simplement en mettant les contraintes de la couche de normalisation L2 et de la couche d'échelle dans le même modèle CNN. La précision et la perte montrent une transition douce, et les deux sont finalement meilleures que CNN (pas de perte L2).
Méthode th> | CNN (pas de perte L2) th> | Perte Softmax contrainte L2 th> tr> |
---|---|---|
Taux d'identification td> | 99,01 td> | 99,31 td> tr> |
Apprentissage (précision) td> | td> | td> tr> |
Apprentissage (perte) td> | td> tr> |
Soit dit en passant, les images (69 images) qui n'ont pas été identifiées par Softmax Loss sous contrainte L2 sont les suivantes. ・ Pred: valeur prédite de la perte Softmax contrainte L2 ・ Vrai: étiquette de réponse correcte
Je comprends ce sentiment! Il y a pas mal de choses que je veux dire. Il semble difficile même pour les humains d'obtenir 100 points. .. Il semble que la précision augmentera si les données d'entraînement des endroits faibles sont augmentées.
Comme c'était un gros problème, j'ai fait une démo qui peut être traitée en temps réel avec Flask en utilisant le modèle que j'ai appris. Vous pouvez voir qu'ils l'ont identifié fermement. En premier lieu, le taux d'identification est de 99,3%, il semble donc normal que ce ne soit pas un nombre très étrange.
Bien que l'identification soit solide, dans l'état actuel, les choses qui ne sont manifestement pas des nombres sont assignées de force à l'un d'entre eux comme suit.
Quand quelque chose qui n'est pas un nombre est entré, vous voulez dire que ce n'est pas un nombre, plutôt que de sortir quelque chose de proche. Utilisons la détection d'anomalies pour repousser les nombres non numériques tout en conservant la capacité de discrimination conventionnelle.
Comme je l'ai écrit au début, le Deep Metric Learning peut également être appliqué à la détection d'anomalies, il est supérieur à la détection d'anomalies dans l'espace d'entrée en effectuant une détection d'anomalies dans l'espace de quantité de caractéristiques apprises sous une forme qui reflète la similitude des données. Vous pourrez obtenir de la précision. Le Deep Metric Learning lui-même est une méthode d'apprentissage à distance, pas une méthode de détection d'anomalies, donc une autre méthode est nécessaire pour la détection des anomalies. Cette fois, nous utiliserons le facteur de valeur aberrante locale (LOF) pour la détection des anomalies.
Local Outlier Factor(LOF) LOF est une méthode de détection d'anomalies qui se concentre sur la densité des données dans l'espace. C'est un peu comme une version avancée de k-plus proche voisin (kNN), où kNN ne peut pas prendre en compte la variabilité des données d'un cluster à l'autre, alors que LOF est ** Densité locale avec k données dans le voisinage. En faisant attention à) **, il devient possible de détecter des anomalies compte tenu de la distribution des données.
Densité locale = 1 / distance moyenne à k points voisins
Les formules et les détails sont omis, mais dans le cas illustré dans la figure ci-dessous, par exemple, les données A sont loin des clusters voisins, nous voulons donc les juger comme anormales, et les données B sont dans la même distribution que les clusters voisins. Parce que c'est dedans, vous voulez le juger comme normal. Cependant, puisque B est plus éloigné en termes de distance du voisinage de k, kNN ne peut pas le gérer. D'autre part, LOF détermine le seuil d'anomalie en fonction de la densité des données environnantes, afin qu'il puisse gérer de tels cas.
LOF est appliqué à la sortie de la couche contrainte L2 du modèle appris par l'identification MNIST pour détecter les anomalies (pas besoin de réentraîner Deep Neural Net). Si le LOF détermine qu'il est anormal, il sera émis comme une erreur, et s'il est déterminé comme étant normal, le résultat d'identification de Sofmax sera émis comme avant.
LOF utilise scikit-learn et apprend avec les paramètres suivants. ・ N-voisins: 20 ・ Contamination: 0,001 ・ Nouveauté: vrai
Les deux types d'ensembles de données suivants sont utilisés comme cibles pour la détection d'anomalies.
Dataset th> | Fashion-MNIST th> | Cifar-10 th> tr> |
---|---|---|
Vue d'ensemble td> | Ensemble de données d'images de mode pour chemises, sacs, chaussures, etc. (10 classes) td> | Ensemble de données d'images naturelles pour les avions, les voitures, les chiens, etc. (10 classes) td> tr> |
Exemple d'image td> | td> | td> tr> |
Il n'y a pas de données numériques dans les deux cas, Fashion-MNIST est une image en échelle de gris de 28 x 28 pixels, alors utilisez-la telle quelle, et Cifar-10 est une image en couleur de 32 x 32 pixels, utilisez-la après la mise à l'échelle et le redimensionnement des gris Je vais. Étant donné que Deep Nerual Net est appris uniquement avec des caractères manuscrits MNIST, les deux sont des images inconnues ** lorsqu'elles sont visualisées à partir de ** Deep Neural Net. Je voudrais tester si ces deux ensembles de données sont correctement repoussés comme des anomalies dans le LOF de l'espace d'entités de la couche finale.
À titre de référence, nous utiliserons la détection d'anomalies lorsque LOF est appliqué dans l'espace d'entités d'entrée.
** LOF dans l'espace des fonctionnalités d'entrée: référence **
Données th> | Jugement normal th> | Jugement anormal th> tr> |
---|---|---|
MNIST | 0.99 | 0.01 |
Fashion-MNIST | 0.70 | 0.30 |
Cifar-10 | 0.16 | 0.84 |
Bien que MNIST puisse reconnaître 99% comme normal, la plage de la normale est trop large, 70% de Fashion-MNIST est normal et 16% de Cifar-10 est normal.
** À la dernière couche de Deep Metric Learning (L2-constrained Softmax Loss) LOF: Cette méthode de temps **
Données th> | Jugement normal th> | Jugement anormal th> tr> |
---|---|---|
MNIST | 0.99 | 0.01 |
Fashion-MNIST | 0.12 | 0.88 |
Cifar-10 | 0.05 | 0.95 |
Tout en maintenant 99% du jugement normal de MNIST, 88% de Fashion-MNIST et 95% de Cifar-10 peuvent être jugés anormaux.
Si vous souhaitez repousser un peu plus d'anomalies, vous pouvez augmenter la contamination (rapport des valeurs aberrantes dans les données d'apprentissage), et le résultat lorsque la contamination est de 0,01 est le suivant.
Données th> | Jugement normal th> | Jugement anormal th> tr> |
---|---|---|
MNIST | 0.96 | 0.04 |
Fashion-MNIST | 0.02 | 0.98 |
Cifar-10 | 0.00 | 1.00 |
4% des données MNIST sont jugées anormales, Avec Fashion-MNIST, 98% et avec Cifar-10, toutes les images peuvent être jugées anormales. Comme vous pouvez le voir sur l'image qui n'a pas réussi à identifier, MNIST contient des données difficiles à identifier en premier lieu, donc compte tenu de la précision de la détection d'anomalies, cela semble être meilleur pour une utilisation pratique.
J'ai également réalisé une démo qui peut être traitée en temps réel avec Flask. Lorsqu'un caractère autre qu'un nombre arrive, il est rejeté comme anormal (pas de chiffre) et il peut être confirmé que le numéro est toujours identifié.
En effectuant un apprentissage à distance avec Deep Metric Learning, il a été découvert dans une démonstration simple qu'il est facile d'appliquer à la détection d'anomalies ainsi qu'à améliorer la précision de l'identification. Il est facile à comprendre en tant que concept, et en particulier Softmax Loss contraint L2 a l'avantage d'être très facile à mettre en œuvre car il ne met des contraintes que sur la norme L2.
Dans le futur, je voudrais présenter différentes méthodes tout en démontrant autant que possible de cette manière.
<Référence> Article Qiita ・ Un piège que n'importe qui peut facilement créer un RPA ・ Un piège que quiconque peut construire un VBA peut facilement créer un RPA ・ J'ai créé un outil de vérification du codage UiPath [RPA] ・ La raison pour laquelle la RPA est si bonne que vous pouvez approfondir votre compréhension de la RPA ・ Livres recommandés par RPA ・ Les personnes qui conviennent au développement RPA, celles qui ne le sont pas ・ J'ai essayé d'automatiser la fabrication des sushis
démo
Recommended Posts