NLP之Bert相关算法介绍

举报
AI Medicine 发表于 2022/03/01 16:40:05 2022/03/01
【摘要】 Bert相关算法介绍 主线 Bert的历史沿革是什么,继承了什么,创新了什么,为什么效果那么好,主要原因是什么 预训练 为什么可以复用底层特征比较通用、可以复用 为什么还要做fine-tuning?高层特征任务有相关性 预训练的特点图像预训练一方面ImageNet是图像领域里有超多事先标注好训练数据的数据集合,分量足是个很大的优势,量越大训练出的参数越靠谱;另外一方面因为ImageNet有...

Bert相关算法介绍

Bert相关算法介绍

主线

Bert的历史沿革是什么,继承了什么,创新了什么,为什么效果那么好,主要原因是什么

预训练

为什么可以复用

  • 底层特征比较通用、可以复用

为什么还要做fine-tuning?

  • 高层特征任务有相关性

预训练的特点

  • 图像预训练

    • 一方面ImageNet是图像领域里有超多事先标注好训练数据的数据集合,分量足是个很大的优势,量越大训练出的参数越靠谱;
      另外一方面因为ImageNet有1000类,类别多,算是通用的图像数据,跟领域没太大关系,所以通用性好

word embedding

神经网络语言模型

  • NNLM

    • 概念

      • 根据句子里面前面的一系列前导单词预测后面跟哪个单词的概率大小(理论上除了上文之外,也可以引入单词的下文联合起来预测单词出现概率)
    • 方法

      • 单词用onehot编码

        • 乘以矩阵Q

          • 获得向量C(W)
      • 拼接每个单词的C(W)

        • 链接隐含层

          • 接softmax预测应该接哪个单词
      • Q

        • 包含v行,v代表词典大小

          • 每一行对应的单词的word embedding
          • Q需要学习
      • 总体看

        • 输入一个词的上文,预测下文

word2vec

  • 分类

    • CBOW

      • Continous bag of words model
    • Skip-gram

      • Continous skip-gram model
  • 方法

    • Word2Vec的网络结构其实和NNLM是基本类似的
  • CBOW

    • 用一个词的上下文,预测中心词
  • Skip-gram

    • 用一个,预测它的上下文单词
  • 目标

    • 构建word embedding结果

      • 一个单词表达成word embedding后,比较容易找到语义相近的其他词汇
    • 使用Word2Vec或者Glove,通过做语言模型任务,就可以获得每个单词的Word Embedding

效果

  • 提升1-2个点

有什么问题?

  • 多义词问题

    • 因此一个词只对应一行embedding
  • 静态的word embedding

    • 训练好之后每个单词的表达就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的Word Embedding不会跟着上下文场景的变化而改变
  • 如何解决多义词问题?

    • EMLO

ELMO

名称

  • Embedding from Language Models

  • 论文题目

    • Deep contextualized word representation

概念思路

  • 先用语言模型学好一个单词的Word Embedding,此时多义词无法区分,不过这没关系。
  • 实际使用Word Embedding的时候,单词已经具备了特定的上下文了,可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。
  • 所以ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。

算法思路

  • 第一个阶段是利用语言模型进行预训练;

  • 第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。

  • 网络结构

    • 双层双向LSTM

      • 图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外Wi的上文Context-before;
      • 右端的逆向双层LSTM代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;
      • 每个编码器的深度都是两层LSTM叠加。
  • 每个单词都能得到对应的三个Embedding

    • 单词的Word Embedding

    • 第一层LSTM中,对应单词位置的Embedding

      • 句法信息更多
    • 第二层LSTM中,对应单词位置的Embedding

      • 语义信息更多
  • 如何使用

    • 每个单词得到3个Embedding

      • 每个embedding给一个权重a

        • 权重可以学习
  • 特点

    • Feature-based Pre-Training

      • 提取特征,然后整体整合在一起
    • 是否解决多义词问题?

      • 第一层LSTM编码了很多句法信息,这在这里起到了重要作用
    • 缺点

      • LSTM抽取特征能力,弱于Transformer
      • 拼接方式双向融合特征的融合能力偏弱

GPT

Generative Pre-Training

  • 生成式的预训练
  • 基于Fine-tuning模式的预训练模型

预训练思路

  • 第一个阶段是利用语言模型进行预训练
  • 第二阶段通过Fine-tuning的模式解决下游任务。

如何用在下游任务

  • 对于分类问题,不用怎么动,加上一个起始和终结符号即可;
  • 对于句子关系判断问题,比如Entailment,两个句子中间再加个分隔符即可;
  • 对文本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;
  • 对于多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可

与其他方法的区别

  • 与ELMO的区别

    • 用了transformer的结构,而不是LSTM

    • 没有上下文同时预测

      • 仅用上文预测

Bert

几大类语言任务

  • 序列标注

    • 中文分词

      • 词性标注

        • 命名实体识别
  • 分类任务

    • 文本分类
    • 情感计算
  • 句子关系判定

    • QA等
    • 判断语义关系
  • 生成任务

    • 机器翻译
    • 文本摘要

roberta

更长的时间,更大的batch size,更多的数据进行训练

  • 训练方式发生变化

去掉BERT中的NSP目标(next sentence prediction)

  • 如何选取sentence组合

    • segment组合

    • sentence组合

    • full sentence组合

      • 没有NSP任务等
    • 跨越文档的sentence组合

在更长的句子上进行训练

根据训练数据动态地改变mask的模式

  • BERT的masking是在预处理时进行的,导致这种Masking是静态的,每个epoch的masking结果一致。原本的BERT为了避免这种情况,把数据复制了十份,然后进行了十种不同的静态masking。这样在40个epochs的训练中,同样masking的数据会在整个训练中出现四次。
  • RoBERTa中使用Dynamic Masking,只是在序列送入模型中的时候才去进行动态的masking,这样在更大的数据集上或者更多步数的训练上会表现更好

学习链接

https://zhuanlan.zhihu.com/p/49271699

Transformer

作者介绍:

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。