Pourquoi un Micro F1 de 0,94 peut cacher un classifieur inutile : analyse d’un problème multi-étiquette
DeepPavlov
En prenant l’exemple de la modération IA pour Discord, l’article montre que la métrique agrégée micro F1 peut masquer des échecs sur des classes rares mais critiques. L’auteur met en garde contre le suivi aveugle du principe KISS dans les tâches multi-étiquettes et explique comment le déséquilibre des classes, le choix de la fonction de perte et les métriques de sélection des points de contrôle affectent la qualité réelle du modèle.
L'auteur développe une modération IA pour Discord basée sur un modèle ruBERT tiny2, affiné pour la classification multi-étiquettes avec 15 étiquettes (SAFE, TOXIC, ADVERTISEMENT, SPAM, SCAM, THREAT, EVASION, FLOOD, et autres). Le jeu de données contient environ un million d'exemples étiquetés. Après l'entraînement, le modèle a atteint un micro F1 de test de 0,9358 et un macro F1 de 0,8396 — une différence de près de 0,1 signalait la nécessité de vérifier les métriques pour chaque classe individuellement. Il s'est avéré que les classes rares (par exemple, EVASION avec 35 000 échantillons) se noient dans la masse des classes fréquentes (SAFE avec 400 000), et le micro F1 ne reflète pas les erreurs sur celles-ci. Pour lutter contre le déséquilibre, le poids positif a été utilisé dans BCEWithLogitsLoss. Une analyse détaillée a révélé que TOXIC a un rappel d'environ 0,78, ce qui signifie que le modèle rate une partie notable des messages toxiques. Les classes FLOOD et IMAGE_SCAM sont presque absentes de la division de test, mais leur traitement est délégué à d'autres composants du système, pas au classificateur de texte. L'auteur note également que la sélection du meilleur point de contrôle basé sur la perte d'entraînement mène au surajustement : la variante optimale a été trouvée en utilisant le macro F1, pas la perte. Le principal enseignement : le principe KISS s'applique à l'implémentation, mais pas à la tâche — le déséquilibre des classes, les différences de métriques, la précision et le rappel séparés pour chaque classe, et les coûts d'erreur ne peuvent pas être ignorés. La prochaine étape est de calibrer les seuils pour chaque classe individuellement.
Source: Habr — хаб NLP —
original
