Это доказательство концептуальной статьи, которая показывает потенциал нейронных сетей для создания «проекций», сохраняющих расстояния.
Определите функцию:
Начнем с одномерных функций, в данном случае 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 между результирующими векторами.
Результат:
Это довольно точно.
Слева точки находятся в исходном пространстве, справа точки проецируются на пространство, сохраняющее расстояния.
Заключение:
В заключение, мы хотим измерить расстояние очень извилистой дороги с помощью прямой рулетки. У нас есть несколько вариантов, мы можем попытаться согнуть рулетку в соответствии с кривизной дороги, мы можем попытаться приблизить расстояние, сделав несколько последовательных прямых измерений рулеткой, или мы можем выровнять дорогу и использовать измерительную лента как есть(искажает пространство).
Будущая работа:
- Проверьте, возможно ли применить концепцию к двумерному кругу.
- Проверьте, возможно ли спроецировать поверхность n-мерного многообразия на декартову плоскость более высокой размерности, которая сохраняет расстояния. Или, другими словами, имеет ли смысл использовать 6 измерений для проецирования поверхности объекта изначально в трехмерном пространстве?
- Если возможно, эту концепцию следует применить к поверхности земли, используя эллипсоидную модель WGS-84, чтобы создать очень точную «проекцию более высокого измерения» земли, на которой евклидовы расстояния между точками в спроецированном пространстве были бы аппроксимацией соответствующих Геодезическое расстояние исходных координат. Это должно быть дешево, работать для всего земного шара, обеспечивать быстрые ближайшие соседи и, в конечном итоге, позволять хешировать геометрию (линейные строки, полигоны) и кодировать другие свойства поверхности.
- Создайте новый набор геопространственных инструментов, основанный в основном на нейронных сетях.