J'ai étudié des méthodes d'apprentissage semi-supervisées et j'ai découvert le concept de "pseudo-étiquetage".
Si je comprends bien, avec le pseudo-étiquetage, vous avez un ensemble de données étiquetées ainsi qu'un ensemble de données non étiquetées. Vous entraînez d'abord un modèle uniquement sur les données étiquetées. Vous utilisez ensuite ces données initiales pour classer (attacher des étiquettes provisoires) les données non étiquetées. Vous réinjectez ensuite à la fois les données étiquetées et non étiquetées dans votre formation de modèle, (ré) ajustant à la fois les étiquettes connues et les étiquettes prédites. (Répétez ce processus, réétiquetant avec le modèle mis à jour.)
Les avantages revendiqués sont que vous pouvez utiliser les informations sur la structure des données non étiquetées pour améliorer le modèle. Une variation de la figure suivante est souvent montrée, "démontrant" que le processus peut rendre une limite de décision plus complexe en fonction de l'endroit où se trouvent les données (sans étiquette).
Image de Wikimedia Commons par Techerin CC BY-SA 3.0
Cependant, je n'achète pas tout à fait cette explication simpliste. Naïvement, si le résultat de la formation étiquetée uniquement d'origine était la limite de décision supérieure, les pseudo-étiquettes seraient attribuées en fonction de cette limite de décision. Ce qui revient à dire que la main gauche de la courbe supérieure serait pseudo-étiquetée blanche et la main droite de la courbe inférieure serait pseudo-étiquetée noire. Vous n'obtiendrez pas la belle frontière de décision incurvée après le recyclage, car les nouvelles pseudo-étiquettes renforceraient simplement la frontière de décision actuelle.
Ou pour le dire autrement, la limite de décision actuelle uniquement étiquetée aurait une précision de prédiction parfaite pour les données non étiquetées (comme c'est ce que nous avons utilisé pour les faire). Il n'y a pas de force motrice (pas de gradient) qui nous amènerait à changer l'emplacement de cette limite de décision simplement en ajoutant les données pseudo-étiquetées.
Ai-je raison de penser que l'explication incarnée par le diagramme fait défaut? Ou y a-t-il quelque chose qui me manque? Sinon, quel est l'avantage des pseudo-étiquettes, étant donné que la frontière de décision de pré-recyclage a une précision parfaite sur les pseudo-étiquettes?
Attention, je ne suis pas un expert de cette procédure. Mon incapacité à produire de bons résultats n'est pas la preuve que la technique ne peut pas fonctionner. De plus, votre image a la description générale de l'apprentissage "semi-supervisé", qui est un vaste domaine avec une variété de techniques.
Je suis d'accord avec votre intuition, je ne vois pas comment une technique comme celle-ci pourrait fonctionner hors de la boîte. En d'autres termes, je pense que vous auriez besoin de beaucoup d'efforts pour le faire fonctionner correctement pour une application spécifique, et cet effort ne serait pas nécessairement utile dans d'autres applications.
J'ai essayé deux instances différentes, l'une avec un ensemble de données en forme de banane comme celui de l'exemple d'image, et un autre ensemble de données plus facile avec deux clusters distribués normaux simples. Dans les deux cas, je n'ai pas pu améliorer le classificateur initial.
Dans une petite tentative pour encourager les choses, j'ai ajouté du bruit à toutes les probabilités prédites dans l'espoir que cela entraînerait de meilleurs résultats.
Le premier exemple, j'ai recréé l'image ci-dessus aussi fidèlement que possible. Je ne pense pas que le pseudo-étiquetage puisse aider du tout ici.
Le deuxième exemple est beaucoup plus facile, mais même ici, il ne parvient pas à améliorer le classificateur initial. J'ai spécifiquement choisi le point étiqueté du centre de la classe gauche, et le côté droit de la classe droite en espérant qu'il se déplacerait dans la bonne direction, pas de chance.
Code pour l'exemple 1 (l'exemple 2 est suffisamment similaire pour que je ne le reproduise pas ici):
la source
Voici ma supposition (je ne sais pas grand-chose sur ce sujet non plus, je voulais juste ajouter mes deux cents à cette discussion).
Je pense que vous avez raison, il est inutile de former un modèle classique et d'utiliser ses prédictions comme données, car comme vous le dites, rien n'incite l'optimiseur à faire mieux. Je suppose que les algorithmes à démarrage aléatoire sont plus susceptibles de trouver le même optimum car ils seraient "plus sûrs" que l'optimum trouvé précédemment est correct, en raison de l'ensemble de données plus important, mais cela n'est pas pertinent.
Cela dit, la première réponse que vous avez reçue a un point - cet exemple sur Wikipédia parle de clustering, et je pense que cela fait toute la différence. Lorsque vous avez des données non étiquetées, vous avez essentiellement un tas de points non étiquetés se trouvant sur un "espace d'entités latentes" partagé comme les autres étiquetés. Vous ne pouvez vraiment faire mieux qu'un algorithme de classification formé sur les données étiquetées, si vous pouvez découvrir le fait que les points non étiquetés peuvent être séparés puis classés en fonction de la classe à laquelle appartiennent les points étiquetés, sur cet espace d' entités latentes.
Ce que je veux dire, c'est que vous devez faire ceci:
... puis répétez avec des données non étiquetées. Ici, les limites de cluster apprises ne seront pas les mêmes, car le clustering ne se soucie pas des étiquettes de classe, il ne tient qu'à transformer l'espace des fonctionnalités. Le clustering génère un espace d'entités latentes, sur lequel la limite de classification est apprise, et cela ne dépend que des données étiquetées.
Les algorithmes qui n'effectuent aucune sorte de clustering, je crois, ne pourront pas changer leur optimum en fonction de l'ensemble de données non étiqueté.
Soit dit en passant, l'image que vous avez liée fait du bon travail, je pense d'expliquer ce qui se passe ici; une frontière de décision est apprise basée uniquement sur l'algorithme de clustering. Vous n'avez aucune idée des bonnes classes ici - il se peut qu'elles soient toutes aléatoires - nous ne savons pas. Tout ce que nous pouvons maintenant, c'est qu'il semble y avoir une certaine structure dans l'espace des fonctionnalités, et il semble y avoir un mappage de l'espace des fonctionnalités vers les étiquettes de classe.
Je n'ai pas vraiment de références mais sur ce post Reddit , si je comprends bien, il y a une discussion sur un GAN effectuant un apprentissage semi-supervisé. C'est un de mes calculs qu'il effectue implicitement un regroupement, suivi d'une classification.
la source