Боротьба з перенавчанням

Вступ до Deep Learning з PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Причини перенавчання

  • Перенавчання: модель не узагальнює на нові дані
    • Модель запам'ятовує тренувальні дані
    • Добре працює на даних training, але погано на validation
  • Можливі причини:
Проблема Рішення
Набір даних замалий Зібрати більше даних / застосувати аугментацію даних
Модель занадто потужна Зменшити розмір моделі / додати dropout
Ваги завеликі Weight decay
Вступ до Deep Learning з PyTorch

Боротьба з перенавчанням

Стратегії:

  • Зменшити модель або додати шар dropout
  • Використати weight decay, щоб параметри лишалися малими
  • Зібрати нові дані або виконати аугментацію
Вступ до Deep Learning з PyTorch

«Regularization» за допомогою шару dropout

  • Випадково занулює елементи вхідного тензора під час навчання
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 додають після функції активації
  • Працює інакше під час навчання та оцінювання — використовуйте model.train() для навчання і model.eval() щоб вимкнути dropout під час оцінювання
Вступ до Deep Learning з PyTorch

Регуляризація за допомогою weight decay

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

  • Керується параметром weight_decay в оптимізаторі; зазвичай це мале значення (напр., 0.0001)
  • Weight decay заохочує менші ваги, додаючи штраф під час оптимізації
  • Допомагає зменшити перенавчання: ваги стають менші, узагальнення поліпшується
Вступ до Deep Learning з PyTorch

Аугментація даних

приклади аугментації даних

Вступ до Deep Learning з PyTorch

Давайте потренуємось!

Вступ до Deep Learning з PyTorch

Preparing Video For Download...