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