• 预训练中Word2vec,ELMO,GPT与BERT对比


    预训练

    先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用。当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加载训练集A或者B训练好的参数,其他高层仍然随机初始化。底层参数有两种方式:frozen,即预训练的参数固定不变,fine-tuning,即根据现在的任务调整预训练的参数。
    优势:
    1、当前任务数据量少,难以训练更多的网络参数,可以加载预训练的模型,然后根据当前的任务对参数进行fine-tuning,以适合当前的任务。
    2、即使当前任务的数据量不少,使用预训练模型可以加快模型的收敛。
    原理:
    1、在底层抽出来的特征与任务无关,越具备任务的通用型,所以可以使用底层预训练好的参数初始化新的任务。
    2、高层任务与具体的任务关联性较大,所以在高层不使用预训练参数或者采用fine-tuning方式在当前数据集上清洗掉高层无关的特征提取器。

    Word2vec

    word2vec就是nlp中预训练的一种方式。但是word2vec有一个缺点就是无法解决多义词,因为每一个词只有用一个向量表示。

    ELMO

    ELMO是“Embedding from Language Models"简称。在此之前word embedding本质是个静态方式,静态的意思就是说单词训练好之后就固定了,在以后使用时,单词不会跟着上下文场景变化而变化。
    ELMO的本质思想是:事先用一个语言模型去学习单词的word embedding, 当我在使用时,单词已经具备了特定的上下文,这时候可以根据上下文的语义去调整单词的word embedding, 这样经过调整的word embedding更能表达这个上下文中具体的含义,也就解决了一词多义问题,故ELMO本质就是根据当前上下文对Word Embedding进行动态调整的过程。

    Elmo采用典型的两阶段过程:第一阶段使用预训练语言模型进行训练,第二阶段当做具体的下游任务时,从预训练的网络中提取对应的词的Word Embedding作为特征补充到下游任务中。
    第一阶段,预训练:采用双层双向LSTM对上下文进行编码,上下文使用静态的word embedding, 对每层LSTM,将上文向量与下文向量进行拼接作为当前向量,利用大量的预料训练这个网络。对于一个新的句子,可以有三种表示,最底层的word embedding, 第一层的双向LSTM层的输出,这一层能学习到更多句法特征,第二层的双向LSTM的输出,这一层能学习到更多词义特征。经过elmo训练,不仅能够得到word embedding, 又能学习到一个双层双向的神经网络。
    第二阶段,下游任务使用:将一个新的句子作为elmo预训练网络的输入,这样该句子在elmo网络中能获得三个embedding, 可以将三个embedding加权作为word embedding, 并将此作为下游任务的输入,这被称为“Feature-based Pre-Training"。

    GPT

    GPT是Generative Pre-Training的简称。与ELMO相似,采用两阶段的模式:利用语言模型进行预训练,通过fine-tuning模式应用到下游任务
    利用语言模型进行预训练:与elmo不同的是,GPT使用transformer进行提取特征,并且是单向的transformer,只是根据上文来预测某个词。
    fine-tuning: 想GPT网络看起,根据GPT网络来更改自己任务结构。这样就可以使用手头数据对当前任务进行fine-tunining.

    BERT

    BERT是“Bidirectional Encoder Representations from Transformers"的简称。
    同GPT采用两阶段模式:利用双向语言模型进行预训练,通过fine-tuning模式解决下游任务。
    BERT创新: Masked语言模型Next Sentence Prediction
    Masked语言模型, 即随机选择一部分单词进行mask,然后预测这些单词,其方式和CBOW类似,为了解决fine-tuning阶段不需要mask,所以bert中只选择15%作为mask的候选,在这15%中80%不做处理,10%进行mask,10%进行替换【不太理解为什么成立】
    next sentence prediction:之所以这么做,是考虑到很多NLP任务是句子关系判断任务,单词预测粒度的训练到不了句子关系这个层级,增加这个任务有助于下游句子关系判断任务。
    BERT的输入: 输入的部分是个线性序列,两个句子之间使用sep进行分割,在开头和结尾分别加一个特殊字符。对于每一个字符都是由三种embedding组成,位置信息embedding, 单词embedding和句子embdding,三种embedding叠加便是bert的输入。

    总结

    word2vec: nlp中最早的预训练模型,缺点是无法解决一词多义问题.
    ELMO:
    优点: 根据上下文动态调整word embedding,因为可以解决一词多义问题;
    缺点:1、使用LSTM特征抽取方式而不是transformer,2、使用向量拼接方式融合上下文特征融合能力较弱。
    GPT:.
    优点:使用transformer提取特征
    缺点:使用单项的语言模型,即单向transformer.
    BERT: 优点:使用双向语言模型,即使用双向transformer;使用预测目标词和下一句这中多任务学习方式进行训练。

    参考:
    [1] 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

  • 相关阅读:
    文档视图
    引入缓冲池技术
    数据库访问与查询
    OnInitialUpdate函数
    显示股票视图的全局函数
    切换视图的核心代码
    GuiEdit的使用
    操作方法
    SQL 使用 解析
    调用API 实现 窗体 拖动
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/11219600.html
Copyright © 2020-2023  润新知