[PYTHON] [Documents et mise en œuvre] Si l'on vous demande "Cet ensemble de données est-il difficile?" ...

L'apprentissage du réseau neuronal convolutif (CNN) prend du temps.

En particulier, si vous essayez vraiment d'améliorer la précision sans utiliser l'apprentissage par transfert, cela prendra environ 5 jours ** Il y a des moments. Les articles présentés dans cet article expliquent quantitativement la difficulté des ensembles de données. En évaluant, la précision de la classification peut être estimée à grande vitesse sans apprendre CNN. C'est.

ダウンロード (1).png

papier

Aperçu

Chevauchement de classe

La clé de cet article est "s'il y a beaucoup de chevauchement entre les deux classes" dans la tâche de classification d'image. Le problème de classification est un problème difficile. "

image.png

La figure ci-dessus est mon propre travail. Maintenant, si vous utilisez CNN pour incorporer une image dans un espace 2D Faire.

Et, pour classer les points orange et les points bleus, contrairement à la figure de gauche, Il semble que le problème de droite soit plus facile à classer. En d'autres termes, ce Plus il y a de chevauchement entre les classes, plus le problème de classification est difficile.

En termes de formules mathématiques, s'il y a plusieurs points dans le même groupe que vous près d'un certain point, il y aura duplication. Petit (problème de classification facile), grande duplication s'il y a beaucoup de points dans un groupe différent de vous Cela semble être un (problème de classification difficile).

Le document présente la formule suivante.

image.png

Cette formule exprime le degré de duplication de la classe $ C_j $ vu de la classe $ C_i $.

Puisque M et V sont des valeurs constantes, mises de côté pour le moment, $ K_ {C_j} $ est l'image x de la classe $ C_i $ Le nombre de classes $ C_j $ à proximité. En d'autres termes, si $ K_ {C_j} $ est grand, le chevauchement est grand. Je peux dire.

Ici, $ \ phi (x) \ in R ^ d $ est le vecteur dans lequel l'image x de $ C_i $ est imbriquée, et M est de $ C_j $. Le nombre d'échantillons extraits, V est la taille de l'hypercube. finalement L'équation (4) est appliquée à l'image de la classe $ C_i $ pour prendre la somme.

Puisque l'équation (4) ne peut calculer que le degré de duplication entre deux classes, S'il y a plusieurs classes, calculez le degré de chevauchement pour chaque classe. est nécessaire.

Si le nombre de classes est K, la matrice de similarité $ S \ in R ^ {K \ times K} $ sera Il est défini. $ S_ {ij} $ est calculé par la somme de l'équation (4).

Si chaque élément de $ S $ est grand, cela signifie que l'équation (4) est une grande valeur. Vu de la classe i, il y a de nombreuses classes j à proximité. En d'autres termes, c'est un problème de classification difficile.

Clustering spectral

Après cela, comment utiliser $ S $ pour quantifier la difficulté du problème de classification C'est le problème.

L'article utilise la classification spectrale.

Le clustering spectral était à l'origine un clustering d'apprentissage non supervisé Cela semble être la méthode utilisée. Divisez chaque graphique là où la connexion est faible Ce faisant, même les problèmes de division qui sont difficiles avec la méthode des k-moyens, etc. peuvent être clairement divisés. Il est possible de. Veuillez consulter le lien ci-dessous pour plus de détails. https://www.slideshare.net/pecorarista/ss-51761860 https://qiita.com/sakami/items/9b3d57d4be3ff1c70e1d

En clustering spectral, le Laplacien suivant L Quantifier la difficulté de diviser un graphique en trouvant une valeur unique peut faire.

L=D-W

Lorsqu'il est appliqué à cet article, $ S_ {ij} $ est considéré comme un graphe, et il est difficile de le diviser. Il quantifie (difficulté de classement). Généralement, la valeur unique de L est Il semble que plus il est grand, plus il est difficile de se diviser, mais dans cet article, comme cela sera décrit plus loin. En capturant et en quantifiant non seulement la taille de la valeur propre mais aussi la tendance de la valeur propre Une ** quantification plus précise ** est possible.

Pour l'expression de L, D est défini comme $ D_i = \ sum_jw_ {i, j} $. Je voudrais attribuer $ S $ directement à W, mais W a la contrainte d'une matrice symétrique. Par conséquent, il est symétrique en utilisant la formule suivante.

image.png

Si vous affichez d'abord les résultats expérimentaux, la difficulté de l'ensemble de données avec W seul Peut être estimé. La figure ci-dessous montre les résultats d'une expérience utilisant CIFAR10.

image.png

La rangée supérieure est le résultat expérimental de W. La matrice de confusion par inférence d'AlexNet formée dans la rangée inférieure. Vous pouvez voir que l'estimation W est très similaire au résultat de l'inférence AlexNet. Cela touche également la situation où il est difficile de faire la distinction entre «chien» et «chat».

Laplacien L

Vérifiez le traitement jusqu'à ce point. Image → Embarqué → Chevauchement entre les classes calculées par l'équation (4) → Calculer la valeur unique de L

Juste en regardant la valeur maximale de la valeur propre du laplacien L comme mentionné ci-dessus Difficulté à diviser les graphiques (difficulté du jeu de données dans cet article) Peut être estimé.

Si vous affichez d'abord les résultats expérimentaux, la valeur maximale ou le total des valeurs propres Vous pouvez estimer la difficulté d'un jeu de données simplement en le regardant.

image.png

Le tableau ci-dessus montre les résultats des expériences utilisant CIFAR10.

Même en regardant simplement la somme des valeurs uniques, les performances dépassent celles de la méthode conventionnelle.

Dans le tableau ci-dessus, les quatre «méthodes d'incorporation» suivantes sont disponibles.

Au fait, la méthode décrite dans cet article prétend être "haute vitesse", mais vous devez entraîner l'encodeur automatique. Un bon CSG ne peut pas être calculé. Le temps indiqué entre parenthèses dans le tableau ci-dessus est le temps d'apprentissage de l'encodeur automatique. Comme vous pouvez le voir, c'est environ deux fois plus rapide que la méthode traditionnelle. (C'est toujours incroyable.)

CSG Enfin, j'expliquerai sur CSG. Si les valeurs propres sont disposées dans l'ordre croissant de i = 0,1,2 ..., commencez par normaliser avec la formule suivante.

image.png

Puis calculez le CSG.

image.png

Ici, en supposant que cummax a la séquence [1,4,3,2]

cummax[1,4,3,2] = [1,4,4,4]

Veux dire. En d'autres termes, lors de la lecture dans l'ordre à partir de la gauche, il a été lu Une fonction qui enregistre la valeur maximale d'un nombre.

Résultat expérimental

Le tableau ci-dessous montre les résultats des expériences utilisant MNIST. image.png

Comme vous pouvez le voir, à mesure que le nombre de classes dans mnist augmente, le CSG et le taux d'erreur augmentent également. Vous pouvez voir (corrélation). À propos, le mnist bleu clair signifie "mnist 1". Autrement dit, il n'y a qu'une seule classe.

Le tableau ci-dessous présente les résultats d'expériences utilisant différents ensembles de données (nombre de classes: 10).

image.png

Il convient de noter qu'il existe une corrélation entre le taux d'erreur CSG (rouge) et AlexNet (bleu). Vous pouvez voir que CSG fonctionne correctement même si les ensembles de données sont différents.

La figure ci-dessous montre les résultats d'une expérience utilisant un ensemble de données appelé MioTCD.

image.png

Ici, le CSG est calculé en réduisant le nombre de données. Et au CSG Le taux d'erreur augmentera proportionnellement. Dans cet ensemble de données Vous pouvez voir qu'il n'y a pas de problème même si les données sont réduites d'environ 80%.

D'autre part, dans CIFAR10, car les données sont réduites comme indiqué dans le tableau suivant. Le taux d'erreur augmentera régulièrement.

image.png

Encore une fois, vous pouvez voir que la CSG augmente proportionnellement au taux d'erreur.

En outre, à l'aide de la matrice W, appliquez MDS à l'équation suivante pour déterminer la similitude entre les classes. Il peut être visualisé.

S=1-W

La figure ci-dessous est une figure avec MDS appliqué.

image.png

MNIST est bien séparé entre les classes, mais dans le cas de CIFAR10 «Chien» et «chat», «cerf» et «oiseau» sont proches et se ressemblent Je comprends. En d'autres termes, ceux-ci sont relativement difficiles à distinguer.

la mise en oeuvre

En conclusion, MDS et W ont réussi à obtenir des résultats, mais le fait est ** Le CSG ne s'est pas bien reproduit. ** **

Conditions de mise en œuvre

Le but de l'expérience est de "voir la transition du CSG tout en réduisant les données du CIFAR10". En d'autres termes, il reproduit le tableau 6.

L'encodeur automatique pour l'intégration a été testé dans les conditions suivantes.

Méthode d'intégration

La méthode d'incorporation sera celle avec le score le plus élevé dans l'article. La technique est CSG $ CNN_ {AE} $ t-SNE.

Ceci est calculé par la procédure suivante.

Stabilisation de la douleur

Le CSG produit dans l'expérience n'est pas très stable. En premier lieu, la valeur unique qui ressort du document Comme il n'a pas été reproduit, je pense que quelque chose ne va pas avec la mise en œuvre. Je ne pouvais pas le comprendre de ma propre capacité.

Les mesures suivantes sont prises pour le stabiliser d'une manière ou d'une autre.

À la suite des mesures ci-dessus, la CSG a été calculée 5 x 5 = 25 fois pour chaque taille de données, et la valeur moyenne a été calculée.

Résultat de la mise en œuvre

J'ai calculé la CSG, mais parfois le coefficient de corrélation est d'environ 0,9, et parfois il est de 0. Je peux dire que je ne peux pas du tout lui faire confiance.

Cependant, W et MDS ont des résultats similaires à ceux de l'article, je vais donc les rapporter.

ダウンロード.png

Bien que W ait donné des résultats similaires, la similitude entre «chien» et «chat» est comme dans l'article. Ce n'était pas une grande valeur.

ダウンロード (1).png

Les résultats du MDS sont similaires à ceux de l'article. Correctement, «chat» et «chien», «cerf» et «berd» sont à proximité.

Vitesse d'exécution

Cette fois, je l'ai vérifié à l'aide du GPU de Colaboratory. En ce qui concerne le GPU, ** Pas question ** Tesla P100 '' est sorti, donc quand j'ai utilisé Tesla K80 '' entre parenthèses pour le moment J'écrirai également le temps à retenir.

L'heure ci-dessus est l'heure à laquelle toutes les données de CIFAR10 sont utilisées. Comme vous pouvez le voir, la vitesse d'exécution est plus rapide que d'entraîner CNN et de voir directement la précision de la classification. Je comprends.

Résumé

En appliquant les résultats ci-dessus, ** Réduction efficace de la quantité de données classifiées, efficace dans le nettoyage des données ** Cela peut marcher. J'écrirai ces détails dans le prochain article.

Recommended Posts

[Documents et mise en œuvre] Si l'on vous demande "Cet ensemble de données est-il difficile?" ...
Que comparez-vous avec Python et ==?
Vérifier si vous êtes un universitaire