adapterlag

Et adapterlag er et lille neuralt lag, der indsættes i en forudtrænet model og trænes for at tilpasse modellen til en ny opgave, uden at ændre de oprindelige vægte.

Kort fortalt

Et adapterlag er en lille, trænbar enhed, der sættes ind i en stor, færdigtrænet model, så man kan specialisere den til en ny opgave uden at skulle genstarte hele træningen.

Kategori
teknik
Niveau
øvet

Betydninger

1
  1. 1

    Et ekstra neuralt lag, der indsættes i en forudtrænet model, typisk mellem transformerblokke, for at tilpasse modellen til en specifik opgave ved kun at træne adapterlagsvægtene.

    • I stedet for at finjustere hele BERT-modellen, tilføjede de adapterlag til hver transformerblok og trænede kun disse.Houlsby et al., 2019
    • Adapterlag gør det muligt at dele en base-model mellem flere opgaver uden at øge antallet af parametre væsentligt.

Hvornår bruges det

Adapterlag bruges i parameter-effektiv finjustering, især i store sprogmodeller og visionsmodeller, hvor man tilføjer små lag mellem transformerblokke. De trænes på den nye opgave, mens resten af modellen fryses, hvilket reducerer antallet af trænbare parametre betydeligt.

Kodeeksempel

import torch.nn as nn
class AdapterLayer(nn.Module):
    def __init__(self, d_model, bottleneck):
        super().__init__()
        self.down = nn.Linear(d_model, bottleneck)
        self.up = nn.Linear(bottleneck, d_model)
        self.activation = nn.ReLU()
    def forward(self, x):
        return x + self.up(self.activation(self.down(x)))

Eksempel på en simpel adapterlag-implementering med en bottleneck. Adapterlags output lægges til inputtet (residual forbindelse).

Oprindelse

Fra engelsk 'adapter layer'; 'adapter' betyder tilpasning, og 'lag' refererer til et neuralt netværkslag.

Afledte ord

2

Kilder

1
  • Parameter-Efficient Transfer Learning for NLP (Houlsby et al., 2019)