Zero shot learning что это такое простыми словами

СОДЕРЖАНИЕ

Предпосылки и история

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

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

Предварительная информация для классов с нулевым выстрелом

Естественно, что об этих классах нулевого выстрела должна быть предоставлена ​​некоторая вспомогательная информация, и этот тип информации может быть нескольких типов.

Обобщенное обучение с нулевым выстрелом

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

Домены приложения

Обучение с нулевым выстрелом применялось в следующих областях:

Источник

Русские Блоги

Zero-shot / One-shot / Few-shot Learning

вперед из:http://www.cnblogs.com/jngwl/articles/10221819.html#top

1. Introduction

ВМиграция ОбучениеСредний из-за традиционной глубины обученияСлабая способность обученияЧасто нужноМассивные данные с участием Повторное обучениеМожет восстановитьИнтенсивноОтказ Для того, чтобы «насколько быстро, хорошие провинции» к дороге в алхимию, алхимики начали изучать обучение с нулевым выстрелом / обучением одним выстрелом / немногим обучением.

Влюбиться в дикую лошадь (обобщение способности), но в моем доме нет луга (массивные данные).

2. Тип обучения

(1) Нулевое обучение (обучение нулевого выстрела)

Примечание: необходимо запустить, но иНе позволятьЛошадь пасет.

(2) Один выстрел обучение

One-shot learning is an object categorization problem in computer vision. Whereas most machine learning based object categorization algorithms require training on hundreds or thousands of images and very large datasets, one-shot learning aims to learn information about object categories from one, or only a few, training images.

Концентрация обучения,Каждая категорияЕсть образцы, но они простоНебольшое количество образцов(Только один или несколько). На данный момент мы можем изучить обобщенное отображение на более крупном наборе данных или использования графика знаний, доменных знаний и т. Д., А затем обновлять отображение обновления на небольшом наборе данных.

ПРИМЕЧАНИЕ. Необходимо запустить, чтобы не позволить лошадимногиеПасусь
Zero shot learning что это такое простыми словами. d27e858010de4479ff9c649b03ecd5e3. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-d27e858010de4479ff9c649b03ecd5e3. картинка Zero shot learning что это такое простыми словами. картинка d27e858010de4479ff9c649b03ecd5e3

(3) Несколько выстрелов

Эквивалентно изучениюOne-shot LearningОтказ Ключ такогоИзучать хорошее сопоставлениеЭто может быть применено к проблеме, которая не была замечена.

(4) традиционное обучение

Традиционное глубокое обучениеМассивные данные + повторное обучениеРежим алхимии.

Примечание: прерия дома, Merger MarsНебрежно есть
Zero shot learning что это такое простыми словами. 9ac49b6283196bebafac82aeeea040e7. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-9ac49b6283196bebafac82aeeea040e7. картинка Zero shot learning что это такое простыми словами. картинка 9ac49b6283196bebafac82aeeea040e7

Источник

Играем с CLIP. Создаем универсальный zero-shot классификатор на Android

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

TLDR: приложение можно скачать и потестить тут

Эта статья является дополненной и сильно расширенной версией моей статьи в TowardsDataScience о создании приложения, использующем новейшую мультимодальную нейросеть от OpenAI

В чем проблема классификаторов?

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

Для некоторых задач сбор данных может быть очень затруднительным

Почему CLIP?

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Оказалось, что для многих задач Zero-shot learning работает даже лучше, чем натренированные на специально отобранных датасентах state-of-art сверточные нейросети.

Архитектура приложения

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

Телефон обладает доступом к изображениям (с камеры или из хранилища). После предварительной обработки (изменения разрешения и перенормировки каналов) изображение при помощи нейросети-трансформера превращается в 512-мерный вектор. Данный вектор сравнивается с каждым из векторов одного из предварительно сгенерированных наборов. Выдается описание 5 наиболее близких векторов.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Работаем с CLIP (Python)

Для разработки я использовал дистрибутив Anaconda python. Установим необходимые библиотеки

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

