Противопоставление контрастных подходов к обучению

Подробное описание того, какие задачи компьютерного зрения являются хорошими эталонными тестами, как наборы данных влияют на производительность модели и какой кодировщик является лучшей магистралью общего назначения.

Ссылки: Github, Paper

В последние годы мы стали свидетелями бурного роста новых методов обучения с самоконтролем в области компьютерного зрения - исследователям удалось обучить нейронные сети, которые очень хорошо работают в стандартных тестах, таких как классификация ImageNet, с использованием в основном немаркированных данных.

Оказывается, понимания того, что отличает изображение от других, достаточно для создания абстрактного представления этого изображения, которое можно использовать для реальных задач, таких как семантическая классификация. Первые успехи этого подхода вызвали лавину публикаций, описывающих вариации на эту тему, которые незначительно улучшают друг друга.

Теперь у нас есть такие методы, как PIRL, CPC, SimCLR, MoCo и SwAV, которые все дают замечательные результаты с использованием особого типа самоконтролируемого обучения, называемого контрастным обучением, в котором кодировщики обучаются распознавать слегка визуально увеличенные версии одного и того же изображения, как похожие друг на друга и отличные от других изображений.

Хотя этот взрывной темп исследований отлично подходит для продвижения новой идеи, он также порождает множество отдельных потоков, которые может быть трудно сравнить или объединить. В этом сообщении в блоге я хочу поговорить о проблемах, связанных с текущим состоянием самостоятельных исследований компьютерного зрения, и о статье, которую я недавно опубликовал вместе с Габриэлем Ильхарко, Людвигом Шмидтом, Киана Эшани и Roozbeh Mottaghi, цель которого решить некоторые из них.

Прежде чем мы углубимся, давайте быстро рассмотрим несколько ключевых терминов и то, как я буду использовать их в этом посте:

Алгоритм предварительного обучения: хотя термин «алгоритм предварительного обучения» в глубоком обучении определяется довольно свободно, в этом посте я буду использовать его для описания целых конвейеров предварительного обучения, предложенных в недавних популярных работах. такие как MoCo и SwAV.

Данные предварительного обучения. Это набор данных, используемый для самостоятельного предварительного обучения кодировщиков компьютерного зрения. В большинстве работ для этого используется ImageNet.

Кодировщик. В компьютерном зрении мы часто разделяем нашу сеть на два компонента: средство извлечения функций общего назначения, которое кодирует необработанные пиксельные данные изображения в полезное абстрактное представление, и сеть конечных задач, которая использует это абстрактное представление для выполнения некоторой реальной задачи. Первый - это то, что я назову кодировщиком в этом сообщении в блоге.

Сеть конечных задач. Как упоминалось выше, сеть конечных задач является частью нашей модели, которая предназначена для выполнения конкретной реальной задачи, такой как классификация изображений, и поэтому ее необходимо настраивать для каждой задачи отдельно.

Конечная задача: Конечная задача - это полезная задача, которую может выполнить наша модель. Часто это практические вещи, такие как оценка глубины комнаты по изображению или определение породы собаки. Конечные задачи - это способ связать наши абстрактные модели с реальной работой, от которой люди могут получить выгоду.

Данные конечной задачи: это обучающий набор данных, связанный с конкретной конечной задачей, который используется для обучения сети конечных задач, чтобы делать что-то полезное с абстрактным представлением изображения, созданным кодировщиком.

Таким образом, алгоритмы предварительного обучения, такие как SwAV, используют набор данных предварительного обучения для обучения кодировщика, который является универсальным инструментом для извлечение абстрактных представлений из изображений. Сети конечных задач затем обучаются на данных конечных задач, чтобы использовать эти абстрактные представления для выполнения некоторых полезных реальных конечных задач .

Теперь, когда мы все усвоили терминологию, давайте погрузимся в пару ключевых проблем, связанных с быстрым темпом инноваций в области видения с самоконтролем.

1. Яблоки, апельсины и бананы

В то время как различные предлагаемые алгоритмы обучения стремятся создать хороший универсальный кодировщик изображений, они имеют очень мало совместимых точек данных, под которыми я подразумеваю применение алгоритма к одной и той же архитектуре модели с точно такими же данными предварительного обучения с использованием точно такая же конечная точка.

Чаще всего набор идеально согласованных точек данных, подобных этим, сводится только к одному: производительность классификации ImageNet с использованием ResNet50, обученного на данных ImageNet. Хотя это хороший тест, он может стать чрезвычайно опасным, если это единственный тест, который нас волнует. Помимо этого, в разных статьях представлены результаты для неперекрывающихся подмножеств конечных задач, наборов данных до обучения и архитектур моделей, поэтому сравнение чисел в разных статьях часто приводит к сравнению яблок с апельсинами.

2. Что мы вообще преследуем?

