NLP之Bert算法思路介绍

举报
AI Medicine 发表于 2022/03/01 16:37:39 2022/03/01
【摘要】 Bert算法思路介绍 1 of N Encoding 简单的编码 Word Embedding 更复杂的embedding向量 Contextualized Word Embedding 问题一词多义同一个词(token),在不同句子中,有不同type每一个token都有一个embedding 解决方案contextualized word embedding 算法Embedding fr...

Bert算法思路介绍

Bert算法思路介绍

1 of N Encoding

简单的编码

Word Embedding

更复杂的embedding向量

Contextualized Word Embedding

问题

  • 一词多义

    • 同一个词(token),在不同句子中,有不同type
  • 每一个token都有一个embedding

解决方案

  • contextualized word embedding

算法

  • Embedding from Language Model(ELMO)

    • RNN based language models
  • Bert (Bidirectional Encoder Representation from Transformers)

    • 主要特点

      • Masked LM

        • 15%

          • 10%替换成其他的
          • 10%原封不动
          • 80%替换成mask
        • 解释

          • 如果两个词汇填在同一个地方,没有违和感,则有类似的embedding
      • Next Sentence Prediction

        • 预测两个句子是否接在一起

          • 即主题预测和连贯性预测合并为一个单项任务
        • SEP

          • the boundary of two sentences
        • CLS

          • the position that outputs classification results

          • 输入到Linear Binary Classifier

            • 预测两个句子是否接在一起
        • 50%的概率,两个句子在一起;50%的概率,是随机选的。【即50%正例,50%负例】

      • 双向预测模型

        • 把之前模型的架构拓展到

          • 深的双向的架构上
      • bert

        • self attention

          • 可以不考虑position的影响
        • 特征提取器

        • 小bert 12层

          • L

            • Transformer Blocks
          • H

            • Hidden Size
          • A

            • Number of self attention heads

              • 注意力多头的投的个数
          • L=12, H=768, A=12

            • 参数约为1.1亿
          • 有24层 embedding,处理的特性不一样

          • 每一层和任务特点有关

        • 大bert 42层

          • L=24, H=1024, A=16

            • 参数约为3.4亿
    • 主要过程

      • 预训练

        • 没有标号的句子对

          • 参考图1
      • 微调(fine tuning)

        • 权重来自于预训练

        • 输入时标号的句子对

        • 下游任务,3个

          • 初始化值来自前面训练好的权重
          • 然后继续训练,会改变权重等
      • 每个下游任务都根据自己的任务预训练好模型

      • 架构

        • 主要是多层的、双向的transformer编码器

          • 可以看transformer的文章
      • 切词方法

        • WordPiece

          • 如果一次出现概率不大,可以切开,看子序列的概率。作为子词,可以得到较小的词典,比如3w的词典。
      • embedding做法

        • 给定一个词源,得到嵌入层,然后输入到transformer

        • Tokedn Embeddings

          • 每个词有个embedding
        • Segment Embeddings

          • 句子信息,0/1
        • Position Embeddings

          • 位置信息,例如0,1,2,3,4…
      • 训练数据

        • 800M 的 Books Corpus

          • 书本构成的数据体
        • 2500M的英文 wiki百科

        • 需要使用文本层面的数据,大段大段的文章

    • Mask Language Model

    • CASE 1

      • 问题

        • 句子分类
      • 使用句子的embedding

    • CASE 2

      • 问题

        • 实体识别
        • input: 句子
        • output:class
      • 使用每个词汇的embedding

      • 如何区分句子

        • 使用sep去区分
        • 增加一个嵌入层
    • 下游任务

      • 如果一个句子的分类

        • 第一个词源对应的CLS做分类
        • 对应哪些词源的输出,做分类
        • 加一个输出层,+softmax,然后下游任务
      • GBLUE

        • 句子层面的任务

          • CLS对应的组以后向量,输出层w,

            • 做分类
        • QA任务

          • 判断每个词源是答案的开头或者结尾

            • 得到概率
          • 对第二句话,相乘得到softmax,得到概率

            • 3个epoch,batch32,5e-5
    • Bert Learn

      • 子主题 1
    • 如何用于下游任务

      • 句子对匹配

        • 拼接两个文本,使用CLS的输出判断

          • 子主题 1
      • 单句分类

        • 使用CLS的输出,做多分类或者2分类
      • 问答

      • 序列标注

        • 把序列的所有token输出,看属于实体中的哪一个
    • 如何提升BERT下游任务表现

      • 中文预训练模型

        • 获取谷歌中文Bert
      • 基于领域训练

      • 基于任务语料训练

      • 基于具体的任务Finetune

  • ERNIE(Enhanced **)

    • 以中文的词为单位
  • ELMO

    • Bert与ELMO的不同

      • ELMO用RNN架构,bert不用

        • 虽然是双向的,但是老的架构
      • 基于特征的方法

  • GPT

    • Bert与GPT的不同

      • bert双向的

      • GPT

        • 左侧预测右侧
  • 相关工作

    • 非监督的基于特征的工作

      • ELMP
    • 非监督的…

    • 迁移学习

      • NLP

        • 可能没有
  • 词嵌入等

学习链接

https://www.cnblogs.com/zackstang/p/15358061.html

https://blog.csdn.net/XiangJiaoJun_/article/details/107129808

https://picture.iczhiku.com/weixin/message1590462757334.html

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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