Transformer — Encoder Decoder Architecture (part 3)

Thet Su
4 min readJun 16, 2024

--

အရင််ပြောခဲ့တဲ့ အပိုင်းတွေပါ။​Decoder ကို မဖတ်ခင် ဒါလေးတွေ အရင်ဖတ်ထားတာကောင်းပါတယ်။

Part 1 : Input Embedding and Positional Embedding

Part 2 : Encoder Stage

Part 3 : Decoder Stage

Part 4 : Pros and Cons, Resources

Part 5 : Research Papers using Transformers

Image from https://www.scaler.com/topics/nlp/transformer-decoder/

Decoder က Encoder stage က value ကို သုံးပြိီး output generation ပြန်လုပ်ပေးတာပါ။ ဥပမာ english-myanmar Machine Translation modelမှာဆို မြန်မာစာ translation တွေပြန်လုပ်ပေးမျိုး ၊ image captioning မှာဆို ၀င်လာတဲ့ input image ကို image caption ပြန်ထုတ်ပေးတဲ့ stageပေါ့။

The Transformer decoder consists of several layers, each made up of the following components:

  1. Masked Multi-Head Self-Attention
  2. Add & Norm (Residual Connection and Layer Normalization)
  3. Encoder-Decoder Attention (Multi-Head Attention)
  4. Add & Norm (Residual Connection and Layer Normalization)
  5. Feed-Forward Network
  6. Add & Norm (Residual Connection and Layer Normalization)

တစ်ခုရှိတာက Decoder က Auto Regressive model ပါ။ ပြောချင်တာက သူက သူထုတ်ထားတဲ့ output token ကို နောက်ထပ် iteration မှာ input အနေနဲ့ ပြန်သုံးတာပါ။ အဲ့ကျ ရှေ့က output token quality မကောင်းရင် မကောင်းတဲ့ next token ပြန်ထွက်လာမှာပါ။

Decoder ကလည်း specific area ကို focus လုပ်ဖို့ attention mechanism တွေသုံးပါတယ်။ အရင် encoder stage က architecture တွေနဲ့ အတော်လေး ဆင်ပါတယ်။ တစ်ခုပိုလာတာက Masked Attention Mechanism ပါပဲ။ အသေးစိတ်ကို အောက်မှာ ဖတ်ကြတာပေါ့။

(1) Masked Multi-Head Self-Attention

  • Purpose: Masked Attention ကလည်း အရင်ပြောတဲ့ attention mechanism လိုပဲ Word တစ်ခုချင်းစီက တစ်ခြား word တွေနဲ့ ဘယ်လို ဆက်စပ်နေလဲ analyze လုပ်တာဖြစ်ပါတယ်။ဘယ် area ဘယ် word ကို specifically focus လုပ်ရမလဲ ရှာတာပဲပေါ့။
  • Masking: Masking ရဲ့ အဓိက ရည်ရွယ်ချက်က model က training period အတွင်းမှာ လက်ရှိ word ရဲ့ နောက်မှာ ထွက်လာမယ့် future word တွေကို သုံးပြီး prediction မလုပ်််မိဖို့ပါပဲ။ BERT မှာဆိုလည်း masking ဆိုတဲ့ terms ရှိပါတယ်။ အခုနဲ့တော့ အနည်းလေးကွာပါတယ်။
  • ဒါကို ဘယ်လို handle လုပ်သလဲဆို paper ထဲမှာတော့ attention score တွက်တဲ့အခါ future word တွေကို negative infinity ထည့်ပစ်တယ်လို့ပြောပါတယ်။ ပြီး softmax ဆီရောက်လာတဲ့အခါ masking တွေကို zero probability အဖြစ် သတ်မှတ်ခြင်းအားဖြင့် attention layer တွေမှာ masking ကို လုပ်ကြပါတယ်။ အဓိကက လက်ရှိ word ကို prediction လုပ်တဲ့ အခါ future word တွေကို မသုံးမိဖို့ပါပဲ။

Lets take a translation example … English to Spanish

We have 5 dogs -> Nosotras tenemos 5 perros

Encoder stage မှာ input english sentence ကနေ attention vector ရလာမယ်။ ပြီးရင် decoder stage မှာ အဲ့ဒီ attention vector နဲ့ အတူ <START> token ကို ထည့်ပေးမယ်။ အဲ့လိုနဲ့ decoder တစ်လျှောက် အလုပ်လုပ်ပြီး Nosotras ဆိုတဲ့ စကားလုံးကို first iteration အပြီးမှာ ရလာလိမ့်မယ်။ ပြီးရင် Nosotras က <START> စကားလုံး အစား encoder stage က attention vector နဲ့အတူ decoder stage ကိုပြန်ဝင်လာပြီး tenemos ကို ထုတ်ပေးမယ်။ အဲ့လိုတဲ့ နောက်ဆုံး <END> ထိရောက်အောင် prediction လုပ်နေပြီး model က <END> ဆိုတဲ့ token ကိုတွေ့ရင် iterative process ကို အဆုံးသတ်သွားလိမ့်မယ်။ ဒါက decoder ရဲ့ overall အလုပ်လုပ်ပုံပါပဲ။

