Как стать автором
Обновить

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

Время на прочтение 18 мин
Количество просмотров 41K
Всего голосов 28: ↑28 и ↓0 +28
Комментарии 24

Комментарии 24

P.S. Статья появилась, именно благодаря таким запросам. Так, что если тебя интересует какая-то тема в машинном обучении — предлагай!
image
На минуту впал в ступор от скриншота, пытаясь нажать стрелку вверх. :-)
Забавно! Меня самого, кстати, мой же скрин тоже сбил с толку)
Я не соглашусь что CLIP — обучение без учителя. Мы можем конфигурировать вывод некой сети доп. Linear слоем (обычный TL), программным фильтром, который, например, будет считать расстояния в N-размерности embedding-ов, или их комбинацией, как CLIP, но факт остается — сначала с учителем (картинка <-> текст), потом настройка текстом (фильтр). Тем не менее, интересно, спасибо за труд)
Большое спасибо за интерес к теме! Старался подробно и доступно разобрать детали. Согласен с тем, что сам процесс предобучения CLIP — supervised contrastive learning на парах изображение-текст. А процесс инференса CLIP под конкретную задачу или датасет может быть выполнен, как через обучение без учителя, так и через использование нового линейного слоя. Сами авторы делали и то и другое. И показали, что для большего класса задач, обучение без учителя показывает отличные результаты.

Если правильно понял суть, то работает это следующим образом: когда мы хотим найти картинку, где дарт вейдер душит штурмовика, то сеть найдёт (даст макс скор) картинку, где максимально точно раскрыты понятия "дарт вейдер", "герой 1 душит героя 2", "штурмовик"?
Если так, то чем это отличается от старого доброго классификатора, обученного под эти понятия и функции, которая на основе скоров на эти три класса даст итоговый класс?

Спасибо за интерес к теме! Разница в том, что CLIP считатет этот скор, как cosine similarity в общем пространстве визуальных и текстовых репрезентаций.

1. Работа в этом направлении велась. Но, то, что Вы описываете не может быть «классическим» классификатором. Описанное Вами решение должно быть детектором + графом «вещь, свойство — отношение». Вот пример подобной работы: image

2. Были попытки решения подобной задачи и через Dense Captioning:
image

Все эти варианты не являются старыми добрыми классификаторами по своей природе. Да и требуют они достаточно сложной и специфической разметки. CLIP же на этапе предобучения требует лишь пары изображения-текст, которых полно в интернете, откуда они и были взяты. Кроме того, CLIP, в отличие от подобных подходов, отлично показывает себя в режиме «обучение без обучения».
Что-то меня подход Open-AI к публикациям изумляет. «У нас есть такая модель! Но мы вам её не покажем. И API не дадим. И про архитектуру расскажем совсем чуть-чуть. Зато смотрите какая она классная — вот картиночки. Что? Как проверить? А зачем вам — джентельменам надо верить на слово.»
Прекрасно Вас понимаю. GPT-3 — не для смертных. DALL·E — еще не понятно, надеюсь, что хоть маленькую версию дадут в доступ. CLIP — доступен, например TorchScript для ViT-B/32 версии CLIP. Можно юзать.
Если будет интересно, то могу сделать статью Собираем CLIP, где покажу как его юзать и подготовлю примеры кода.
О, действительно, CLIP доступен, проморгал ссылку на гитхаб. Спасибо.
Не за что! В этот раз, действительно, OpenAI оказался не совсем ClosedAI.
Если есть предложения по поводу примеров, на чем продемонстрировать работу CLIP и какой классификатор собрать используя обучение без обучения, то пишите.
Спасибо за статью. А можно вопрос? CLIP доступен уже в предобученном виде на огромном количестве пар фото-текст? Также его можно обучить самому на своей базе размеченных фото?
Добрый день! Не за что! Да, все верно!
1. CLIP, предобученный на 400М пар изображение-текст, доступен. Можно использовать в режиме обучения без обучения (например ViT-B/32 CLIP).
2. Можно взять предобученный CLIP и режиме few-shot linear probes обучить голову на своей базе размеченных фото.

Могу сделать туториал с кодом, где покажу как можно получить свой классификатор на CLIP в режиме обучения без обучения.
Туториал тоже нужная вещь. Спасибо!
Можно использовать в режиме обучения без обучения (например ViT-B/32 CLIP).


Не могли бы еще раз уточнить, чтобы лучше встало на места? Предобученный contrastive CLIP может давать предсказания (inferences) для новых тэгов, которых не было в обучении, просто потому что векторизация тега будет по размерности встроена в существующее пространство параметров модели? То же, для новых фотографий, и даже пар новое фото — новый тэг? Или новые фото уже не укладываются в схему «обучение без обучения»?

А если набор специфичен, то нужно дообучать линейный слой выходов? Например, www.tassphoto.com/en/feature/337476/video-launching-ceremony-for-russian-navy-patrol-boat-sergei-kotov/page/1

Тут никто, по сути, кроме фото-корреспондента не совсем понимает, что происходит. А это «Спуск на воду нового патрульного катера Сергей Котов». Вряд ли дефолтный CLIP тут что-то даст близкое к истинному происходящему. Верно я понял?
Я понял вашу мысль, а давайте попробуем. Загрузим эти фотки, где «спуск на воду патрульного катера», и фотки с открытия какой-то стройки или открытия парка. Подберем правильные формулировки. И посмотрим. Код доступен. Будет интересно!

Как по мне это пока ещё не впечатляет.

Что именно?

Результат работы этой сетки.

Имхо, одна из важнейших и лучших сетей современности

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

Я лишь говорю, что результаты её работы по прежнему выглядят недостаточно чтобы сказать "Вау, это комп сам нарисовал? Офигеть, вот это да!".

Опять же, может кому-то и этого достаточно, не претендую на выражение общественного мнения.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории