Что такого особенного в векторных вложениях

Чтотакогоособенноговвекторныхвложениях

Введение

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

Алгоритмы машинного обучения, как и большинство программных алгоритмов, нуждаются в числа для работы. Иногда у нас есть набор данных со столбцами числовых значений или значений, которые можно преобразовать в них (порядковые, категориальные и т. Д.). В других случаях мы сталкиваемся с чем-то более абстрактным, например, с целым текстовым документом. Мы создаем векторные вложения, которые представляют собой просто списки чисел, для таких данных, чтобы выполнять с ними различные операции. Целый абзац текста или любой другой объект можно свести к вектору. Даже числовые данные можно преобразовать в векторы для упрощения операций.

Vector Embeddings are a list of numbers

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

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

Semantic similarity in sentence embeddings. Источник: DeepAI

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

Векторные вложения

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

Вместо инженерных векторных встраиваний мы часто обучаем модели преобразовывать объекты в векторы. Глубокая нейронная сеть – распространенный инструмент для обучения таких моделей. Результирующие вложения обычно имеют большие размеры (до двух тысяч измерений) и плотные (все значения не равны нулю). Для текстовых данных такие модели, как Word2Vec , ПЕРЧАТКА и БЕРТ преобразовывать слова, предложения или абзацы в векторные вложения.

Изображения могут быть встроены с использованием таких моделей, как сверточные нейронные сети (CNN) . Примеры CNN включают VGG и Начало . Аудиозаписи можно преобразовать в векторы с помощью преобразований встраивания изображений по визуальному представлению звуковых частот (например, с помощью его спектрограммы ).

Пример: вложение изображения с помощью сверточного нейронного канала. Сеть

Рассмотрим следующий пример, в котором необработанные изображения представлены в виде пикселей в градациях серого. Это эквивалентно матрице (или таблице) целочисленных значений в диапазоне 0 к 679 . При этом значение 0 соответствует черному цвету и 255 до белого цвета. На изображении ниже изображено изображение в оттенках серого и соответствующая ему матрица.

Grayscale image representationИсточник: Серена Янг

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

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

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

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

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

Typical CNN architectureИсточник: Aphex 34, CC BY-SA 4.0

Для изучения сетевых весов (т. Е. Модели внедрения) требуется большой набор помеченных изображений. Веса оптимизируются таким образом, что изображения с одинаковыми этикетками размещаются ближе по сравнению с изображениями с разными этикетками. Как только мы изучим модель встраивания CNN, мы можем преобразовать изображения в векторы и сохранить их с индексом K-Nearest-Neighbor. Теперь, получив новое невидимое изображение, мы можем преобразовать его с помощью модели CNN, получить его k-наиболее похожих векторов и, следовательно, соответствующие похожие изображения.

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

Использование векторных вложений

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

Поиск по подобию – одно из самых популярных применений векторных встраиваний. Алгоритмы поиска, такие как KNN и ANN, требуют от нас расчета расстояния между объектами для определения сходства. Для вычисления этих расстояний можно использовать векторные вложения. Поиск ближайшего соседа, в свою очередь, может использоваться для таких задач, как дедупликация, рекомендации, обнаружение аномалий, обратный поиск изображений и т. Д.

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

Проверить некоторые приложения вы можете создавать с помощью векторных встраиваний и Pinecone.