Skip to main content
Overview

Naver Boostcamp AI Tech 2 - Report settimana 7

September 17, 2021
3 min read

Report settimana 7

Revisione lezioni

NLP (post 10~14)

https://velog.io/@naem1023/series/NLP

Processo di lavoro / risultati

Risposte dal mentoring

Sessione tra pari Molte domande sono state scambiate durante le sessioni tra pari. Ho raccolto quelle irrisolte o ambigue e le ho poste al mentore. Ecco un riepilogo delle risposte:

  • Perche dividere per d_k nel transformer?

    • Avevo supposto fosse per prevenire il gradient exploding dato che d_k e n crescono proporzionalmente.
    • La conclusione: dividere una variabile casuale per n divide la sua varianza per n^2, quindi e un fatto matematicamente ovvio che viene applicato.
  • Perche usare sin e cos nel positional encoding?

    • Le funzioni sin e cos non crescono in ampiezza, hanno periodicita e producono valori unici. Garantiscono inoltre valori ragionevolmente unici attraverso la trasformazione lineare.
  • Complessita temporale (risolta)

    • C’era un leggero fraintendimento. La parte “Complexity per Layer” e la complessita temporale per le operazioni matriciali. Le “Sequential Operation” discusse qui sono una cosa diversa.
    • Per le RNN: per calcolare lo hidden state al time step t, il calcolo fino a t-1 deve essere completato prima. Quindi il calcolo procede proporzionalmente alla lunghezza della sequenza (non si puo parallelizzare). Per questo O(n) e indicato per la parte Recurrent.
    • Per il Transformer: tutta l’attention sull’intera sequenza viene calcolata in una volta. Guardando i materiali delle lezioni, la matrice di input ha dimensioni (n * d), mostrando che tutti i token nella sequenza vengono elaborati simultaneamente. Quindi e O(1) indipendentemente dalla lunghezza della sequenza.
    • Questo sembra la migliore risorsa per capire i Transformer. Esistono versioni tradotte.
  • Perche dividere per sqrt(d)? (risolta)

    • Leggendo attentamente il paper “Attention is All You Need” dovrebbe essere chiaro. Senza dividere, i valori dentro il softmax diventano troppo grandi dato che risultano da operazioni di prodotto scalare.
  • Perche sin e cos?

  • Perche il Post-Layer Normalization e problematico, e il warm-up

    • Questi due argomenti sono lo stesso problema. Quando il LN viene applicato dopo, la stabilizzazione dei valori avviene piu tardi, causando gradienti grandi nella fase iniziale, il che crea sensibilita al learning rate. Per questo serve il warm-up.
    • Per i dettagli, e utile leggere questo paper:
  • Gradient Vanishing nel Transformer

    • Non e davvero un problema, il che si collega al punto 1. Il vanishing avviene quando i gradienti dalla fine della sequenza si riducono propagandosi all’indietro, ma il Transformer vede l’intera sequenza contemporaneamente, quindi non c’e molta discussione su questo problema.
    • Lo skip-connection viene usato anche nei Transformer e aiuta in parte col vanishing, ma non penso sia il fattore decisivo. La differenza strutturale dalle RNN — “vedere tutte le sequenze contemporaneamente” — sembra essere la ragione piu rilevante.

Riepilogo sessione tra pari

Abbiamo discusso le domande menzionate sopra e cercato di capire e riassumere le risposte del mentore nei nostri termini.

Retrospettiva di studio

21/09/06: Studiata lezione 1 sul transformer 21/09/07: Studiata lezione 2 sul transformer 21/09/08: Studiato BERT 21/09/09: Studiate le lezioni rimanenti. Revisione e riassunto del transformer. 21/09/10: Revisione e organizzazione dei compiti.

Loading comments...