Trendande ämnen
#
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.
Jag tog bort 74% av neuronerna från ett neuralt nätverk.
Det sänkte noggrannheten med bara 0,50 %.
Här är en uppdelning (med kod):
Ett tränat neuralt nätverk har alltid neuroner som inte bidrar väsentligt till prestandan.
Men de förbrukar fortfarande minne.
Dessa kan tas bort utan att noggrannheten försämras nämnvärt.
Låt oss se hur man identifierar dem!
Här är stegen:
Steg 1) Träna det neurala nätverket som vanligt.
Steg 2) Skicka valideringsuppsättningen via det tränade nätverket och beräkna för varje neuron i dolda lager:
- Den genomsnittliga aktiveringen
- Variansen för aktiveringar (om aktiveringar kan vara -ve)
Kolla in det här👇

Steg 3) Beskär neuroner som har ett medelvärde och varians nära noll aktivering eftersom de har liten inverkan på modellens utdata.
Vi rekommenderar att du ritar prestanda över flera beskärningströsklar för att välja den modell som passar dina kompromisser mellan storlek och noggrannhet.
Kolla in det här 👇

Låt oss titta på koden.
Vi börjar med att definiera ett enkelt neuralt nätverk och tränar det.
Eftersom vi kommer att beräkna aktiveringar på neuronnivå senare för beskärning, returnerar vi alla mellanliggande aktiveringar i framåtpasset.
Kolla in det här👇

Därefter definierar vi två listor med tre element:
- Man kommer att lagra medelvärdet av aktiveringar
- En annan kommer att lagra std dev av aktiveringar
Vi skickar valideringsuppsättningen genom vår modell för att beräkna denna statistik för varje dolt lager.
Kolla in det här 👇

Nu ska vi skapa ett fördelningsdiagram med statistik på neuronnivå som vi genererade ovan.
Som visas nedan är de flesta neuroners genomsnittliga aktiveringar och deras std-utveckling kraftigt fördelade runt nära nollvärden.
Låt oss försöka beskära dem härnäst.

För beskärning itererar vi över en lista med tröskelvärden och:
- Skapa ett nytt nätverk och överför vikter som passerar tröskeln.
- Utvärdera det nya nätverket och beräkna det totala antalet parametrar.
- Lägg till resultaten i en lista.
Kolla in det här 👇

I den här tabellen jämförs den rensade modellens noggrannhet och storleksminskning över flera tröskelvärden i förhållande till den ursprungliga modellen.
Vid medelvärde = 0,1 och std-dev = 0,4:
- Modellens noggrannhet sjunker med 0,08 %.
- Modellens storlek minskar med 62%.
Det är en enorm minskning.
Kolla in det här 👇

Här är ett annat intressant resultat.
Vid medelvärde = 0,5 och std-dev = 1:
- Modellens noggrannhet sjunker med 0,5 %.
- Modellens storlek minskar med 74 %.
Så i huvudsak får vi nästan liknande prestanda för 1/4 av parametrarna.
Kolla in det här 👇

Naturligtvis finns det en kompromiss mellan noggrannhet och storlek. När vi minskar storleken sjunker dess noggrannhet (kolla videon).
Men i de flesta fall är noggrannhet inte det enda måttet vi optimerar.
Istället är flera operativa mätvärden som effektivitet, minne etc. de viktigaste faktorerna.
45,91K
Topp
Rankning
Favoriter