Sposoby wykorzystania tekstu za pomocą modeli lasu decyzyjnego Tensorflow

To jest strona z dokumentacją Markdown. Aby uzyskać więcej informacji, zobacz Podręcznik Markdown (go/documentation-reference) i Przewodnik po stylach dokumentacji (go/documentation-style).

Tło

Algorytmy uczenia się lasów decyzyjnych działają inaczej niż modele oparte na spadku gradientowym, takie jak sieci neuronowe lub predyktory liniowe. Różnice te przejawiają się w różnych decyzjach dotyczących modelowania, ale są szczególnie wyraźne, gdy zbiór danych zawiera cechy kategoryczne o zmiennej długości, takie jak tokenizowane elementy tekstowe, które zwykle wymagają inżynierii funkcji specyficznej dla architektury. W tym przewodniku przedstawiono kompromisy pomiędzy różnymi strategiami inżynierii cech dla cech tekstowych w modelach lasu decyzyjnego.

W kolejnych sekcjach odniesiemy się do zbioru danych z tymi funkcjami i założymy, że przewidujemy, czy użytkownik zamierza kupić konkretny produkt:

Funkcja Identyfikator użytkownika Wcześniejsze zakupy Tytuł produktu Opis produktu
Przykładowe dane 1234 [„telewizor”, „odkurzacz”] "Router Wifi" „Ten router jest…”


W tym przykładzie „Wcześniejsze zakupy” to rzadki element tekstowy (lub zestaw pozycji kategorycznych). „Tytuł produktu” również jest, ale w tym przykładzie nie jest tokenizowany. „Opis produktu” to cecha języka naturalnego, która ma inne właściwości niż pozostałe cechy, ponieważ spodziewamy się, że słownictwo będzie duże (lub nieograniczone), aby kolejność słów miała znaczenie oraz aby posiadało inne właściwości semantyczne i leksykalne właściwe dla produktu język. Strategie, które opisujemy poniżej, są odpowiednie dla wszystkich tych funkcji, ale w przypadku każdej z nich będą miały inne kompromisy.

Szybkie odniesienie

Najlepszym rozwiązaniem, jeśli koszty szkolenia i wnioskowania nie stanowią problemu, jest użycie zarówno zestawów kategorii, jak i wstępnie wytrenowanych osadzonych elementów dla każdej funkcji tekstowej, ponieważ mają one uzupełniające się mocne i słabe strony. Zalecamy to, chyba że występuje jedno z ograniczeń wymienionych poniżej.

Szybkość wnioskowania Szybkość treningu Możliwość zapamiętywania relacji token <> etykieta Uogólnienie
Wiele kategorii Najszybszy (++) Najszybszy (++) Ograniczony Ograniczona (+)
wielogorący Szybki (+) Szybki (przy założeniu stosunkowo małego rozmiaru słownictwa) (++) Dobry Ograniczona (+)
Zestawy kategoryczne Najszybszy (+++) Wolniej (+) To, co najlepsze Ograniczona (++)
osadzanie Najwolniejszy (zakładając nietrywialne operacje kodera, takie jak mnożenie macierzy) (+ do +++) Najszybszy (zakładając rozmiar słownictwa >> wymiar osadzania) (+++) Zły Dobry (++ do +++)

N-Gramy

N-gramów (np. {"the", "kot", "jest", "niebieski"} -> {"<start> the", "kot", "kot jest", "jest niebieski", "niebieski < end>"}) może być korzystne w wielu przypadkach i umożliwia przechwytywanie lokalnych informacji leksykalnych. Są one obsługiwane we wszystkich poniższych metodach, ale kosztem znacznie większego rozmiaru słownictwa, co może sprawić, że będą niepraktyczne ze względu na koszty szkolenia.

Odradzane strategie

Kodowanie jedno-gorące/wiele-gorących/torba słów

Kodowanie „one-hot” to klasyczna strategia zagęszczania rzadkiego tekstu. Tutaj zakładamy rozszerzenie, w którym funkcja rzadkiego tekstu jest reprezentowana albo przez wektoryzację wielokrotną (1s dla wszystkich zawartych tokenów), albo wektoryzację opartą na liczbie (liczba dla każdego tokenu w słowniku).

