ERNIE 2.0 理解与使用
更新中
更新時間:2019-12-0617:43:27
實驗需要,在自己學習的過程中做如下筆記,歡迎指正,歡迎交流。
1. ERNIE簡述
ERNIE和BERT一樣,也是基于transformer來做,但最重要的不同點是:bert對word做mask,而ernie對命名實體和短語做mask,捕捉更好的語義信息。
先看一下ERNIE 2.0的架構圖:
Application中,可以看到ernie支持各類NLP任務,在model的部分,基于百度的大數據及先驗知識構建任務,進行基于多任務的預訓練。
Pre-Training 任務
ERNIE 2.0 模型,構建多個預訓練任務:
Word-aware Tasks: 詞匯 (lexical) 級別信息的學習
Structure-aware Tasks: 語法 (syntactic) 級別信息的學習
Semantic-aware Tasks: 語義 (semantic) 級別信息的學習
同時,針對不同的 pre-training 任務,ERNIE 2.0 引入了 Task Embedding 來精細化地建模不同類型的任務。不同的任務用從 0 到 N 的 ID 表示,每個 ID 代表了不同的預訓練任務。
1. Word-aware Tasks
Knowledge Masking Task
ERNIE 1.0中已經引入的 phrase & named entity 知識增強 masking 策略。相較于 sub-word masking, 該策略可以更好的捕捉輸入樣本局部和全局的語義信息。
Capitalization Prediction Task
針對英文首字母大寫詞匯(如 Apple)所包含的特殊語義信息,ernie在英文 Pre-training 訓練中構造了一個分類任務去學習該詞匯是否為大寫。
Token-Document Relation Prediction Task
針對一個 segment 中出現的詞匯,去預測該詞匯是否也在原文檔的其他 segments 中出現。
2. Structure-aware Tasks
Sentence Reordering Task
針對一個 paragraph (包含 M 個 segments),ernie隨機打亂 segments 的順序,通過一個分類任務去預測打亂的順序類別。
Sentence Distance Task
通過一個 3 分類任務,去判斷句對 (sentence pairs) 位置關系 (包含鄰近句子、文檔內非鄰近句子、非同文檔內句子 3 種類別),更好的建模語義相關性。
2. Semantic-aware Tasks
Discourse Relation Task
通過判斷句對 (sentence pairs) 間的修辭關系 (semantic & rhetorical relation),更好的學習句間語義。
IR Relevance Task
學習 IR 相關性弱監督信息,更好的建模句對相關性。
ERNIE 1.0:EnhancedRepresentation through kNowledgeIntEgration
ERNIE 1.0通過建模海量數據中的詞、實體及實體關系,學習真實世界的語義知識。相較于BERT學習原始語言信號,ERNIE直接對先驗語義知識單元進行建模,增強了模型語義表示能力。
舉個例子:
Learnt by BERT :哈 [mask] 濱是 [mask] 龍江的省會,[mask] 際冰 [mask] 文化名城。 Learnt by ERNIE:[mask] [mask] [mask] 是黑龍江的省會,國際 [mask] [mask] 文化名城。
在BERT模型中,通過『哈』與『濱』的局部共現,即可判斷出『爾』字,模型沒有學習與『哈爾濱』相關的任何知識。而ERNIE通過學習詞與實體的表達,使模型能夠建模出『哈爾濱』與『黑龍江』的關系,學到『哈爾濱』是 『黑龍江』的省會以及『哈爾濱』是個冰雪城市。
訓練數據方面,除百科類、資訊類中文語料外,ERNIE還引入了論壇對話類數據,利用DLM(Dialogue Language Model)建模 Query-Response 對話結構,將對話 Pair 對作為輸入,引入 Dialogue Embedding 標識對話的角色,利用 Dialogue Response Loss 學習對話的隱式關系,進一步提升模型的語義表示能力。
對比 ERNIE 1.0 和 ERNIE 2.0
Pre-Training Tasks
| 任務 | ERNIE 1.0 模型 | ERNIE 2.0 英文模型 | ERNIE 2.0 中文模型 |
|---|---|---|---|
| Word-aware | ✅Knowledge Masking | ✅Knowledge Masking ✅Capitalization Prediction ✅Token-Document Relation Prediction |
✅Knowledge Masking |
| Structure-aware | ✅Sentence Reordering | ✅Sentence Reordering ✅Sentence Distance |
|
| Semantic-aware | ✅Next Sentence Prediction | ✅Discourse Relation | ✅Discourse Relation ✅IR Relevance |
⬇️ 結果這里就不討論啦,自然是很厲害,我主要是想了解它的使用 ⬇️
————————————————————————————————————————————
2. ERNIE使用
更多請參考:ERNIE_GITHUB
數據格式
6 2508 5 1803 1827 98 164 133 2777 2696 983 121 4 19 9 634 551 844 85 14 2476 1895 33 13 983 121 23 7 1093 24 46 660 12043 2 1263 6 328 33 121 126 398 276 315 5 63 44 35 25 12043 2;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1;0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55;-1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 -1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 -1;0
每個樣本由5個 ';' 分隔的字段組成;
數據格式:token_ids; sentence_type_ids; position_ids; seg_labels; next_sentence_label;
其中seg_labels表示分詞邊界信息: 0表示詞首、1表示非詞首、-1為占位符, 其對應的詞為CLS或者SEP;
總結
以上是生活随笔為你收集整理的ERNIE 2.0 理解与使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bat中的“多线程”处理代码
- 下一篇: Ping其他电脑ping不通的解决方法