Вложения: Получение вложений

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

Методы уменьшения размерности

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

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

Обучение встраиванию как части нейронной сети

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

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

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

Во время обучения модель нейронной сети узнает оптимальные веса для узлов в первом скрытом слое, который служит слоем внедрения. Например, если модель содержит три узла в первом скрытом слое, она может определить, что тремя наиболее важными аспектами продуктов питания являются сэндвичность, десертность и ликвидность. На рис. 12 показано входное значение one-hot, закодированное для «хот-дога», преобразованное в трехмерный вектор.

Рисунок 12. Нейронная сеть для кодирования хот-дога. Первый слой представляет собой     входной слой с 5 узлами, каждый из которых помечен значком еды     представляет (борщ, хот-дог, салат, ... и шаурму). Эти узлы имеют     значения [0, 1, 0, ..., 0] соответственно, представляющие один горячий     кодировка «хот-дога». Входной слой подключен к 3-узловому внедрению     слой, узлы которого имеют значения 2,98, -0,75 и 0 соответственно.     слой внедрения соединяется со скрытым слоем из 5 узлов, который затем     подключен к 5-узловому выходному слою.
Рисунок 12. Кодирование hot dog one-hot, предоставленное в качестве входных данных для глубокой нейронной сети. Уровень внедрения преобразует горячее кодирование в трехмерный вектор внедрения [2.98, -0.75, 0] .

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

Контекстные вложения

Одним из ограничений статических векторов внедрения word2vec является то, что слова могут означать разные вещи в разных контекстах. «Да» само по себе означает одно, а во фразе «Да, верно» — противоположное. «Почта» может означать «почту», «отправить по почте», «подложку для сережек», «маркер окончания скачек», «постпродакшн», «столп», «повесить объявление»». разместить охрану или солдата» или «после» среди других возможностей.

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

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

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

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

  • В частности, для моделей ELMo статическое внедрение объединяется с внедрениями, взятыми из других слоев, которые кодируют прямое и обратное чтение предложения.
  • Модели BERT маскируют часть последовательности, которую модель принимает в качестве входных данных.
  • Модели-трансформеры используют уровень самообслуживания для взвешивания релевантности других слов в последовательности для каждого отдельного слова. Они также добавляют соответствующий столбец из матрицы позиционного внедрения (см. позиционное кодирование ) к каждому ранее изученному внедрению токена, элемент за элементом, чтобы создать входное внедрение, которое передается в остальную часть модели для вывода. Это входное внедрение , уникальное для каждой отдельной текстовой последовательности, является контекстным внедрением.

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