Обучение трансформера
Модель трансформера (transformer) была впервые предложена для решения задачи машинного перевода (machine translation), на которой она показала существенный прирост точности по сравнению с существовавшими на тот момент альтернативными моделями перевода, построенными на базе рекуррентных сетей.
Поскольку в трансформере полностью отказались от рекуррентных вычислений, вычисления в трансформере во время обучения оказались легко параллелизуемыми, за счёт чего удалось существенно сократить время обучения модели.
Для регуляризации модели в двух местах её архитектуры использовался DropOut:
-
в остаточных блоках отбрасывались случайные элементы преобразованного эмбеддинга перед их суммированием с исходным эмбеддингом;
-
при суммировании эмбеддингов в механизмах внимания случайная часть эмбеддингов также отбрасывалась.
Вероятность отбрасывания нейронов бралась равной .
Также для ускорения обучения и улучшения обобщающей способности сглаживались метки реальных классов (слов целевого языка): вместо того чтобы обучать модель давать 100% вероятность правильному переводу, небольшая часть вероятности распределялась между другими словами, что улучшило устойчивость и качество перевода, который по своей природе неоднозначный.
Это популярный приём, известный как label smoothing [2], который часто используется при обучении нейросетевых классификаторов для регуляризации и повышения обобщающей способности модели на новых данных.