I recognize that this is a stats forum and the expectation is a focus on mathematical derivations, but if it can be helpful and you're using Python, there is a package for classification with noisy labels called `cleanlab`: https://github.com/cgnorthcutt/cleanlab/. (Disclaimer: I am the author of cleanlab)

The `cleanlab` Python package, `pip install cleanlab`, for which I am an author, finds label errors in datasets and supports classification/learning with noisy labels. It works with scikit-learn, PyTorch, Tensorflow, FastText, etc.

For learning with noisy labels.

    # Code taken from https://github.com/cgnorthcutt/cleanlab
    from cleanlab.classification import LearningWithNoisyLabels
    from sklearn.linear_model import LogisticRegression
    
    # Learning with noisy labels in 3 lines of code.
    
    # Wrap around any classifier. Works with sklearn/pyTorch/Tensorflow/FastText/etc.
    lnl = LearningWithNoisyLabels(clf=LogisticRegression())
    lnl.fit(X = X_train_data, s = train_noisy_labels)
    # Estimate the predictions you would have gotten by training with *no* label errors.
    predicted_test_labels = lnl.predict(X_test)


To find label errors in your dataset.

    from cleanlab.latent_estimation import estimate_cv_predicted_probabilities

    # Find the indices of label errors in 2 lines of code.

    probabilities = estimate_cv_predicted_probabilities(
        X_train_data, 
        train_noisy_labels, 
        clf=LogisticRegression(),
    )
    label_error_indices = get_noise_indices(
        s = train_noisy_labels, 
        psx = probabilities, 
    )


Some examples with [FastText][1] (NLP) and [PyTorch][2] (MNIST AlexNet).

Documentation: https://l7.curtisnorthcutt.com/cleanlab-python-package

  [1]: https://github.com/cgnorthcutt/cleanlab/blob/master/tests/test_model_fasttext.py
  [2]: https://github.com/cgnorthcutt/cleanlab/blob/master/tests/test_model_pytorch_cnn.py