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.LX(W)WXXLWWLX
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.PWPLP+1P=2LWX
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 toXXiXiLLXi(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+1LXi+1(Wi)LXi(Wi)LXi+1LXiLXWZamiast 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).LXWX X