Поскольку классификация ImageNet является единственным эталоном, который может синхронизировать и согласовать большая часть сообщества компьютерного зрения, похоже, что настоящая цель преследуется не в создании хорошего универсального кодировщика изображений, а в создании кодировщика, который будет хорошо работать с Классификация ImageNet и аналогичная конечная задача. В некотором смысле, любой исследователь, создающий новый алгоритм, вынужден следовать за этим эталоном, поскольку высокий балл уделит алгоритму больше внимания, но это непреднамеренно побуждает сообщество оптимизировать прокси-цель «производительность ImageNet» вместо истинной цели «хорошая» визуальный кодировщик ». В сочетании с тем фактом, что в большинстве статей ImageNet используется в качестве обучающих данных, и у нас есть рецепт мощного цикла обратной связи, который создает кодировщики, которые хорошо изучают базовую статистику распределения набора данных (например, ImageNet) вместо того, чтобы хорошо понимать, что находится в картинка.

Наша работа

Надеюсь, этого было достаточно, чтобы убедить вас в существовании серьезных несоответствий в области компьютерного зрения с самоконтролем. Теперь поговорим о способах их решения. В частности, я расскажу о методологии и выводах моей недавней статьи Противопоставление контрастных моделей обучения репрезентации с самоконтролем.

Чтобы получить стандартизированную систему отсчета для сравнения различных алгоритмов с самоконтролем и наборов данных до обучения, нам пришлось исправить многие экспериментальные переменные. Все наши тесты проводились с использованием одной и той же архитектуры кодировщика (ResNet50). Мы также заморозили веса наших кодировщиков при обучении сетей конечных задач.

Несмотря на замораживание этих переменных, мы все же провели более 700 экспериментов, используя тысячи часов времени графического процессора. Мы тестируем в общей сложности 30 кодеров, созданных с помощью 4 различных алгоритмов предварительного обучения (SwAV, MoCo v1, MoCo v2 и PIRL) на 4 различных наборах данных предварительного обучения (ImageNet, Places , Taskonomy и Kinetics400) и комбинацию из 4. Мы обучили сети конечных задач для каждого кодировщика на 20 обучающих наборах конечных задач и сообщили результаты, которые эти кодировщики получили на наборах конечных задач (см. Диаграмму конечные задачи ниже).

Подробности смотрите в статье.

А теперь давайте разберемся с результатами ...

ImageNet - хороший ориентир?

Как упоминалось выше, оценка моделей, обученных на наборе данных ImageNet в конечной задаче классификации ImageNet, кажется довольно циклической. Чтобы измерить, насколько хорош этот индикатор, мы выполнили корреляционный анализ между производительностью кодировщиков в ImageNet и другими конечными задачами. Это означает, что мы вычислили, насколько сильно производительность ImageNet соответствует производительности для других конечных задач для любого данного кодировщика. Мы обнаружили, что ImageNet вообще не очень хороший индикатор. Хотя он довольно хорошо предсказывает производительность схожих задач (таких как классификация CalTech и CIFAR-100), он действительно плохо предсказывает производительность различных задач, таких как прогнозирование глубины.

Мы в целом делим наши задачи на четыре категории в зависимости от типа задачи (как семантический или структурный) и модальности вывода (как уровень изображения или пиксельный разум). Ниже мы видим иллюстрацию всех наших конечных задач и их соответствующую категоризацию:

На приведенном ниже графике показана точность классификации ImageNet по сравнению с производительностью при выполнении других конечных задач. Это показывает, что производительность ImageNet является хорошим индикатором для других семантических задач уровня изображения, но слабым сигналом для всех других категорий конечных задач. Более того, мы даже видим некоторые отрицательно коррелированные результаты, предполагающие, что настройка кодировщика на очень хорошую классификацию ImageNet заставляет его игнорировать некоторую информацию, важную для других типов задач.

В целом, это показывает, что предоставление отчетов только о характеристиках классификации ImageNet для модели очень ограничивает.

Все ли наборы данных для предварительного обучения одинаковы?

Еще одна область, которую мы хотели изучить, заключалась в том, насколько данные предварительного обучения влияют на качество окончательной модели. Поскольку подавляющее большинство людей, работающих в этой области, предварительно обучают свои кодировщики на ImageNet, по этой оси не так много исследований. Мы обучили кодировщики MoCo v2 и SwAV работе с 4 наборами данных: ImageNet, Places, Taskonomy и Kinetics400. Мы провели подвыборку всех наборов данных, чтобы они соответствовали размеру ImageNet, а также обучились комбинации из 4.

