Борьба с переобучением

Введение в глубокое обучение с PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Причины переобучения

  • Переобучение: модель плохо обобщается на новые данные
    • Модель запоминает обучающие данные
    • Хорошо работает на обучающих данных, но плохо — на валидационных
  • Возможные причины:
Проблема Решения
Недостаточно данных Получить больше данных / использовать аугментацию
Модель слишком большая Уменьшить размер модели / добавить dropout
Веса слишком большие Регуляризация весов
Введение в глубокое обучение с PyTorch

Борьба с переобучением

Стратегии:

  • Уменьшение размера модели или добавление слоя dropout
  • Регуляризация весов для ограничения их значений
  • Получение новых данных или их аугментация
Введение в глубокое обучение с PyTorch

«Регуляризация» с помощью слоя 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 при оценке
Введение в глубокое обучение с PyTorch

Регуляризация весов

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

  • Управляется параметром weight_decay оптимизатора; как правило, задаётся небольшим значением (например, 0.0001)
  • Регуляризация весов стимулирует уменьшение весов, добавляя штраф в процессе оптимизации
  • Снижает переобучение, удерживая веса небольшими и улучшая обобщаемость модели
Введение в глубокое обучение с PyTorch

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

примеры аугментации данных

Введение в глубокое обучение с PyTorch

Давайте потренируемся!

Введение в глубокое обучение с PyTorch

Preparing Video For Download...