Kooderi: anna näkyvien tokenien muokata esitystä
Kooderi (encoder) muuntaa syötteen esityksiksi järjestelmän muiden osien käyttöön. Transformerin tekstikooderissa kukin tokeni voi tavallisesti käyttää kaikkia maskaamattomia syötekohtia. Myöhemmät sanat voivat siis muuttaa aiemman tokenin esitystä.
Kausaalisen dekooderin sijainti ei voi tarkastella tulevia tokeneita. BERT oppii kaksisuuntaisia esityksiä ennustamalla piilotettuja tokeneita.
Lue kontekstuaaliset esitykset
PyTorch/Transformers-esimerkki lataa BERTin ja sen tokenisoijan ja yhdistää tokenitilat jättäen täytteen pois.
import torch
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
encoder = AutoModel.from_pretrained("bert-base-uncased").eval()
inputs = tokenizer(["A bank by the river.", "A bank approved the loan."],
padding=True, return_tensors="pt")
with torch.no_grad():
states = encoder(**inputs).last_hidden_state
mask = inputs.attention_mask.unsqueeze(-1)
pooled = (states * mask).sum(dim=1) / mask.sum(dim=1)
last_hidden_state sisältää vektorin jokaiselle syötekohdalle, ei generoitua vastausta. Attention-maski ohjaa kohtien osallistumista. Pooling yhdistää näkyvät tilat yhdeksi vektoriksi syötettä kohti.
Hakujärjestelmä voi esittää dokumentit ja kyselyt kooderilla, mutta koulutustavoite ja yhdistämistapa ratkaisevat etäisyyksien hyödyn. Pelkkä kooderiarkkitehtuuri ei määrittele samankaltaisuusmittaria.