И создаем модель CLIP. Работу с ним будем вести на GPU:

Найдем несколько списков названий классов (я использовал 4000 наиболее часто используемых существительных в английском языке, список пород кошек, список 10000 самых известных людей, список названий еды, национальностей и еще несколько других). Функция create_pt_xml создает предложения по шаблону, разбивает их на части (токенизирует), превращает в набор векторов, создает и сохраняет TorchScript модуль для сравнения любого вектора с векторами из набора и нахождения 5 ближайших векторов. create_pt_xml также сохраняет xml файл для чтения названий классов. Сгенерированные файлы будут использованы в приложении:

Создаем приложение для Android (Java)

Серверная часть (Python/flask)

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Буду смотреть по нагрузке.

Крутая часть! Тестируем!

Приложение работает на удивление хорошо. Сначала давайте повторим удивительные результаты OpenAI, который обнаружил схожие активации нейронов в одной концепции, представленной разными способами:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Общий классификатор NOUN использует 4000 наиболее часто используемых английских существительных и предложений, сгенерированных шаблоном «This is an image of NOUN».

Приложение определенно «понимает», что все эти понятия относятся к паукам. Интересно, что оно распознает текст, поэтому я решил протестировать его на работах бельгийского художника Рене Магритта, чьи работы в значительной степени наполнены взаимодействием слов и изображений:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

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

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Здесь есть что-то определенно французское) Мне стало особенно любопытно, можно ли описывать любые изображения, используя названия коктейлей:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Список похожих коктейлей меня порадовал. Зеленый гоблин? Кажется у сети все неплохо со знанием вселенной Marvel) Также очевидно, что это изображение чего-то красного и большого, летающего или даже похожего на насекомое. Чтобы протестировать серверную часть, я создал на телефоне классификатор, определяющий профессию по изображению. Я нашел список из 30 профессий в одном из учебников английского языка и добавил их. Модель была успешно сгенерирована на сервере и загружена. К сожалению, на это ушла пара минут (

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Проверим, как работает созданная на сервере модель:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Видим, что приложение неплохо определяет профессии.

А кто по профессии Человек-Паук?

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Что касается других классификаторов, то они работают хорошо:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Или, как выяснили исследователи OpenAI, мы можем использовать их для выявления некоторых географических ассоциаций:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Думаю ассоциативному мышлению неизбежно сопутствует предвзятость, поэтому от нее невозможно полностью избавиться в сложных системах типа нейросетей:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Zero shot learning что это такое простыми словами. 1821de47addd85a7d7c19246cfd1abdc. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-1821de47addd85a7d7c19246cfd1abdc. картинка Zero shot learning что это такое простыми словами. картинка 1821de47addd85a7d7c19246cfd1abdc

Загрузка на Google Play market

Монетизация

Если приложение будет пользоваться популярностью, я собираюсь добавить пару баннеров из AdMob, чтобы оплатить сервер и заработать немного денег)

Проблемы

Что можно добавить

Еще подумываю добавить режим one-shot (одна фотография используется для создания классификатора). Это улучшение можно легко реализовать в приложении.

Не стесняйтесь обращаться ко мне в случае новых идей, предложений или вопросов!

Источник

Few-shot-learning и другие страшные слова в классификации текстов

