скорость обучения AdamW Optimizer

Я тренируюсь с анализом настроений BERT (от huggingface), который является задачей НЛП.

Мой вопрос касается скорости обучения.

EPOCHS = 5                                                                                                                                                                                
optimizer = AdamW(model.parameters(), lr=1e-3, correct_bias=True)                  
total_steps = len(train_data_loader) * EPOCHS
scheduler = get_linear_schedule_with_warmup(                                    
  optimizer,
  num_warmup_steps=0,                                                          
  num_training_steps=total_steps
)
loss_fn = nn.CrossEntropyLoss().to(device)

Не могли бы вы объяснить, как читать 1e-3?

Это плотность ступенек или это величина, которая должна затухать.

Если последнее, то это линейный распад?

Если я тренируюсь со значением 3e-5, которое является рекомендуемым значением huggingface для задач НЛП, моя модель очень быстро переоценивается: потери для обучения уменьшаются до минимума, потери для проверки возрастают.

Уровень обучения 3e-5:

3e-5

Если я тренируюсь со значением 1e-2, я получаю устойчивое улучшение значения потерь при проверке. но точность проверки не улучшается после первой эпохи. Смотрите картинку. Почему значение валидации не увеличивается, даже если убыток падает. Разве это не противоречие? Я думал, что эти две ценности интерпретируют друг друга.

Уровень обучения 1e-2:

1e-2

Что ты посоветуешь?

1 ответ

Решение

Каждое обновление весов, сделанное при обратном распространении, взвешивается с параметром, называемым скоростью обучения. Если меньше, вы приближаетесь к минимуму с меньшим размером шага.

Иногда рекомендуется уменьшить скорость обучения (и увеличить количество эпох), если вы переобучаете, но есть и другие способы борьбы с переобучением. Хорошая скорость обучения должна позволить вам достичь хорошего минимума в надлежащее время. Это то, с чем вам нужно поэкспериментировать.

Другие вопросы по тегам