ERNIE 2.0 理解与使用
更新中
更新時間:2019-12-0617:43:27
實驗需要,在自己學(xué)習(xí)的過程中做如下筆記,歡迎指正,歡迎交流。
1. ERNIE簡述
ERNIE和BERT一樣,也是基于transformer來做,但最重要的不同點是:bert對word做mask,而ernie對命名實體和短語做mask,捕捉更好的語義信息。
先看一下ERNIE 2.0的架構(gòu)圖:
Application中,可以看到ernie支持各類NLP任務(wù),在model的部分,基于百度的大數(shù)據(jù)及先驗知識構(gòu)建任務(wù),進(jìn)行基于多任務(wù)的預(yù)訓(xùn)練。
Pre-Training 任務(wù)
ERNIE 2.0 模型,構(gòu)建多個預(yù)訓(xùn)練任務(wù):
Word-aware Tasks: 詞匯 (lexical) 級別信息的學(xué)習(xí)
Structure-aware Tasks: 語法 (syntactic) 級別信息的學(xué)習(xí)
Semantic-aware Tasks: 語義 (semantic) 級別信息的學(xué)習(xí)
同時,針對不同的 pre-training 任務(wù),ERNIE 2.0 引入了 Task Embedding 來精細(xì)化地建模不同類型的任務(wù)。不同的任務(wù)用從 0 到 N 的 ID 表示,每個 ID 代表了不同的預(yù)訓(xùn)練任務(wù)。
1. Word-aware Tasks
Knowledge Masking Task
ERNIE 1.0中已經(jīng)引入的 phrase & named entity 知識增強 masking 策略。相較于 sub-word masking, 該策略可以更好的捕捉輸入樣本局部和全局的語義信息。
Capitalization Prediction Task
針對英文首字母大寫詞匯(如 Apple)所包含的特殊語義信息,ernie在英文 Pre-training 訓(xùn)練中構(gòu)造了一個分類任務(wù)去學(xué)習(xí)該詞匯是否為大寫。
Token-Document Relation Prediction Task
針對一個 segment 中出現(xiàn)的詞匯,去預(yù)測該詞匯是否也在原文檔的其他 segments 中出現(xiàn)。
2. Structure-aware Tasks
Sentence Reordering Task
針對一個 paragraph (包含 M 個 segments),ernie隨機打亂 segments 的順序,通過一個分類任務(wù)去預(yù)測打亂的順序類別。
Sentence Distance Task
通過一個 3 分類任務(wù),去判斷句對 (sentence pairs) 位置關(guān)系 (包含鄰近句子、文檔內(nèi)非鄰近句子、非同文檔內(nèi)句子 3 種類別),更好的建模語義相關(guān)性。
2. Semantic-aware Tasks
Discourse Relation Task
通過判斷句對 (sentence pairs) 間的修辭關(guān)系 (semantic & rhetorical relation),更好的學(xué)習(xí)句間語義。
IR Relevance Task
學(xué)習(xí) IR 相關(guān)性弱監(jiān)督信息,更好的建模句對相關(guān)性。
ERNIE 1.0:EnhancedRepresentation through kNowledgeIntEgration
ERNIE 1.0通過建模海量數(shù)據(jù)中的詞、實體及實體關(guān)系,學(xué)習(xí)真實世界的語義知識。相較于BERT學(xué)習(xí)原始語言信號,ERNIE直接對先驗語義知識單元進(jìn)行建模,增強了模型語義表示能力。
舉個例子:
Learnt by BERT :哈 [mask] 濱是 [mask] 龍江的省會,[mask] 際冰 [mask] 文化名城。 Learnt by ERNIE:[mask] [mask] [mask] 是黑龍江的省會,國際 [mask] [mask] 文化名城。
在BERT模型中,通過『哈』與『濱』的局部共現(xiàn),即可判斷出『爾』字,模型沒有學(xué)習(xí)與『哈爾濱』相關(guān)的任何知識。而ERNIE通過學(xué)習(xí)詞與實體的表達(dá),使模型能夠建模出『哈爾濱』與『黑龍江』的關(guān)系,學(xué)到『哈爾濱』是 『黑龍江』的省會以及『哈爾濱』是個冰雪城市。
訓(xùn)練數(shù)據(jù)方面,除百科類、資訊類中文語料外,ERNIE還引入了論壇對話類數(shù)據(jù),利用DLM(Dialogue Language Model)建模 Query-Response 對話結(jié)構(gòu),將對話 Pair 對作為輸入,引入 Dialogue Embedding 標(biāo)識對話的角色,利用 Dialogue Response Loss 學(xué)習(xí)對話的隱式關(guān)系,進(jìn)一步提升模型的語義表示能力。
對比 ERNIE 1.0 和 ERNIE 2.0
Pre-Training Tasks
| 任務(wù) | 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 |
⬇️ 結(jié)果這里就不討論啦,自然是很厲害,我主要是想了解它的使用 ⬇️
————————————————————————————————————————————
2. ERNIE使用
更多請參考:ERNIE_GITHUB
數(shù)據(jù)格式
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個 ';' 分隔的字段組成;
數(shù)據(jù)格式:token_ids; sentence_type_ids; position_ids; seg_labels; next_sentence_label;
其中seg_labels表示分詞邊界信息: 0表示詞首、1表示非詞首、-1為占位符, 其對應(yīng)的詞為CLS或者SEP;
總結(jié)
以上是生活随笔為你收集整理的ERNIE 2.0 理解与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bat中的“多线程”处理代码
- 下一篇: Ping其他电脑ping不通的解决方法