vægtbeskæring
Vægtbeskæring er en modelkomprimeringsteknik, hvor ubetydelige vægte i en neuralt netværk fjernes for at reducere modelstørrelse og beregningsbyrde uden væsentligt præcisionstab.
Kort fortalt
Vægtbeskæring fjerner de mindst vigtige forbindelser i et neuralt netværk for at gøre det mindre og hurtigere, mens det stadig virker næsten lige så godt.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
Teknik til at fjerne vægte i et neuralt netværk, typisk baseret på vægtens absolutte størrelse eller betydning for modellens output.
- Efter træning anvendte vi vægtbeskæring med en tærskel på 0.01 for at fjerne vægte under tærsklen. — Eksempel
- Vægtbeskæring kan reducere modelstørrelsen med op til 90% uden væsentligt præcisionstab. — Forskningsartikel
Hvornår bruges det
Vægtbeskæring anvendes typisk efter træning (post-training pruning) eller under træning (sparse training) for at opnå en kompakt model til implementering på enheder med begrænsede ressourcer som mobiltelefoner eller IoT-enheder. Det kan være struktureret (fjernelse af hele kanaler eller filtre) eller ustruktureret (fjernelse af individuelle vægte).
Kodeeksempel
import torch
def prune_weights(model, threshold=0.01):
mask = {}
for name, param in model.named_parameters():
if 'weight' in name:
mask[name] = torch.abs(param) > threshold
param.data *= mask[name].float()
return modelSimpel funktion til ustruktureret vægtbeskæring ved at maskere vægte under en tærskel.
Oprindelse
Sammensat af 'vægt' (weight) og 'beskæring' (pruning), efter engelsk 'weight pruning'.
Kilder
2- Learning both Weights and Connections for Efficient Neural Networks (Han et al., 2015)
- The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks (Frankle & Carbin, 2019)