W implementacji ResNet przez Tensorflow widzę , że używają inicjalizatora skalowania wariancji, a także, że inicjator Xavier jest popularny. Nie mam za dużo doświadczenia, co jest lepsze w praktyce?
20
W implementacji ResNet przez Tensorflow widzę , że używają inicjalizatora skalowania wariancji, a także, że inicjator Xavier jest popularny. Nie mam za dużo doświadczenia, co jest lepsze w praktyce?
Odpowiedzi:
Perspektywa historyczna
Inicjalizacja Xaviera , pierwotnie zaproponowana przez Xaviera Glorota i Yoshua Bengio w „Zrozumieniu trudności w trenowaniu głębokich sieci neuronowych” , jest techniką inicjalizacji wag, która próbuje uczynić wariancję wyjściową warstwy równą wariancji jej danych wejściowych . Pomysł ten okazał się bardzo przydatny w praktyce. Oczywiście inicjalizacja zależy od funkcji aktywacji warstwy. W swoim artykule Glorot i Bengio rozważali logistyczną funkcję aktywacji sigmoidów , która była wówczas wyborem domyślnym.
Później aktywacja sigmoidów została przekroczona przez ReLu, ponieważ pozwoliła rozwiązać problem znikania / eksplodowania gradientów. W związku z tym pojawiła się nowa technika inicjalizacji, która zastosowała ten sam pomysł (równoważenie wariancji aktywacji) do tej nowej funkcji aktywacji. Zostało to zaproponowane przez Kaiminga He w ogóle w „Zagłębianie się w prostowniki: przewyższające wydajność na poziomie ludzkim w klasyfikacji ImageNet” , a teraz często nazywane jest inicjalizacją He .
W tensorflow inicjalizacja He jest implementowana w
variance_scaling_initializer()
funkcji (która jest w rzeczywistości bardziej ogólnym inicjatorem, ale domyślnie wykonuje inicjalizację He), podczas gdy inicjator Xaviera jest logicznyxavier_initializer()
.streszczenie
Podsumowując, główna różnica dla praktyków uczenia maszynowego jest następująca:
źródło
tanh()
funkcji aktywacji, której funkcji inicjalizacji powinienem użyć.Skalowanie wariancji to tylko uogólnienie Xaviera: http://tflearn.org/initializations/ . Oba działają na zasadzie, że skala gradientów powinna być podobna na wszystkich warstwach. Xavier jest prawdopodobnie bezpieczniejszy w użyciu, ponieważ wytrzymał eksperymentalną próbę czasu; próba wybrania własnych parametrów dla skalowania wariancji może zahamować szkolenie lub spowodować, że sieć w ogóle nie zarobi.
źródło