Transfer Learning vs Fine-tuning
В свое время я не сразу разобрался в отличиях между этими техниками. Ведь обе из них предполагают до-обучение модели на новых данных.
Transfer Learning — подразумевает взять обученную на общей задаче (upstream task) модель, зафиксировать feature слои и использовать их в качестве входа в новый слой. Новый слой обучается с нуля (from scratch) под определенную новую, но похожую задачу. В этом случае, как правило, у общей задачи было гораздо больше данных, чем у новой.
- Например, был обучен классификатор изображений ImageNet. Его обученные слои можно взять для обучения, скажем, новых слоев для новых классов. В этом случае мы полагаемся на то, что модель ранее научилась выделять отличительные особенности объектов на фото.
- Другой пример. Обучаем BERT на большом количестве неразмеченных текстов по технике masked LM для понимания контекста. Далее, взяв BERT за основу, обучаем классификатор отзывов или токенов.
🔺 Как правило, домен не должен сильно меняться, иначе меньше шансов на успех.
Fine-tuning — подразумевает взять модель и обновлять все ее веса (или большую часть). По определению это тонкая настройка, уточнение модели новыми данными. С этой точки зрения используется та же задача, тот же лосс. Возможно немного новый домен, чтобы модель смогла понимать и его. Но такой путь потребует больше данных, чем transfer learning.
- Пример: система распознавания лиц была обучена на фото из соцсетей. Необходимо ее "дотюнить" на новых данных — фото с камер наблюдения
картинка
Post #30
57