Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Challenge: Kooderin ja Dekooderin Lohkojen Rakentaminen | Transformer-komponenttien Rakentaminen
Transformerit Luonnollisen Kielen Käsittelyssä
Osio 2. Luku 5
single

single

bookChallenge: Kooderin ja Dekooderin Lohkojen Rakentaminen

Pyyhkäise näyttääksesi valikon

Kooderin ja dekooderin lohkojen rakenteen ymmärtäminen on keskeistä, kun halutaan hallita, miten Transformer-mallit käsittelevät ja tuottavat tekstiä. Jokainen Transformer-mallin kooderin lohko muuntaa syötesequenssit kontekstirikkaiksi esityksiksi, kun taas jokainen dekooderin lohko tuottaa ulostulosequensseja huomioimalla sekä aiemmat ulostulot että kooderin esitykset. Sekvenssistä sekvenssiin -tekstitehtävissä, kuten käännöksessä tai tiivistämisessä, kooderi vastaanottaa syöteteksin ja koodaa sen piilotilojen sarjaksi. Dekooderi käyttää näitä piilotiloja yhdessä oman itsehuomionsa kanssa tuottaakseen kohdesekvenssin askel askeleelta. Tämä kooderin ja dekooderin lohkojen välinen vuorovaikutus mahdollistaa mallin monimutkaisten riippuvuuksien havaitsemisen tekstissä, mikä tekee Transformereista erittäin tehokkaita monenlaisiin luonnollisen kielen käsittelyn tehtäviin.

Seuraava taulukko tiivistää Transformer-kooderin lohkon toimintojen järjestyksen ja korostaa niiden merkitystä tekstidatan käsittelyssä:

StepOperationPurpose for Text Data
1Multi-head self-attentionCaptures relationships between all tokens in the input.
2Add & NormalizeStabilizes training and preserves information.
3Feed-forward networkApplies non-linear transformations to each token.
4Add & NormalizeFurther stabilizes and enables deep stacking.

Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Tehtävänäsi on täydentää TransformerEncoderBlock-luokan puuttuvat osat alustamalla sen keskeiset komponentit oikein ja varmistamalla, että niitä käytetään eteenpäinlaskennassa.

TransformerEncoderBlock-luokka mallintaa yksittäistä kooderin lohkoa Transformer-arkkitehtuurissa. Sinun tulee alustaa kaksi pääkomponenttia luokan konstruktorissa (__init__-metodi):

  • Itsehuomiokerros käyttäen MultiHeadAttention(hidden_dim). Tämä kerros mahdollistaa jokaisen syötteen tokenin huomioimisen kaikkiin muihin tokeneihin, jolloin kontekstuaaliset suhteet voidaan havaita;
  • Syväsyöttöverkko käyttäen FeedForward(hidden_dim). Tämä kerros suorittaa epälineaarisia muunnoksia jokaiselle token-edustukselle erikseen, jatkokäsitellen itsehuomiokerroksen tuottamaa tulosta;
  • forward-metodissa sinun tulee käyttää näitä kahta kerrosta peräkkäin:
    • ensin syötä syöte x itsehuomiokerroksen läpi;
    • sitten syötä itsehuomiokerroksen tuotos syväsyöttöverkon läpi;
    • palauta lopullinen tulos.

Varmista, että sekä MultiHeadAttention että FeedForward alustetaan luokalle annetulla hidden_dim-parametrilla. Nämä komponentit muodostavat kooderin lohkon ytimen ja ne tulee käyttää oikeassa järjestyksessä, jotta lohko toimii oikein.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

some-alt