[PYTHON] Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)

Introduction of the paper

This work, named Combating Noisy Labels by Agreement: A Joint Training Method with Co-Regularization[CVPR2020],isgenerallybasedonco-teaching[NIPS2018]. To explain what this paper is about, we need some basic conception about co-teaching.

co-teaching co-teaching is a framework that is proposed for robust training against noise. This paper aims to mitigate the negative impact of noisy labels on model training.

The specific method is:

image.png

This is the concept of co-teaching. A and B denote two models.

JoCoR-Loss

This work follows most of the settings of co-teaching, like

The core technology that this paper proposed, is a novel loss, which named JoCoR Loss.

image.png image.png

image.png

image.png

This new loss function forces the two models to give the same prediction. According to the author, this Contrastive loss function should be lower when the label is clean, so the model can distinguish whether a label is clean by this loss.

image.png

Here are the experiment results on the noisy CIFAR-10 dataset. This method absolutely outperforms the previous method.

My opinion about JoCoR loss

image.png

Since this loss compares 2 prediction vectors, but not two Cross_Entropy Loss. So this KL-divergences has nothing to do with the labels. So I don't think that this loss is helpful for selecting data with clean samples. I think the prediction of 2 models will be similar for the images that have significant features which are easy to be distinguished. But this novel loss did help the model to achieve better performance, I think the reason should be:

To support my opinion, I ran an easy experiment. I let the model select clean sample without JoCor loss( the original way ), and backward the loss with JoCoR loss . And I got a similar test accuracy..

So for me, the meaning of this paper is showing that training two models and force them predicting samely is useful. And I think this idea can apply to other tasks. What I have done

Recommended Posts

Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)
Introduction et mise en œuvre de la fonction d'activation
Explication et mise en œuvre de SocialFoceModel
Introduction et astuces de mlflow.
Explication et mise en œuvre de PRML Chapitre 4
Explication et implémentation de l'algorithme ESIM
Explication et mise en œuvre du perceptron simple
Explication et implémentation de l'algorithme Decomposable Attention
Introduction facile de la série python3 et d'OpenCV3
Introduction de PyGMT
Introduction de Python
Comparaison d'exemples d'implémentation de k-means de scikit-learn et pyclustering
Implémentation de l'arbre TRIE avec Python et LOUDS
Explication de la distance d'édition et de l'implémentation en Python
Introduction de trac (Windows + trac 1.0.10)
Jouez avec l'implémentation de l'interface utilisateur de Pythonista 3 [Super Super Primer]
Introduction de ferenOS 1 (installation)
Introduction du wrapper Virtualenv
Mise à jour séquentielle de la co-distribution pour la dérivation et l'implémentation des expressions
Implémentation de la séquence de Fibonacci
J'ai touché Bergeronnette (3). Enquête et mise en place de messages pop-up.
Principes de base et mise en œuvre de Perceptron
Implémentation de l'écran de l'administrateur DB par Flask-Admin et Flask-Login
Implémentation Python du mode de fusion CSS3 et discussion sur l'espace colorimétrique
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Dérivation et implémentation d'équations de mise à jour pour la décomposition de facteurs tensoriels non négatifs
[Introduction à cx_Oracle] (Partie 4) Récupération et défilement du jeu de résultats
[Introduction à Scipy] Calcul de la courbe de Lorenz et du coefficient de Gini ♬
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
Théorie et mise en œuvre de modèles de régression multiple - pourquoi une régularisation est nécessaire -
Introduction de DataLiner ver.1.3 et comment utiliser Union Append
Vérification et mise en œuvre de la méthode de reconstruction vidéo en utilisant GRU et Autoencoder
Explication du CSV et exemple d'implémentation dans chaque langage de programmation
Implémentation informatique quantique de Quantum Walk 2
Le problème des menteurs et de l'honnêteté
Mécanisme de pyenv et virtualenv
Implémentation de TF-IDF à l'aide de gensim
Implémentation de MathJax sur Sphinx
Pré-traitement et post-traitement de pytest
[Introduction à cx_Oracle] Présentation de cx_Oracle
Combinaison de récursif et de générateur
Combinaison de anyenv et direnv
Normalisation de la théorie et de la mise en œuvre des flux
Introduction d'activités appliquant Python
Mise en œuvre de la théorie des jeux - Le dilemme du prisonnier -
Différenciation du tri et généralisation du tri
Mise en œuvre d'une analyse de composants indépendante
Coexistence de pyenv et autojump
Implémentation informatique quantique de Quantum Walk 3
Introduction de caffe en utilisant pyenv
Implémentation Python du filtre à particules
Utilisation et intégration de "Shodan"
Le problème des menteurs et de l'honnêteté
Description et implémentation de Maxout (Python)
Occurrence et résolution de tensorflow.python.framework.errors_impl.FailedPreconditionError
Implémentation du tri rapide en Python
Comparaison d'Apex et de Lamvery
Installation source et installation de Python