Гипермараметры полностью определяют траекторию обучения моей модели. Вот их полный список:
config = {
'max_len': 48,
'min_freq_src': 5,
'min_freq_trg': 5,
'max_freq_sub': 8,
'bpe_vocab_size': 25000,
'embedding_dim': 192,
'hidden_size': 384,
'num_layers': 3,
'num_epochs': 18,
'weight_decay': 1e-4,
'label_smoothing': 0.2,
'dropout_emb': 0.15,
'dropout_enc': 0.2,
'dropout_dec': 0.2,
'dropout_attention': 0.1,
'learning_rate': 1e-3,
'lr_manual_decrease': False,
'amsgrad': False,
'gamma': 0.5,
'patience': 1,
'threshold': 1e-3,
'batch_size': 128,
'use_tf': False,
'tf_from_epoch': 0,
'tf_start': 0.9,
'tf_decrease': 0.02
}Embedding dim и Hidden size
Интуитивно кажется, что размерность скрытого слоя должна быть хотя бы в три раза больше чем размерность одного токена, так как количество информации в слепке целого предложения должно сильно превышать информацию от одного токена, но на практике соотношение 1 : 2 показало себя наилучшим образом.
Я не экспериментировал с этим параметров после того, как пронал пару ранов с 4 слоями и не получил никакого результата кроме увеличения времени работы, но возможно модель еще можно скейлить, так как ошибки на валидации и трейне моей финальной модели стоят довольно близко, а значит модель не переобучается.
Введение дропаутов после скейлинрг модели до 3 слоев и 36 миллионов параметров дало очень хорошее улучшение в обобщении и полностью убрало переобучение.
Опытным путем я выяснил, что старт с высокого лернинг рейта и понижение вручную отрицательно вляет на ход обучения модели, так как AdamW хорошо сам справляется с выстаиванием лернинг рейтов конкретный параметров даже на ранних стадиях.
Использование этого параметра также привело к небольшому замедлению процесса обучения, хотя на бумаге параметр выглядит как хорошее стабилизирующее дополнение.
Опытным путем я остановился на этом lr еще в начале тренировки моделей и с тех пор не пробовал экспериментировать к его регулировкой.
Увеличение этого параметра не дает видимого улучшения в ошибке на трейне и валидации, но почему-то сильно снижает BLEU.
Параметр, который я случайно увеличил до 1e-3 в ране вместе с другими изменениями и потом пол дня не мог найти причину, почему при идентичной кривой val_loss и train_loss BLEU упирается в потолок в 22 вместо 28.
Все эти параметры подбирались методом пристального взгляда на график лоссов модели.
Очень много времени было потрачено в попытках заставить хотя бы не ухудшать качество перевода от снижения teacher_forcing, но модель не только ухудшается при снижении teacher_forcing, но и кросс-энтропия на валидации с teacher_forcing=0 монотонно растет при обучении.
