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

  • 相关阅读:
    Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
    算法七:广度优先搜索
    sqldependency 支持的select
    ghostDoct 使用 (转 http://www.cnblogs.com/RockyMyx/archive/2010/04/20/Project-Route-Using-GhostDoc.html)
    Jenkins 使用学习笔记
    C# 反射类型转换
    时间分割线:2016年1月的文章都是从以前chinaunix的博客文章
    Error 42 error C2784: 'bool std::operator <(const std::_Tree<_Traits>
    JNI的类路径问题
    【转】不用临时变量也可以交换变量的值
  • 原文地址:https://www.cnblogs.com/shona/p/11996759.html
Copyright © 2011-2022 走看看