Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kuinka pinota transformer-lohkoja | Transformer-komponenttien Rakentaminen
Transformerit Luonnollisen Kielen Käsittelyssä

bookKuinka pinota transformer-lohkoja

Pyyhkäise näyttääksesi valikon

123456789101112131415161718192021222324252627282930313233343536373839404142434445
import torch import torch.nn as nn class EncoderBlock(nn.Module): def __init__(self, embed_dim, num_heads, ff_dim): super().__init__() self.attn = nn.MultiheadAttention(embed_dim, num_heads, batch_first=True) self.norm1 = nn.LayerNorm(embed_dim) self.ff = nn.Sequential( nn.Linear(embed_dim, ff_dim), nn.ReLU(), nn.Linear(ff_dim, embed_dim) ) self.norm2 = nn.LayerNorm(embed_dim) def forward(self, x): attn_output, _ = self.attn(x, x, x) x = self.norm1(x + attn_output) ff_output = self.ff(x) x = self.norm2(x + ff_output) return x class StackedEncoder(nn.Module): def __init__(self, num_layers, embed_dim, num_heads, ff_dim): super().__init__() self.layers = nn.ModuleList([ EncoderBlock(embed_dim, num_heads, ff_dim) for _ in range(num_layers) ]) def forward(self, x): for layer in self.layers: x = layer(x) return x # Example usage: stack 4 encoder blocks for input text embeddings embed_dim = 64 num_heads = 4 ff_dim = 256 num_layers = 4 stacked_encoder = StackedEncoder(num_layers, embed_dim, num_heads, ff_dim) input_tensor = torch.rand(2, 10, embed_dim) # batch_size=2, seq_len=10 output = stacked_encoder(input_tensor) print("Stacked encoder output shape:", output.shape)
copy

Tekstin käsittelyssä Transformer-mallilla käytetään usein useita kooderi- tai dekooderilohkoja pinottuna päällekkäin. Yllä olevassa koodissa näytetään, kuinka voit luoda pinon kooderilohkoja käyttäen PyTorchia. Jokainen EncoderBlock sisältää monipääisen itsehuomion, syötteen läpivientiverkon ja kerrosnormalisoinnin. StackedEncoder-luokka rakentaa näistä lohkoista sarjan, jossa yhden lohkon ulostulo toimii seuraavan lohkon syötteenä. Tämä pinoaminen mahdollistaa mallin oppia yhä monimutkaisempia tekstin esityksiä jokaisella kerroksella. NLP-tehtävissä, kuten tekstin luokittelu tai käännös, lohkojen pinoaminen auttaa havaitsemaan syvempiä suhteita ja kontekstia datassa. Alkuperäinen syöte – tekstistä muunnetut upotukset – kulkee jokaisen kooderilohkon läpi, ja jokainen lohko tarkentaa esitystä sekä syötteen että aiemmissa kerroksissa opitun kontekstin perusteella.

Transformer-arkkitehtuurit voidaan jakaa kolmeen päätyyppiin, jotka soveltuvat erilaisiin NLP-tehtäviin:

Vain kooderi -mallit

  • Rakenne: Koostuu pinosta kooderilohkoja.
  • Tyypilliset käyttötapaukset: Nämä mallit soveltuvat tekstin ymmärtämiseen tai analysointiin. Yleisiä sovelluksia ovat tekstin luokittelu, sentimenttianalyysi ja nimettyjen entiteettien tunnistus. Tunnettu esimerkki tästä tyypistä on BERT.

Vain dekooderi -mallit

  • Rakenne: Koostuu pinosta dekooderilohkoja.
  • Tyypilliset käyttötapaukset: Nämä mallit on suunniteltu tekstin tuottamiseen, kuten kielimallinnukseen ja koodin täydennystehtäviin. GPT on tunnettu esimerkki vain dekooderi -mallista.

Kooderi-dekooderi -mallit

  • Rakenne: Yhdistää kooderilohkot, jotka käsittelevät syötteen, ja dekooderilohkot, jotka tuottavat ulostulon, tieto kulkee kooderista dekooderiin.
  • Tyypilliset käyttötapaukset: Näitä käytetään sekvenssi-sekvenssi-tehtäviin, joissa sekä syöte että ulostulo ovat sekvenssejä. Sovelluksia ovat konekäännös, tiivistäminen ja kysymys-vastaus -tehtävät. T5 ja alkuperäinen Transformer ovat esimerkkejä kooderi-dekooderi -arkkitehtuureista.

Yhteenvetona: arkkitehtuurin valinta määrittää, millaisia NLP-ongelmia voidaan ratkaista: vain kooderi -mallit analyysiin, vain dekooderi -mallit generointiin ja kooderi-dekooderi -mallit tehtäviin, joissa täytyy muuntaa yksi sekvenssi toiseksi.

question mark

Mitä Transformer-arkkitehtuuria tyypillisesti käytetään konekäännöstehtävissä?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 6
some-alt