Вопрос или проблема
У меня есть два вектора одинаковой длины, которые выходят из двух идентичных слоев вложений.
Я хочу вычислить их схожесть, и я недостаточно доверяю слою вложений, чтобы просто использовать скалярное произведение (например, возможно, что разные координаты зависят друг от друга в отношении общей схожести). Я хочу изучить это, используя примеры хороших и плохих пар, не изучая собственно начальное вложение.
Я хотел бы каким-то образом объединить эти два вектора, используя другой слой, а затем подключить этот слой к выходному слою, чтобы получить окончательное решение (похож или не похож).
Тривиальный способ – добавить еще один слой и полностью соединить два соединенных вектора вложений с этим новым слоем. Недостаток в том, что модель не является симметричной, что делает пространство поиска больше, чем должно быть.
Есть ли лучший способ?
Идеи, которые у меня есть:
-
Перекрестное произведение двух векторов, затем обучать на выходе $n \times n$ (довольно просто, но может оказаться слишком много весов для обучения).
-
Создать две симметричные нейронные сети, где веса являются симметричными (как зеркальное отражение друг друга). Интуитивно это может позволить произвольные комбинации координат с обеих сторон для подачи в следующий слой (как можно уравнять веса в keras?).
Есть ли лучший способ?
Бонусные баллы: помимо симметрии, как можно обеспечить транзитивные и рефлексивные свойства? Просто добавив кучу тривиальных примеров $(x, x)$?
Это интересный вопрос! Удивительно, но я никогда не читал конкретные научные статьи по этой конкретной проблеме. Здесь вы хотели бы изучить симметричную функцию, которая преобразует два входных вектора в скаляр. В более общем контексте в литературе можно найти потребность в инвариантных к перестановкам функциях (см. Set Transformer и Aggregation Schemes for Graph Neural Network). В принципе, у вас есть два варианта:
- Как вы отметили, вы можете взять любую несимметричную функцию, такую как объединение + полносвязная сеть, и обучить ее с парами (x,y) и (y,x). Но, возможно, есть более умный способ…
- Разработать архитектуру, инвариантную к перестановкам. Ваша удача в том, что у вас только 2 вложения $e_i$ и $e_j$. К сожалению, вы говорите, что им нельзя доверять относительно их взаимного скалярного произведения. Тогда я могу предложить применить некоторую линейную/нелинейную трансформацию к вашим вложениям, то есть определить обучаемую матрицу $Q$, и вычислить скалярное произведение в новом пространстве $v_i = Qe_i$ и $v_j = Qe_j$. Обучая $Q$ на примерах пар $(e_i,e_j)$, вы найдете подходящую трансформацию вложений так, чтобы скалярное произведение $v_i \cdot v_j$ соответствовало истинной схожести. Вы, конечно, можете использовать более сложную трансформацию (например, несколько нелинейных трансформаций). Ключевой момент заключается в том, что использование одних и тех же параметров для преобразования обоих вложений обеспечивает симметрию.
Бонусные баллы: я не уверен в вашем вопросе, но мое предложение в пункте (2) может естественным образом справиться с транзитивностью и рефлексивностью.
Ответ или решение
Чтобы построить симметричную модель сходства на основе векторных представлений, необходимо учесть несколько ключевых аспектов: симметрию, транзитивность и рефлексивность функции сходства. Рассмотрим подходы к решению задачи на примере и последующей реализации.
Теория
Симметрия — это важное свойство, которое требуется от функции сходства. То есть, если мы рассматриваем векторы (x) и (y), то функция сходства должна удовлетворять условию (f(x, y) = f(y, x)).
Транзитивность и рефлексивность — это дополнительные свойства, которые могут быть полезны при моделировании сходства. Транзитивность подразумевает, что если (x) и (y) схожи и (y) и (z) схожи, то (x) и (z) также схожи. Рефлексивность предполагает, что каждый вектор схож сам с собой.
При проектировании модели необходимо учитывать, что простое использование скалярного произведения векторов может привести к неточным результатам из-за возможной коррелированности координат. Следовательно, задача приходит к необходимости использования более сложных архитектур.
Примеры реализации
-
Преобразование в векторном пространстве: Один из подходов состоит в использовании линейного или нелинейного преобразования векторов перед вычислением их скалярного произведения. Например, можно ввести trainable матрицу (Q) и трансформировать векторы (e_i) и (e_j) в новое пространство, чтобы затем вычислить их скалярное произведение.
-
Симметричные нейронные сети: Создание двух идентичных нейронных сетей, зеркально отражающих друг друга. Используемые веса в обеих сетях равны и обновляются синхронно, что обеспечивает симметрию. Это позволяет моделировать более сложные взаимосвязи между координатами векторов.
-
Перестановочно-инвариантные функции: Другой подход — это построение архитектур, которые естественным образом обладают свойством симметрии, например, используя функции, которые инвариантны относительно перестановок входных данных.
Применение на практике
Пошаговая реализация
-
Подготовка данных: Создайте обучающую выборку, содержащую примеры схожих и несхожих пар векторов. Для внедрения рефлексивности можно добавить тривиальные пары вида ((x, x)).
-
Расширение пространства представлений: Создайте матрицу преобразования (Q) и используйте её для преобразования исходных векторов (e_i) и (e_j).
-
Симметричное преобразование: С использованием фреймворков, таких как Keras, можно создать две идентичные модели, параметры которых будут обновляться совместно. Это обеспечит симметрию модели.
-
Оптимизация модели: Используйте техники обратного распространения ошибки и алгоритмы оптимизации для нахождения оптимальных параметров модели. Учтите включение примеров, которые обеспечивают свойства транзитивности.
-
Вычисление функции сходства: После преобразования векторов в новое пространство выполните финальное вычисление функции сходства в преобразованном пространстве, например, с использованием скореллированного скалярного произведения.
-
Оценка качества модели: Выполните кросс-валидацию и оцените качество модели на независимом тестовом наборе данных.
Заключение
В заключение, разработка симметричной модели сходства на основе векторных представлений — это нетривиальная задача, требующая аккуратного проектирования архитектуры и выбора методов обучения. Внедрение рефлексивных и транзитивных свойств может быть обеспечено благодаря использованию образцов данных и правильному проектированию логики обучения. Использование перестановочно-инвариантных архитектур и симметричных сетей открывает возможности для моделирования сложных и нелинейных зависимостей между векторами, что важно для создания качественных моделей сходства.