ML_2021_X-1&X-2 BERT簡介

  • 芝麻街家族與模型有很多關聯

  • BERT有340M個parameters,非常巨大

  • 下面課程主要講BERT與GPT系列

    BERT 就是transformer encoder


BERT learning technique

Semi-supervised?

- BERT用在下游任務需要labeled data做一些fine-tune,是supervised learning
- BERT pretrain過程卻不需要labeled data,是unsupervised learning

$\rightarrow$ 所以合起來稱為semi-supervised

Self-supervised?

  • 雖然是supervised learning,但是卻不需要人工標記,這種方法將訓練資料本身作為label
  • 我們會切割一部分的資料x’作為輸入,一部分的資料x’’則做為label
    • 在沒有資料的情況下,自己想辦法supervised (故在人工方面可以看做是一種unsupervised)
  • BERT的pretrain任務,就是self-supervised learning

Pretrain(Self-supervised learning)

  • 不同於supervised,self-supervised的資料沒有標註,我們會切割一部分的資料x’作為輸入,一部分的資料x’’則做為label
    • 在沒有資料的情況下,自己想辦法supervised (是一種unsupervised)

Pretrain任務1:masking input

- 會隨機把input sequence中隨機一個vector蓋掉,稱為masking input,然後讓BERT去訓練猜中原本蓋掉的詞(token)是甚麼
- mask / random
- 很像分類問題,類別量 = token總數
- BERT出來會有一個linear的matrix,做完softmax以後輸出  

Pretrain任務2:Next sentence prediction

- 任取兩個sequence,在開頭跟句子之間加入分隔符號

   - BERT要訓練去辨認這兩個例子是否相接
   - 這招不是很有效,Robustly optimized BERT approach
  - 一種可能是這個任務過於簡單

  • 另外一招:sentence order prediction(SOP)
    • 2句子本來就接在一起但亂序,要分辨誰是前面誰是後面
    • ALBERT中使用

How to use BERT

  • BERT雖然只做上述兩個訓練,但【卻可以使用在不同的任務上面 (downstream tasks)】
    • 針對不同任務,BERT仍需要做一點微調(一些些的labeled data),稱為Fine-Tune
  • 我們會讓BERT去做各種任務(任務集)取各種任務的成績以後平均

BERT 表現in GLUE

  • 1.0的基準線是人類的成績(指標不一定是正確率)

BERT實務

Case 1

  • 輸入一個sequence,輸出一個class (ex. sentiment analysis)
  • 使用pretrained data後,BERT的參數已經被初始化了(一個會做填空題的BERT),而線性層則是仍然要隨機初始化

Case 2

  • 輸入一個sequence,輸出一樣長度的sequence (詞性標註 POS tagging)

  • 處理過程同case 1

Case 3

  • 輸入兩個句子,輸出一個類別 (NLI)
    • NLI : 從前提要能推出假設

Case 4 (作業7)

  • 問答系統:給機器讀文章,問他問題要能回應
  • 但是機器只能從文章中給出答案(抓取文章的特定序列)
    • 輸出兩個正整數

  • 輸入的形狀跟case 3很像,只是後面改成文章,前面改成問題

  • 黃色向量輸出分別對橘、藍vector做內積,然後過softmax

  • 答案會是($d_i,d_j)$,其中i來自橘色,j來自藍色

Training BERT is challenging

  • google訓練最早的BERT的時候用了3 billions words

  • 訓練非常花時間,但是微調很快(colab GPU約1 hr)

  • 既然BERT都已經被訓練過了,為何還會有人想要重新訓練他?

    • 實際上訓練BERT的過程中,BERT到底學到了甚麼仍有待研究
         - 為了學習BERT的胚胎學,所以會需要重新訓練

如果今天要解的任務是seq2seq呢

  • BERT只有pretrain encoder,有沒有辦法pretrain decoder? 可以。

  • Encoder看到corrupted的data,decoder則是要想辦法把他還原

    • 弄壞資料的方法:旋轉、空白、mask…