Co-training, Co-training, Co-training, Co-training, Co-training, Co-training

Le co-training est une technique d’apprentissage semi-supervisé introduite par Blum et Mitchell en 1998. Cette méthode exploite simultanément plusieurs vues indépendantes d’un même ensemble de données pour améliorer la qualité de la classification, même avec un nombre limité d’exemples étiquetés.


Contexte et problématique

En apprentissage automatique classique, la performance des modèles dépend fortement de la quantité de données étiquetées disponibles. Dans de nombreux domaines, obtenir ces annotations est coûteux ou laborieux. Le co-training vise à tirer parti des données non étiquetées pour améliorer l’apprentissage sans nécessiter de labels supplémentaires.


Principe du co-training

Le co-training repose sur l’hypothèse que les données disposent de deux (ou plusieurs) vues indépendantes et complémentaires. Par exemple, dans un problème de classification d’emails, une vue peut être le texte du message, l’autre la liste des expéditeurs.


Étapes clés du co-training

  1. Séparation des vues
    Les données sont divisées en deux représentations distinctes, chacune suffisamment riche pour apprendre.
  2. Apprentissage initial
    Deux classificateurs sont entraînés séparément sur les données étiquetées pour chaque vue.
  3. Auto-labeling sur les données non étiquetées
    Chaque classificateur prédit les labels des données non étiquetées. Les prédictions les plus confiantes sont ajoutées à l’ensemble d’entraînement de l’autre classificateur.
  4. Itération
    Cette procédure se répète plusieurs fois, chaque modèle renforçant l’autre grâce à ses prédictions fiables.

Conditions nécessaires

ConditionImportance
Indépendance conditionnelleLes vues doivent être suffisamment indépendantes conditionnellement à la classe.
Suffisamment informativeChaque vue doit être capable d’apprendre la tâche seule.

Illustration schématique

luaCopierModifierVue 1 (texte) ------> Classificateur 1
                 ↘              ↗
                  Données non étiquetées
                 ↗              ↘
Vue 2 (métadonnées) ---> Classificateur 2

Avantages du co-training


Limites et précautions


Applications typiques


Exemple simple en Python (pseudocode)

pythonCopierModifier# Initialisation
classifieur1.train(data_labellee_vue1)
classifieur2.train(data_labellee_vue2)

for iteration in range(max_iter):
    pred1 = classifieur1.predict(data_non_labellee_vue1)
    conf1 = classifieur1.confidences(data_non_labellee_vue1)

    pred2 = classifieur2.predict(data_non_labellee_vue2)
    conf2 = classifieur2.confidences(data_non_labellee_vue2)

    # Sélection des exemples les plus confiants
    confident_examples1 = select_confident(pred1, conf1)
    confident_examples2 = select_confident(pred2, conf2)

    # Mise à jour des jeux de données étiquetées
    data_labellee_vue2 += confident_examples1
    data_labellee_vue1 += confident_examples2

    # Réentraînement
    classifieur1.train(data_labellee_vue1)
    classifieur2.train(data_labellee_vue2)

Variantes et évolutions


Conclusion

Le co-training est une méthode efficace d’apprentissage semi-supervisé qui permet d’exploiter des données non étiquetées grâce à la collaboration de plusieurs classificateurs sur différentes vues. Si les hypothèses sont respectées, elle améliore significativement les performances avec peu de données annotées.

Co-training