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. 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 model

Simpel 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)