ML_2021_5-2 Transformer(上)

  • Transformer與BERT之間關係密切
  • Transformer是一種seq2seq的model

seq2seq簡介

  • 由模型來決定輸出要多長
  • 語音辨識、機器翻譯、speech translation就是應用(Hw4做的是分類模型)
  • speech translation不一定是speech recognition + machine translation,因為很多語言其實並沒有文字,或不普及(ex.台語:母湯?不行?)
  • 其實有機會直接輸入台語的聲音資料,直接輸出中文(省略再翻譯的過程)

seq2seq應用

台語範例

  • 直接台語轉中文不是沒有可能
  • 但是對於倒裝(文法)上的不同會有問題

Text-to-speech(TTS) synthesis

  • 相反的,也有可能輸入中文然後合成出台語的聲音訊號作為輸出(範例是分為兩步驟,先把中文翻譯為台語羅馬拼音,之後再把他轉成聲音)

seq2seq for chatbot

  • Seq2seq也可以用在聊天機器人,輸入是一段文字,輸出則是response
    • 學習大量的日常對話(來自影集、連續劇等)

seq2seq in NLP

  • 大多數的NLP應用,都可以想成是QA問題,而QA的問題,又可以透過seq2seq model來解決
  • 不過對於NLP的任務,通常還是會針對任務特性做一個客製化的模型,seq2seq就像是瑞士刀一樣,對大多問題都可用,但不是最佳模型

seq2seq in others

  • seq2seq也可以在一些輸出看似不像是seq的問題套用

syntactic parsing

- ex. 文法解析(syntactic parsing)  


- 把一個樹狀的結構用括號硬解成一個sequence,參考

multi-label classification

  • 不同於multi-class,multi-label可以屬於多個class(同時屬於好幾類)
  • 每個data對應的label個數可能不同,不能直接用分類模型輸出前n名
  • 硬做seq2seq,輸出sequence就是class

object detection

- 物件偵測也可以用seq2seq硬做  


- 參考連結:End-to-End Object Detection with Transformers    

Seq2seq結構

encoder

  • 給定一排向量(input),輸出一樣長度的向量
  • transformer中block用的技巧就是self-attention,好幾個block就是作好幾次self-attention
    upload successful
  • self-attention詳細的執行過程請參考CH4
    • 避免見樹不見林,這裡解釋一下encoder步驟,下方再分開講解每個區塊在幹嘛。encoder就是先把輸入轉成vectors(input embedding),做完positional encoding以後,連續做好幾個block
    • 每一個block做:self-attention -> residual connection -> layer norm -> FC

Residual connection

  • 原因暫且不討論,不過這種架構在DL被廣泛應用
  • 做完self-attention之後在輸入到下一個block之前,需要進行一次的residual connection,就是把self-attention的輸出再加上自己原本的輸入

Layer norm

  • 原始transformer做完residual以後做layer norm,把單一feature的每個dimantion計算標準化

❗️ 與Batch norm的差別:
batch norm是把batch內不同筆data的同一個dimantion做標準化(橫向);
而layer norm則是把同一筆data內不同dimantion做標準化(豎向)

Fully connected layer

  • 上述做完以後,輸出丟入FC訓練,然後『再做一次residual network以及norm』以後,輸出的結果,是一個block的計算

其他形狀的encoder