Во-первых, мы обнаружили, что кодировщики, обученные в ImageNet, как правило, лучше всего решают семантические конечные задачи, в то время как кодировщики, обученные на Places, как правило, лучше всего решают структурные конечные задачи. Это имеет большой смысл, поскольку ImageNet содержит множество разнообразных изображений, а Places содержит изображения комнат и зданий. Кроме того, и Places, и ImageNet собрали, пометили и упорядочили данные, в то время как Kinetics - это серия захватов кадров из видео на YouTube, а Taskonomy - это серия 3D-сканирований Matterport. Это говорит о том, что, хотя мы не используем ярлыки явно, работа с чистым и организованным набором данных все же может иметь некоторые преимущества. Это ставит под сомнение жизнеспособность тренировочных моделей зрения на случайных полностью неконтролируемых данных из Интернета - одно из великих обещаний самостоятельного компьютерного зрения. Хотя некоторые недавние работы показывают успех при обучении на больших наборах данных, собранных из Интернета, неясно, насколько чистыми и организованными являются эти данные.

Во-вторых, мы проверили, позволяет ли предварительное обучение нашего кодировщика на большом наборе данных, аналогичных данным нашей конечной задачи, с помощью методов с самоконтролем улучшить кодировщик. Для каждого из наших наборов данных до обучения (ImageNet, Kinetics, Places и Taskonomy) мы находим соответствующую конечную задачу, которая использует аналогичный набор данных или подмножество того же набора данных (CalTech Classification, Kinetics Action Prediction, SUN Scenes Classification и Taskonomy Прогноз глубины соответственно). Мы строим график производительности конечной задачи всех кодировщиков, которые мы обучили, на 4 наборах данных ниже:

Этот результат в некоторой степени очевиден для обучения с учителем, но в своей работе мы также подтвердили, что он справедлив для обучения с учителем. Интересно, что мы обнаружили, что комбинированные наборы данных в среднем производят кодировщики, которые достаточно хороши для всех задач, но не лучшие в любой задаче. Фактически, мы также обнаружили, что кодировщики, обученные в ImageNet и Places, в среднем превосходят комбинированные кодировщики, поэтому кажется, что смешивание наборов данных приносит нам меньше преимуществ, чем недостатков.

Имеет ли значение баланс набора данных?

В дополнение к упомянутым выше наборам данных предварительного обучения мы также протестировали эффекты предварительного обучения с использованием несбалансированной версии ImageNet, которую мы создали путем логарифмической выборки того, сколько изображений у нас есть из каждой категории (так что у нас есть много выборок из несколько категорий и несколько образцов из многих категорий). Мы обнаружили, что если мы предварительно обучим наш кодировщик на сильно несбалансированном подмножестве ImageNet, производительность нашей конечной задачи будет не хуже, чем предварительное обучение на идеально сбалансированном подмножестве ImageNet того же размера. Мы тестируем 3 различных выборки каждого набора данных без очень большой дисперсии, что указывает на то, что все подвыборки одинаково хороши и что нет волшебных классов, которые предложили бы нам огромный прирост производительности, если мы получим много выборок из этого конкретного класса в нашей подвыборке. Чтобы немного повлиять на волнение этого открытия, важно упомянуть, что мы использовали только небольшие наборы данных (с 250 тыс. Выборок), обученные для 200 эпох, поэтому необходима дальнейшая работа, чтобы проверить эту тенденцию на более крупных наборах данных и более длительных циклах обучения.

Показывают ли разные алгоритмы предварительной тренировки разные сильные стороны?

Два алгоритма обучения, которые мы подробно рассмотрели, - это MoCo v2 и SwAV. Хотя наш анализ не является основным направлением нашей работы, он выявил некоторые интересные контрастирующие свойства двух алгоритмов.

MoCo v2 имеет тенденцию лучше справляться со структурными задачами, в то время как SwAV превосходит задачи уровня изображения. Моя высокоуровневая гипотеза относительно того, почему это происходит, заключается в том, что, поскольку SwAV использует подход кластеризации на последнем уровне, он имеет тенденцию терять некоторую информацию о пространственном изображении. Некоторая поддержка этой теории исходит из результатов послойного анализа CKA, который мы провели на кодерах. Мы обнаружили, что в среднем кодировщики, обученные с помощью MoCo v2, имеют более сильное согласие между представлениями раннего и позднего уровня, предполагая, что больше пространственной информации сохраняется в окончательном кодировании. На приведенном ниже графике показана разница в производительности кодеров MoCo и SwAV для задач PixelWise и уровня изображения:

Это может быть полезным источником данных, если мы пытаемся создать настраиваемый кодировщик для задачи, требующей пространственной информации, поскольку теперь у нас есть свидетельства того, что MoCo v2 - лучший алгоритм предварительного обучения для этой работы. Здесь мы видим еще один недостаток в погоне за производительностью классификации ImageNet в качестве эталона. Поскольку SwAV превосходит MoCo v2 в этой конкретной конечной задаче, многие могут предположить, что в целом он лучше, в то время как наши исследования показывают, что в действительности все не так однозначно.

