[Facebook DINO] Emerging Properties in Self-Supervised Vision TransformersMathilde Caron, Hugo Touvron, Ishan Misra, Hervé Jégou, Julien Mairal, Piotr Bojanowski, Armand JoulinСтатья:
https://arxiv.org/abs/2104.14294 Пост в блоге:
https://ai.facebook.com/blog/dino-paws-computer-vision-with-self-supervised-transformers-and-10x-more-efficient-training/ Код и модели:
https://github.com/facebookresearch/dino Ещё одна важная работа начала этого года — DINO от Facebook.
Авторы работы решили изучить, даёт ли что-нибудь интересное картиночным трансформерам (конкретно ViT,
https://t.me/gonzo_ML/434) предобучение через self-supervised learning (SSL). И они обнаружили интересные вещи, не возникающие ни при обучении ViT в режиме supervised, ни в свёрточных сетях, а именно:
- фичи SSL ViT содержат планировку (layout) сцены, и в частности границы объектов; эту информацию можно извлечь из модулей внимания с последнего слоя.
- фичи SSL ViT прекрасно работают для классификации через k-NN без какого-либо файнтюнинга, линейных классификаторов поверх фич или аугментации данных.
Семантические фичи при этом возникают более менее стабильно при использовании SSL, а хорошая классификация через k-NN получается только при использовании в обучении определённых компонентов, как то momentum encoder и multi-crop augmentation.
По результатам этих наблюдений авторы собрали свой SSL подход под названием DINO (DIstillation with NO labels), который работает и с ResNet и с ViT, но с последним результаты интереснее.
Подход идейно во многом похож на BYOL (
https://t.me/gonzo_ML/562) и вдохновлялся им, но есть и существенные различия. По названию также видно, что используется дистилляция (про которую мы очень много писали, начиная с
https://t.me/gonzo_ML/117), и это прекрасно.
Итак, в чём суть подхода.
Как полагается в классической дистилляции, есть сеть-учитель и сеть-ученик. Обе сети имеют одинаковую архитектуру (в этом отличие от BYOL, где асимметрия была важна чтобы процесс обучения не коллапсировал), но разные параметры (шаринга нет, но учитель обновляется как экспоненциальное скользящее среднее, EMA, от ученика — это и называется momentum encoder).
Обе сети выдают вероятностные распределения по K измерениям (гиперпараметр), вероятность получается с помощью софтмакса. Ученик пытается подстроить своё распределение под распределение учителя через минимизацию кросс-энтропии.
Это была часть про дистилляцию. Теперь часть про SSL.
Для каждой картинки создаются искажённые разными трансформациями (набор такой же как в BYOL, дисторсия цвета + гауссовское размытие + соляризация) вьюшки. Используется multi-crop стратегия (отсюда
https://arxiv.org/abs/2006.09882), для каждой картинки есть один крупный глобальный вид (view) разрешения 224*224, и несколько локальных видов более низкого разрешения 96*96. Все кропы прогоняются через ученика, но только глобальный вид прогоняется через учителя, что способствует появлению local-to-global соответствия. Для выхода учителя также применяется centering и sharpening, это позволяет избежать коллапса.
Что интересно в этой схеме, что априори учитель не задан, он получается из студента в процессе общего обучения (это похоже на кодистилляцию, но здесь дистилляция только в одну сторону, от учителя к ученику). Обновление учителя очень похоже на momentum encoder, который изначально появился в contrastive learning (CL, про который мы тоже много писали, например,
https://t.me/gonzo_ML/342), но как утверждают авторы здесь его роль совершенно иная. В CL momentum encoder выступает для замены очереди, из которой набираются отрицательные примеры, в текущей же работе нет ни очереди, ни CL, и авторы считают, что роль его ближе к mean teacher (
https://arxiv.org/abs/1703.01780), который даёт некую форму ансамблирования моделей (а ансамбли, как мы знаем, всегда хорошо). На эту тему в работе есть больше деталей и ссылок на Polyak-Ruppert averaging, интересующиеся заглядывайте!