ML Atlas

06 · Sieci · 4 min czytania · aktualizacja

Dlaczego wynik modelu zależy od seeda i czym jest szczęśliwa inicjalizacja?

W skrócie

Losowe wagi startowe dają przypadkową granicę decyzji, która czasem trafia blisko prawdziwej. Wynik zależy od seeda: jeden przebieg to jedno losowanie.

Co to jest

Szczęśliwa inicjalizacja to przypadek, w którym losowo wylosowane wagi startowe dają model działający wyraźnie lepiej niż zgadywanie jeszcze przed treningiem, bo jego przypadkowa granica decyzji leży blisko prawdziwej. Szerzej chodzi o zależność wyniku od seeda generatora liczb losowych — przez inicjalizację wag, kolejność danych i maski dropoutu.

Ta zależność jest realnym źródłem wariancji w każdym eksperymencie z sieciami neuronowymi i w konkursach Kaggle. Jeden przebieg treningu to jedno losowanie, a nie „wynik modelu”.

Intuicja: rzucasz strzałką z zawiązanymi oczami. Zwykle chybiasz, ale raz na kilkadziesiąt rzutów trafisz blisko środka. To nie znaczy, że umiesz rzucać — i następny rzut nie będzie lepszy tylko dlatego, że poprzedni był udany.

Mechanizm — dlaczego tak działa

Dla modelu liniowego z d cechami losowy wektor wag to losowy kierunek w d wymiarach, a bias to losowe przesunięcie. Granica decyzji leży więc gdziekolwiek. Jeśli prawdziwa reguła też jest w przybliżeniu liniowa, prawdopodobieństwo, że losowa granica będzie jej „dość bliska”, jest małe, ale niezerowe — i rośnie, gdy wiele cech niesie podobną informację. Przy wielu losowych startach szczęśliwy trafi się prawie na pewno. Szczęście się jednak nie przenosi: nowe losowanie to nowa, przypadkowa granica.

W sieciach trenowanych seed działa subtelniej: różne starty prowadzą do różnych minimów, a wariancja wyniku między seedami bywa porównywalna z różnicą między metodami (Henderson i in. 2018 w uczeniu ze wzmocnieniem; Dodge i in. 2020 w dostrajaniu modeli językowych). Hipoteza losu na loterii (lottery ticket, Frankle i Carbin 2019) idzie dalej: w losowo zainicjowanej dużej sieci istnieją podsieci, których startowe wagi są „szczęśliwe” — wytrenowane osobno osiągają wynik całej sieci, a z innymi startowymi wagami już nie.

Konsekwencja metodologiczna: pojedynczy wynik z jednego seeda to jedna realizacja zmiennej losowej. Wybór „najlepszego seeda” na walidacji i raportowanie jego wyniku to zawyżenie — ten sam mechanizm co klątwa zwycięzcy przy wyborze hiperparametrów.

Zastrzeżenie: w dużych sieciach z dobrą inicjalizacją (He, Xavier) i dostateczną liczbą danych wariancja między seedami maleje; przy małych sieciach i małych danych jest duża i trzeba ją mierzyć.

Na przykładzie

Na Breast Cancer Wisconsin (30 standaryzowanych cech) wylosowałem 10 000 wektorów wag z rozkładu normalnego i dla każdego policzyłem trafność reguły „łagodny, gdy w·x > 0” (bez biasu i bez żadnego treningu, random_state=0). Mediana trafności wynosi 49,9%, ale 12% losowych wektorów przekracza 80%, 1,4% przekracza 90%, a najlepszy trafia w 95,4% przypadków — prawie tyle co wytrenowana regresja logistyczna (95,8%). Działa to, bo prawie wszystkie cechy guza rosną razem, więc wiele kierunków jest „dość dobrych”.

W treningu efekt jest mniejszy, ale obecny. MLPClassifier z 16 neuronami ukrytymi na Digits 8×8 (podział 75/25, random_state=0) przez 20 seedów osiąga na teście od 96,7% do 97,8% (średnio 97,2%). Gdy wybrałem seed z najlepszym wynikiem na walidacji (97,3% wobec średniej 96,5%), na teście dał 96,9% — praktycznie tyle co średnia (96,9%). Przewaga z walidacji nie przeszła na nowe dane. Uśrednienie predykcji pięciu seedów dało natomiast 97,3%, powyżej średniej pojedynczego modelu.

Dane: Breast Cancer Wisconsin (diagnostyka raka piersi) Digits (ręcznie pisane cyfry 8×8)

W praktyce

  • Ustawiaj seed dla powtarzalności (torch.manual_seed, np.random.seed, random_state), ale raportuj wynik jako średnią ± odchylenie z 3–5 seedów, nie z jednego.
  • Na Kaggle uśrednianie predykcji modeli z różnych seedów (seed averaging) zmniejsza wariancję i prawie zawsze poprawia wynik — to tani ensembling.
  • Jeśli różnica między dwoma ustawieniami jest mniejsza niż rozrzut między seedami, nie ma podstaw, by uznać jedno za lepsze.
  • Pełna powtarzalność na GPU wymaga dodatkowo wyłączenia niedeterministycznych kerneli (torch.use_deterministic_algorithms).
  • Typowy błąd: „model A ma 0,812, model B 0,809, więc A jest lepszy” przy jednym seedzie i rozrzucie ±0,01.

Najczęstsze pytania

Dlaczego wynik sieci zmienia się po zmianie seeda?
Seed określa wagi startowe, kolejność batchy i maski dropoutu. Różne starty prowadzą do różnych minimów krajobrazu straty, a różne kolejności danych do różnych ścieżek. Przy małych danych i małych sieciach ta wariancja bywa duża — mierz ją, uruchamiając kilka seedów.
Czy warto szukać „najlepszego seeda”?
Nie jako metody poprawy modelu: wybrany na walidacji seed jest lepszy głównie przez szczęście, które nie powtórzy się na nowych danych. Warto natomiast uśredniać predykcje z kilku seedów — to zmniejsza wariancję i daje realną, powtarzalną poprawę.
Co to jest hipoteza losu na loterii (lottery ticket)?
Obserwacja Frankle'a i Carbina (2019): w dużej losowo zainicjowanej sieci istnieje mała podsieć, która — trenowana osobno od swoich oryginalnych wag startowych — osiąga wynik całej sieci. Z innymi wagami startowymi ta sama podsieć uczy się gorzej, więc to inicjalizacja była „szczęśliwa”.

Źródła

  • Frankle, J., Carbin, M. (2019). "The lottery ticket hypothesis: finding sparse, trainable neural networks". ICLR. arXiv:1803.03635
  • Henderson i in. (2018). "Deep reinforcement learning that matters". AAAI. arXiv:1709.06560
  • Dodge i in. (2020). "Fine-tuning pretrained language models: weight initializations, data orders, and early stopping". arXiv:2002.06305
  • Goodfellow, Bengio, Courville (2016). Deep Learning, rozdz. 8.4 "Parameter initialization strategies". https://www.deeplearningbook.org/contents/optimization.html

Zobacz też