Subiecte populare
#
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.
Am eliminat 74% din neuroni dintr-o rețea neuronală.
A scăzut precizia cu doar 0,50%.
Iată o defalcare (cu cod):
O rețea neuronală antrenată are întotdeauna neuroni care nu contribuie substanțial la performanță.
Dar încă consumă memorie.
Acestea pot fi îndepărtate fără a compromite semnificativ acuratețea.
Să vedem cum să le identificăm!
Iată pașii:
Pasul 1) Antrenați rețeaua neuronală ca de obicei.
Pasul 2) Treceți setul de validare prin rețeaua antrenată și, pentru fiecare neuron din straturi ascunse, calculați:
- Activarea medie
- Varianța activărilor (dacă activările pot fi -ve)
Verificați acest lucru👇

Pasul 3) Tăiați neuronii care au o medie de activare și o varianță aproape de zero, deoarece au un impact redus asupra rezultatului modelului.
În mod ideal, reprezentați performanța pe mai multe praguri de tăiere pentru a selecta modelul care se potrivește compromisurilor de dimensiune vs. precizie.
Verificați acest lucru 👇

Să ne uităm la cod.
Începem prin a defini o rețea neuronală simplă și o antrenăm.
Deoarece vom calcula activările la nivel de neuron mai târziu pentru tăiere, returnăm toate activările intermediare în trecerea înainte.
Verificați acest lucru👇

Apoi, definim două liste cu trei elemente:
- Se va stoca media activărilor
- Un altul va stoca dezvoltarea std a activărilor
Trecem setul de validare prin modelul nostru pentru a calcula aceste statistici pentru fiecare strat ascuns.
Verificați acest lucru 👇

În acest moment, să creăm un grafic de distribuție a statisticilor la nivel de neuron pe care le-am generat mai sus.
După cum se arată mai jos, activările medii ale majorității neuronilor și evoluția lor std sunt puternic distribuite în jurul valorilor aproape de zero.
Să încercăm să le tăiem în continuare.

Pentru tăiere, iterăm peste o listă de praguri și:
- Creați o nouă rețea și transferați greutăți care depășesc pragul.
- Evaluați noua rețea și calculați parametrii totali.
- Adăugați rezultatele la o listă.
Verificați acest lucru 👇

Acest tabel compară acuratețea modelului tăiat și reducerea dimensiunii pe mai multe praguri în raport cu modelul original.
La medie=0.1 și std-dev=0.4:
- Precizia modelului scade cu 0,08%.
- Dimensiunea modelului se reduce cu 62%.
Aceasta este o reducere uriașă.
Verificați acest lucru 👇

Iată un alt rezultat interesant.
La medie=0.5 și std-dev=1:
- Precizia modelului scade cu 0,5%.
- Dimensiunea modelului se reduce cu 74%.
Deci, în esență, obținem performanțe aproape similare pentru 1/4 din parametri.
Verificați acest lucru 👇

Desigur, există un compromis între acuratețe și dimensiune. Pe măsură ce reducem dimensiunea, precizia acesteia scade (verificați videoclipul).
Dar, în cele mai multe cazuri, acuratețea nu este singura măsură pe care o optimizăm.
În schimb, mai mulți indicatori operaționali, cum ar fi eficiența, memoria etc., sunt factorii cheie.
48,61K
Limită superioară
Clasament
Favorite