NLP学习—实现一个BERT(简记)

本文主要内容是介绍了BERT的代码结构、具体实现与原理,对BERT的一些简记

内容包括以下几个部分:

  1. BERT Tokenization 分词模型(BertTokenizer)
  2. BERT Model 本体模型(BertModel)
    • BertEmbeddings
    • BertEncoder
      • BertLayer

        • BertAttention
        • BertIntermediate
        • BertOutput
    • BertPooler

本文内容的结构图如下:

具体的内容如下

1. BERT Tokenization 分词模型(BertTokenizer)

1)Tokenization分词-BertTokenizer:基于BasicTokenizer和WordPieceTokenizer的分词器
a)BasicTokenizer负责处理的第一步——按标点、空格等分割句子,并处理是否统一小写,以
及清理非法字符。
(1)对于中文字符,通过预处理(加空格)来按字分割;
(2)同时可以通过never_split指定对某些词不进行分割;
(3)这一步是可选的(默认执行)。
b)WordPieceTokenizer在词的基础上,进一步将词分解为子词(subword)。
(1)subword 介于 char 和 word 之间,既在一定程度保留了词的含义,又能够照顾到英
文中单复数、时态导致的词表爆炸和未登录词的 OOV(Out-Of-Vocabulary)问题,将词根
与时态词缀等分割出来,从而减小词表,也降低了训练难度;
(2)例如,tokenizer 这个词就可以拆解为“token”和“##izer”两部分,注意后面一个词的
“##”表示接在前一个词后面。
2. BERT Model 本体模型(BertModel)
组成:
1. embeddings,即BertEmbeddings类的实体,根据单词符号获取对应的向量表示;
2. encoder,即BertEncoder类的实体;
3. pooler,即BertPooler类的实体,这一部分是可选的。
补充: 剪枝是一个复杂的操作,需要将保留的注意力头部分的 Wq、Kq、Vq
和拼接后全连接部分的权重拷贝到一个新的较小的权重矩阵(注意先禁止 grad
再拷贝),并实时记录被剪掉的头以防下标出错。具体参考BertAttention部分
的prune_heads方法.**

2.1 BertEmbeddings

 组成:包含三个部分求和得到:

1) word_embeddings,上文中 subword 对应的嵌入。
2) token_type_embeddings,用于表示当前词所在的句子,辅助区别句子与
padding、句子对间的差异。
3) position_embeddings,句子中每个词的位置嵌入,用于区别词的顺序。和
transformer 论文中的设计不同,这一块是训练出来的,而不是通过 Sinusoidal
函数计算得到的固定嵌入。一般认为这种实现不利于拓展性(难以直接迁移到更长
的句子中)。
->>> 三个 embedding 不带权重相加,并通过一层 LayerNorm+dropout 后输出,其大小
为(batch_size, sequence_length, hidden_size)。
2.2 BertEncoder
组成:包含多层 BertLayer,这一块本身没有特别需要说明的地方,不过有一个细节值
得参考:利用 gradient checkpointing 技术以降低训练时的显存占用。
- BertLayer
- BertAttention
- BertSelfAttention
- BertSelfOutput
- BertIntermediate
- BertOutput
2.3 BertPooler
这一层只是简单地取出了句子的第一个token,即[CLS]对应的向量,然后过一个全连接层
和一个激活函数后输出:(这一部分是可选的,因为pooling有很多不同的操作)