Na przykład, jeśli słownictwo składa się z 4 elementów i jest indeksowane w stylu [„TV”, „Odkurzanie”, „Wifi”, „Router”], cecha „Wcześniejsze zakupy” będzie wektorem gęstym <1, 1, 0, 0 >. Jeśli wzięto pod uwagę liczniki i funkcja brzmiała [„TV”, „TV”, „Odkurzanie”], wynosiłaby ona <2, 1, 0, 0>.

Plusy

  • Ponieważ podziałów lasów decyzyjnych uczy się na podstawie indywidualnych cech, jest to tańsze w czasie uczenia niż zbiory kategoryczne.
  • W przeciwieństwie do pierwszego, nie wymaga żadnego przycinania ani dopełniania, a tokeny mają tę samą semantykę we wszystkich przykładach (tj. „TV” będzie stałe we wszystkich podziałach niezależnie od pozycji).

Cons

  • Strategia ta często prowadzi do wysoce niezrównoważonych i rzadkich podziałów, co może sprawić, że algorytmy uczenia się DF będą wolniej osiągać zbieżność lub będą gorsze. To dlatego, że:
    • Aby poznać te same informacje, potrzeba więcej podziałów
    • Bardzo rzadkie drzewa generalizują gorzej niż drzewa zrównoważone, co zwykle skutkuje mniej dokładnym modelem.
  • Nie uwzględnia informacji o położeniu. Może to obniżyć wydajność funkcji języka naturalnego.
  • Uczenie się podziałów liczbowych na danych kategorialnych jest nieoptymalne; istnieją optymalizacje umożliwiające znalezienie podziałów kategorycznych, które nie są tutaj wykorzystywane.
  • Złożoność obliczeniowa szkolenia skaluje się liniowo wraz z liczbą elementów słownictwa (z których każdy zostanie wykorzystany jako cecha liczbowa). W praktyce, chyba że zbiór danych jest bardzo mały (w takim przypadku duże słowniki mogą zachęcać do nadmiernego dopasowania), powoduje to, że słowniki zawierające > 5 tys. pozycji uczą się bardzo wolno.
  • Zużycie pamięci szkoleniowej będzie wynosić 1 bajt (dla jednego gorącego) lub 4 bajty (dla zliczeń) na element słownika na przykład, ponieważ w czasie indeksowania dane będą przechowywane jako gęsta wersja rzadkich danych. Może to być zbyt duże w przypadku większych słowników i zbiorów danych.

Wiele cech kategorycznych o stałej długości

Ponieważ algorytmy lasów decyzyjnych mogą skutecznie uczyć się cech kategorycznych, naturalnym sposobem wykorzystania rzadkich tokenów jest dopełnianie/przycinanie w taki sposób, aby na przykład istniała stała liczba tokenów wejściowych, a każda pozycja tokenu była osobną i niezależną funkcją. W powyższym przykładzie, jeśli „Wcześniejsze zakupy” mają maksymalnie 5 tokenów, możemy utworzyć funkcje f1...f5 reprezentujące tokeny 1-5 i odrzucić wszystkie tokeny > 5 i dodać brakujące wartości dla przykładów, gdzie jest < 5.

Plusy

  • Jest to efektywne w treningu.
  • Może to nie zaszkodzić jakości modelu, jeśli liczba tokenów na przykład jest niewielka, a tokeny są niezależne.
  • Może to uchwycić dodatkową semantykę (np. zamówienie zakupu w przykładzie) w bardziej naturalny sposób niż inne metody.

