Dlaczego dane powinny być tasowane dla zadań uczenia maszynowego


30

W zadaniach uczenia maszynowego często tasuje się dane i normalizuje je. Cel normalizacji jest jasny (dla tego samego zakresu wartości cech). Ale po wielu zmaganiach nie znalazłem żadnego cennego powodu do przetasowania danych.

Przeczytałem tutaj ten post omawiający, kiedy musimy tasować dane, ale nie jest oczywiste, dlaczego powinniśmy tasować dane. Ponadto często widywałem w algorytmach takich jak Adam lub SGD, gdzie potrzebujemy spadku gradientu wsadowego (dane powinny być rozdzielone na mini-partie i należy podać rozmiar partii). Zgodnie z tym postem istotne jest tasowanie danych dla każdej epoki, aby mieć różne dane dla każdej partii. Być może dane są tasowane i, co ważniejsze, zmieniane.

Dlaczego to robimy?


1
Przydatne może być dokładne określenie, dlaczego odpowiedź w pierwszym linku nie pomogła. W przeciwnym razie ryzykujemy powtórzenie treści, które już tam powiedziano, z niewielkimi ulepszeniami.
E_net4 mówi Przywróć

Jak już powiedziałem, chcę wiedzieć, dlaczego nie, a wiesz dlaczego? czy to tam naprawdę jest wyjaśnione? W ogóle nie widziałem żadnej gazety
Media

1
Aby uzyskać więcej informacji na temat wpływu zamawiania przykładów, przeczytaj Curriculum Learning [pdf].
Emre,

1
Wysłałem to na CrossValidated i myślę, że to jest istotne. stats.stackexchange.com/a/311318/89653
Josh

@Emre faktycznie ten artykuł jest przeciwko tasowaniu, dzięki, nie słyszałem o tego rodzaju nauce.
Media

Odpowiedzi:


18

