# Self-Supervised Learning & Bert ## 基本概念  以往都是 Supervised Learning,需要許多有標註的成對資料(如左圖) Self-Supervised 可以將未標注的資料拆成兩部份,將一部分丟入 Model 中,要求 Model 的輸出要跟另一部分越接近越好 以下會用 Bert 這個模型當作例子說明: 註:Bert 架構與 Transformer 的 Encoder 相同,常用於自然語言處理  將輸入的 Sequence 隨機遮住一個些字,並要求 Model 輸出與真實答案越相近越好 (輸出會是文字的機率分佈,所以要 Minimize Cross Entrophy) 同時,有兩種方法可以蓋住字: * 換成一個代表 Mask 的 Special Token * 隨便換成字典裡的其他字 也是隨機決定要用哪一種方法  Self-Supervised 訓練完後,Bert 就是一個會做文字填空題的模型 神奇的是,除了訓練時學會的填空問題,給 Bert 一些有標註的資料來進行微調(Fine-Tune)後,就可以拿來做其他任務 這些其他的任務通常才是我們在意的,稱為 Downstream Tasks 而訓練 Bert 做填空問題的這個步驟稱為 Pre-train  ## Bert 的用法 ### Case 1:輸入 Sequence 分類 例如:語句情感分析(正面 / 負面)  Bert (encoder) 使用 Pretrained,僅有 Linear 層隨機初始化來進行調整 得到的結果會比完全隨機初始化還要好 ### Case 2:Seq-2-seq, same length  ### Case 3:Input 2 Sequence, Output Class 例如:分析兩個句子是否矛盾  實際上操作起來應該像是這樣:  ### Case 4:抽取文章中閱讀測驗答案(作業7)  輸出兩個正整數 s 和 e,代表在文章中 Start 和 End 的位置 更具體一點:將問題和文章丟進 Bert,中間用特殊符號分開 並 Random Initialize 兩個向量(橘色和藍色),橘色負責計算開始位置,藍色則是結束位置 分別將橘色向量、藍色向量與 Bert 的輸出做 Inner Product 並通過 Softmax 就會得到信心分數,最高的即是開始與結束的位置  以上圖為例,跟橘色向量做內積以後,得到分數最高的在文章中第二個字,所以 s = 2 而與藍色向量做內積後,分數最高的是文章中第三個字,e = 3  ## 為什麼 Bert 可以這樣用?  Bert 架構就是 Transformer 的 Encoder 其 Encode 出來的東西稱為 Enbedding(或 Code) 其中已經包含語意的資訊,意思越相近的字會有越相近的 Embedding 而且因為有 Self-Attention 考慮前後文,所以也可以處理一字多義的情況 ## Multi-ligual Bert 訓練時要求模型以各種語言做填空題:  神奇的是,事後只要以一種語言進行 Fine-tune 成用來做 Downstream Task 的模型 該模型可以自動適應 Fine-tune 時沒看過、但 Pre-train 時學過的語言:  上圖中,以 104 種語言 pre-train,以 English 進行 Fine-tune,最後 Test 在中文閱讀測驗資料集 最後也可以達到 78.8% 正確率,比 Non-pretarin + Chinese Fine-tune 還要好 而表現最好的是 104 種語言 pre-train,English + Chinese Fine-tune  不同語言、相近意義的字也會有相近的 Alignment 而且 Embedding 中還包含了語言資訊
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up