Jestem osobą wizualną. Oto, co działa dla mnie jako intuicja.
Powiedz, że każda z rzeczy, których chcesz w przybliżeniu szukać, to obiekty fizyczne, takie jak jabłko, kostka, krzesło.
Moja intuicja co do LSH jest taka, że podobnie jest z cieniem tych obiektów. Na przykład, jeśli weźmiesz cień kostki 3D, otrzymasz kwadratowy kwadrat 2D na kartce papieru, lub sfera 3D da ci cień podobny do koła na kartce papieru.
Ostatecznie istnieje znacznie więcej niż trzy wymiary problemu wyszukiwania (gdzie każde słowo w tekście może być jednym wymiarem), ale analogia z cieniem jest dla mnie bardzo przydatna.
Teraz możemy efektywnie porównywać ciągi bitów w oprogramowaniu. Ciąg bitów o stałej długości jest mniej więcej podobny do linii w jednym wymiarze.
Tak więc za pomocą LSH wyświetlam cienie obiektów ostatecznie jako punkty (0 lub 1) na pojedynczej linii / ciągu bitów o stałej długości.
Cała sztuka polega na tym, aby cienie miały taki sens, aby w dolnym wymiarze nadal miały sens, np. Przypominały oryginalny obiekt na tyle dobrze, że można je rozpoznać.
Rysunek 2D sześcianu w perspektywie mówi mi, że to sześcian. Ale nie mogę łatwo odróżnić kwadratu 2D od cienia sześcianu 3D bez perspektywy: oba wyglądają dla mnie jak kwadrat.
Sposób, w jaki przedstawię swój obiekt świetle, zadecyduje o tym, czy otrzymam dobrze rozpoznawalny cień, czy nie. Myślę więc o „dobrym” LSH jako takim, który obróci moje obiekty przed światło w taki sposób, aby ich cień był najlepiej rozpoznawalny jako reprezentujący mój obiekt.
Podsumowując: myślę o rzeczach do indeksowania za pomocą LSH jako o obiektach fizycznych, takich jak sześcian, stół lub krzesło, i wyświetlam ich cienie w 2D i ostatecznie wzdłuż linii (trochę sznurka). A „dobrą funkcją” LSH ”jest sposób, w jaki przedstawiam swoje obiekty przed światłem, aby uzyskać w przybliżeniu rozpoznawalny kształt na płaskiej powierzchni 2D, a później na moim sznurku bitowym.
Wreszcie, gdy chcę sprawdzić, czy obiekt, który mam, jest podobny do niektórych obiektów, które zindeksowałem, biorę cienie tego obiektu „zapytania” w ten sam sposób, aby przedstawić mój obiekt przed światłem (ostatecznie kończąc na string też). A teraz mogę porównać, jak podobny jest ten ciąg bitów do wszystkich moich innych indeksowanych ciągów bitów, które są proxy do wyszukiwania całych moich obiektów, jeśli znalazłem dobry i rozpoznawalny sposób prezentowania moich obiektów mojemu świetle.