李韋宗
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Try
HackMD
李韋宗
·
Follow
Last edited by
李韋宗
on
Sep 27, 2020
Linked with GitHub
Contributed by
0
Comments
Feedback
Log in to edit or delete your comments and be notified of replies.
Sign up
Already have an account? Log in
There is no comment
Select some text and then click Comment, or simply add a comment to this page from below to start a discussion.
Discard
Send
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
1810.04805
Abstract and Introduction
對 unlabel 文字的深度雙向上下文表示
只附加1個 ouput layer 就可以適用各種任務
pre-train model 已被證明在 sentence-level 或 token-level 的任務中有很好的功效
作者認為需要雙向理解才能加強 pre-train model 的功用
克漏字與預測下一句來進行 pre-training
Related Work
Unsupervised Feature-based Approaches
預訓練比從頭開始的 embedding 相比有很大的改進
預訓練模型從簡單的 word embedding 到 sentence embedding 到 paragraph embedding 甚至是預測下一句,好多人做過
ELMo 開創了雙向但沒有 deep 不過也提升了不少
有人用了雙向的 LSTM 結果跟 ELMo 差不多
有人提出克漏字可以提高效能
這方法只對 unlabel 有用
Unsupervised Fine-tuning Approaches
用了預訓練模型再 fine-tune 下游被驗證有效
不論是在 left-to-right language modeling 或 auto encoder
Transfer Learning from Supervised Data
有人也證實了監督學習到很大的資料集的 transfer learning
如自然語言推理
BERT
框架的2步驟: 預訓練、微調
每個任務的微調都不同,但是用相同架構和參數繼續訓練,如圖
Image Not Showing
Possible Reasons
The image file may be corrupted
The server hosting the image is unavailable
The image path is incorrect
The image format is not supported
Learn More →
基本上只有輸入和輸出不太一樣
Model Architecture
數層雙向 transformer 的 encoder
transformer block 表示為
L
,hidden size
H
,self-attention head
A
BERT
BASE
(L = 12, H = 768, A = 12, 總參數 110M)
BERT
LARGE
(L = 24, H = 1024, A = 16, 總參數 340M)
BERTBASE 是為了跟 OpenAi GPT 比較所以一樣大
但 BERT 用雙向自注意,GPT 只注意左邊的字
Input/Output Representations
為了讓 BERT 處理各式各樣的下游任務,input representation 能夠明確地在一個 token 序列中表示單個句子或一對句子
在整個工作中,
句子
可以是連續文本的任意跨度,而不是實際的語言句子
序列
是指輸入到 BERT 的 token 序列,它可以是單句或打包在一起的兩個句子
用 WordPiece embedding 和 30000 個 token 單字
[CLS] 用來對應最終 hidden state,做為整個序列的 representation
用2種方式區分句子
[SEP] 區隔 token
加入 position embedding 到每個 token 區別屬於句子 A/B
input embedding 表
E
final hidden vector:
H 維度的 vector
C 為 [CLS] 的輸出 (
C
∈
R
H
)
T
i
為第 i 個 token 的輸出 (
T
i
∈
R
H
)
input representation 是由對應的 token 及 position, segment embedding 組合而成,如下圖
Image Not Showing
Possible Reasons
The image file may be corrupted
The server hosting the image is unavailable
The image path is incorrect
The image format is not supported
Learn More →
Pre-training BERT
不會右到左或左到右的訓練,而是底下的2種非監督式預訓練
Task #1: Masked LM
深層雙向的模型一定比左至右或右至左或2者的淺層聯集來的強
而一般的模型都只能左至右或右至左
但雙向的模型讓每個 word 間接地知道自己的意思
並且可以在多層上下文中預測目標
為了訓練雙向 representation ,隨機遮蔽一些 token
我們稱為 masked LM (以前叫 cloze task)
如同標準語言模型 (language modle, LM) ,把最後對應 masked 的 hidden vector 餵給字典的輸出 softmax
在實驗中,隨機遮蔽序列的 15% wordpiece token
與 denoising auto-encoders 的重構輸入不同
雖然這樣就可以 train 出一個雙向的模型,但在 fine tune 會出現落差,因為下游任務不會有 [MASK]
為減輕落差,全部序列的 15% 中只有 80% 會變 [MASK],10% 便隨機的 token,10% 不變 (比較在附錄C2)
接著
T
i
用 cross entropy 預測原本的 token i
Task #2: Next Sentence Prediction (NSP)
許多下游(如QA, NLI)都基於2句子間的關係,但語言建模辦不到
為訓練上述功能,預訓練了可以在單一語料庫 (monolingual corpus) 中生成二質化的下個句子預測任務 (next sentence prediction task)
實務上,50% 是真的下一句
圖1的 C 就是用來預測是否為下一句的 token
以前的論文都只有把 sentence embedding 傳給下游,BERT把全部都傳過去
Pre-training data
遵循現有文獻的語料庫
為了增長序列,用的是 document level 而非經過修改的 sentence level 語料庫
BookCorpus (800M) 跟 English Wikipedia (2500M)
維基只用了文本的部分,列表、標題都忽略
Fine-tuning BERT
因為 transformers 的 self-attention 機制讓 fine-tuning 變得更容易
只要適當地更改輸入及輸出
以前應用在成對文本時,在做 cross attention 前,會先獨立把文本編碼
self-attention 一樣解決了這個問題
直接建好任務導向的模型 end-to-end 更新所有參數
相對於預訓練時的句子 A, B 在 fine-tune 輸入
意義上成對的句子
蘊含假設
QA 的問題與片段
退化的文字-∅,用於非類或序列標記
[CLS]用於分類任務,如:需求或情感分析
Experiments
超參數與結果細節參照論文
GLUE
多元自然語言理解任務
把 [CLS] 對應的向量
C
當作整個句子的特徵向量
在 fine-tune 新增的參數只有一個分類層
W
∈
R
K
×
H
K
: label 個數
loss =
l
o
g
(
s
o
f
t
m
a
x
(
C
W
T
)
)
SQuAD v1.1
100k 成對的 QA
預測 passage 中答案的區段
問題跟文章片段一起輸入,前者當句子 A 後者當句子 B
在 fine-tune 時加入起始和結束向量
S
,
E
∈
R
H
單詞 i 作為答案範圍的開始的概率計算為
T
i
和
S
之間的點積,然後是段落中所有單詞的 softmax
P
i
=
e
S
⋅
T
i
∑
j
e
S
⋅
T
j
類似的工式也用於預測結束
候選句分數為
S
⋅
T
i
+
E
⋅
T
j
預測時選擇
j
≥
i
且分數最大的區段
訓練目標為正確的起點和終點位置的 log likelihood 的總和
SQuAD v2.0
允許在提供的段落中不存在簡短答案的可能性擴展了SQuAD 1.1問題定義
使問題更加實際
我們將沒有答案的問題,以 [CLS] token 開頭和結尾視為答案範圍
沒答案的分數為
s
n
u
l
l
=
S
·
C
+
E
·
C
跟
j
≥
i
且分數最大的區段比較,決定答案(根據開發集設定 threshold)
SWAG
包含 113k 成對句子,評估基於常識的推理
給定一個句子,任務是在四個選擇中選擇最合理的推理
進行 fine-tune 時,我們建了四個輸入序列,每個輸入序列都包含給定句子(句子A)和可能的延續詞(句子B)的串聯
多用一個向量跟 [CLS] 的對應向量
C
做點積算分
Ablation Studies
Effect of Pre-training Tasks
使用與 BERTBASE 完全相同的預訓練資料,微調方案和超參數評估兩個預訓練目標,證明了 BERT 雙向深度的重要性
No NSP
只用 MLM 訓練
LTR & No NSP
使用標準由左到右(LTR)LM(而不是MLM)訓練只看左邊上下文的模型
left-only constraint 也應用於微調,因為刪除它會引入預訓練/微調不匹配,從而降低下游性能
也不使用 NSP
可以直接跟 Open AI 的 GPT 比較
但要用比較大的資料集
NSP 大幅影響 QNLI, MNLI, and SQuAD 1.1
用上面 2 個方法比較雙向學習的成效,LTR 都爛很多,尤其是 MRPC and SQuAD
為了嘗試平衡 LTR 模型,在頂部增加 BiLSTM ,可以加強在 SQuAD 的性能但還是沒雙向的好,另外還損害了 GLUE 的性能
作者知道可以像 ELMo 一樣,訓練 2 個不同方向的模型並串接特徵向量,但
這是單個雙向模型的兩倍成本
對於 QA 這樣的任務,是不直觀的,因為 RTL 模型將無法確定問題的答案
這絕對不如深度雙向模型強大,因為它可以在每一層使用左右上下文
Effect of Model Size
訓練了許多具有不同層數,隱藏單元和 attent head 的BERT模型,而其他方面則使用了與之前所述相同的超參數和訓練過程
即使對於只有 3,600 label data 的 MRPC,它與所有預訓練任務也大不相同,較大的模型也會導致所有四個資料集的嚴格準確性提高
跟以往大型的模型相比有顯著的改善
只要模型已經過充分的預訓練,縮放到極限模型大小也將導致非常小的規模任務的重大改進
當直接在下游任務上對模型進行微調,且僅使用很少數量的隨機初始化的附加參數時,即使下游任務資料很少,特定任務模型也可以從更大、更具表達力的預訓練表示中受益
Feature-based Approach with BERT
到目前為止,所有提出的BERT結果都使用了微調方法
其中在預訓練模型中添加了一個簡單的分類層,並且在下游任務上共同對所有參數進行了微調
然而,從預訓練模型中提取固定特徵具有某些優勢
首先,並非所有任務都可以由 Transformer 編碼器體系結構輕鬆表示,因此需要添加特定於任務的模型結構
其次,預先計算出訓練集的昂貴特徵向量,然後在此之上使用較便宜的模型運行許多實驗具有很大的計算優勢
作者比較 2 種用 BERT 在 CoNLL-2003 NER 的任務
使用了一個保留大小寫的 WordPiece 模型,並且包括了資料提供的最長上下文文檔
按照慣例,我們將其公式化為標記任務,但在輸出中不使用 CRF 層
我們使用第一個 sub-token 的作為 NER 標籤集上令牌級別分類器的輸入
為了消除微調方法,我們通過從一個或多個層提取 activations 而無需微調 BERT 的任何參數來應用 feature-base 的方法
這些 contextual embedding 用在分類層之前,隨機初始化的兩層768維 BiLSTM 的輸入。
BERTLARGE 效能最好
效果最好的方法將來自預訓練的 Transformer 的前四個隱藏層的 token 連接起來,這僅比微調整個模型低 0.3 F1
表示 BERT 對於微調和 feature base 的方法均有效
Conclusion
最近的經驗改進表示,由於使用語言模型進行了轉移學習、豐富的、無監督的預訓練是許多語言理解系統不可或缺的一部分
特別是,這些結果使即使是資源匱乏的任務也可以從深度單向體系結構中受益
我們的主要貢獻是將這些發現進一步推廣到深度雙向體系結構
使相同的經過預訓練的模型能夠成功解決各種NLP任務
tags:
Paper
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Abstract and Introduction
Related Work
Unsupervised Feature-based Approaches
Unsupervised Fine-tuning Approaches
Transfer Learning from Supervised Data
BERT
Model Architecture
Input/Output Representations
Pre-training BERT
Fine-tuning BERT
Experiments
GLUE
SQuAD v1.1
SQuAD v2.0
SWAG
Ablation Studies
Effect of Pre-training Tasks
Effect of Model Size
Feature-based Approach with BERT
Conclusion
Expand all
Back to top
Go to bottom
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Abstract and Introduction
Related Work
Unsupervised Feature-based Approaches
Unsupervised Fine-tuning Approaches
Transfer Learning from Supervised Data
BERT
Model Architecture
Input/Output Representations
Pre-training BERT
Fine-tuning BERT
Experiments
GLUE
SQuAD v1.1
SQuAD v2.0
SWAG
Ablation Studies
Effect of Pre-training Tasks
Effect of Model Size
Feature-based Approach with BERT
Conclusion
Expand all
Back to top
Go to bottom
×
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
Comment