Wystarczy, że dodasz do dobrą odpowiedź carlosdc.
Niektóre z cech, które wyróżniają vowpal wabbit siebie i pozostawić do skalowania do tera-feature (10) data-rozmiary to:
Masa wektor stronie: vowpal wabbit utrzymuje w pamięci weight-vector, który jest w istocie wektorem wag dla budowanego modelu. To właśnie nazywasz "stanem" w swoim pytaniu.
nieokreślonej wielkości danych: Wielkość Wagowo wektora jest proporcjonalna do liczby cech (niezależnych zmiennych wejściowych), a nie liczba przykładów (wystąpienia). To właśnie sprawia, że vowpal wabbit, w przeciwieństwie do wielu innych (nie online) uczących się, skaluje się w przestrzeni. Ponieważ nie trzeba ładować wszystkich danych do pamięci, tak jak robi to typowy program wsadowy, nadal może się uczyć z zestawów danych, które są zbyt duże, aby zmieścić się w pamięci.
tryb Cluster: vowpal wabbit podpory działające na wielu hostach w klastrze, nakładające binarny diagram struktury drzewa na węzłach i za pomocą redukcji z liści do korzenia all-reduce
.
Hash trick: vowpal wabbit zatrudnia co nazywa się hashing trick. Wszystkie nazwy funkcji są mieszane do liczby całkowitej za pomocą murmurhash-32
. Ma to kilka zalet: jest bardzo proste i wydajne czasowo, nie wymagając zarządzania hash-table i kolizji, jednocześnie pozwalając na zderzanie się funkcji.Okazuje się (w praktyce), że niewielka liczba kolizji elementów w zestawie szkoleniowym z tysiącami różnych funkcji jest podobna do dodawania niejawnego terminu regularyzacji. Jest to sprzeczne z intuicją, często poprawia dokładność modelu, zamiast go zmniejszać. Jest także agnostykiem dla rozrzedzenia (lub zagęszczenia) przestrzeni cech. Wreszcie, pozwala na to, że nazwy funkcji wejściowych są dowolnymi ciągami znaków, w przeciwieństwie do większości konwencjonalnych uczniów, którzy wymagają, aby nazwy/identyfikatory funkcji były jednocześnie a) numeryczne i b) unikalne.
Równoległość: vowpal Wabbit wykorzystuje wiele procesorów CPU, uruchamiając analizowania i uczenia się w dwóch oddzielnych nitek, dodając ponadto jej prędkości. To właśnie sprawia, że vw
może nauczyć się tak szybko, jak odczytuje dane. Okazuje się, że większość obsługiwanych algorytmów, w przeciwieństwie do intuicji, jest wąskim gardłem przez prędkość IO, a nie przez prędkość uczenia się.
punktów kontrolnych i przyrostowe learning: vowpal wabbit pozwala zaoszczędzić swój model na dysku podczas nauki, a następnie załadować model i kontynuować naukę w którym zostało przerwane z opcją --save_resume
.
oszacowanie błędu Test-jak: średniej straty obliczane przez vowpal Wabbit "jak to działa" jest zawsze na niewidzialne (z próbki) danych (*). Eliminuje to konieczność przejmowania zaplanowanych blokad lub sprawdzania poprawności krzyżowej. Wskaźnik błędu, który widzisz podczas treningu, jest "podobny do testu".
Oprócz modeli liniowych: vowpal wabbit obsługuje wiele algorytmów, w tym faktoryzacja macierzy (mniej rzadki SVD macierzy), utajoną Dirichlet środków (LDA), a także wiele innych. Obsługuje również generowanie w czasie rzeczywistym interakcji terminowych (dwu-liniowe, kwadratowe, sześcienne i sprzężone sigmoidalne sieci neuronowe z określoną przez użytkownika liczbą jednostek), klasyfikację wieloklasową (oprócz podstawowej regresji i binarnej klasyfikacja) i więcej.
Istnieją tutoriale i wiele przykładów w the official vw wiki na github.
(*) Jeden wyjątek dotyczy wielokrotnych karnetów z opcją --passes N
.
Zależy od tego, co rozumiemy przez * "[wyższy] łączny rozmiar danych wejściowych w czasie" *. Jeśli używasz cech jakościowych, to jeśli "więcej danych" oznacza "więcej poziomów w kategoriach", a zwłaszcza jeśli włączasz interakcje wyższego rzędu, masz kolizje mieszania, które wpływają na dokładność, więc tak, w końcu musisz zwiększyć "- b 'hash bitdepth, a tym samym twoje wymaganie pamięci dla skrótu funkcji. Jednak wektor wagowy (przechowywany w pamięci) jest nadal mały. – smci