Подходит ли самоконтролируемый кодировщик для всех последующих задач?

Короткий ответ на это - да. Для каждой задачи, которую мы тестировали, модели с самоконтролем работали очень хорошо, фактически для всех, кроме трех, они превзошли базовый уровень контролируемого ImageNet. Три конечных задачи, в которых контролируемый кодировщик работал лучше, были классификация ImageNet, классификация ImageNet v2 и классификация домашних животных (которая очень похожа на ImageNet). Поскольку мы не настраиваем кодировщики для конкретной задачи, этот результат вовсе не удивителен, поскольку контролируемый кодировщик, обученный в ImageNet, эффективно настраивается на задачу во время обучения кодировщика. Во всем остальном методы с самоконтролем работают лучше, что дает нам убедительный признак того, что они производят более совершенные универсальные кодировщики.

Кроме того, мы обнаружили, что некоторые конечные задачи получают даже больший импульс от использования модели с самоконтролем, чем другие, а именно структурные задачи. На приведенном ниже графике показано, что в то время как некоторые кодировщики с самоконтролем превосходят контрольный тест с учителем в каждой категории задач, почти все самоконтролируемые кодировщики превосходят контрольный тест с учителем для структурных задач - даже те, у которых есть наборы данных до обучения и предварительная подготовка. алгоритмы обучения, плохо подходящие для конечной задачи:

Итак, какой кодировщик мне использовать?

После рассмотрения всех вышеперечисленных результатов становится ясно, что текущий стандартный кодировщик компьютерного зрения (ResNet50, обученный с обучением с учителем в ImageNet) часто не является лучшим универсальным кодировщиком. Мы обнаружили, что некоторые кодировщики, обученные с помощью самостоятельного обучения, почти всегда лучше справляются с конечными задачами, а один конкретный кодировщик (обученный с помощью SwAV в ImageNet) лучше справляется с более чем 75% конечных задач.

На приведенном ниже графике показаны уровни относительного улучшения, которые модели с самоконтролем предлагают по сравнению с ImageNet с учителем. Это также показывает, что ImageNet и Places, как правило, являются двумя наборами данных, достигающими наилучших результатов, как упоминалось выше.

Другие неотвеченные вопросы

Хотя в своей работе мы провели более 700 экспериментов, мы проанализировали лишь небольшую часть общего ландшафта компьютерного зрения с самоконтролем. Чтобы получить подробные результаты, которые мы сделали, нам нужно было исправить многие переменные, что оставляет нам много открытых вопросов, таких как:

  1. Как архитектура модели влияет на производительность различных алгоритмов с самоконтролем?
  2. Существенно ли влияет точная настройка всего кодировщика на производительность?
  3. Смываются ли наблюдаемые нами тенденции или становятся более явными, если мы обучаем кодировщиков еще большему количеству эпох?

Все это хорошие отправные точки для будущей работы, которая еще больше поможет нам понять преимущества и недостатки компьютерного зрения с самоконтролем.

Заключение

Хотя в этом сообщении в блоге указано на множество недостатков текущей работы в области видения с самоконтролем, также важно отметить многочисленные ее достижения. В нашей статье были обнаружены свидетельства того, что методы контрастного обучения превосходят контролируемое обучение при создании хорошего кодировщика общего назначения, что еще раз подтверждает, что это не просто изящный трюк, а подлинное и важное достижение. Однако мы также показали, что измерение прогресса в одном измерении (классификация ImageNet) может привести к тому, что мы упустим из виду части общей картины (например, тот факт, что MoCo v2 превосходит SwAV почти в половине тестируемой нами конечной задачи).

Итак, в заключение я хотел бы сделать 4 основных вывода из этой работы, которые могут помочь исследователям и инженерам компьютерного зрения в их будущих проектах компьютерного зрения:

  1. Самоконтролируемые кодировщики изображений - отличные универсальные экстракторы функций, и вам следует подумать об их использовании для своего следующего проекта. Я бы порекомендовал ResNet50, обученный с помощью SwAV для 800 эпох на ImageNet (или Places, если ваш проект структурный)
  2. Если у вас большой объем данных в вашем домене, подумайте о том, чтобы самостоятельно обучить кодировщик с самоконтролем с его помощью, так как это может дать вам еще больший прирост производительности.
  3. Если вы разрабатываете новую модель с самоконтролем, обязательно оцените ее по широкому кругу разнообразных задач. Рассмотрите возможность использования кодовой базы ViRB, которую мы выпускаем вместе с проектом.
  4. Если вы разрабатываете новый набор данных (или тренируете режимы с веб-контролем), баланс ваших классов данных может быть не так важен, но наличие некоторых разнообразных выборок имеет значение.