使用深度学习处理文本分类中的嘈杂训练标签
Dealing with noisy training labels in text classification using deep learning
我有一个由句子和相应的多标签组成的数据集(例如,一个句子可以属于多个标签)。在语言模型 (Word2Vec) 上结合使用卷积神经网络和循环神经网络,我能够获得很好的准确性。然而,它/太/擅长对输出建模,因为很多标签可以说是错误的,因此输出也是错误的。这意味着评估(即使有正则化和辍学)给人一种错误的印象,因为我没有基本事实。清理标签的成本高得令人望而却步。所以我只能以某种方式探索 "denoising" 标签。我看过 "Learning from Massive Noisy Labeled Data for Image Classification" 之类的东西,但是他们假设要在输出上学习某种噪声协方差矩阵,我不确定如何在 Keras 中做到这一点。
有没有人处理过多标签文本分类设置中的噪声标签问题(最好使用 Keras 或类似工具)并且对如何学习带有噪声标签的鲁棒模型有好的想法?
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) and PyTorch (MNIST AlexNet CNN) 的工作示例。
可在此处获取其他文档:https://l7.curtisnorthcutt.com/cleanlab-python-package
我有一个由句子和相应的多标签组成的数据集(例如,一个句子可以属于多个标签)。在语言模型 (Word2Vec) 上结合使用卷积神经网络和循环神经网络,我能够获得很好的准确性。然而,它/太/擅长对输出建模,因为很多标签可以说是错误的,因此输出也是错误的。这意味着评估(即使有正则化和辍学)给人一种错误的印象,因为我没有基本事实。清理标签的成本高得令人望而却步。所以我只能以某种方式探索 "denoising" 标签。我看过 "Learning from Massive Noisy Labeled Data for Image Classification" 之类的东西,但是他们假设要在输出上学习某种噪声协方差矩阵,我不确定如何在 Keras 中做到这一点。
有没有人处理过多标签文本分类设置中的噪声标签问题(最好使用 Keras 或类似工具)并且对如何学习带有噪声标签的鲁棒模型有好的想法?
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) and PyTorch (MNIST AlexNet CNN) 的工作示例。
可在此处获取其他文档:https://l7.curtisnorthcutt.com/cleanlab-python-package