大綱
1 語言模型
1.1 AR——自迴歸語言模型
代表:GPT、ELMo
對於一個給定的序列 x=[x1,⋯,xT],自迴歸語言模型致力於對該序列的概率分佈進行估計。具體的,利用乘法公式對原始序列的似然函數進行分解,可以通過極大似然來進行預訓練。
1.2 AE——去噪自編碼語言模型(denoising auto-encoding)
代表:Bert
缺點:
-
獨立性假設(independence assumption)。沒有使用乘法公式。BERT 預測的所有
MASK
token 在未 mask 序列的條件下是獨立的,而xlnet認爲他們是有關係的。 -
pretrain-finetune 不匹配(discrepancy)
1.3 PLM——亂序語言模型
亂序語言模型使用一個序列的所有可能排序方式來構建一個 AR 語言模型。
理論上,如果模型的參數在所有的順序中共享,那麼模型就能學到從所有位置收集上下文信息。亂序語言模型表示:
亂序語言模型使用的是原始位置的位置編碼,而不是調整了原來句子的順序,這得益於 Transformer 的 mask 機制來實現。
優點:
-
捕獲雙向信息(AE優點)
-
自然的避免了獨立性假設、 pretrain-finetune 不匹配的問題。(AR優點,AE缺點)
-
模型的參數在所有的順序中共享
2 XLNet
XLNet就是Bert、GPT 2.0和Transformer XL的綜合體變身。
-
它通過PLM預訓練目標,吸收了Bert的雙向語言模型;
-
GPT2.0的核心其實是更多更高質量的預訓練數據,這個明顯也被XLNet吸收進來了;
-
Transformer XL來解決Transformer對於長文檔NLP應用不夠友好的問題。
XLNET好處
- 結合AE優點,PLM獲取雙向語義信息(對token級別的任務如RC\QA很重要)
- 結合AR優點,輸入不用masking,解決了pretrain-finetune不匹配
- 可以對序列的概率分佈進行建模,避免了獨立性假設
- 探索到更長距離(利用了transformer-xl)
XLNet 創新點
-
PLM(與雙流語言模型相輔相成)
-
Two-Stream self-attention(與PLM相輔相成)
content流、query流(相當於bert的
mask
標記)核心是target-aware Representations,引入了target position zt
-
引入transformer-xl模型(以下簡稱txl)
-
segment recurrence mechanism
-
relative positional encoding
-
應用
-
在RC上,大幅度提升,尤其是長文檔RC提升很大!
-
生成任務上,AR天然符合下游序列任務,如文本摘要、機器翻譯、信息檢索
預訓練
-
輸入和BERT一樣 two-segment data format:
[CLS, A, SEP, B, SEP]
把2個segment看作一個序列運行PLM、沒用NSP做prediction
-
PLM語言模型;Two-Stream self-attention;局部預測,超參數
K
-
引入transformer-xl
relative positional encoding(如一段序列裏位置zt的位置編碼)
segment recurrence mechanism
fine-tuning
-
和BERT的輸入一樣 two-segment data format:
[CLS, A, SEP, B, SEP]
-
去掉query流
-
relative segment encodings
多segments,參考 Transformer-xl 的 relative encodings,對於 segments 進行相對位置編碼。
-
span-based prediction
實驗的一些方法
- bidirectional data
- span-based prediction
- NSP
兩種相對位置編碼
-
用txl的相對編碼方式對輸入序列進行relative positional encoding
-
參考txl,對多個segments進行相對編碼,也就是relative segment encodings
這讓muitiple input segments成爲可能
3 Transformer-xl
創新點 (以上兩者相輔相成)
- segment-level recurrence mechanism
- relative positional encoding
優點
- 捕獲longer-term dependency
- 解決上下文碎片問題(讓片段之間有依賴性,解決 context fragmentation)
- 學習長度超過fixed length(bert是512)
3.1 segment-level recurrence mechanism
前面的segment的hidden state被fixed 和 cached,當做memory給下一個segment,從而被使用爲extended context.
優點:
- 評估的時候也會更快,因爲可以直接拿前一個segments的表示來用,所以每個txl塊不用從頭計算
- 理論上可以緩存很多
3.2 relative positional encoding
優點
-
簡單有效,不會造成時間混亂,每段重要性不同
-
既能捕獲長距離依賴關係,也能充分利用短距離依賴關係
TXL 成爲第一個同時在字符級和詞彙級任務上超越循環神經網絡的自注意力模型。
核心
4 Bert
階段1:語言模型
- 預訓練
- 特徵抽取器是transformer
- 輸入是3個embedding:token\segment\positional embeddings,[CLS]很重要
- 雙向語言模型(DAE)
- 任務,2種無監督的學習方式
- MaskedLM(有CBOW思想,colze-style task,待預測的單詞摳掉)
- NSP(這種句子關係、句子匹配型的任務,很適合RC\QA)
階段2:fine-tune
bert適用原則
- 語言中包含答案,如QA\RC
- 句子/段落匹配任務
- 適用深層語義特徵的任務
- 句子/段落級別的NLP任務(文檔級不好,也就是說更適合長度不太長的任務)
5 GPT
-
階段1:語言模型預訓練
- 特徵抽取器:transformer
- 單向
-
階段2:fine-tune
6 ELMo
-
階段1:語言模型
-
學到:單詞、位置、語義的embedding,分別對應詞義、句法、語義
-
單向
-
-
階段2:Feature- base Pre-trained
7 其他
7.1 遷移的2種方法
-
feature-based
把預訓練模型的參數作爲具體任務特徵補充,兩階段的模型結構可以不同
對於序列標註類任務,多層特徵融合更適合應用場景,融合會更細緻些
-
fine-tuning
具體任務fine-tune,兩階段的模型結構要相近
QA這種句子匹配的問題,fine-tune效果好於feature-base;
fine-tune的方式有些門道,比如數據少的話可以找相近任務數據fine-tune,stage-wise方式(數據增強)
7.2 零碎
-
cloze task可以提高文字生成的魯棒性
-
區分句子的方式
分隔符、句子embedding加入句子的編號,
-
QA vs RC
QA依賴上下文更小,傾向於短文本;RC依賴上下文範圍更大;
7.3關於MASK
如圖是單向語言模型的Mask方式,可見是一個下三角。Attention矩陣的每一行事實上代表着輸出,而每一列代表着輸入,而Attention矩陣就表示輸出和輸入的關聯。
XLNet是亂序語言模型,它跟語言模型一樣,都是做條件概率分解,但是亂序語言模型的分解順序是隨機的:
任意一種“出場順序”都有可能。原則上來說,每一種順序都對應着一個模型,所以原則上就有n!
個語言模型。基於Transformer的模型,則可以將這所有順序都做到一個模型中去!
以“北京歡迎你”的生成爲例,假設隨機的一種生成順序爲**“< s > → 迎 → 京 → 你 → 歡 → 北 → < e >”**,那麼我們只需要用下圖中第二個子圖的方式去Mask掉Attention矩陣,就可以達到目的了:
直觀來看,這就像是把單向語言模型的下三角形式的Mask“打亂”了。
hθ(xZ<t)並不依賴於要預測的內容的位置信息,基於上面提到的亂序語言模型的分解順序是隨機的,因此無論預測目標的位置在哪裏,因式分解後得到的所有情況都是一樣的,並且transformer的權重對於不同的情況是一樣的,因此無論目標位置怎麼變都能得到相同的分佈結果,因此需要修改預測next-token distribution的公式,也就是引入target position zt,重新參數化: