[PYTHON] Pourquoi le Deep Metric Learning basé sur la fonction Softmax fonctionne

introduction

Dans l'apprentissage à distance (Metric Learning) utilisant le Deep Learning, les similitudes (et les dissemblances) entre les images sont utilisées en utilisant Contrastive Loss et Triplet Loss. ) Est largement utilisé, mais il est également connu qu'il est difficile de combiner et de sélectionner les données d'apprentissage, et l'apprentissage lui-même est souvent difficile. Pour cette raison, diverses améliorations et ingéniosité ont été proposées jusqu'à présent. Cependant, récemment, Metric Learning, qui vous permet d'apprendre à partir de la fonction Softmax, a attiré l'attention comme s'il s'agissait d'une tâche de classification générale sans avoir de difficulté à sélectionner ces données d'entraînement. ArcFace etc. est une méthode typique et est expliquée en détail dans ici. Pourquoi Metric Learning basé sur la fonction Softmax fonctionne-t-il et y a-t-il place à des améliorations supplémentaires? Je voudrais en présenter un peu plus.

Center Loss Center Loss [^ Center] est probablement à l'origine de l'incorporation des éléments de l'apprentissage métrique dans la classification. Center Loss a été expliqué en détail à ici, donc je ne présenterai que brièvement les principaux points. La perte de centre apprend la classification de classe et la position du centre de classe dans l'espace d'entités en même temps en pénalisant la distance entre chaque vecteur d'entités et le centre de classe correspondant. En conséquence, la variation intra-classe est réduite et cela a été annoncé à l'ECCV 2016 comme une méthode plus efficace de séparation des classes.

Dans cet article, la couche FC juste avant la couche finale de CNN est améliorée à deux dimensions, et la valeur est tracée telle quelle sur le plan bidimensionnel pour visualiser la quantité de caractéristiques. La figure ci-dessous montre les fonctionnalités intermédiaires lors de la classification de MNIST avec la fonction Softmax normale.

スクリーンショット 2020-02-03 17.45.57.png

La fonction de perte est la perte d'entropie croisée Softmax normale plus le terme de perte centrale pour la distance entre chaque vecteur d'entités et le vecteur central de sa classe. スクリーンショット 2020-02-03 18.09.05.png

Puisqu'il n'est pas réaliste de calculer le centre de classe $ C_ {y_i} $ avec précision à chaque fois, le calcul suivant est effectué pour chaque mini-lot, et le centre de classe $ C_ {y_i} $ est mis à jour séquentiellement. Je vais.

スクリーンショット 2020-02-03 19.02.18.png スクリーンショット 2020-02-03 19.02.32.png スクリーンショット 2020-02-03 19.06.13.png

Voici un exemple concret de mise à jour centrée sur la classe. S'il y a trois données appartenant à la classe A dans le mini-lot, $ A1 $, $ A2 $ et $ A3 $, la position centrale $ C_A $ de la classe A sera mise à jour comme indiqué dans la figure ci-dessous.

スクリーンショット 2020-02-03 19.22.49.png

Enfin, voici une visualisation des résultats de Center Loss. Vous pouvez voir qu'en augmentant la valeur de l'hyper paramètre $ \ lambda $, la variation intraclasse diminue également.

スクリーンショット 2020-02-03 19.32.22.png

Sphereface Il a constaté que l'espace des caractéristiques lorsqu'il était formé à l'aide de la fonction Softmax avait une distribution angulaire unique et a insisté sur le fait que la marge basée sur l'angle était plus appropriée que la marge basée sur la distance euclidienne telle que la perte centrale. La perte angulaire Softmax (A-Softmax) a été proposée [^ Sphere] et adoptée à CVPR2017.

Je voudrais les examiner dans l’ordre. Premièrement, les pertes d'entropie croisées Softmax habituelles sont: スクリーンショット 2020-02-03 22.30.08.png Ensuite, c'est la formule du produit intérieur\boldsymbol{a}\cdot\boldsymbol{b}=\|\|\boldsymbol{a}\|\|\,\|\|\boldsymbol{b}\|\|\cos\thetaAvec\boldsymbol{W^T_j}Quand\boldsymbol{x_i}Réécrivez la partie interne du produit de. スクリーンショット 2020-02-03 22.49.50.png De plus, normalisez les paramètres de poids\|\|\boldsymbol{W_j}\|\| = 1Et biaisb_jAussi0À Ensuite, nous avons ce qui suit, que nous définissons comme une perte Softmax modifiée. スクリーンショット 2020-02-03 23.03.35.png Voyons ensuite quelle est la limite de décision dans ce $ L_ {modifié} $. Une limite de décision est une valeur limite où deux classes ont exactement la même probabilité.

En supposant que l'angle entre le poids de classe 1 $ W_1 $ et l'entité $ x_i $ est $ \ cos \ theta_1 $ et l'angle entre le poids de classe 2 $ W_2 $ et l'entité $ x_i $ est $ \ cos \ theta_2 $ Ces deux probabilités sont exactement les mêmes lorsque les conditions suivantes sont remplies.

\frac{e^{\|\boldsymbol{x_i}\|\cos\theta_1}}{\sum_{j} e^{\|\boldsymbol{x_i}\|\cos(\theta_{j,i})}} = \frac{e^{\|\boldsymbol{x_i}\|\cos\theta_2}}{\sum_{j} e^{\|\boldsymbol{x_i}\|\cos(\theta_{j,i})}} \\
\|\boldsymbol{x_i}\|\cos\theta_1 = \|\boldsymbol{x_i}\|\cos\theta_2 \\
\theta_1 = \theta_2

Par conséquent, la probabilité de classe 1 et de classe 2 est exactement la même s'il y a $ x_i $ dans la direction linéaire qui divise l'angle des poids $ W_1 $ et $ W_2 $ en deux parties égales. スクリーンショット 2020-02-03 23.42.12.png À partir de ce résultat, on peut voir que le montant de la fonction $ x_i $ appris par Softmax Loss est essentiellement distribué le long de l'angle du dernier poids $ Wj $ immédiatement avant de multiplier par softmax. スクリーンショット 2020-02-03 23.54.56.png Cela suggère que combiner des marges basées sur la distance euclidienne comme la perte centrale avec la fonction Softmax n'est pas très compatible, et ** fournir des marges le long de l'angle est le plus efficace. Cela montre qu'il s'agit d'une cible **.

Angular Softmax (A-Softmax) Loss La perte angulaire Softmax (A-Softmax) est définie comme suit: スクリーンショット 2020-02-04 0.29.05.png Puisque $ L_ {modifié} $ est pénalisé d'un coefficient de $ m $ uniquement pour l'angle $ \ theta_ {y_i, i} $ formé par le poids $ W_ {y_i} $ de sa propre classe, la frontière de décision originale est fixée. On s'attend à ce que cela ait pour effet de déplacer le poids de votre classe plus près de $ W_ {y_i} $ que la position. スクリーンショット 2020-02-04 0.39.42.png

CosFace et ArcFace

Il y a plusieurs propositions pour Sphereface et au-delà de prendre des marges le long de l'angle comme le prétend Sphereface. CosFace [^ Cosface] et ArcFace [^ Arcface] en sont des exemples. スクリーンショット 2020-02-04 0.59.41.png

Je vais omettre les détails, mais brièvement, puisque CosFace normalise également $ x_i $, l'angle entre les deux vecteurs, $ \ cos \ theta $, est exprimé comme la similitude. C'est désormais possible. Nous avons également introduit un hyper paramètre $ s $ pour éviter l'échec de Softmax car la valeur de $ \ cos \ theta $ est trop petite. Depuis lors, ArcFace a modifié l'emplacement des marges. Étant donné que la marge est spécifiée directement pour l'angle, la limite de séparation dans Softmax est linéaire et constante sur tout l'intervalle.

Uniform Loss En ajoutant un nouveau terme appelé Perte uniforme à la perte Softmax basée sur le cosinus tel que Sphereface, une méthode est proposée qui impose des contraintes de distribution égales qui répartissent uniformément le centre de classe et utilisent au mieux l'espace des fonctionnalités [^ Uniformface] ]c'était fait. Adopté au CVPR 2019. La perte uniforme fonctionne en considérant le centre d'une classe comme une charge avec une répulsion interclasse sur l'hypersphère, qui est un espace de caractéristiques, et en minimisant son énergie potentielle. De nombreuses méthodes existantes à ce jour visent à augmenter la distance inter-classe et à réduire la variation intra-classe, mais Uniform Loss s'attend également à maximiser la distance inter-classe minimale. Je peux le faire.

Dans le cas de ** Center Loss **, il minimise simplement la distance entre les éléments de la classe et le centre de la classe, et ne décrit pas les relations entre les classes en premier lieu. スクリーンショット 2020-02-04 13.03.15.png

Dans le cas de ** Sphereface **, ** Cosface **, ** Arcface **, la frontière discriminante avec une marge est apprise sur l'hypersphère, et par conséquent, la variation intraclasse est petite et la distance interclasse est petite. L'apprentissage progresse au fur et à mesure qu'il grandit. Cependant, étant donné que rien ne contraint explicitement la distribution globale de l'espace d'entités, il peut s'agir d'un arrangement local dans l'espace d'entités et peut être déséquilibré. スクリーンショット 2020-02-04 13.08.08.png

La perte uniforme est motivée par le fait que lorsque des charges sont placées à la surface d'une sphère, l'énergie potentielle est minimisée lorsqu'elles sont uniformément réparties, de sorte que le centre de la classe est considéré comme la charge et son potentiel. La fonction qui représente l'énergie est exprimée en perte. スクリーンショット 2020-02-04 13.15.19.png

Définissez une force répulsive $ F $ entre deux classes qui est inversement proportionnelle au carré de cette distance. スクリーンショット 2020-02-04 13.17.52.png

La fonction de distance $ d $ suit la loi de Coulomb et utilise la distance euclidienne. Ajoutez également 1 pour éviter que la force répulsive $ F $ ne devienne trop importante. スクリーンショット 2020-02-04 13.21.18.png

Formulez la perte uniforme comme la moyenne de toutes les énergies par paires centrées sur la classe. スクリーンショット 2020-02-04 13.25.32.png

La partie fonction de la fonction Loss (Cosine Based Softmax Loss) de Sphereface est la suivante. スクリーンショット 2020-02-04 13.30.10.png

La somme de ces deux pertes est la fonction de perte finale. スクリーンショット 2020-02-04 13.31.25.png

Enfin, il existe une méthode de mise à jour centrée sur la classe, qui est exactement la même que celle de Center Loss.

Soit dit en passant, si N points sont placés sur une surface sphérique tridimensionnelle et disposés de telle sorte que la valeur minimale de la distance sphérique entre les points soit la maximale, quelle est la longueur de la distance sphérique? Ce problème s'appelle le problème de Tammes, et il semble être l'un des problèmes mathématiques non résolus pour lesquels une réponse complète n'a pas encore été trouvée.

P2SGrad Dans le cadre d'une recherche conjointe entre SenseTime Research et l'Université chinoise de Hong Kong, deux articles, AdaCos [^ Adacos] et P2SGrad [^ P2sgrad], ont été publiés simultanément par le même auteur le 7 mai 2019. Les deux documents ont été adoptés au CVPR 2019 (AdaCos a été adopté par Oral). En plus de la méthode proposée, j'ai trouvé particulièrement intéressant de mentionner les différences essentielles entre la perte Softmax basée sur le cosinus telles que Sphereface, Cosface et Arcface, et le processus d'optimisation du gradient. AdaCos a déjà été expliqué ici, je voudrais donc examiner de plus près P2SGrad.

Maintenant, en ce qui concerne P2SGrad, je pense qu'il vaut la peine de mentionner que le modèle peut être optimisé sans formuler une fonction de perte spécifique. Indépendamment de l'apprentissage métrique, il est une pratique courante en apprentissage profond général de définir une fonction de perte et d'apprendre tout en mettant à jour les poids et les biais afin que la fonction de perte devienne plus petite. Cependant, dans P2SGrad, la direction et l'amplitude optimales du gradient pour mettre à jour le vecteur de poids dans l'espace des caractéristiques sont directement obtenues, et une rétropropagation est effectuée pour procéder à l'optimisation des paramètres. De plus, le fait que vous n'ayez pas à définir une fonction de perte signifie que vous n'avez pas à ajuster les hyperparamètres tels que $ m $ et $ s $ qui étaient dans la fonction de perte d'ArcFace et CosFace.

Rétropropagation de la perte Softmax basée sur le cosinus

Tout d'abord, vérifions le gradient pour la perte Softmax basée sur le cosinus sans marge angulaire. Les $ f_ {i, j} $ suivants sont les logits de la classe $ j $ de la fonction $ \ vec {x_i} $.

f_{i,j}  = s \cdot \frac{\langle \vec{x_i}, \vec{W_j} \rangle}{\|\vec{x_i}\|_2\|\vec{W_j}\|_2} = s \cdot \langle \boldsymbol{\hat{x_i}}, \boldsymbol{\hat{W_j}} \rangle = s \cdot \cos\theta_{i,j} \tag{1}

$ \ Boldsymbol {\ hat {x_i}} $ et $ \ boldsymbol {\ hat {W_j}} $ représentent les vecteurs normalisés de $ \ vec {x_i} $ et $ \ vec {W_j} $, respectivement.

Si le nombre de classes est $ C $, la probabilité $ P_ {i, j} $ que la $ i $ ème entité soit de classe $ j $ peut être écrite comme suit avec la fonction Softmax.

P_{i,j} = Softmax(f_{i,j}) = \frac{e^{f_{i,j}}}{\sum^{C}_{k=1}e^{f_{i,k}}} \tag{2}

Si la classe correcte est $ y_i $, alors Cross Entropy Loss ressemble à ceci:

L_{CE}(\vec{x_i}) =-\log{P_{i, y_i}} = -\log{\frac{e^{f_{i,y_i}}}{\sum^{C}_{k=1}e^{f_{i,k}}}} \tag{3}

Pour ce $ L_ {CE} (\ vec {x_i}) $, trouvez le gradient de $ \ vec {x_i} $ et $ \ vec {W_j} $.

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{x_i}} = \sum_{j=1}^{C}(P_{i,j} - \mathbb{1}(y_i=j)) \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} \tag{4}
\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = (P_{i,j} - \mathbb{1}(y_i=j)) \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{5}

La fonction $ \ mathbb {1} (y_i = j) $ est $ 1 $ quand $ j = y_i $ et $ 0 $ sinon. De plus, $ \ frac {\ partial \ cos \ theta_ {i, j}} {\ partial \ vec {x_i}} $ et $ \ frac {\ partial \ cos \ theta_ {i, j}} {\ partial \ vec { Lorsque W_j}} $ est calculé, les valeurs vectorielles sont les suivantes.

\frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} = \frac{1}{\|\vec{x_i}\|_2}(\boldsymbol{\hat{W_j}} - \cos\theta_{i,j} \cdot \boldsymbol{\hat{x_i}}) \tag{6}
\frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = \frac{1}{\|\vec{W_j}\|_2}(\boldsymbol{\hat{x_i}} - \cos\theta_{i,j} \cdot \boldsymbol{\hat{W_j}}) \tag{7}

Ensuite, calculez la partie $ \ nabla f (\ cos \ theta_ {i, j}) $. Puisque $ f $ est une fonction qui représente la partie logits, $ f (\ cos \ theta_ {i, j}) $ sans marge angulaire est $ s \ cdot \ cos \ theta_ {i, j} $. Par conséquent, $ \ nabla f (\ cos \ theta_ {i, j}) = s $. Dans le cas de Cosface, $ f (\ cos \ theta_ {i, y_i}) = s \ cdot (\ cos \ theta_ {i, y_i} --m) $, donc $ \ nabla f (\ cos \ theta_ {i, y_i} ) = s $, et dans le cas d'Arcface, $ f (\ cos \ theta_ {i, y_i}) = s \ cdot \ cos (\ theta_ {i, y_i} + m) $, donc $ \ nabla f (\ cos) \ theta_ {i, y_i}) = s \ cdot \ frac {\ sin (\ theta_ {i, y_i} + m)} {\ sin \ theta_ {i, y_i}} $.

Dans tous les cas, $ \ nabla f (\ cos \ theta_ {i, j}) $ est une valeur scalaire déterminée par les paramètres $ s $, $ m $ et $ \ cos \ theta_ {i, y_i} $. De plus, comme nous utilisons habituellement la valeur de $ s> 1 $, tout ce qui précède est $ \ nabla f (\ cos \ theta_ {i, j})> 1 $.

Maintenant, trions $ \ frac {\ partial L_ {CE} (\ vec {x_i})} {\ partial \ vec {W_j}} $ par $ j $.

Pour $ j \ neq y_i $

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = P_{i,j} \cdot \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = T \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{8}

Si $ j = y_i $

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = (P_{i,j} - 1) \cdot \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = U \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{9}

Puisque $ P_ {i, j} $ est la valeur de Softmax, la plage de valeurs possibles est $ P_ {i, j} \ in [0, 1] $. En d'autres termes, $ T $ et $ U $ dans l'équation ci-dessus sont des valeurs scalaires comprises entre $ T> 0 $ et $ U <0 $, respectivement.

Le vecteur de poids $ \ vec {W_j} $ est optimisé par rétropropagation comme suit.

\vec{W_j} \leftarrow \vec{W_j} - \eta\cdot \frac{\partial L_{CE}}{\partial \vec{W_j}} \tag{10}

En résumant sur la base de ces faits, nous pouvons voir ce qui suit.

--Il existe diverses pertes Softmax basées sur le cosinus telles que CosFace et ArcFace, mais les directions de gradient à mettre à jour sont toutes les mêmes. La différence essentielle entre eux est la longueur du gradient, qui influe grandement sur l'optimisation du modèle.

スクリーンショット 2020-02-05 8.19.29.png

Longueur du dégradé

Comme nous l'avons vu, la longueur du dégradé est $ (P_ {i, j} - \ mathbb {1} (y_i = j)) \ cdot \ nabla f (\ cos \ theta_ {i, j}) $ , ** $ P_ {i, j} $ a un effet important sur la longueur du dégradé **. De plus, $ P_ {i, j} $ a une corrélation positive avec les logits $ f_ {i, j} $. Et les logsits $ f_ {i, j} $ sont fortement influencés par les hyperparamètres $ s $ et $ m $.

Regardons un exemple d'ArcFace. $ f_ {i, y_i} $ est $ s \ cdot \ cos (\ theta_ {i, y_i} + m) $. Vous pouvez voir que la valeur de $ P_ {i, y_i} $ change considérablement même si les hyperparamètres $ s $ et $ m $ sont différents et que le même $ \ theta_ {i, y_i} $ est utilisé.

スクリーンショット 2020-02-05 10.30.36.png

Ce qui devrait être reconsidéré ici est l'objectif initial d'ArcFace. ArcFace ne veut pas classer, mais veut savoir si l'angle $ \ theta $ entre les deux vecteurs extraits $ \ vec {x_1} $ et $ \ vec {x_2} $ est proche. En d'autres termes, la taille de $ \ theta_ {i, y_i} $ doit affecter la longueur du dégradé (c'est-à-dire $ P_ {i, j} $), ce qui est important dans la rétropropagation. , Les hyper paramètres $ s $ et $ m $ sont fortement impliqués. Et encore une chose. La valeur de $ P_ {i, y_i} $ change également en fonction du nombre de classes $ C $. Au fur et à mesure que le nombre de classes $ C $ augmente, la probabilité d'être assigné à la classe incorrecte $ P_ {i, j} $ devrait diminuer plus ou moins. Cela a du sens pour les problèmes de classification fermés. Cependant, cela ne convient pas à la reconnaissance faciale, qui est un problème Open-Set.

Il y a aussi $ \ nabla f (\ cos \ theta_ {i, j}) $ comme valeur qui affecte la longueur du dégradé. Cela dépend du type de perte Softmax basée sur le cosinus.

Pour la perte Softmax basée sur le cosinus sans marge angulaire

\nabla f(\cos\theta_{i,j}) = s \tag{11}

Pour Cosface

\nabla f(\cos\theta_{i,j}) = s \tag{12}

Pour Arcface

\nabla f(\cos\theta_{i,j}) = s \cdot \frac{\sin(\theta_{i,j} + m)}{\sin\theta_{i,j}} \tag{13}

Ce sera.

En d'autres termes, dans Cosine Based Softmax Loss, qui n'a pas de marge angulaire, et Cosface, l'effet de $ \ nabla f (\ cos \ theta_ {i, j}) $ sur la longueur de la pente est toujours constant $ s $. Cela montre que. Cependant, dans Arcface, la longueur du gradient et $ \ theta_ {i, j} $ sont négativement corrélés, ce qui est complètement inattendu. La diminution progressive de $ \ theta_ {i, y_i} $ tend généralement à réduire le gradient de $ P_ {i, y_i} $, mais Arcface a tendance à augmenter sa longueur. Par conséquent, Arcface n'explique pas les implications géométriques de $ \ nabla f (\ cos \ theta_ {i, j}) $ sur la longueur du gradient.

スクリーンショット 2020-02-05 11.59.19.png

Proposition de P2S Grad pour déterminer la longueur du gradient

De là, je vais enfin expliquer la nouvelle méthode ** P2SGrad ** qui détermine la longueur du gradient uniquement par $ \ theta_ {i, j} $, quels que soient les hyperparamètres, le nombre de classes ou les logs. Je vais. P2SGrad examine les équations $ (4) $ et $ (5) $ pour trouver directement le gradient sans définir une fonction de perte spécifique. Tout d'abord, la direction de la pente est la direction la plus appropriée comme expliqué jusqu'à présent, il n'est donc pas nécessaire de la modifier ici. Ensuite, considérons $ P_ {i, j} $ et $ \ nabla f (\ cos \ theta_ {i, j}) $, qui sont les parties de longueur du dégradé. En ce qui concerne $ \ nabla f (\ cos \ theta_ {i, j}) $, je l'examine dans le but d'exclure les hyper paramètres en premier lieu, donc je le définirai à $ 1 $ ici.

Ensuite, envisagez d'utiliser $ P_ {i, j} $ mais $ \ cos \ theta_ {i, j} $ au lieu de $ P_ {i, j} $. Il y a trois raisons ci-dessous.

Dans cet esprit, nous formulerons un nouveau P2SGrad. Les expressions $ (4) $ et $ (5) $ sont remplacées par les expressions $ (14) $ et l'expression $ (15) $, respectivement.

\tilde{G}_{P2SGrad}(\vec{x_i}) = \sum_{j=1}^{C}(\cos\theta_{i,j} - \mathbb{1}(y_i=j)) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} \tag{14}
\tilde{G}_{P2SGrad}(\vec{W_j}) = (\cos\theta_{i,j} - \mathbb{1}(y_i=j)) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{15}

Ce P2SGrad est concis mais très rationnel. Si $ y_i = j $, la longueur du gradient et $ \ theta_ {i, j} $ ont une corrélation positive, et si $ j \ neq y_i $, il y a une corrélation négative.

Enfin, je vais vous expliquer comment apprendre. En apprentissage général, la perte d'entropie croisée de formule $ (3) $ est obtenue par traitement avant, puis la formule $ (4) $ et la formule $ (5) $ sont rétropropagées à partir de la couche finale par propagation en retour, et le poids de chaque couche Trouvez le gradient du paramètre de biais dans l'ordre. Dans l'entraînement à l'aide de P2SGrad, la formule $ (14) $ et la formule $ (15) $ sont calculées directement à partir du montant de la caractéristique $ \ vec {x_i} $ obtenu par le traitement avant. Après cela, il se propage dans la même procédure que l'apprentissage normal, et le poids de chaque couche et le gradient du paramètre de biais sont obtenus dans l'ordre.

Expérience

Pour des résultats expérimentaux détaillés, voir l'article original, et pour référence, je publierai les résultats expérimentaux avec l'ensemble de données LWF. La partie CNN utilise ResNet-50 et montre la relation entre l'itération d'apprentissage et la valeur moyenne de $ \ theta_ {i, y_i} $. スクリーンショット 2020-02-05 16.13.14.png On peut voir que l'apprentissage avec P2SGrad diminue $ \ theta_ {i, y_i} $ plus rapidement que les autres pertes Softmax basées sur le cosinus.

Recommended Posts

Pourquoi le Deep Metric Learning basé sur la fonction Softmax fonctionne
[AI] Apprentissage métrique profond
Fonction d'apprentissage profond / softmax
Note récapitulative sur le Deep Learning -4.2 Fonction de perte-
Accélérez l'apprentissage en profondeur avec le processeur Rasperry Pi 4
Note récapitulative sur l'apprentissage profond -4.3 Méthode de gradient
L'apprentissage en profondeur
[Python / Machine Learning] Pourquoi le Deep Learning # 1 Perceptron Neural Network
GitHub du bon livre "Deep Learning from scratch"