скорость обучения 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:
Если я тренируюсь со значением 1e-2, я получаю устойчивое улучшение значения потерь при проверке. но точность проверки не улучшается после первой эпохи. Смотрите картинку. Почему значение валидации не увеличивается, даже если убыток падает. Разве это не противоречие? Я думал, что эти две ценности интерпретируют друг друга.
Уровень обучения 1e-2:
Что ты посоветуешь?
1 ответ
Каждое обновление весов, сделанное при обратном распространении, взвешивается с параметром, называемым скоростью обучения. Если меньше, вы приближаетесь к минимуму с меньшим размером шага.
Иногда рекомендуется уменьшить скорость обучения (и увеличить количество эпох), если вы переобучаете, но есть и другие способы борьбы с переобучением. Хорошая скорость обучения должна позволить вам достичь хорошего минимума в надлежащее время. Это то, с чем вам нужно поэкспериментировать.