[PYTHON] Introduction and Implementation of 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 and Implementation of JoCoR-Loss (CVPR2020)
Introduction and implementation of activation function
Explanation and implementation of SocialFoceModel
Introduction and tips of mlflow.Tracking
Explanation and implementation of PRML Chapter 4
Explanation and implementation of ESIM algorithm
Explanation and implementation of simple perceptron
Explanation and implementation of Decomposable Attention algorithm
Easy introduction of python3 series and OpenCV3
Introduction of PyGMT
Introduction of cymel
Introduction of Python
Comparison of k-means implementation examples of scikit-learn and pyclustering
Implementation of TRIE tree with Python and LOUDS
Explanation of edit distance and implementation in Python
Introduction of trac (Windows + trac 1.0.10)
Play with the UI implementation of Pythonista3 [Super Super Introduction]
Introduction of ferenOS 1 (installation)
Introduction of Virtualenv wrapper
Sequential update of covariance to derivation and implementation of expressions
Implementation of Fibonacci sequence
I touched Wagtail (3). Investigation and implementation of pop-up messages.
Perceptron basics and implementation
Implementation of DB administrator screen by Flask-Admin and Flask-Login
Overview of generalized linear models and implementation in Python
Python implementation of CSS3 blend mode and talk of color space
[Deep Learning from scratch] Implementation of Momentum method and AdaGrad method
Derivation and implementation of update equations for non-negative tensor factorization
[Introduction to cx_Oracle] (Part 4) Fetch and scroll of result set
[Reinforcement learning] Explanation and implementation of Ape-X in Keras (failure)
[Introduction to Scipy] Calculation of Lorenz curve and Gini coefficient ♬
[Introduction to Data Scientists] Basics of Python ♬ Functions and classes
Theory and implementation of multiple regression models-why regularization is needed-
Introduction of DataLiner ver.1.3 and how to use Union Append
Verification and implementation of video reconstruction method using GRU and Autoencoder
Explanation of CSV and implementation example in each programming language
Quantum computer implementation of quantum walk 2
Problems of liars and honesty
Mechanism of pyenv and virtualenv
Implementation of TF-IDF using gensim
Implementation of MathJax on Sphinx
Pre-processing and post-processing of pytest
[Introduction to cx_Oracle] Overview of cx_Oracle
Combination of recursion and generator
Combination of anyenv and direnv
Normalizing Flow theory and implementation
Introduction of activities applying Python
Implementation of game theory-Prisoner's dilemma-
Differentiation of sort and generalization of sort
Implementation of independent component analysis
Coexistence of pyenv and autojump
Quantum computer implementation of quantum walk 3
Introduction of caffe using pyenv
Python implementation of particle filters
Use and integration of "Shodan"
Problems of liars and honesty
Maxout description and implementation (Python)
Occurrence and resolution of tensorflow.python.framework.errors_impl.FailedPreconditionError
Implementation of quicksort in Python
Comparison of Apex and Lamvery
Source installation and installation of Python