Dlaczego stosowanie pseudoetykietowania nie wpływa trywialnie na wyniki?

19

Patrzyłem na częściowo nadzorowane metody uczenia się i natknąłem się na koncepcję „pseudo-etykietowania”.

Jak rozumiem, dzięki pseudo-etykietowaniu masz zestaw danych oznaczonych etykietą, a także zestaw danych nieznakowanych. Najpierw trenujesz model tylko na danych z etykietami. Następnie wykorzystujesz te początkowe dane do klasyfikowania (dołączania tymczasowych etykiet) do nieoznaczonych danych. Następnie przekazujesz zarówno oznakowane, jak i nieznakowane dane z powrotem do treningu modelu, (ponownie) dopasowując zarówno do znanych etykiet, jak i do przewidywanych etykiet. (Powtórz ten proces, ponownie oznakuj zaktualizowanym modelem).

Twierdzone korzyści polegają na tym, że można wykorzystać informacje o strukturze nieznakowanych danych do ulepszenia modelu. Często pokazana jest odmiana poniższego rysunku, „demonstrująca”, że proces może uczynić bardziej złożoną granicę decyzji w oparciu o to, gdzie leżą (nieznakowane) dane.

Granica decyzji w metodach częściowo nadzorowanych

Zdjęcie z Wikimedia Commons autorstwa Techerin CC BY-SA 3.0

Jednak nie do końca kupuję to uproszczone wyjaśnienie. Naiwnie, jeśli pierwotny wynik szkolenia tylko z etykietą był górną granicą decyzji, pseudo-etykiety byłyby przypisywane na podstawie tej granicy decyzji. To znaczy, że lewa ręka górnej krzywej byłaby pseudo-oznakowana na biało, a prawa ręka dolnej krzywej byłaby pseudo-oznakowana na czarno. Po przekwalifikowaniu nie uzyskasz ładnej zakrzywionej granicy decyzji, ponieważ nowe pseudo-etykiety po prostu wzmocnią obecną granicę decyzji.

Innymi słowy, obecna granica decyzji oznaczona jako jedyna miałaby idealną dokładność prognozowania dla nieznakowanych danych (ponieważ właśnie to robiliśmy). Nie ma siły napędowej (brak gradientu), która spowodowałaby zmianę położenia granicy decyzji po prostu poprzez dodanie pseudo-etykietowanych danych.

Czy mam rację sądząc, że brakuje wyjaśnienia zawartego w schemacie? A może brakuje mi czegoś? Jeśli nie, jaka jest korzyść z pseudo-etykiet, biorąc pod uwagę, że granica decyzji przed ponownym przekwalifikowaniem ma doskonałą dokładność w stosunku do pseudo-etykiet?

RM
źródło

Odpowiedzi:

16

Pseudoetykietowanie nie działa na danym problemie z zabawką

Oliver i in. (2018) ocenił różne częściowo nadzorowane algorytmy uczenia się. Ich pierwszy rysunek pokazuje, jak pseudoetykietowanie (i inne metody) działa na tym samym problemie z zabawkami, co w twoim pytaniu (zwanym zestawem danych „dwóch księżyców”):

wprowadź opis zdjęcia tutaj

Wykres pokazuje oznakowane i nieznakowane punkty danych oraz granice decyzji uzyskane po szkoleniu sieci neuronowej przy użyciu różnych częściowo uczonych metod uczenia. Jak podejrzewasz, pseudoetykietowanie nie działa dobrze w tej sytuacji. Mówią, że pseudoetykietowanie „jest prostą heurystą, która jest szeroko stosowana w praktyce, prawdopodobnie ze względu na jej prostotę i ogólność”. Ale: „Chociaż intuicyjny, może jednak dawać niepoprawne wyniki, gdy funkcja przewidywania tworzy nieprzydatne cele dla [nieznakowanych danych], jak pokazano na ryc. 1.”

Dlaczego i kiedy działa pseudo-etykietowanie?

Pseudo-etykietowanie zostało wprowadzone przez Lee (2013), więc można tam znaleźć więcej szczegółów.

