Walka z przeuczeniem

Wprowadzenie do uczenia głębokiego z PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Przyczyny przeuczenia

  • Przeuczenie: model nie generalizuje na nowe dane
    • Model zapamiętuje dane treningowe
    • Działa dobrze na danych treningowych, ale słabo na walidacyjnych
  • Możliwe przyczyny:
Problem Rozwiązania
Za mało danych Pobierz więcej danych / zastosuj augmentację
Model ma zbyt dużą pojemność Zmniejsz rozmiar modelu / dodaj dropout
Wagi są zbyt duże Zanik wag
Wprowadzenie do uczenia głębokiego z PyTorch

Walka z przeuczeniem

Strategie:

  • Zmniejszenie rozmiaru modelu lub dodanie warstwy dropout
  • Zastosowanie zaniku wag, aby parametry pozostały małe
  • Pozyskanie nowych danych lub augmentacja danych
Wprowadzenie do uczenia głębokiego z PyTorch

„Regularyzacja" za pomocą warstwy dropout

  • Losowo zeruje elementy tensora wejściowego podczas treningu
model = nn.Sequential(nn.Linear(8, 4),
                      nn.ReLU(),
                      nn.Dropout(p=0.5))
features = torch.randn((1, 8))
print(model(features))
tensor([[1.4655, 0.0000, 0.0000, 0.8456]], grad_fn=<MulBackward0>)
  • Dropout dodawany jest po funkcji aktywacji
  • Działa inaczej podczas treningu i ewaluacji – użyj model.train() do treningu i model.eval(), aby wyłączyć dropout podczas ewaluacji
Wprowadzenie do uczenia głębokiego z PyTorch

Regularyzacja za pomocą zaniku wag

optimizer = optim.SGD(model.parameters(), lr=0.001, weight_decay=0.0001)

  • Kontrolowany przez parametr weight_decay optymalizatora, zazwyczaj ustawiony na małą wartość (np. 0.0001)
  • Zanik wag zachęca do mniejszych wag, dodając karę podczas optymalizacji
  • Pomaga ograniczyć przeuczenie, utrzymując małe wagi i poprawiając generalizację
Wprowadzenie do uczenia głębokiego z PyTorch

Augmentacja danych

przykłady augmentacji danych

Wprowadzenie do uczenia głębokiego z PyTorch

Czas na ćwiczenia!

Wprowadzenie do uczenia głębokiego z PyTorch

Preparing Video For Download...