Это доказательство концептуальной статьи, которая показывает потенциал нейронных сетей для создания «проекций», сохраняющих расстояния.

Определите функцию:

Начнем с одномерных функций, в данном случае sin(x):

Рассчитать расстояния:

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

Итак, если вы едете на своей машине по поверхности sin(x), потребуется примерно 24,5 единицы, чтобы перейти от x=-10 к x=10.

Выборка:

Теперь давайте выберем случайные пары точек и расстояний на поверхности функции, сохраняя те же границы (-10, 10). Чтобы упростить задачу, будет сгенерирован равномерно распределенный диапазон, и будут рассчитаны все попарные комбинации между элементами. Диапазон будет иметь 1001 точку, это означает, что на выходе будет 1001*1000*0,5 (500500) пар точек.

Архитектура модели и обучение:

Наконец, архитектура сети будет определена в Keras, а полученная модель будет обучена с использованием ранее созданного набора данных.

Подводя итог, необходимо создать «пользовательский» слой L2 Norm из-за проблем численной нестабильности TF, вычисляющего градиент квадратного корня. В некоторых случаях использования, например, в географических системах координат, может потребоваться увеличить точность с плавающей запятой Keras/TF до 64 бит. Архитектура сети очень похожа на модель Skip-Gram, но входными данными являются плотные вектора, а не вложения, а выходной метрикой является расстояние L2 вместо косинусного расстояния. К каждой точке применяются одни и те же слои (распределение веса), затем рассчитывается норма L2 между результирующими векторами.

Результат:

Это довольно точно.

Слева точки находятся в исходном пространстве, справа точки проецируются на пространство, сохраняющее расстояния.

Заключение:

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

Будущая работа:

  1. Проверьте, возможно ли применить концепцию к двумерному кругу.
  2. Проверьте, возможно ли спроецировать поверхность n-мерного многообразия на декартову плоскость более высокой размерности, которая сохраняет расстояния. Или, другими словами, имеет ли смысл использовать 6 измерений для проецирования поверхности объекта изначально в трехмерном пространстве?
  3. Если возможно, эту концепцию следует применить к поверхности земли, используя эллипсоидную модель WGS-84, чтобы создать очень точную «проекцию более высокого измерения» земли, на которой евклидовы расстояния между точками в спроецированном пространстве были бы аппроксимацией соответствующих Геодезическое расстояние исходных координат. Это должно быть дешево, работать для всего земного шара, обеспечивать быстрые ближайшие соседи и, в конечном итоге, позволять хешировать геометрию (линейные строки, полигоны) и кодировать другие свойства поверхности.
  4. Создайте новый набор геопространственных инструментов, основанный в основном на нейронных сетях.