Na podstawie tego, co powinniśmy zrobić, gdy pytanie zadane na DataScience jest duplikatem pytania zadanego na CrossValidated? , Ponownie publikuję odpowiedź na to samo pytanie zadane w CrossValidated ( https://stats.stackexchange.com/a/311318/89653 ).

Uwaga: w tej odpowiedzi odnoszę się do minimalizacji strat treningowych i nie omawiam kryteriów zatrzymania, takich jak utrata walidacji. Wybór kryteriów zatrzymania nie wpływa na proces / koncepcje opisane poniżej.

Proces uczenia sieci neuronowej polega na znalezieniu minimalnej wartości funkcji utraty , gdzie reprezentuje macierz (lub kilka macierzy) wag między neuronami, a reprezentuje zbiór danych treningowych. Używam indeksu dolnego dla aby wskazać, że nasze minimalizowanie występuje tylko powyżej wag (to znaczy szukamy tak, że jest zminimalizowane), gdy jest ustalony.X(W)WXXWWX

Teraz, jeśli założymy, że mamy elementów w (to znaczy, że wagami w sieci), jest powierzchnią w przestrzeni wymiarowej . Aby dać wizualny analog, wyobraź sobie, że mamy tylko dwie masy neuronów ( ). Zatem ma łatwą interpretację geometryczną: jest to powierzchnia w trójwymiarowej przestrzeni. Wynika to z faktu, że dla dowolnej macierzy wag funkcję straty można oszacować na a wartość ta staje się rzędną powierzchni.PWPP+1P=2WX

Ale istnieje problem niewypukłości; opisana przeze mnie powierzchnia będzie miała wiele lokalnych minimów, a zatem algorytmy opadania gradientu są podatne na utknięcie w tych minimach, podczas gdy w pobliżu może znajdować się głębsze / niższe / lepsze rozwiązanie. Jest to prawdopodobne, jeśli pozostaje niezmieniony we wszystkich iteracjach treningowych, ponieważ powierzchnia jest ustalona dla danego ; wszystkie jego funkcje są statyczne, w tym różne minima.XX

Rozwiązaniem tego jest trening mini-partyjny połączony z tasowaniem. Przetasowując rzędy i trenując tylko ich podzbiór podczas danej iteracji, zmienia się z każdą iteracją i jest całkiem możliwe, że nie zostaną wykonane dwie iteracje w całej sekwencji iteracji treningowych i epok dokładnie na tym samym . W rezultacie solver może łatwo „odbić się” od lokalnego minimum. Wyobraź sobie, że solver utknął w lokalnym minimum podczas iteracji podczas szkolenia mini-partii . To lokalne minimum odpowiada ocenianemu przy określonej wartości wag; nazwiemy toXXiXiXi(Wi). W następnej iteracji kształt naszej powierzchni faktycznie się zmienia, ponieważ używamy , to znaczy, że może przyjąć inną wartość niż i jest całkiem możliwe, że nie odpowiada to lokalnemu minimum! Możemy teraz obliczyć aktualizację gradientu i kontynuować trening. Żeby było jasne: kształt będzie - ogólnie - różnił się od . Zauważ, że mam tu na myśli funkcję straty ocenianą na zestawie treningowym ; jest to pełna powierzchnia zdefiniowana dla wszystkich możliwych wartościXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXWZamiast oceny tej straty (która jest skalar) o wartości określonej w . Należy również zauważyć, że jeśli mini-partie są używane bez tasowania, nadal istnieje pewien stopień „dywersyfikacji” powierzchni strat, ale będzie ograniczona (i stosunkowo niewielka) liczba unikalnych powierzchni błędów widocznych przez solver (konkretnie, zobaczy to ten sam dokładny zestaw mini-partii - i dlatego straty powierzchni - podczas każdej epoki).W

Jedną rzeczą, której celowo unikałem, była dyskusja na temat wielkości mini-partii, ponieważ istnieje na ten temat milion opinii i ma to znaczące implikacje praktyczne (większą równoległość można osiągnąć przy większych partiach). Uważam jednak, że warto wspomnieć o następujących kwestiach. Ponieważ jest obliczane przez obliczenie wartości dla każdego wiersza (i zsumowanie lub przyjęcie średniej; tj. Operatora przemiennego) dla danego zestawu macierzy wag , układ rzędów nie ma wpływu przy zastosowaniu pełnego- opadanie gradientu partii (to znaczy, gdy każda partia ma pełny , a iteracje i epoki są takie same).XWX X


+1. Ta odpowiedź jest technicznie lepiej wyjaśniona niż inna odpowiedź z większą liczbą głosów pozytywnych.
Gokul NC,

29

Tasowanie danych służy zmniejszeniu wariancji i upewnieniu się, że modele pozostają ogólne i mniej się przeładowują.

Oczywistym przypadkiem przetasowania danych jest posortowanie danych według ich klasy / celu. Tutaj będziesz chciał przetasować, aby upewnić się, że twoje zestawy treningowe / testowe / walidacyjne są reprezentatywne dla ogólnego rozkładu danych.

Do opadania gradientem partii obowiązuje ta sama logika. Idea opadania gradientu wsadowego polega na tym, że obliczając gradient na pojedynczej partii, zwykle uzyskuje się dość dobre oszacowanie „prawdziwego” gradientu. W ten sposób oszczędzasz czas obliczeń, nie musisz za każdym razem obliczać „prawdziwego” gradientu dla całego zestawu danych.

Chcesz przetasować swoje dane po każdej epoce, ponieważ zawsze będziesz mieć ryzyko tworzenia partii, które nie są reprezentatywne dla całego zestawu danych, a zatem twoje oszacowanie gradientu będzie wyłączone. Przetasowanie danych po każdej epoce gwarantuje, że nie utkniesz w zbyt wielu niepoprawnych partiach.

Podczas regularnego stochastycznego spadku, gdy każda partia ma rozmiar 1, nadal chcesz tasować dane po każdej epoce, aby utrzymać ogólną naukę. Rzeczywiście, jeśli punkt danych 17 jest zawsze używany po punkcie danych 16, jego własny gradient będzie tendencyjny przy wszelkich aktualizacjach danych, które punkt 16 wprowadza w modelu. Przetasowując dane, upewniasz się, że każdy punkt danych tworzy „niezależną” zmianę w modelu, bez uprzedzeń przez te same punkty przed nimi.


1
Jak wyjaśniłem, tasujesz swoje dane, aby upewnić się, że zestawy treningowe / testowe będą reprezentatywne. W regresji używasz tasowania, ponieważ chcesz mieć pewność, że nie trenujesz na przykład tylko małych wartości. Tasowanie jest przeważnie zabezpieczeniem, w najgorszym przypadku nie jest przydatne, ale nie tracąc nic, robiąc to. Jeśli chodzi o stochastyczną część opadania gradientu, ponownie chcesz się upewnić, że model nie jest taki, jak to jest z powodu kolejności, w jakiej
podawałeś

2
Myślę, że tasowanie zmniejsza wariancję i może zwiększyć tendencyjność (tj. Zmniejsza tendencję do przeładowywania danych). Wyobraźmy sobie, że wykonujemy pełne opadanie gradientu, tak aby epoki i iteracje były tym samym. Następnie istnieje globalne minimum (niekoniecznie konieczne do jego znalezienia), które nasz solver próbuje zlokalizować. Jeśli używamy utraty MSE, zminimalizujemy stronniczość, jeśli będziemy w stanie osiągnąć to rozwiązanie za każdym razem. Ale ponieważ to globalne minimum można znaleźć w innym miejscu dla różnych zestawów treningowych, to rozwiązanie będzie miało dużą wariancję.
Josh

2
Dzięki tasowaniu rzadziej zbliżamy się do rozwiązania leżącego w globalnym minimum dla całego zestawu treningowego (wyższe odchylenie), ale bardziej prawdopodobne jest znalezienie rozwiązania, które lepiej się uogólnia (mniejsza wariancja).
Josh

7

Załóżmy, że dane są sortowane w określonej kolejności. Na przykład zestaw danych sortowany na podstawie klasy. Tak więc, jeśli wybierzesz dane do szkolenia, walidacji i testu bez uwzględnienia tego tematu, wybierzesz każdą klasę do różnych zadań, a proces się nie powiedzie.

Dlatego, aby zapobiec tego rodzaju problemom, prostym rozwiązaniem jest tasowanie danych w celu uzyskania różnych zestawów danych szkoleniowych, walidacyjnych i testowych.

O mini-partii odpowiedzi na ten post mogą być rozwiązaniem twojego pytania.


1
@Media Najbardziej zbliżona odpowiedź w podanym linku to: „Tasowanie mini-partii sprawia, że ​​gradienty są bardziej zmienne, co może pomóc w zbieżności, ponieważ zwiększa prawdopodobieństwo trafienia w dobrym kierunku”
OmG

Właściwie widziałem to w artykule SGD, ale jak twierdzili autorzy artykułu, jest to przyczyna zbieżności, a nie przetasowania. Widziałem link i trochę w to wątpię. dla większej przejrzystości spójrz na ten niesamowity papier. Autorzy wspominali o tym, ale jak się przekonacie, nie ma dokładnego powodu do przetasowania
Media z

1

Musimy tasować tylko dla minibatch / SGD, bez potrzeby opadania gradientu partii.

Jeśli dane nie są tasowane, dane mogą być sortowane lub podobne punkty danych będą znajdować się obok siebie, co prowadzi do powolnej konwergencji:

  • Podobne próbki wytworzą podobne powierzchnie (1 powierzchnia dla funkcji straty dla 1 próbki) -> gradient wskaże w podobnych kierunkach, ale ten kierunek rzadko wskazuje na minimum-> może popchnąć gradient bardzo daleko od minimum
  • „Najlepszy kierunek”: średnia wszystkich gradientów wszystkich powierzchni (opadanie gradientu partii), która wskazuje bezpośrednio na minum
  • „Kierunek minibatchu”: średnia z różnych kierunków będzie wskazywać bliżej minimum, chociaż żaden z nich nie wskazuje minimum
  • „Kierunek 1 próbki”: punkt dalej do minimum w porównaniu do minibatchu

I zwrócił wykres funkcji strat L-2 regresji liniowej dla y=2x tutaj


1

Ponieważ jest obliczane przez obliczenie wartości dla każdego wiersza (i zsumowanie lub przyjęcie średniej; tj. Operatora przemiennego) dla danego zestawu macierzy wag , układ rzędów nie ma wpływu przy zastosowaniu pełnego- opadanie gradientu partiiXWX

Uzupełniając odpowiedź @ Josha, chciałbym dodać, że z tego samego powodu należy tasować przed partiami. W przeciwnym razie otrzymujesz tę samą skończoną liczbę powierzchni.


Dziękujemy i witamy w naszej społeczności.
Media

1

Aby uzyskać najlepszą dokładność modelu, zawsze zaleca się, aby dane treningowe zawierały wszystkie rodzaje danych.

Przetasowywanie danych szkoleniowych pomaga nam w osiągnięciu tego celu.


1

Przesuwając wiersze i trenując tylko ich podzbiór podczas danej iteracji, 𝑋 zmienia się z każdą iteracją, i jest całkiem możliwe, że nie zostaną wykonane dwie iteracje w całej sekwencji iteracji treningowych i epok dokładnie w tym samym 𝑋

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.