zoukankan      html  css  js  c++  java
  • ERNIE 2.0 理解与使用

    更新中

    更新时间:2019-12-06 17: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 代表了不同的预训练任务。

    ernie2.0_model

    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: Enhanced Representation through kNowledge IntEgration

    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

  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/shona/p/11996759.html
Copyright © 2011-2022 走看看