(3) Linear layer

Decoder stage ထဲပါတဲ့ နောက် Layer က Linear Layer ပါ။

Linear Layer မှာဆို ရှေ့က ရတဲ့ output vector တွေကို ပုံမှန် neural network layer တွေအတိုင်း weight matrix နဲ့ bias vector တွေပြန်သုံးပြီး linear transformation ပြန်လုပ်လိုက်တယ်။

Suppose the output of the multi-head attention mechanism is a tensor with shape (batch_size, sequence_length, model_dim).

A linear layer transforms this tensor to a new shape (batch_size, sequence_length, model_dim) for further processing: output=Linear(AttentionOutput)

(4) Softmax function

Linear layer ပြီးရင်တော့ softmax function ဆီကို output တွေအကုန်ပို့ပေးပါလိမ့်မယ်။ Softmax က machine learning မှာသုံးနေတဲ့ common activation function တစ်ခုပါပဲ linear layer ရဲ့ output တွေကို probability distribution အဖြစ် normalize လုပ်ပေးတာပါ။ softmax မှာတစ်ခုရှိတာက output probability တွေက ပေါင်းရင် စုစုပေါင်း 1 ဖြစ်ရမှာပါ။

(5) Output probabilities

Softmax ပြီးရင် တော့ output က possible output class (target words)တစ်ခုချင်းစီမှာ ဖြစ်နိုင်တဲ့ probability တန်ဖိုးတွေဖြစ်လာပါပြီ။ example English- Myanmar Machine Translation model မှာဆို output class က myanmar စကားလုံးတွေပေါ့။ စကားလုံး တစ်ခုချင်းရဲ့ next word ဖြစ်နိုင်ခြေရှိတဲ့ probability တန်ဖိုးတွေပါ။

(6) Output prediction

Image from https://learn.theaiedge.io/courses/2413982/lectures/50816155

Output predictions အနေနဲ့ဆို probabilities တန်ဖိုးတွေထဲက အများဆုံးကို predicted word အနေနဲ့ ယူသွားတာပါ။ အခုရလာတဲ့ predicted word က နောက်ထပ် iteration တစ်ခုမှာဆို decoder stage ရဲ့ input အနေနဲ့ ပြန်ဝင်လာမှာပါ။ ဒီလိုနဲ့ model က <EOS> ဆိုတဲ့ token မရမချင်း aggressively prediction လုပ်သွားမှာဖြစ်ပါတယ်။ EOS ကို တွေ့ရင်တော့ process က ပြီးသွားပါပြီ ။ ဒီလိုနဲ့ နောက်ဆုံး ကိုယ်လိုချင်တဲ့ translated sentence တစ်ခုရလာမှာပဲဖြစ်ပါတယ်။

Putting It All Together

Step by Step တစ်ခုချင်းစီ အတိုချုပ်ပြန်ကြည့်မယ်ဆို decoder stage ရဲ့ အလုပ်လုပ်ပုံက

Suppose we are translating the sentence “I like cats” from English to French (“J’aime les chats”).

  1. Input Sequence (English Sentence): The encoder processes “I like cats” and generates an encoded representation.
  2. Start of the Output Sequence (French Sentence): The decoder starts with a beginning token (e.g., “<start>”) and generates “J”.
  3. Masked Self-Attention: The decoder focuses on “J”.
  4. Encoder-Decoder Attention: The decoder attends to “I like cats” while generating “J”.
  5. Add & Norm: The output is normalized.
  6. Feed-Forward Network: Processes the output further.
  7. Add & Norm: The output is normalized again.
  8. Next Word Prediction: The decoder predicts the next word “aime”.
  9. Repeat: The process repeats with the updated output sequence (“J’aime”).

ဒါဆိုရင်တော့ Transformer — Encoder Decoder ရဲ့ အလုပ်လုပ်ပုံကို နားလည်မယ်ထင်ပါတယ်။ စာကြောင့် နည်းနည်းလေး ရှုတ်နေနိုင်ပေမယ့် အချိိန်ယူပြီး ဖတ်ရင် နားလည်မှာပါ။ နောက် post မှာက Encoder Decoder တွေရဲ့ Advantages, Disadvatages နဲ့ အတူ Code Resources တွေ sharing လုပ်ပေးပါမယ်။

Happy Learning

--

--