Popularne tematy
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Usunąłem 74% neuronów z sieci neuronowej.
To obniżyło dokładność tylko o 0,50%.
Oto szczegóły (z kodem):
Wytrenowana sieć neuronowa zawsze ma neurony, które nie mają znaczącego wpływu na wydajność.
Jednak nadal zużywają pamięć.
Można je usunąć bez znaczącego kompromisu w dokładności.
Zobaczmy, jak je zidentyfikować!
Oto kroki:
Krok 1) Wytrenuj sieć neuronową jak zwykle.
Krok 2) Przepuść zbiór walidacyjny przez wytrenowaną sieć, a dla każdego neuronu w warstwach ukrytych oblicz:
- Średnią aktywację
- Wariancję aktywacji (jeśli aktywacje mogą być ujemne)
Sprawdź to👇

Krok 3) Przytnij neurony, które mają niemal zerową średnią aktywację i wariancję, ponieważ mają niewielki wpływ na wynik modelu.
Idealnie, wykreśl wydajność w różnych progach przycinania, aby wybrać model, który najlepiej pasuje do twojego kompromisu między rozmiarem a dokładnością.
Sprawdź to 👇

Przyjrzyjmy się kodowi.
Zaczynamy od zdefiniowania prostej sieci neuronowej i jej wytrenowania.
Ponieważ później będziemy obliczać aktywacje na poziomie neuronów do przycinania, zwracamy wszystkie pośrednie aktywacje w przebiegu do przodu.
Sprawdź to👇

Następnie definiujemy dwie listy z trzema elementami:
- Jedna będzie przechowywać średnią aktywacji
- Druga będzie przechowywać odchylenie standardowe aktywacji
Przepuszczamy zbiór walidacyjny przez nasz model, aby obliczyć te statystyki dla każdej warstwy ukrytej.
Sprawdź to 👇

Na tym etapie stwórzmy wykres rozkładu statystyk na poziomie neuronów, które wygenerowaliśmy powyżej.
Jak pokazano poniżej, średnie aktywacje większości neuronów i ich odchylenie standardowe są mocno rozłożone wokół wartości bliskich zeru.
Spróbujmy je teraz przyciąć.

Aby przeprowadzić przycinanie, iterujemy po liście progów i:
- Tworzymy nową sieć i przenosimy wagi, które przekraczają próg.
- Oceniamy nową sieć i obliczamy łączną liczbę parametrów.
- Dodajemy wyniki do listy.
Sprawdź to 👇

Ta tabela porównuje dokładność i redukcję rozmiaru modelu przyciętego w różnych progach w stosunku do oryginalnego modelu.
Przy mean=0.1 i std-dev=0.4:
- Dokładność modelu spada o 0.08%.
- Rozmiar modelu zmniejsza się o 62%.
To ogromna redukcja.
Sprawdź to 👇

Oto kolejny interesujący wynik.
Przy mean=0.5 i std-dev=1:
- Dokładność modelu spada o 0,5%.
- Rozmiar modelu zmniejsza się o 74%.
W zasadzie uzyskujemy prawie podobną wydajność przy 1/4 liczby parametrów.
Sprawdź to 👇

Oczywiście, istnieje kompromis między dokładnością a rozmiarem. Gdy zmniejszamy rozmiar, jego dokładność spada (sprawdź wideo).
Jednak w większości przypadków dokładność nie jest jedynym wskaźnikiem, który optymalizujemy.
Zamiast tego, kilka wskaźników operacyjnych, takich jak wydajność, pamięć itp., jest kluczowymi czynnikami.
41K
Najlepsze
Ranking
Ulubione