Regularyzacja pod kątem rozproszenia: regularyzacja L1

Wektory rozproszone często mają wiele wymiarów. Utworzenie krzyżowania cech skutkuje uzyskaniem jeszcze większej liczby wymiarów. Przy tak dużych wektorach cech rozmiar modelu może stać się ogromny i wymagać ogromnej ilości pamięci RAM.

W przypadku wysokowymiarowych wektorów rozproszonych dobrze byłoby, jeśli jest to możliwe, zachęcać do obniżania wag do dokładnie 0. Waga wynosząca dokładnie 0 usuwa z modelu odpowiednią cechę. Wyzerowanie funkcji pozwala zaoszczędzić pamięć RAM i może zmniejszyć szum w modelu.

Weźmy na przykład zbiór danych dotyczących nieruchomości, który obejmuje nie tylko Kalifornię, ale także całą planetę. Pogrupowanie szerokości geograficznej na poziomie minutowym (60 minut na stopień) daje około 10 000 wymiarów przy rozproszonym kodowaniu; globalna długość geograficzna na poziomie minutowym daje około 20 000 wymiarów. Połączenie tych dwóch cech dałoby około 200 000 000 wymiarów. Wiele z tych 200 000 000 wymiarów reprezentuje obszary tak ograniczonej lokalizacji (np. środek oceanu), że trudno jest wykorzystać te dane do efektywnego uogólnienia. Byłoby głupio płacić za pamięć RAM dla przechowywania takich niepotrzebnych wymiarów. Dlatego dobrze byłoby zachęcić, aby wagi dla nieistotnych wymiarów spadły dokładnie do 0, co pozwoli nam uniknąć płacenia za koszt miejsca na dane w przypadku tych współczynników modelu w momencie wnioskowania.

Możemy zakodować tę koncepcję w zadaniu optymalizacyjnym przeprowadzanym podczas trenowania, dodając odpowiednio wybrany termin regularyzacji.

Czy regularyzacja L2 pozwoli to zrobić? Niestety nie. Regularyzacja L2 zachęca do używania małych wag, ale nie wymusza wartości dokładnie 0,0.

Alternatywnym rozwiązaniem jest utworzenie terminu regularyzacji, który będzie nakładałby kary na liczbę niezerowych wartości współczynników w modelu. Zwiększenie tej liczby będzie uzasadnione tylko wtedy, gdy przyniesie zyskowny model w zakresie dopasowania danych. Niestety, takie podejście oparte na liczbie jest intuicyjne, spowodowałoby jednak zmianę problemu optymalizacji wypukłości w problem optymalizacyjny niewypukły. Taka koncepcja, nazywana regularyzacją L0, nie może być więc skuteczna w praktyce.

Istnieją jednak termin regularyzacji nazywany regularyzacją L1, który służy w przybliżeniu do L0, ale ma tę zaletę, że jest wypukły, dzięki czemu jest skuteczny w obliczeniach. Dzięki regularyzacji L1 możemy sprawić, że wiele nieinformatywnych współczynników w naszym modelu będzie wynosić dokładnie 0, co pozwoli ograniczyć ilość pamięci RAM już w momencie wnioskowania.

Regularyzacja L1 i L2.

L2 i L1 inaczej nakładają wagi na wagi:

  • L2 nakłada karę na wagę2.
  • L1 nakłada karę na |waga|.

Z tego względu pozycje L2 i L1 mają różne pochodne:

  • Pochodna L2 to 2 * waga.
  • Pochodną L1 jest k (stała, której wartość jest niezależna od wagi).

Pochodną L2 można traktować jako siłę, która za każdym razem usuwa x% wagi. Zespół Zeno wiedział, że nawet po usunięciu x procent z miliardów razy zmniejszająca się liczba nigdy nie osiągnie zero. (Zeno był mniej zaznajomiony z ograniczeniami precyzji w przypadku liczb zmiennoprzecinkowych, które mogły dawać dokładnie zero). W każdym razie L2 zwykle nie obniża wagi do zera.

Pochodną L1 jest siła, która za każdym razem odejmuje pewną stałą od wagi. Dzięki wartościom bezwzględnym nieciągłość L1 ma jednak wartość 0, co powoduje, że wyniki odejmowania, w których przypadku krzyżykowe 0 są wyzerowane. Jeśli na przykład odjęcie wymusiłoby wagę z +0,1 do -0,2, L1 ustawi wagę dokładnie na 0. Eureka, L1 wyzeruje wagę.

Regularyzacja L1, czyli określenie wartości bezwzględnej wszystkich wag, okazuje się dość wydajna w przypadku szerokich modeli.

Ten opis dotyczy modelu jednowymiarowego.

Kliknij przycisk Odtwórz () poniżej, aby porównać wpływ regularyzacji L1 i L2 na sieć wag.