Cons

  • Dodaje semantykę do „brakujących” wyściełanych tokenów, które będą służyć jako szum dla modelu. Będzie to szczególnie widoczne, jeśli wystąpią duże różnice w liczbie tokenów na przykład, co może się zdarzyć na przykład w przypadku funkcji „Opis produktu”.
  • Wyuczone drzewa będą bardzo wrażliwe na uporządkowanie, tj. jeśli cechą jest [„A”, „B”], przewidywanie będzie inne niż przewidywanie dla [„B”, „A”], a jeśli ta ostatnia nigdy nie została zaobserwowana w danych model nie będzie mógł uogólniać na podstawie pierwszego. Ogólnie rzecz biorąc, do nauczenia się niezmienności położenia będzie wymagało znacznie więcej danych.
  • Domyślnie każdy token będzie reprezentowany przez funkcję z innym słownictwem. Nawet jeśli zmusisz implementację do uwzględnienia tego samego zestawu elementów słownictwa dla każdej funkcji, f1=”TV” będzie innym elementem słownictwa niż f2=”TV”. Oznacza to, że algorytm będzie mniej efektywny w uczeniu się relacji pomiędzy tokenem „TV” a etykietą – będzie musiał uczyć się go oddzielnie dla każdej pozycji tokena.

Lepsze strategie

Zestawy kategoryczne

Zestawy kategoryczne ( https://arxiv.org/pdf/2009.09991.pdf ) to domyślna reprezentacja funkcji TF-DF dla rzadkiego tekstu. Zestaw kategoryczny jest w rzeczywistości zbiorem słów, ignorującym duplikaty i uporządkowanie. Na przykład cecha „Telewizor jest najlepszy” będzie reprezentowana przez zestaw kategorii {„najlepszy”, „jest”, „ten”, „telewizja}.

Natywny rozdzielacz zestawu kategorycznego, zgodnie z testami porównawczymi dla różnych zadań (patrz artykuł), zwykle przewyższa funkcje kategoryczne typu multi-hot i o stałej długości. Teoretycznie zarówno podziały zbioru kategorycznego, jak i podziały logiczne na obiektach zakodowanych w trybie one-hot mogą uczyć się tych samych informacji. Weźmy jednak następujący przykład, w którym drzewo próbuje nauczyć się następującej funkcji:

if description contains “high” AND “speed” AND “gaming”:
  return True

W tym przypadku natywny rozdzielacz zestawu kategorycznego nauczy się 1 podziału, gdzie {„wysoki”, „szybkość”, „gaming”} => Prawda.

Jedna gorąca reprezentacja wymagałaby trzech podziałów na „wysoki”, „podział” i „gra” oraz musiałaby znaleźć rozsądne węzły-liście dla wszystkich możliwych alternatyw tych kategorii (tj. „wysoka”, a nie „szybkość”). W praktyce kodowanie typu one-hot prowadzi do wysoce niezrównoważonych drzew, których nie można efektywnie zoptymalizować za pomocą najskuteczniejszych algorytmów uczenia się lasów decyzyjnych.

Plusy

  • Najlepiej uczy się informacji zbiorczych słów na temat lasów decyzyjnych.
  • Wysoka wydajność w obsłudze (może być obsługiwana za pomocą programu QuickScorer, który może obsługiwać duże drzewa w czasie do submikrosekundy na przykład). Złożoność czasu serwowania jest liniowa pod względem liczby elementów w zestawie kategorycznym każdego przykładu, który w praktyce jest znacznie mniejszy niż rozmiar słownictwa.
  • Optymalizuje pojedyncze słownictwo dla każdej funkcji, dzięki czemu semantyka jest wspólna.

Cons

  • Koszt uczenia zestawu kategorycznego podzielonego skalami z liczbą_przykładów * rozmiarem słownika, więc podobnie jak w przypadku algorytmu one-hot, rozmiar słownictwa, który można wytrenować, może być dość mały (N tysięcy) w praktycznych zastosowaniach. Należy zauważyć, że tę prędkość uczenia można poprawić, dostosowując ułamek próbkowania algorytmu zachłannego, ale może to spowodować osiągnięcie nieoptymalnej jakości.

Osadzenia

Sieci neuronowe wykazały się najnowocześniejszą wydajnością w przypadku różnych zadań NLP, a wstępnie wytrenowane osadzania wykorzystywane jako cechy numeryczne, empirycznie dobrze sprawdzają się również w algorytmach lasu decyzyjnego, mimo że te funkcje są używane wewnętrznie w bardzo różny sposób. Należy zauważyć, że tutaj „osadzanie” odnosi się do dowolnego kodowania sieci neuronowej, np. wyjścia warstw transformatorowych / splotowych / rekurencyjnych.

Korzystanie z wstępnie wyszkolonych osadzania działa dobrze w sieciach neuronowych po części dlatego, że inicjalizacja przestrzeni wektorowej, w której podobne tokeny lub zdania znajdują się blisko przestrzeni euklidesowej, wykazała, że ​​dobrze przenosi się między zadaniami NLP, a gradienty wynikające z tej inicjalizacji są mniejsze i szybciej się zbiegają niż w pełni losowa inicjalizacja. Jednakże drzewa decyzyjne wykorzystują osadzanie jako indywidualne cechy liczbowe i uczą się podziału tych indywidualnych cech w sposób wyrównany do osi 1 . Oznacza to, że wykorzystanie tej samej informacji semantycznej jest prawie niemożliwe — na przykład iloczynu skalarnego lub mnożenia macierzy nie można przedstawić za pomocą zestawu podziałów wyrównanych do osi. Co więcej, w przeciwieństwie do sieci neuronowych, które podczas uczenia mogą aktualizować osadzania poprzez opadanie gradientowe, domyślne algorytmy uczenia się przez las decyzyjny są niezróżnicowalne, co oznacza, że ​​osadzania muszą pozostać zamrożone. Zauważ, że są prace (na przykład https://arxiv.org/pdf/2007.14761.pdf ) dotyczące różniczkowalnych lasów decyzyjnych. Jednakże, być może częściowo dlatego, że w praktyce nie wszystkie fragmenty informacji zawarte w osadzeniu są faktycznie wykorzystywane, nawet przez sieci neuronowe, strategia ta nadal dobrze sprawdza się w przypadku lasów decyzyjnych.

Plusy:

  • Radzi sobie ze znacznie większymi rozmiarami słownictwa — ponieważ osadzanie jest w rzeczywistości zagęszczaniem na niewielką liczbę wymiarów osadzania, jest mało prawdopodobne, aby liczba cech wejściowych do lasu decyzyjnego wzrosła dramatycznie.
  • Teoretycznie można lepiej uogólniać, ponieważ podobne osady mogą dzielić zestawy partycji. Należy zauważyć, że dużym zastrzeżeniem jest to, że, jak wspomniano powyżej, transformacje lub rotacje bazy w przestrzeni wektorowej mogą mieć dwa podobne osadzania, które mogą być całkowicie różne w podzielonej przestrzeni wyrównanej do osi dla lasów decyzyjnych.
  • Może w naturalny sposób hermetyzować nawrót/kolejność słów, na przykład jeśli koder zawiera zwoje, uwagę lub RNN.
  • Potrafi wykorzystać informacje z innego zbioru danych (wstępne szkolenie w zakresie uczenia się transferowego).

Cons

  • Słaby w zapamiętywaniu informacji — podziały mogą powodować niejasne klasyfikacje lub dużą wrażliwość na frazowanie (tj. „router jest świetny” vs „świetny router”) powodują różne osadzania, które mogą znajdować się blisko przestrzeni euklidesowej, ale niekoniecznie mają podobne cechy numeryczne.
  • Najwolniejszy w obsłudze, ponieważ pełne podanie kodera do przodu musi zostać wykonane w czasie wnioskowania. Rzeczywiste opóźnienie jest w dużym stopniu zależne od architektury, która wytworzyła osady; tj. koder transformatorowy będzie zazwyczaj znacznie wolniejszy niż surowe przeszukiwanie tabeli osadzania z łączeniem średnich.

Notatki


  1. Włączenie podziałów ukośnych może umożliwić uczenie się informacji niewyrównanych względem osi, ale nadal będzie to odbywać się na zasadzie wymiar po wymiarze.