Работа с шумными учебными метками в текстовой классификации с использованием глубокого обучения
У меня есть набор данных, который состоит из предложений и соответствующих мульти-меток (например, предложение может принадлежать нескольким меткам). Используя комбинацию сверточных нейронных сетей и рекуррентных нейронных сетей на языковых моделях (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).