Хеширование с учетом местоположения - Locality-sensitive hashing
В информатике хеширование с учетом местоположения ( LSH ) - это алгоритмический метод, который с высокой вероятностью хэширует аналогичные входные элементы в одни и те же «корзины». (Количество сегментов намного меньше, чем набор возможных входных элементов.) Поскольку похожие элементы попадают в одни и те же сегменты, этот метод можно использовать для кластеризации данных и поиска ближайшего соседа . Он отличается от обычных методов хеширования тем, что конфликты хеширования максимизируются, а не минимизируются. В качестве альтернативы, этот метод можно рассматривать как способ уменьшить размерность данных большой размерности; элементы ввода с высокой размерностью могут быть уменьшены до версий с меньшей размерностью, сохраняя при этом относительные расстояния между элементами.
Алгоритмы приблизительного поиска ближайшего соседа на основе хеширования обычно используют одну из двух основных категорий методов хеширования: либо методы, не зависящие от данных, такие как хеширование с учетом местоположения (LSH); или методы, зависящие от данных, такие как хеширование с сохранением местоположения (LPH).
Определения
Семьи LSH определяется для метрического пространства , порога , коэффициента аппроксимации , а также вероятностей и . Это семейство представляет собой набор функций, которые отображают элементы метрического пространства в корзины . Семейство LSH должно удовлетворять следующим условиям для любых двух точек и любой хэш-функции, выбранной равномерно случайным образом из :
- если , то (т. е. p и q сталкиваются) с вероятностью не менее ,
- если , то с максимальной вероятностью .
Семья - это интересно, когда . Такая семья называется -чувствительной .
В качестве альтернативы он определен по отношению к вселенным элементам U , которые имеют сходство функции . Схема LSH - это семейство хэш-функций H, связанных с распределением вероятностей D по функциям, таким образом, что функция, выбранная согласно D, удовлетворяет свойству, что для любого .
Хеширование с сохранением местоположения
Сохраняющий локальность хеш - это хеш-функция f, которая отображает точки в метрическом пространстве в скалярное значение, такое что
для любых трех точек .
Другими словами, это хеш-функции, в которых относительное расстояние между входными значениями сохраняется в относительном расстоянии между выходными хеш-значениями; входные значения, которые находятся ближе друг к другу, будут производить выходные хеш-значения, которые ближе друг к другу.
Это контрастирует с криптографическими хэш-функциями и контрольными суммами , которые предназначены для получения случайной разности выходных данных между соседними входами .
Хэши, сохраняющие локальность, связаны с кривыми заполнения пространства .
Усиление
Учитывая -чувствительное семейство , мы можем построить новые семейства с помощью И-конструкции или ИЛИ-конструкции .
Чтобы создать AND-конструкцию, мы определяем новое семейство хэш-функций g , где каждая функция g построена из k случайных функций из . Затем мы говорим, что для хэш-функции , тогда и только тогда, когда все для . Поскольку члены семьи выбираются независимо для любой , является -чувствительной семьей.
Чтобы создать OR-конструкцию, мы определяем новое семейство хэш-функций g , где каждая функция g построена из k случайных функций из . Тогда мы будем говорить , что для хэш - функции , если и только если для одного или нескольких значений I . Поскольку члены любой семьи выбираются независимо , является -чувствительной семьей.
Приложения
LSH был применен к нескольким проблемным областям, включая:
- Обнаружение почти дубликатов
- Иерархическая кластеризация
- Полногеномное исследование ассоциации
- Идентификация сходства изображений
- Идентификация сходства экспрессии генов
- Идентификация звукового сходства
- Поиск ближайшего соседа
- Аудио отпечаток пальца
- Цифровое снятие отпечатков пальцев с видео
- Физическая организация данных в системах управления базами данных
- Обучение полносвязных нейронных сетей
- Компьютерная безопасность
Методы
Битовая выборка для расстояния Хэмминга
Один из самых простых способов создать семейство LSH - это побитовая выборка. Этот подход работает для расстояния Хэмминга по d-мерным векторам . Здесь семейство хэш-функций - это просто семейство всех проекций точек на одну из координат, т. Е. , Где - th координата . Случайная функция из просто выбирает случайный бит из входной точки. Это семейство имеет следующие параметры: , .
Минимальные независимые перестановки
Пусть U состоит из подмножеств некоторого основного множества ПЕРЕЧИСЛИМЫХ элементов S и функции подобия интереса представляет Jaccard индекс J . Если π - перестановка индексов S , пусть . Каждый возможный выбор П определяет один хэш - функции ч входных наборов отображения к элементам S .
Определим семейство функций H как набор всех таких функций, и пусть D будет равномерным распределением . Учитывая два набора событие , которое точно соответствует событию , что минимизант П над лежит внутри . Как ч была выбрана случайно равномерно, и определить схему LSH для индекса Жаккара.
Поскольку симметричная группа на n элементах имеет размер n !, выбор действительно случайной перестановки из полной симметричной группы невозможен даже для среднего размера n . Из-за этого факта, была проведена значительная работа по поиску семейства перестановок, которое "не зависит от минимума" - семейства перестановок, для которого каждый элемент области имеет равную вероятность быть минимальным при случайно выбранном π . Было установлено, что минимально независимое семейство перестановок имеет по крайней мере размер , и что эта граница жесткая.
Поскольку минимально независимые семейства слишком велики для практических приложений, вводятся два варианта понятия минимальной независимости: ограниченные минимально независимые семейства перестановок и приблизительные минимально независимые семейства. Ограниченная минимальная независимость - это свойство минимальной независимости, ограниченное некоторыми наборами мощности не более k . Приближенная минимальная независимость отличается от свойства не более чем на фиксированное ε .
Методы с открытым исходным кодом
Нильсимса Хаш
Nilsimsa - это алгоритм хеширования, зависящий от местности, используемый в усилиях по борьбе со спамом . Цель Nilsimsa - создать хэш-дайджест сообщения электронной почты, чтобы дайджесты двух похожих сообщений были похожи друг на друга. В статье предполагается, что Нильсимса удовлетворяет трем требованиям:
- Дайджест, идентифицирующий каждое сообщение, не должен существенно отличаться от изменений, которые могут производиться автоматически.
- Кодирование должно быть устойчивым к преднамеренным атакам.
- Кодировка должна поддерживать чрезвычайно низкий риск ложных срабатываний.
TLSH
TLSH - это алгоритм хеширования с учетом местоположения, разработанный для ряда приложений безопасности и цифровой криминалистики. Цель TLSH - генерировать хеш-дайджесты для сообщений, так что небольшие расстояния между дайджестами указывают на то, что соответствующие им сообщения, вероятно, будут похожими.
Тестирование, проведенное в статье на ряде типов файлов, показало, что хэш Nilsimsa имеет значительно более высокий уровень ложных срабатываний по сравнению с другими схемами дайджеста сходства, такими как TLSH, Ssdeep и Sdhash.
Реализация TLSH доступна как программное обеспечение с открытым исходным кодом .
Случайная проекция
Метод случайной проекции LSH из-за Моисея Чарикара, называемый SimHash (также иногда называемый arccos), предназначен для аппроксимации косинусного расстояния между векторами. Основная идея этого метода состоит в том, чтобы выбрать случайную гиперплоскость (определяемую нормальным единичным вектором r ) в самом начале и использовать гиперплоскость для хеширования входных векторов.
Для входного вектора v и гиперплоскости, определяемой r , мы положим . То есть в зависимости от того, с какой стороны лежит гиперплоскость v .
Каждый возможный выбор r определяет одну функцию. Пусть H - множество всех таких функций, и пусть D - снова равномерное распределение. Не трудно доказать , что для двух векторов , где угол между ц и об . тесно связан с .
В этом случае хеширование дает только один бит. Биты двух векторов совпадают с вероятностью, пропорциональной косинусу угла между ними.
Стабильные дистрибутивы
Хеш-функция отображает d- мерный вектор на множество целых чисел. Каждый хэш - функции в семье индексируется путем выбора случайным образом и где это д мерный вектор с элементами , выбранными независимо из распределения стабильного и является действительным числом выбраны равномерно из диапазона [0, г]. Для фиксированного значения хэш-функция имеет вид .
Для лучшего соответствия данным были предложены другие методы построения хэш-функций. В частности, на практике хеш-функции k-средних лучше, чем хеш-функции на основе проекций, но без каких-либо теоретических гарантий.
Семантическое хеширование
Семантическое хеширование - это метод, который пытается сопоставить входные элементы с адресами, чтобы более близкие входные данные имели более высокое семантическое сходство . Хэш-коды находятся путем обучения искусственной нейронной сети или графической модели .
LSH алгоритм поиска ближайшего соседа
Одним из основных приложений LSH является обеспечение метода эффективных алгоритмов поиска ближайшего соседа . Рассмотрим семейство LSH . Алгоритм имеет два основных параметра: ширину параметра K и количество хэш - таблицы L .
На первом шаге мы определяем новое семейство хэш-функций g , где каждая функция g получается конкатенацией k функций из , т . Е .. Другими словами, случайная хеш-функция g получается конкатенацией k случайно выбранных хэш-функций из . Затем алгоритм создает L хэш-таблиц, каждая из которых соответствует разной случайно выбранной хеш-функции g .
На этапе предварительной обработки мы хэшируем все n точек из набора данных S в каждую из L хэш-таблиц. Учитывая, что в результирующих хэш-таблицах есть только n ненулевых записей, можно уменьшить объем памяти, используемой для каждой хеш-таблицы, до использования стандартных хеш-функций .
Для заданной точки запроса q алгоритм перебирает L хэш-функций g . Для каждого рассматриваемого g он извлекает точки данных, которые хешируются в тот же сегмент, что и q . Процесс останавливается, как только будет найдена точка на расстоянии от q .
При заданных параметрах k и L алгоритм имеет следующие гарантии работоспособности:
- время предварительной обработки:, где t - время вычисления функции на входной точке p ;
- пробел:, плюс место для хранения точек данных;
- время запроса: ;
- алгоритму удается найти точку на расстоянии от q (если существует точка на расстоянии R ) с вероятностью не менее ;
Для фиксированного отношения аппроксимации и вероятностей и можно установить и , где . Тогда получаются следующие гарантии производительности:
- время предварительной обработки: ;
- пробел:, плюс место для хранения точек данных;
- время запроса: ;
Смотрите также
- Фильтр Блума
- Проклятие размерности
- Хеширование функций
- Преобразования, связанные с Фурье
- Geohash
- Мультилинейное подпространственное обучение
- Анализ главных компонентов
- Случайная индексация
- Прокручивающийся хеш
- Разложение по сингулярным числам
- Редкая распределенная память
- Вейвлет-сжатие
использованная литература
дальнейшее чтение
- Самет, Х. (2006) Основы многомерных и метрических структур данных . Морган Кауфманн. ISBN 0-12-369446-9
- Индик, Петр ; Мотвани, Раджив ; Рагхаван, Прабхакар; Вемпала, Сантош (1997). «Сохраняющее локальность хеширование в многомерных пространствах». Материалы двадцать девятого ежегодного симпозиума ACM по теории вычислений . СТОК '97 . С. 618–625. CiteSeerX 10.1.1.50.4927 . DOI : 10.1145 / 258533.258656 . ISBN 978-0-89791-888-6. S2CID 15693787 .
- Чин, Эндрю (1994). «Сохраняющие локальность хэш-функции для параллельных вычислений общего назначения» (PDF) . Алгоритмика . 12 (2–3): 170–181. DOI : 10.1007 / BF01185209 . S2CID 18108051 .
внешние ссылки
- Домашняя страница Алекса Андони LSH
- LSHKIT: библиотека хеширования с учетом местоположения C ++
- Библиотека Python для локального хеширования, которая опционально поддерживает сохранение через redis.
- Панель инструментов поиска крупномасштабных изображений Caltech : набор инструментов Matlab, реализующий несколько хэш-функций LSH, в дополнение к алгоритмам поиска Kd-Trees, Hierarchical K-Means и Inverted File.
- Слэш: библиотека C ++ LSH, реализующая сферический LSH от Terasawa, K., Tanaka, Y.
- LSHBOX: набор инструментов C ++ с открытым исходным кодом для локального хеширования для получения крупномасштабных изображений, также поддерживает Python и MATLAB.
- SRS: реализация на C ++ компактного алгоритма обработки запросов приближенного ближайшего соседа в памяти, основанного на p-стабильной случайной проекции
- Открытый исходный код TLSH на Github
- Порт JavaScript для TLSH (Trend Micro Locality Sensitive Hashing) в комплекте как модуль node.js
- Порт Java для TLSH (Trend Micro Locality Sensitive Hashing) в комплекте как пакет maven