11 · Prawa i prawdy · 4 min czytania · aktualizacja
Na czym polega hipoteza losu na loterii (lottery ticket hypothesis) w sieciach neuronowych?
W skrócie
Duża losowa sieć zawiera małą podsieć, która trenowana od tych samych wag startowych dorównuje całej sieci. Dobrze potwierdzone w małej skali, sporne w dużej.
Co to jest
Gęsta, losowo zainicjowana sieć neuronowa zawiera rzadką podsieć („zwycięski los”), która trenowana w izolacji od swoich oryginalnych wag początkowych osiąga dokładność całej sieci w porównywalnej liczbie kroków. Hipotezę sformułowali Jonathan Frankle i Michael Carbin w 2019 roku.
Wiadomo było wcześniej, że wytrenowaną sieć da się mocno przyciąć — usunąć większość wag o małej wartości — bez straty jakości. Ale próby trenowania tak małej sieci od zera zwykle wypadały gorzej. Frankle i Carbin zauważyli, że kluczowe są wagi startowe: jeśli przyciętą strukturę cofnąć do jej oryginalnej inicjalizacji i wytrenować ponownie, uczy się ona dobrze; jeśli zainicjować ją na nowo losowo — często gorzej.
Metafora: trenowanie dużej sieci przypomina kupno wielu losów na loterii. Im więcej wag, tym większa szansa, że któraś podsieć dostała akurat szczęśliwą kombinację wag startowych. Trening w praktyce „znajduje” ten los.
Mechanizm — dlaczego tak działa
Procedura z oryginalnej pracy: wytrenuj sieć, usuń p% wag o najmniejszej wartości bezwzględnej, przywróć pozostałym wagom wartości z inicjalizacji, trenuj ponownie, powtarzaj (przycinanie iteracyjne). Na MNIST i CIFAR-10 autorzy znajdowali zwycięskie losy liczące poniżej 10–20% wag oryginału, które uczyły się szybciej i osiągały co najmniej tę samą dokładność.
Dlaczego wagi startowe mają znaczenie? Jedno z wyjaśnień: duża wartość wagi po treningu sygnalizuje, że ta waga od początku leżała w korzystnym miejscu krajobrazu straty, a zachowanie jej znaku i skali daje podsieci dobry punkt startu. Zhou i in. (2019) pokazali, że szczególnie ważne są znaki wag początkowych.
Status jest jednak niejednoznaczny i trzeba to powiedzieć wprost. Liu i in. (2019) w pracy „Rethinking the Value of Network Pruning” znaleźli wiele ustawień, w których losowo zainicjowana przycięta sieć radzi sobie równie dobrze — wtedy liczy się struktura, nie los. Frankle i in. (2020) przyznali, że w dużych sieciach (np. ResNet na ImageNet) cofanie do inicjalizacji nie działa; trzeba cofać do wag z wczesnego etapu treningu (rewinding), co osłabia pierwotną tezę. Przede wszystkim znalezienie losu wymaga wytrenowania pełnej sieci, nieraz wielokrotnie — hipoteza nie daje więc darmowego przyspieszenia, tylko mówi coś o naturze uczenia.
Na przykładzie
Własny eksperyment na Digits 8×8 (PyTorch): sieć 64–300–100–10, ok. 50 tys. wag, Adam, 60 epok, średnia z 5 ziaren. Pełna sieć: dokładność testowa 0,974. Przycięliśmy jednorazowo 95% wag w warstwach ukrytych i połowę tego w warstwie wyjściowej (zostaje ok. 6% wag). Podsieć cofnięta do oryginalnej inicjalizacji: 0,972. Ta sama struktura z nowymi losowymi wagami: 0,969. Przy przycięciu do ok. 3% wag: 0,937 wobec 0,936.
Uczciwy odczyt: rzadkie podsieci trenują się prawie tak dobrze jak pełna sieć — to potwierdza część hipotezy o nadmiarowości. Przewaga „zwycięskiego losu” nad losową reinicjalizacją jest tu jednak rzędu 0,001–0,003, czyli w granicach rozrzutu między ziarnami. Na tak prostym zadaniu struktura znaczy więcej niż szczęśliwe wagi — zgodnie z obserwacjami Liu i in.
Dane: Digits (ręcznie pisane cyfry 8×8)
W praktyce
- Przycinanie w PyTorch:
torch.nn.utils.prune.l1_unstructurediprune.global_unstructured; maskę trzeba utrzymywać podczas dalszego treningu. - Do wdrożenia częściej używa się przycinania strukturalnego (całe neurony lub kanały), bo rzadkie macierze rzadko przyspieszają obliczenia na zwykłym sprzęcie.
- Przy dużych modelach cofaj do wag z wczesnego etapu treningu (np. po kilku procentach kroków), a nie do inicjalizacji.
- Zawsze porównuj z kontrolą: ta sama maska z losową inicjalizacją. Bez niej nie wiadomo, czy zadziałał los, czy struktura.
- Do kompresji modeli w praktyce częściej używa się kwantyzacji i destylacji niż poszukiwania losów.
Najczęstsze pytania
- Czy to znaczy, że można od razu trenować małą sieć?
- Nie w praktyce — nie wiadomo z góry, która podsieć jest zwycięska; trzeba ją znaleźć, trenując dużą. Istnieją metody przycinania przy inicjalizacji (np. SNIP), ale zwykle ustępują przycinaniu po treningu.
- Czy hipoteza działa dla dużych modeli językowych?
- Dowody są częściowe. W dużych sieciach potrzebne jest cofanie do wczesnych wag zamiast do inicjalizacji, a wyniki zależą od zadania i metody. Teza w oryginalnym brzmieniu nie została potwierdzona w tej skali.
- Co ta hipoteza mówi o tym, dlaczego duże sieci działają?
- Sugeruje, że nadmiar parametrów pomaga nie dlatego, że potrzebujemy ich wszystkich, ale dlatego, że zwiększa szansę na dobrą podsieć i ułatwia optymalizację. To jedna z kilku konkurencyjnych interpretacji przeparametryzowania.
Źródła
- Frankle J., Carbin M. (2019). The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks. ICLR 2019, arXiv:1803.03635.
- Frankle J., Dziugaite G. K., Roy D. M., Carbin M. (2020). Linear Mode Connectivity and the Lottery Ticket Hypothesis. ICML 2020.
- Liu Z., Sun M., Zhou T., Huang G., Darrell T. (2019). Rethinking the Value of Network Pruning. ICLR 2019.
- Zhou H., Lan J., Liu R., Yosinski J. (2019). Deconstructing Lottery Tickets: Zeros, Signs, and the Supermask. NeurIPS 2019.
- Dokumentacja PyTorch: Pruning Tutorial, https://pytorch.org/tutorials/intermediate/pruning_tutorial.html