Wskaźniki podobieństwa w NLP

Węzeł źródłowy: 1852346

By Jamesa Briggsa, analityk danych



Zdjęcie autora

 

Kiedy konwertujemy język na format czytelny maszynowo, plik standard podejście polega na użyciu gęstych wektorów.

Sieć neuronowa zazwyczaj generuje gęste wektory. Pozwalają nam konwertować słowa i zdania na wektory wielowymiarowe — zorganizowane w taki sposób, że położenie geometryczne każdego wektora może przypisywać znaczenie.



Dobrze znany przykład arytmetyczny języka, który to pokazuje Królowa = Król — Mężczyzna + Kobieta

 

Istnieje szczególnie dobrze znany przykład, w którym bierzemy wektor król, odejmij wektor Mężczyznai dodaj wektor Kobieta. Najbliższy wektorowi pasującemu do wektora wynikowego jest królowa.

Tę samą logikę możemy zastosować także do dłuższych sekwencji, takich jak zdania czy akapity – i przekonamy się, że podobne znaczenie odpowiada bliskości/orientacji między tymi wektorami.

Podobieństwo jest zatem ważne — omówimy tutaj trzy najpopularniejsze wskaźniki służące do obliczania tego podobieństwa.

Odległość euklidesowa

 
Odległość euklidesowa (często nazywana normą L2) jest najbardziej intuicyjną metryką. Zdefiniujmy trzy wektory:



Trzy przykłady wektorów

 

Patrząc na te wektory, możemy śmiało to stwierdzić a i b są bliżej siebie — a widzimy to jeszcze wyraźniej, gdy wizualizujemy je na wykresie:



Wektory a i b są blisko początku, wektora c jest znacznie bardziej odległy

 

Wyraźnie, a i b są bliżej siebie — i obliczamy to za pomocą odległości euklidesowej:



Wzór na odległość euklidesową

 

Aby zastosować tę formułę do naszych dwóch wektorów, a i b, my robimy:



Obliczanie odległości euklidesowej pomiędzy wektorami a i b

 

I mamy dystans 0.014, wykonując te same obliczenia dla d(a, c) powraca 1.145d(b, c) powraca 1.136. Wyraźnie, a i b są bliżej przestrzeni euklidesowej.

Produkt w kropki

 
Wadą odległości euklidesowej jest brak orientacji uwzględnianej w obliczeniach — opiera się ona wyłącznie na wielkości. I tutaj możemy wykorzystać nasze dwie pozostałe metryki. Pierwszym z nich jest iloczyn skalarny.

Iloczyn skalarny uwzględnia kierunek (orientację), a także skaluje się z wielkością wektora.

Dbamy o orientację, ponieważ podobne znaczenie (jak często się przekonamy) może mieć kierunek wektora – niekoniecznie jego wielkość.

Na przykład możemy odkryć, że wielkość naszego wektora koreluje z częstotliwością występowania słowa, które reprezentuje w naszym zbiorze danych. A teraz słowo hi oznacza to samo co cześći może to nie być reprezentowane, jeśli nasze dane szkoleniowe zawierały to słowo hi 1000 razy i cześć tylko dwa razy.

Dlatego orientacja wektorów jest często postrzegana jako tak samo ważna (jeśli nie ważniejsza) jak odległość.

Iloczyn skalarny oblicza się za pomocą:



Formuła produktu kropkowego

 

Iloczyn skalarny uwzględnia kąt między wektorami, gdzie kąt wynosi ~0, the cos θ składnik wzoru wynosi ~1. Jeśli kąt jest bliższy 180 (ortogonalny/prostopadły), to cos θ składnik wynosi ~0.

Dlatego też cos θ Składowa zwiększa wynik, gdy kąt między dwoma wektorami jest mniejszy. Zatem wyższy iloczyn skalarny koreluje z wyższą orientacją.

Ponownie zastosujmy ten wzór do naszych dwóch wektorów, a i b:



Obliczanie iloczynu skalarnego dla wektorów a i b

 

Oczywiście obliczenie iloczynu skalarnego jest proste (najprostsze z trzech) — a to daje nam korzyści pod względem czasu obliczeń.

Jednak jest jedna wada. Nie jest znormalizowany — co oznacza, że ​​większe wektory będą miały tendencję do uzyskiwania wyższych iloczynów skalarnych, mimo że będą mniej podobne.

Na przykład, jeśli obliczymy a·a — spodziewalibyśmy się wyższego wyniku niż a·ac (a jest dokładnym dopasowaniem do a). Ale to tak nie działa, niestety.



Iloczyn skalarny nie jest tak świetny, gdy nasze wektory mają różne wielkości.

 

Zatem w rzeczywistości iloczyn skalarny służy do określenia ogólnej orientacji dwóch wektorów — ponieważ:

  • Dwa wektory skierowane w podobny kierunek zwracają a pozytywny produkt kropkowy.
  • Dwa prostopadłe wektory zwracają iloczyn skalarny zero.
  • Wektory skierowane w przeciwne strony zwracają a ujemny produkt kropkowy.

Podobieństwo cosinusowe

 
Podobieństwo cosinusowe uwzględnia orientację wektorową niezależną od wielkości wektora.



Wzór na podobieństwo cosinusa

 

Pierwszą rzeczą, o której powinniśmy wiedzieć w tym wzorze, jest to, że licznik jest w rzeczywistości iloczynem skalarnym — który uwzględnia zarówno wielkość i kierunek.

W mianowniku mamy dziwne podwójne pionowe kreski – to znaczy 'długość'. Mamy więc długość u pomnożona przez długość v. Długość oczywiście bierze pod uwagę wielkość.

Kiedy weźmiemy funkcję, która uwzględnia oba wielkość kierunek i podziel to przez funkcję uwzględniającą just wielkość - Ci dwaj wielkości anuluj, pozostawiając nam funkcję, która uwzględnia kierunek niezależny od wielkości.

Możemy myśleć o podobieństwie cosinus jako a znormalizowany produkt kropkowy! I to wyraźnie działa. Cosinus podobieństwa a i b Jest w pobliżu 1 (idealny):



Obliczanie podobieństwa cosinus dla wektorów a i b

 

I używając sklearn implementacja podobieństwa cosinus do porównania a i c ponownie daje nam znacznie lepsze wyniki:



Podobieństwo cosinusowe może często zapewnić znacznie lepsze wyniki niż iloczyn skalarny.

 

To wszystko w tym artykule dotyczącym trzech metryk odległości/podobieństwa — odległości euklidesowej, iloczynu skalarnego i podobieństwa cosinusa.

Warto zdawać sobie sprawę z tego, jak działa każdy z nich oraz jakie są jego zalety i wady – ponieważ wszystkie są szeroko wykorzystywane w uczeniu maszynowym, a zwłaszcza w NLP.

Implementacje każdej metryki w języku Python można znaleźć w ten notatnik.

Mam nadzieję, że podobał Ci się ten artykuł. Daj mi znać, jeśli masz jakieś pytania lub sugestie za pośrednictwem Twitter lub w komentarzach poniżej. Jeśli interesuje Cię więcej tego typu treści, zamieszczam dalej YouTube też.

Dziękuje za przeczytanie!

 
*Wszystkie zdjęcia są autorstwa autora, chyba że zaznaczono inaczej

 
Bio: Jamesa Briggsa jest naukowcem zajmującym się danymi, specjalizującym się w przetwarzaniu języka naturalnego i pracującym w sektorze finansowym, z siedzibą w Londynie w Wielkiej Brytanii. Jest także niezależnym mentorem, pisarzem i twórcą treści. Możesz skontaktować się z autorem za pośrednictwem poczty elektronicznej (jamescalam94@gmail.com).

Oryginalny. Przesłane za zgodą.

Związane z:

Źródło: https://www.kdnuggets.com/2021/05/similarity-metrics-nlp.html

Znak czasu:

Więcej z Knuggety