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
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
2Kilder
1- Parameter-Efficient Transfer Learning for NLP (Houlsby et al., 2019)