NLP学习————实现一个BERT(简记)相关推荐

  1. 『NLP学习笔记』BERT文本分类实战

    BERT技术详细介绍! 文章目录 一. 数据集介绍 二. 数据读取 三. 训练集和验证集划分 四. 数据分词tokenizer 五. 定义数据读取(继承Dataset类) 六. 定义模型以及优化方法 ...

  2. Datawhale组队学习NLP之transformer Task03 BERT

    Datawhale组队学习NLP之transformer Task03 BERT 前言 一.句子分类 二.模型架构 1.模型输入 2.模型输出 三.词嵌入(扩展) 1.词嵌入 2.语境问题 三.BER ...

  3. 保姆级NLP学习路线来啦!

    这个保姆级不是形容这份指南有多详细,而是形容这个指南会伴随你们一起成长哟(其实就是太多了写不完).之后的更新都会定期发文并汇总在Github上,欢迎催更: https://github.com/lee ...

  4. 最新Transformer模型大盘点,NLP学习必备,Google AI研究员出品丨资源

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 可高效处理长文本的模型Longformer.和堪称"升级版"Transformer的BigBird模型,到底有什么区别? ...

  5. ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT(附论文解读)...

    来源:PaperWeekly 本文共2000字,建议阅读10分钟. 本文提出了一种新方法,将知识图谱的信息加入到模型的训练中. 论文动机 自从 BERT 被提出之后,整个自然语言处理领域进入了一个全新 ...

  6. 【NLP】 深入浅出解析BERT原理及其表征的内容

    本篇介绍目前NLP领域里影响力最大的预训练模型BERT.首先,大致介绍了BERT里有什么:接着,介绍了BERT的结构和其预训练的方式:最后,再总结BERT的表征的内容和分布. 作者&编辑 | ...

  7. ACL 2019 | 基于知识增强的语言表示模型,多项NLP任务表现超越BERT

    作者丨张琨 学校丨中国科学技术大学博士生 研究方向丨自然语言处理 论文动机 自从 BERT 被提出之后,整个自然语言处理领域进入了一个全新的阶段,大家纷纷使用 BERT 作为模型的初始化,或者说在 B ...

  8. [深度学习] 自然语言处理 --- Bert开发实战 (Transformers)

    本文主要介绍如果使用huggingface的transformers 2.0 进行NLP的模型训练 除了transformers,其它兼容tf2.0的bert项目还有: 我的博客里有介绍使用方法  [ ...

  9. [深度学习] 自然语言处理 --- BERT模型原理

    一 BERT简介 NLP:自然语言处理(NLP)是信息时代最重要的技术之一.理解复杂的语言也是人工智能的重要组成部分.Google AI 团队提出的预训练语言模型 BERT(Bidirectional ...

最新文章

  1. 数据结构和算法:(3)3.2.2单链表的整表删除
  2. JS重复引用也会导致错误
  3. 思科路由器Ez***解决地址重叠测试
  4. php5.1 0day,关于phpwind 5.01-5.3 0day的分析
  5. 机顶盒 img打包工具_网络机顶盒刷机、固件升级图文详解 宏旺半导体包教包会...
  6. 分区助手删除linux,分区助手彻底删除硬盘文件方法
  7. coverity java_coverityamp;fortify1--Poor Error Handling: Overly Broad Catch
  8. H3C IRF2的三种配置情况「转载」
  9. 书评精益创业-新创企业的成长思维 (上)
  10. 01Postgresql下载安装和配置
  11. 综合日语第一册第八课
  12. Mac新手必备小技巧:一起进阶MAC大神
  13. xdm,程序员外包能干吗?
  14. tplogin 服务器未响应,为什么tplogin.cn老是域名解析错误
  15. 服务器系统升级文件转移,多可系统迁移说明
  16. mac在终端打开mysql_如何在Mac上打开终端
  17. java 写一个HelloJavaWorld你好世界输出到操作系统文件Hello.txt文件中
  18. 那个业务大拿死在了这个地方
  19. 网页无法在微信内访问怎么办,微信跳转链接的实现方法
  20. zuk android os 流量,原生用户最爱 Cyanogen OS版ZUK Z1固件

热门文章

  1. 2022年山东省职业院校技能大赛高职组“信息安全管理与评估”赛项竞赛规程
  2. Mysql常用命令2
  3. 黑白照片上色软件哪个好用?建议收藏这些软件
  4. 设计模式之适配器模式 :外部系统接口的使用
  5. 读论文2:SELFEXPLAIN: A Self-Explaining Architecture for Neural Text Classifiers
  6. 「衣米魔兽世界怀旧服」大数据分析反外挂系统查封145个穿门账号
  7. 计算机视觉研究人员必备的Linux命令行技巧
  8. N-gram和NNLM语言模型
  9. 记录自己考研二战失败后找工作的经历
  10. 啦啦外卖短信验证修复 短信提示:Specified signature is not matched with our calculation……