Założenie klastra

Teoretyczne uzasadnienie, które Lee podał dla pseudo-etykietowania, jest takie, że jest podobne do regularyzacji entropii. Normalizacja entropii (Grandvalet i Bengio 2005) to kolejna częściowo nadzorowana technika uczenia się, która zachęca klasyfikatora do dokonywania pewnych prognoz na temat nieznakowanych danych. Na przykład wolelibyśmy, aby przypisać punktowi nieznakowanemu wysokie prawdopodobieństwo bycia w określonej klasie, niż rozproszone prawdopodobieństwa rozłożone na wiele klas. Celem jest skorzystanie z założenia, że ​​dane są grupowane zgodnie z klasą (nazywane „założeniem klastra” w uczeniu częściowo nadzorowanym). Zatem punkty w pobliżu mają tę samą klasę, a punkty w różnych klasach są szerzej oddzielone, tak że granice prawdziwej decyzji przebiegają przez obszary o niskiej gęstości przestrzeni wejściowej.

Dlaczego pseudoetykietowanie może zawieść

Biorąc powyższe pod uwagę, rozsądne wydaje się odgadnięcie, że założenie klastra jest niezbędnym warunkiem działania pseudo-etykietowania. Ale najwyraźniej nie jest wystarczające, ponieważ powyższy problem dwóch księżyców spełnia założenia klastra, ale pseudo-etykietowanie nie działa. W tym przypadku podejrzewam, że problem polega na tym, że istnieje bardzo niewiele oznaczonych punktów, a właściwa struktura skupień nie może zostać zidentyfikowana na podstawie tych punktów. Tak jak Oliver i in. opisz (i jak wskazałeś w swoim pytaniu), powstałe pseudo-etykiety poprowadzą klasyfikatora w kierunku granicy niewłaściwej decyzji. Być może zadziałałoby, gdyby dane były bardziej oznaczone. Na przykład, porównaj to z przypadkiem MNIST opisanym poniżej, w którym działa pseudo-etykietowanie.

Gdzie to działa

Lee (2013) wykazał, że pseudoetykietowanie może pomóc w zestawie danych MNIST (ze 100-3000 oznakowanymi przykładami). Na ryc. 1 tego artykułu widać, że sieć neuronowa wyszkolona na 600 oznakowanych przykładach (bez jakiegokolwiek częściowo nadzorowanego uczenia) może już odzyskać strukturę klastrów między klasami. Wydaje się, że pseudoetykietowanie pomaga następnie udoskonalić strukturę. Zauważ, że jest to inaczej niż w przypadku dwóch księżyców, gdzie kilka oznaczonych punktów nie wystarczyło, aby nauczyć się odpowiednich klastrów.

W dokumencie wspomniano również, że wyniki były niestabilne, przy zaledwie 100 oznakowanych przykładach. To ponownie potwierdza pogląd, że pseudoetykietowanie jest wrażliwe na wstępne prognozy i że dobre wstępne prognozy wymagają wystarczającej liczby oznakowanych punktów.

Lee pokazał również, że bezobsługowy trening wstępny z wykorzystaniem denodujących autoencoderów pomaga dalej, ale wydaje się, że jest to osobny sposób wykorzystania struktury w nieoznaczonych danych; niestety nie było porównania z samym beztreningowym treningiem wstępnym (bez pseudo-etykietowania).

Grandvalet i Bengio (2005) podali, że pseudoetykietowanie bije nadzorowane uczenie się na zestawach danych CIFAR-10 i SVHN (odpowiednio z 4000 i 1000 oznaczonych przykładów). Jak wyżej, jest to znacznie więcej oznakowanych danych niż 6 oznaczonych punktów w problemie dwóch księżyców.

Bibliografia

  • Grandvalet and Bengio (2005) . Nauka częściowo nadzorowana przez minimalizację entropii.

  • Lee (2013) . Pseudo-etykieta: Prosta i wydajna częściowo nadzorowana metoda uczenia się w głębokich sieciach neuronowych.

  • Oliver i in. (2018) . Realistyczna ocena częściowo nadzorowanych algorytmów uczenia się.

user20160
źródło
5

To, co możesz przeoczyć w działaniu samokształcenia, to:

  1. Jest iteracyjny, a nie jednorazowy.

  2. Używasz klasyfikatora, który zwraca wartości probabilistyczne. Przy każdej iteracji dodajesz tylko etykiety psuedo dla przypadków, w których algorytm jest najbardziej pewny.

W twoim przykładzie być może pierwsza iteracja jest wystarczająco pewna, aby oznaczyć jeden lub dwa punkty bardzo blisko każdego z oznaczonych punktów. W następnej iteracji granica nieznacznie się obróci, aby pomieścić te cztery do sześciu oznaczonych punktów, a jeśli będzie nieliniowa, może również zacząć się lekko wyginać. Powtarzać.

Nie gwarantuje się, że zadziała. Zależy to od twojego podstawowego klasyfikatora, twojego algorytmu (jak pewny musisz być, aby przypisać pseudo-etykietę itp.), Twoich danych i tak dalej.

Istnieją również inne algorytmy, które są bardziej wydajne, jeśli możesz ich użyć. Uważam, że opisujesz samokształcenie, które łatwo jest zakodować, ale używasz jednego klasyfikatora, który wielokrotnie przegląda te same informacje. Podczas wspólnego treningu używa się wielu klasyfikatorów, z których każdy szuka różnych informacji dla każdego punktu. (Jest to nieco analogiczne do Losowych Lasów.) Istnieją również inne częściowo nadzorowane techniki - takie jak te, które jawnie łączą się w klaster - choć nie ma ogólnego „to zawsze działa i to jest zwycięzca”.

W odpowiedzi na komentarz: Nie jestem ekspertem w tej dziedzinie. Widzimy, że jest to bardzo przydatne do tego, co zwykle robimy z klientami, więc uczę się i nie znam wszystkich odpowiedzi.

Największym hitem, gdy szukam częściowo nadzorowanego przeglądu uczenia się, jest: Semi-Supervised Learning Literature Survey , z 2008 roku. To było wieki temu, pod względem komputerowym, ale mówi o rzeczach, o których tu wspomniałem.

Słyszę, że klasyfikator może z największą pewnością oceniać nieznakowane punkty, które są najbardziej oddalone od oznaczonych węzłów. Z drugiej strony nasze intuicje mogą nas oszukać. Rozważmy na przykład grafikę uzyskaną z Wikipedii z czarnymi, białymi i szarymi węzłami.

Po pierwsze, dzieje się to w 2D, a najbardziej realistyczne problemy będą w wyższych wymiarach, gdzie nasza intuicja często nas zwodzi. Przestrzenna przestrzeń działa na różne sposoby na różne sposoby - niektóre negatywne, a niektóre faktycznie pomocne.

Po drugie, możemy się domyślać, że w pierwszej iteracji dwa najbardziej po prawej, najniższe, szare punkty będą oznaczone jako czarne, ponieważ czarny punkt oznaczony jest bliżej nich niż punkt biały. Ale gdyby stało się to po obu stronach, pionowa granica decyzji nadal by się przechylała i nie była już pionowa. Przynajmniej w mojej wyobraźni, gdyby była linią prostą, schodziłaby po ukośnej pustej przestrzeni między dwoma oryginalnie oznaczonymi punktami. Nadal niepoprawnie podzieliłby dwa półksiężyce, ale teraz byłby bardziej dopasowany do danych. Kontynuacja iteracji - szczególnie z nieliniową granicą decyzji - może dać lepszą odpowiedź, niż się spodziewamy.

Po trzecie, nie jestem pewien, czy po oznaczeniu, zawsze oznakowaniu, tak naprawdę powinno to działać. W zależności od tego, jak to robisz i jak działa algorytm, możesz najpierw przechylić granicę podczas jej zginania (zakładając, że jest nieliniowa), a następnie niektóre błędnie sklasyfikowane części półksiężyców mogą zmienić ich etykiety.

Mam przeczucie, że te trzy punkty, w połączeniu z odpowiednimi (prawdopodobnie wyższymi wymiarami) danymi i odpowiednimi klasyfikatorami, mogą być lepsze niż zwykły nadzór z bardzo małą liczbą próbek szkoleniowych (oznaczonych). Nie ma gwarancji, a w moich eksperymentach znalazłem - obwiniam to zbyt proste zestawy danych - że częściowo nadzorowane mogą jedynie nieznacznie poprawić się w stosunku do nadzorowanych i czasami mogą zawieść. Z drugiej strony bawię się dwoma algorytmami, które stworzyłem, które mogą, ale nie muszą być dobre.

Wayne
źródło
2
Czy mógłbyś rozwinąć rodzaje klasyfikatorów / sytuacji, w których działałoby? Moje rozumienie większości klasyfikatorów pracujących na pokazanych przykładowych danych byłoby takie, że punkty są daleko od granicy decyzji (w porównaniu do znanych punktów), które uzyskałyby dużą pewność, więc te dystalne ogony byłyby pewnie źle sklasyfikowane w przykład. (Dodatkowo mile widziane są wszelkie odniesienia / dalsze lektury, które można wskazać na temat efektywnego stosowania pseudo-etykietowania i powiązanych technik).
RM
@RM Edytowane. Jak to?
Wayne
1

Ostrzeżenie, nie jestem ekspertem w tej procedurze. Moje niepowodzenie w uzyskiwaniu dobrych wyników nie jest dowodem na to, że technika nie może zostać uruchomiona. Ponadto twój wizerunek zawiera ogólny opis uczenia się „częściowo nadzorowanego”, który jest szerokim obszarem z różnorodnymi technikami.

Zgadzam się z twoją intuicją, nie widzę, jak taka technika mogłaby działać od razu po wyjęciu z pudełka. Innymi słowy, myślę, że trzeba by dużo wysiłku, aby działał dobrze w przypadku konkretnej aplikacji i wysiłek ten niekoniecznie byłby pomocny w innych aplikacjach.

Próbowałem dwóch różnych instancji, jednego z zestawem danych w kształcie banana, takim jak ten na przykładowym obrazie, i innego łatwiejszego zestawu danych z dwoma prostymi, normalnymi rozproszonymi klastrami. W obu przypadkach nie mogłem poprawić początkowego klasyfikatora.

Jako małą próbę zachęcania do tego, dodałem szum do wszystkich przewidywanych prawdopodobieństw z nadzieją, że przyniesie to lepsze wyniki.

Pierwszy przykład odtworzyłem powyższy obraz tak wiernie, jak tylko mogłem. Nie sądzę, aby etykietowanie psuedo mogło w ogóle tutaj pomóc.

Na przykład dane w kształcie banana

Drugi przykład jest znacznie łatwiejszy, ale nawet tutaj nie udaje mu się poprawić początkowego klasyfikatora. W szczególności wybrałem jeden oznaczony punkt ze środka lewej klasy i prawą stronę prawej klasy, mając nadzieję, że przesunie się we właściwym kierunku, bez powodzenia.

Przykład drugi, dane 2D normalnie rozłożone] =

Kod na przykład 1 (przykład 2 jest na tyle podobny, że nie powielę się tutaj):

import numpy as np
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
import seaborn

np.random.seed(2018-10-1)
N = 1000

_x = np.linspace(0, np.pi, num=N)
x0 = np.array([_x, np.sin(_x)]).T
x1 = -1 * x0 + [np.pi / 2, 0]

scale = 0.15
x0 += np.random.normal(scale=scale, size=(N, 2))
x1 += np.random.normal(scale=scale, size=(N, 2))

X = np.vstack([x0, x1])

proto_0 = np.array([[0], [0]]).T # the single "labeled" 0
proto_1 = np.array([[np.pi / 2], [0]]).T # the single "labeled" 1

model = RandomForestClassifier()
model.fit(np.vstack([proto_0, proto_1]), np.array([0, 1]))
for itercount in range(100):
    labels = model.predict_proba(X)[:, 0]
    labels += (np.random.random(labels.size) - 0.5) / 10 # add some noise
    labels = labels > 0.5
    model = RandomForestClassifier()
    model.fit(X, labels)

f, axs = plt.subplots(1, 2, squeeze=True, figsize=(10, 5))

axs[0].plot(x0[:, 0], x0[:, 1], '.', alpha=0.25, label='unlabeled x0')
axs[0].plot(proto_0[:, 0], proto_0[:, 1], 'o', color='royalblue', markersize=10, label='labeled x0')
axs[0].plot(x1[:, 0], x1[:, 1], '.', alpha=0.25, label='unlabeled x1')
axs[0].plot(proto_1[:, 0], proto_1[:, 1], 'o', color='coral', markersize=10, label='labeled x1')
axs[0].legend()

axs[1].plot(X[~labels, 0], X[~labels, 1], '.', alpha=0.25, label='predicted class 0')
axs[1].plot(X[labels, 0], X[labels, 1], '.', alpha=0.25, label='predicted class 1')
axs[1].plot([np.pi / 4] * 2, [-1.5, 1.5], 'k--', label='halfway between labeled data')
axs[1].legend()
plt.show()
kbrose
źródło
1

Oto moje przypuszczenie (też niewiele wiem na ten temat, chciałem tylko dodać dwa centy do tej dyskusji).

Myślę, że masz rację, nie ma sensu trenować klasycznego modelu i wykorzystywać jego prognoz jako danych, ponieważ, jak mówisz, nie ma zachęty dla optymalizatora, aby działał lepiej. Sądzę, że algorytmy uruchamiania losowego są bardziej skłonne do znalezienia tego samego optimum, ponieważ byłyby „bardziej pewne”, że wcześniej znalezione optymalne jest poprawne, ze względu na większy zestaw danych, ale to nie ma znaczenia.

To powiedziawszy, pierwsza odpowiedź, którą otrzymałeś, ma sens - ten przykład na Wikipedii mówi o klastrowaniu i myślę, że to robi różnicę. Kiedy masz nieoznakowane dane, zasadniczo masz kilka nieznakowanych punktów leżących na wspólnej „ukrytej przestrzeni cech”, jak inne oznaczone. Możesz naprawdę lepiej niż algorytm klasyfikacji wyszkolony na danych z etykietami, jeśli możesz odkryć fakt, że nieoznakowane punkty można oddzielić, a następnie sklasyfikować na podstawie klasy, do której należą punkty oznaczone, na tej ukrytej przestrzeni cech.

Chodzi mi o to, że musisz to zrobić:

lzabmillmirerezatzadolustmirjansoldolzassjafajadozatjaon

... a następnie powtórz z nieznakowanymi danymi. Tutaj wyuczone granice klastrów nie będą takie same, ponieważ klastrowanie nie dba o etykiety klas, wszystko, co bierze pod uwagę, to transformacja przestrzeni cech. Klastrowanie generuje utajoną przestrzeń elementów, na podstawie której uczy się granicy klasyfikacji, a to zależy tylko od danych oznakowanych.

Uważam, że algorytmy, które nie wykonują żadnego klastrowania, nie będą w stanie zmienić swojego optymalnego w oparciu o nieznakowany zestaw danych.

Nawiasem mówiąc, obraz, który połączyłeś, wykonuje dobrą robotę, myślę o wyjaśnieniu, co się tutaj dzieje; granica decyzji jest poznawana wyłącznie na podstawie algorytmu klastrowania. Nie masz pojęcia, jakie są odpowiednie klasy - być może wszystkie są losowe - nie wiemy. Wszystko, co możemy teraz, to to, że wydaje się, że istnieje pewna struktura w przestrzeni cech i wydaje się, że istnieje pewne odwzorowanie z przestrzeni cech na etykiety klas.

Naprawdę nie mam referencji, ale w tym poście Reddit , jak rozumiem, jest dyskusja na temat GAN przeprowadzającego częściowo nadzorowane uczenie się. Jest to moje przeczucie, że domyślnie wykonuje grupowanie, a następnie klasyfikację.

InfProbSciX
źródło