как мы ни колотились отличить.”

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderParaphrase identification. (Источник (https://twitter.com/TRushent/status/1009556472928219136/photo/1))

Краткий экскурс в классификацию текстов

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

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

Описание задачи и подходов к решению

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

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

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

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderЗдесь тоже была своя задача по организации хранения книг (источник: https://www.puzzlewarehouse.com/Library-of-Cats-17083.html)

Решение

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

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

Если через tSNE перейти в двухмерное пространство, то распределение объектов в нем до дообучения(слева) и после(справа) будет выглядеть следующим образом:

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Цветом обозначены реальные классы объектов и видно, что после дообучения классы явно лучше кластеризуются, чем до. Кроме того, выделяются явные отдельные тематики, которые интересно исследовать.

Обобщение задач NLP

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

Делят набор данных на “обучение” и “тест”, не только исходя из фактора данных, но и из фактора задачи. Так часть задач они используют для обучения модели, а часть откладывают для тестирования.

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

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

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

Источник

Нейронная Сеть CLIP от OpenAI: Классификатор, который не нужно обучать. Да здравствует Обучение без Обучения

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Можете представить себе классификатор изображений, который решает практически любую задачу, и который вообще не нужно обучать? Представили? Выходит, что это должен быть универсальный классификатор? Все верно! Это новая нейросеть CLIP от OpenAI. Разбор CLIP из рубрики: Разбираем и Собираем Нейронные Сети на примере Звездных Войн!

Никогда не работали с нейронными сетями, но хотите получить решение высокой точности для классификации? Нет данных, нет разметки, но срочно нужен классификатор изображений для конкретной задачи? Хотите построить стартап — поисковик будущего, который найдет соответствующие фотографии или кадры из фильмов по текстовому описанию, например, «Дарт Вейдер душит очередного штурмовика», и сделать это лучше чем Google? Удивлены качеством изображений, сгенерированных DALL•E (смотри обложку поста) по описанию «комната с белыми креслами и картиной Дарта Вейдера на стене»? Интересно как можно численно оценить качество подобной генерации? Хотите узнать, как достичь высокой точности на датасете ImageNet, не обучая нейросеть ни на одном изображении из ImageNet?

Подробно и доступно разбираем что такое «обучение без обучения» и саму нейросеть CLIP от OpenAI. Стираем границы между Текстом и Изображением. Внимание: статья подходит под любой уровень: от нулевого до профи.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader


Если тебе интересно машинное обучение, то приглашаю в
«Мишин Лернинг» — мой субъективный телеграм-канал об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.

Зачем нам CLIP и чем плох старый добрый «классификатор»?

1000 отобранных классов из датасета ImageNet

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

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

Именно в этом и кроется ограниченность такого подхода к классификации. Если нужно добавить новые классы к имеющимся, или заменить исходные классы на новые, оставив знания (веса) нейронной сети, полученные на исходном изображении, нужно прибегать, например, к linear probe в рамках парадигмы transfer learning. Сама идея transfer learning стара как мир, и заключается в том, чтобы знания, полученные при решении одной задачи, применить к новой, но схожей задаче. А linear probe — простейший из подходов в transfer learning, который использует репрезентацию, подготовленную исходной моделью, с дальнейшим обучением линейного классификатора (linear classifier) на основе этой репрезентации.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderПодробнее для тех, кто не знаком со сверточными сетями

По сути, изображение входит в сеть (например ResNet-50 или ResNet-101) в виде тензора, например 224x224x3. Очевидно, что перед входом в сеть этот тензор стоит интерпретировать, как исходное изображение, высота 224 и ширина 224 которого, несет пространственный смысл, а глубина в три канала отвечает за цвет (red, green, blue). Дальше этот тензор, протекающий (калька с названия фреймворка tensorflow кажется мне оригинальной в этом контексте), или двигающийся по сети в прямом распространении, будет чаще всего сужаться по высоте и ширине, и углубляться по количеству каналов, и будет нести уже не цветовой смысл, а некоторую репрезентацию (от простых паттернов до сложных объектов, таких, как лица, силуэты, колеса, крылья).

На последнем слое изображение представляется в виде n-мерного вектора. Размерность этого вектора может быть 1280 или 4096, или еще какой-нибудь другой (зависит от архитектуры сети). Это самая высокоуровневая репрезентация. Исходное изображение, пройдя через всю нейронную сеть до последнего слоя, становится такой векторной репрезентацией. Каждое число в этом векторе можно интерпретировать как выраженность того или иного признака. Сеть, подготавливающую эти признаки (или фичи), называют фича-экстрактором. По этим признакам (фичам) последний линейный слой нейронной сети и делает вывод о том, что находится на изображении: человек или пароход.

Предположим, что мы хотим сделать классификатор X-Wing, A-wing и TIE fighter из Звездных Войн. Нам не обязательно обучать всю сеть с нуля. Особенно, если мы смогли собрать только по восемь примеров изображений каждого корабля. Давайте воспользуемся сетью, предобученной на миллионе изображений, которая уже умеет готовить векторную репрезентацию. Иными словами, заберем выход предпоследнего слоя сети, через которую прошло наше изображение. Теперь нам нужно будет добавить эти классы в последний слой (добавить нейроны, отвечающие за эти классы).

Осталось лишь обучить веса парочки нейронов, чтобы они научились интерпретировать векторную репрезентацию с предпоследнего слоя, и на основе этого решать что именно находится на изображении. И такой подход, скорее всего, будет неплохо работать, так как A-wing похож на лодку, X-Wing — на самолет, а TIE fighter — на пару спутниковых антенн с глазом между ними, только все это на черном космическом фоне. Именно это и есть linear probe, о котором писалось выше. Более точно такой подход называют few-shot linear probes, так как у нас есть лишь несколько примеров для каждого класса. А если точнее, то в этом примере по восемь.

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

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

От Ограничений к Универсальности

Возможно ли добиться такого же, или даже лучшего результата, вообще не обучая сеть на новых данных и используя для обработки изображений ту же самую архитектуру нейронной сети. Например, получить готовый классификатор на архитектуре ResNet-50 или ResNet-101, или на любой другой архитектуре, и при это не обучать сеть под новую задачу! Да, именно, совсем не обучать! Подход, о котором пойдет речь дальше, я буду называть «обучение без обучения» или zero-shot transfer learning.

Ресерчеры из OpenAI показали, что обучение на парах изображение-текст, даже необработанный текст — это многообещающая альтернатива «классическим» классификаторам. Задача предварительного обучения (предобучения), заключается в том, чтобы для каждого изображения из пары изображение-текст угадать, какое текстовое описание (promt) соответствует именно ему. Сеть, способную решать эту задачу, предобучили на 400М пар изображение-текст, собранных из интернета. Такая сеть будет способна ранжировать по метрике схожести визуальные и текстовые концепции. Затем такую модель можно с легкостью использовать для огромного спектра задач в режиме «обучения без обучения».

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

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

Далее, в режиме классификатора на новом датасете, предобученный текстовый кодировщик (трансформер) автоматически подготавливает линейный классификатор в режиме «обучение без обучения», готовя векторную репрезентацию (embedding) на основе классов нового датасета, пропущенных через этот кодировщик в текстовой форме!

Исследователи из OpenAI добились точности оригинального ResNet-50 на ImageNet в режиме «обучения без обучения», то есть без необходимости использовать хотя бы один пример из 1,28 миллиона обучающих примеров, на которых он был обучен оригинальный ResNet-50!

Разбираем CLIP

Если уже все понятно, то поздравляю, Вы неплохо знаете нейронные сети. А если нет, то не страшно, давайте разберем и поймем. Добро пожаловать в раздел «Разбираем«. Мы подробно обсудим:

What’s in the Box? Что представляет из себя CLIP, какая у него архитектура?

Предобучениемать учения. Как его предобучают на парах изображение-текст?

Обучение без Обучения. Как получить классификатор в режиме «обучение без обучения» для своей задачи не имея никаких данных?

Результаты. Какая точность у классификатора CLIP на различных датасетах, на которых он не обучался?

Beyond the Infinite. Какие задачи может решать CLIP, кроме классификации?

What’s in the Box?

Начнем с того, что сфокусируемся на том, что же на самом деле из себя представляет CLIP. Если говорить прямо, то CLIP не является одной нейронной сетью. Можно сказать, что CLIP является фреймворком тренировки двух нейронных сетей.

Фреймворком не в том смысле, в котором PyTrorch и TensorFlow, а в том, в котором говорят, например, про GANы. Как многие из нас знают, GAN представляет из себя, по крайней мере, две нейронных сети (генератор и дискриминатор), которые тренируются в определенном режиме. Затем чаще всего используется именно одна сеть — генератор. А вторая играла важную, но все же вспомогательную роль (относительно самой задачи) на этапе тренировки. Для генератора и дискриминатора могут использоваться разные архитектуры. Именно режим обучения этих двух нейронных сетей мы и называем фреймворком GAN, а не сами нейронные сети, выбранные для решения генеративной или дискриминативной задачи. Подобная аналогия уместна и в нашем случае. CLIP — это не столько нейросеть, сколько режим тренировки и требования к выбору нейросетей для совместного обучения.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderCLIP — есть поэлементное cosine similarity текстовых и визуальных репрезентаций

Для начала нам нужно выбрать две архитектуры нейронных сетей для того, чтобы объединить их в гибрид или нейрохимеру под названием CLIP. Одна сеть должна принимать изображение, и готовить на основе него некую векторную репрезентацию, вторая — должна съедать текст, и готовить уже на основании него некую векторную репрезентацию той же размерности, что и правая сеть. Так как подобрать две нейронные сети из разных областей (CV и NLP), обладающих одной и той же размерностью выходных фич, будет нереально, то стоит добавить еще слой к каждой из архитектур, который подготовит репрезентацию одинаковой размерности. Будем называть эти слои линейными преобразованиями для согласования размерностей.

С выбором фича-экстрактора для текста тоже все понятно. Это же OpenAI. Тут к гадалке не ходи, точно будет GPT. Как и изображения, проходящие через сверточную нейронную сеть предстают перед последним решающим линейным слоем в виде вектора фич (или векторной репрезентации), так и текст, пройдя через внутренности трансформера или безвременно ушедших рекуррентных сетей, тоже будет представлен в виде некой векторной репрезентации. Авторы советуют для этой цели использовать CBOW или Text Transformer.

Zero shot learning что это такое простыми словами. 0535383093447a7ed5e793ac8adabd85. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-0535383093447a7ed5e793ac8adabd85. картинка Zero shot learning что это такое простыми словами. картинка 0535383093447a7ed5e793ac8adabd85Картина. Дарт Вейдер убивает своего сына

Основная идея CLIP — создание единого векторного пространства для текстовых и визуальных репрезентаций!
Ведь нам совершенно не важно, показали ли нам эту картинку, прочитали ли мы текст «Картина. Дарт Вейдер убивает своего сына», или мы услышали это предложение от кого-то. Скорее всего, мы все представим нечто похожее.
Именно в этом и есть идея CLIP — построить мост между изображением и текстом!

Предобучение – мать учения

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderМатрица поэлементных cosine similarity между парами векторных репрезентаций изображений и текстовых описаний

Иногда сама реализация — лучшее описание. Давайте разберем Numpy-like pseudocode архитектуры CLIP.

I_f и T_f — это векторные репрезентации изображений и текстовых описаний, прошедшие соответствующие им Image Encoder и Text Encoder

I_e и T_e — это нормализированные (до единичной длины) репрезентации одинаковой размерности, подготовленные линейными преобразованиями для согласования размерностей.

labels — это просто вектор, описывающий координаты правильных пар по вертикали и диагонали матрицы поэлементных cosine similarity. e.g.: np.arange(7) # array([0, 1, 2, 3, 4, 5, 6])

loss_i и loss_t — это перекрестные энтропии по изображения и текстовым описаниям, вычисленные из ligits по вертикали и горизонтали этой матрицы (axis=0 и axis=1)

loss — средняя энтропия по изображениям и текстовым описаниям.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Детали обучения. Можно пропустить

Ресерчеры обучили пять различных версий ResNet и три версии Vision Transformers. В качестве ResNet’ов брали ResNet-50, ResNet-101, и затем еще 3 архитектуры, которые получены путем масштабирования модели в стиле EfficientNet, и примерно в 4, 16 и 64 раза больше, чем ResNet-50. Они обозначаются как RN50x4, RN50x16 и RN50x64 соответственно. В качестве Vision Transformers были взяты ViT-B / 32, ViT-B / 16 и ViT-L / 14.

Все модели обучались в течение 32 эпох. Обучение производили оптимизатором Adam, и использовали decoupled weight decay regularization и learning rate decay, используя косинусный отжиг (lr_scheduler). Ребята использовали очень большой размер мини-батча 32 768 (это и мини-батчем назвать сложно), используя mixed-precision. Стоит сказать, что под расчет матрицы сходства (поэлементных cosine similarity) был выделен отдельный графический процессор. Ну, это вполне логично, учитывая размер «мини-батча» в квадрате.

Самая большая модель семейства ResNet: RN50x64 обучалась на 592 графических процессорах V100, и предобучение заняло 18 дней, в то время как для самого большого Vision Transformer потребовалось 12 дней на 256 видеоускорителях V100.

Обучение без Обучения

Обычно в компьютерном зрении, используют понятие zero-shot learning, подразумевают возможность модели генерализовать знания, и применять их к объектам, классов которых не было в исходном датасете. Ресерчеры из OpenAI пошли еще дальше, и решили использовать знания своей модели CLIP для применения к целым датасетам, которые не были использованы при предобучении. Это позволяет рассматривать термин zero-shot learning в куда более широком смысле. Мы стали свидетелями нового направления в deep learning — обучения без обучения. Я считаю, что подобный подход является очень перспективным. Просто представьте какой огромный класс задач можно будет решить, не прибегая собственно к обучению?

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderРазница между классическим подходом к классификации и гибридным подходом CLIP

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

Это возможно лишь потому, что исходная нейросеть предобучалась на колоссальном по размеру датасете пар изображение-текст, и способна не только понимать, что на изображении котик или собачка, как это делают большинство классификаторов, а полностью репрезентировать весь контекст! Какая собака на фото? Какого она цвета? Каким объективом она снята? С какого ракурса? Что находится за собакой? Какое время года на снимке? В каких годах было сделано это фото? Куда направлен взгляд у собаки? Какие внутренние или внешние мотивации заставили собаку принять именно эту позу? Если ответов на все эти вопросы нет в векторной репрезентации, то CLIP не сможет подобрать правильное наиболее подходящее описание. Выбрать то, что соответствует изображению больше: «черная собака на фоне осеннего леса» или «нарисованный пес ест мороженное».

Как мы видим, CLIP справляется с этой задачей в большинстве случаев. Вот пример того, как CLIP находит текстовое описание, максимально соответсвующее фотографиям из различных датасетов. Обратите внимание, что запрос формулируется очень специфически: а photo of a ____ или a centered satellite photo of ____. Как можно догадаться, подобная формулировка позволяет более узко и специфично производить настройку или адаптацию под конкретный датасет во время обучения без обучения. Черт возьми, это чуть ли не машинное обучение на словах! Правильная словесная формулировка и описание классов — готовый классификатор.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderМашинное обучение на словах!

Справедливости ради, стоит заметить, что CLIP не способен классифицировать опухоли. Я, кстати, тоже. И это вполне естественно. Ведь сама идея transfer learning заключается в переносе знаний только на похожий класс задач. Вывод такой:

Нужно автоматически отличать нарисованных английских кокер-спаниелей, от нарисованных американских кокер-спаниелей, но нет времени возиться с парсингом датасета и с обучением нейронной сети? — Пожалуйста, CLIP!

Никогда не работали с нейронными сетями, но хотите получить решение высокой точности для классификации? — Нет проблем, CLIP!

Хотите построить стартап — поисковик будущего, который найдет соответствующие фотографии или кадры из фильмов по текстовому описанию, например, «Дарт Вейдер душит очередного штурмовика», и сделать это лучше чем Google? — Я бы начал с CLIP!

Нужно классифицировать галактики или медицинские снимки? — Забыли про CLIP. Идем искать лучше датасеты, и читайте пейперы.

Результаты

Возникает пару логичных вопросов. Давайте попробуем ответить на них в форме диалога.

— Может быть лучше взять предобученную на ImageNet сеть, какой-нибудь ResNet-50, и просто сделать linear probe, разметив пару десятков изображений новых классов?
— Может быть и лучше. Давайте посмотрим на результаты подобного эксперимента.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Zero-shot CLIP превосходит few-shot linear probes! CLIP без обучения работает лучше, чем CLIP, Image Encoder которого был взят как фича-экстрактор, и обучен под новые классы (4-shot linear probes), размеченными по 4 изображения на класс. Качество Zero-shot CLIP сопоставимо с BiT-M после 16-shot linear probes. При этом, если продолжать few-shot learning на CLIP, он начинает быстро обгонять другие модели, обучаемые тем же linear probes на том же количестве новых размеченных данных.

— Что касается обучения на фичах классического ResNet-50 слоя logistic regression, если есть огромный датасет. Возможно решение старой-доброй линейной классификации на фичах ResNet-50 будет работать лучше, чем обучение без обучения на CLIP? Ведь CLIP в глаза эти датасеты не видел?
— Да.. Но нет.. Вот Mnist лучше обучать. А StanfordCars лучше не обучать, если хочется иметь большую точность. Да и даже к ResNet-50 на ImageNet есть очень большие вопросы..

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Обучение без обучения на CLIP может конкурировать с baseline(слоя logistic regression на фичах классического ResNet-50) полученным обычным обучением с учителем. Перед вами список из 27 датасетов. Обучение без обучения на CLIP превосходит baseline классификаторы, полученные обучением с учителем на 16 из 27 датасетов, включая ImageNet! В качестве фича-экстрактора выступает ResNet-50. Интересно и то, что CLIP значительно превосходит baseline по двум датасетам Kinetics700 и UCF101 в задаче «распознавания действий на видео«. Это связано с тем, что естественный язык обеспечивает более подробную репрезентацию для этой задачи.

— Но все же, если у меня есть огромный датасет, и огромные вычислительные мощности, не лучше ли будет работать классификатор, обученный на этом датасете с нуля методом обучения с учителем?
— Да, скорее всего так и будет. Можно взять топовую нейроархитектуру, и обучить классификатор конкретно под нужный датасет. И, конечно, он будет работать лучше. Лучше, но не робастнее (не устойчивее). Если есть уверенность, что распределение данных не будет сильно меняться, то CLIP не нужен.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderZero-shot CLIP оказывается более устойчивым к сдвигу распределений, чем модель обученная на ImageNet.

Zero-shot CLIP оказывается более устойчивым к сдвигу распределений, чем модель обученная на ImageNet.

Продемонстрируем сдвиг по фазе в распределении изображений бананов. Этот класс общий для шести датасетов. Качество лучшей модели CLIP (ViT-L / 14 @ 336p) с обучением без обучения, сопоставимо с моделью ResNet-101, которая имеет такую ​​же точность на исходном датасете ImageNet. Предположим, что вы решили сделать приложение для распознавания бананов. Это всего лишь пример. И воспользовались неплохой архитектурой, которая показывает отличный результат на ImageNet. Но может оказаться так, что в реальности приложение будут использовать в таких условиях, что распределение изображений будет больше походить на распределения из датасетов ObjectNet или ImageNet-A. Вполне возможный кейс. Если нет уверенности в распределении, то лучше будет выбрать CLIP.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

Идеальная по устойчивости модель (пунктирная линия) одинаково хорошо работает в распределении ImageNet и в других аналогичных распределениях изображений по совместным классам. Модели CLIP с обучением без обучения оказываются робастнее обычных моделей, обученных на ImageNet, и даже моделей, к которым применялись известные методы повышения устойчивости. Из этого стоит сделать вывод, что CLIP является не только прорывом в области классификации через обучение без обучения, но и бьет рекорды по устойчивости, благодаря обучению не на сырых классах, а на парах изображение-текст, содержащих куда более обширный контекст. Теперь важность контекста стала очевидна не только для NLP, но и для CV.

За пределами классификации и почему CLIP — лучший друг DALL·E?

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

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loader

В отличие от задачи Image Captioning (описание изображений на естественном языке), нейросеть DALL·E решает куда более сложную (обратную) задачу — генерацию изображений по текстовому описанию.

Zero shot learning что это такое простыми словами. 68e290be1f09174f9055dcac2506a85e. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-68e290be1f09174f9055dcac2506a85e. картинка Zero shot learning что это такое простыми словами. картинка 68e290be1f09174f9055dcac2506a85e

Разберем конкретный пример. DALL·E попросили сгенерировать изображения по описанию: a living room with two black armchairs and a painting of darth vader. the painting is mounted above a coffee table. Качество результатов говорит само за себя

Исследователи из OpenAI утверждают, что сами не отбирали лучшие картинки, сгенерированные DALL·E. Но все ли изображения, которые генерирует DALL·E, удовлетворяют нас не только качеством, но и соответствием текстовому описанию?

Как видно, не все кресла получились черные, и не все изображения содержат кофейный столик. На самом деле DALL·E не всегда генерирует то, что было в тексте.

Ресерчеры из OpenAI придумали отличный подход. Нам показываются 32 лучших примера из 512-ти сгенерированных DALL·E, отобранных нейросетью CLIP. По сути, можно сказать, что CLIP выступает в дискриминантной роли, выбирая те изображения, чья метрика схожести с исходным текстовым описанием (promt) максимальна.

Zero shot learning что это такое простыми словами. image loader. Zero shot learning что это такое простыми словами фото. Zero shot learning что это такое простыми словами-image loader. картинка Zero shot learning что это такое простыми словами. картинка image loaderДва возможных режима использования гибридной нейронной сети CLIP

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

Заключение

Как мы видим, нейрогибридная сеть CLIP — это действительно новый взгляд на объединение NLP и CV. Последние несколько лет мы наблюдали триумфы в области обработки естественного языка, и языковые модели действительно наделали много шума, совершив новую революцию и, в очередной раз, отложив новую «зиму» искусственного интеллекта в долгий ящик. Совсем недавно мы начали наблюдать явление, когда технологии, вроде бы изначально присущие только NLP, стали бить рекорды в компьютерном зрении: Vision Transformers. Методы few-shot и zero-shot learning проникают в сферу компьютерного зрения уже благодаря гибридным nlp и cv моделям. Посмотрим, что нас ждет дальше, и какие еще модели и методы пополнят наши славные ряды!
Кто теперь с нами? CLIP — устойчивый классификатор, который не нужно даже обучать, и лучший друг DALL·E!

Полезные ссылки

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

Даже нетренированный и знакомый со всеми нюансами машинного обучения человек, такой как Andrej Karpathy обладает 95% точностью top-5 на датсаете ImageNet. На начало 2021 года искусственный интеллект достиг точности в 98.8% top-5 (EfficientNet-L2) на датсаете ImageNet.

Vision Transformers могут начать вытеснять сверточные нейронные сети. И в ближайшее время мы увидим все больше интереса именно к этим архитектурам. Создатели CLIP обучили CLIP-ViT на основе Vision Transformer’ов. Это три модели обученные на разрешении 224×224 : ViT-B/32, ViT-B/16, ViT-L/14, и модель ViT-L/14, fine-tune которой производился на изображениях 336х336.

Ну вот и все! Надеюсь, что материал оказался полезным. Спасибо за прочтение!

Что ты думаешь о CLIP? Как тебе идея «обучения без обучения»? Где, по-твоему, может быть полезна такая технология? Насколько тебя впечатлили результаты? Есть ли какие-то вопросы? Интересна ли тебе новая рубрика «Разбираем и Собираем Нейронные Сети«? Какие темы тебе были бы интересны? Давай обсудим в комментариях!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *