Представьте себе, что у вас есть коллекция данных от сотен тысяч до миллионов изображений без каких-либо метаданных, описывающих содержимое каждого изображения. Как мы можем создать систему, которая сможет найти подмножество изображений, которые лучше всего отвечают поисковому запросу пользователя?
По сути, нам понадобится поисковая система, которая сможет ранжировать результаты изображений с учетом того, насколько хорошо они соответствуют поисковому запросу, который может быть выражен либо на естественном языке, либо с помощью другого изображения запроса.
Способ, которым мы решим проблему в этом посте, — это обучение глубокой нейронной модели, которая изучает представление (или встраивание) фиксированной длины любого входного изображения и текста и делает его таким, чтобы эти представления были близки в евклидовом пространстве, если пары текст- изображение или изображение-изображение «похожи».
Мне не удалось найти достаточно большой набор данных о рейтинге результатов поиска, но я смог получить этот набор данных: http://jmcauley.ucsd.edu/data/amazon/, который связывает изображения элементов электронной коммерции с их название и описание. Мы будем использовать эти метаданные в качестве источника контроля для изучения значимых объединенных представлений текста и изображений. Эксперименты были ограничены модными предметами (одеждой, обувью и ювелирными изделиями) и 500 000 изображений, чтобы управлять затратами на вычисления и хранение.
Имеющийся у нас набор данных связывает каждое изображение с описанием, написанным на естественном языке. Итак, мы определяем задачу, в которой хотим изучить объединенное представление фиксированной длины для изображений и текста, чтобы каждое представление изображения было близко к представлению его описания.
Модель принимает 3 входных данных: изображение (которое является привязкой), заголовок изображения+описание (положительный пример) и третий входной сигнал — случайно выбранный текст (отрицательный пример).
Затем мы определяем две подмодели:
Подмодель изображения создает внедрение для привязки **E_a **, а текстовая подмодель выводит внедрение для положительного заголовка+описания E_p и внедрение для отрицательного текста E_n .
Затем мы тренируемся, оптимизируя следующие потери триплета:
L = max( d(E_a, E_p)-d(E_a, E_n)+альфа, 0)
Где d — евклидово расстояние, а альфа — гиперпараметр, равный 0,4 в этом эксперименте.
По сути, эта потеря позволяет сделать **d(E_a, E_p) маленьким и сделать d(E_a, E_n) **большим, чтобы каждое встраивание изображения было близко к встраиванию его описания и далеко от встраивания случайный текст.
После того, как мы изучили модель внедрения изображений и модель внедрения текста, мы можем визуализировать их, проецируя в двух измерениях с помощью tsne (https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html).
Тестовые изображения и соответствующее им текстовое описание связаны зелеными линиями.
Из графика видно, что в целом в пространстве встраивания изображения и соответствующие им описания близки. Это то, чего мы и ожидали, учитывая использованные потери на обучение.
Здесь мы используем несколько примеров текстовых запросов для поиска лучших совпадений в наборе из 70 000 изображений. Мы вычисляем встраивание текста для запроса, а затем встраивание для каждого изображения в коллекции. Наконец, мы выбираем 9 лучших изображений, которые наиболее близки к запросу в пространстве встраивания.
Эти примеры показывают, что модели внедрения способны изучать полезные представления изображений и встраивания простых композиций слов.
Здесь мы будем использовать изображение в качестве запроса, а затем искать в базе данных из 70 000 изображений примеры, наиболее похожие на него. Рейтинг определяется тем, насколько близко каждая пара изображений находится в пространстве встраивания с использованием евклидова расстояния.
Результаты показывают, что сгенерированные внедрения представляют собой представления изображений высокого уровня, которые отражают наиболее важные характеристики представляемых объектов, не подвергаясь чрезмерному влиянию ориентации, освещения или мелких локальных деталей и не подвергаясь явному обучению этому.
В этом проекте мы работали над блоками машинного обучения, которые позволяют нам создавать поисковую систему на основе ключевых слов и изображений, применяемую к коллекции изображений. Основная идея состоит в том, чтобы изучить осмысленную и объединенную функцию внедрения для текста и изображения, а затем использовать расстояние между элементами в пространстве внедрения для ранжирования результатов поиска.
Ссылки: