Работа с шумными учебными метками в текстовой классификации с использованием глубокого обучения

У меня есть набор данных, который состоит из предложений и соответствующих мульти-меток (например, предложение может принадлежать нескольким меткам). Используя комбинацию сверточных нейронных сетей и рекуррентных нейронных сетей на языковых моделях (Word2Vec), я могу добиться хорошей точности. Тем не менее, он / слишком / хорош в моделировании выходных данных, в том смысле, что многие метки, возможно, ошибочны и, следовательно, тоже выходной. Это означает, что оценка (даже с упорядочением и отсевом) производит неправильное впечатление, поскольку у меня нет основательной правды. Очистка этикеток была бы чрезмерно дорогой. Так что мне осталось как-то исследовать "шумоподавление" лейблов. Я смотрел на такие вещи, как "Изучение массивных данных с пометками с шумом для классификации изображений", однако они предполагают изучить некую матрицу ковариационных шумов на выходах, что я не знаю, как это сделать в Керасе.

Кто-нибудь сталкивался с проблемой шумовых меток в настройке классификации текста с несколькими метками (в идеале, с использованием Keras или аналогичной) и имеет хорошие идеи о том, как создать надежную модель с шумными метками?

0 ответов

cleanlab Пакет Python, pip install cleanlab, для которого я являюсь автором, был разработан специально для этой цели: https://github.com/cgnorthcutt/cleanlab/ Это профессиональный пакет, созданный для очистки / удаления шума с меток в наборах данных и обучения с использованием шумных меток. Он работает с любой готовой моделью scikit-learn и может использоваться с PyTorch, FastText, Tensorflow и т. Д.

Чтобы найти ошибки метки в вашем наборе данных.

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, 
)

Для обучения с шумными метками.

# 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)

Учитывая, что вы работаете с классификацией NLP и классификацией изображений, здесь приведены рабочие примеры с FastText (NLP) и PyTorch (MNIST AlexNet CNN).

Другие вопросы по тегам