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 Wi-Fi” | „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 wyszkolonych osadowań 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 pozycji 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 dla tej funkcji wybrano [„TV”, „TV”, „Vacuum”], byłoby to <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).
Wady
- 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. Dzieje się tak 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 nie jest optymalne; 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 będzie traktowany 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 mieć negatywnego wpływu na jakość 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.
Wady
- 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 osobno 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 na gorąco mogą uczyć się tych samych informacji. Jednak weźmy 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.
Wady
- 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 najnowocześniejszą wydajność 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 bardzo różnie. 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 drzewa decyzyjne wykorzystują osadzania jako indywidualne cechy numeryczne i uczą się wyrównanych do osi partycji tych indywidualnych cech 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).
Wady
- 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
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. ↩