当前位置: 首页 > article >正文

BERT相关知识

1.分词方法 BPE 和 WordPiece 的区别?

        BPE 与 Wordpiece 都是首先初始化一个小词表,再根据一定准则将不同的子词合并。词表由小变大。BPE 与 Wordpiece 的最大区别在于,如何选择两个子词进行合并:BPE 选择频数最高的相邻子词合并,而 WordPiece 选择能够提升语言模型概率最大的相邻子词加入词表。

2. BERT 是怎么分词的?

         BERT 主要是基于 Wordpiece 进行分词的,其思想是选择能够提升语言模型概率最大的相邻子词加入词表。

        BERT 源码中 tokenization.py 就是预处理进行分词的程序,主要有两个分词器:         BasicTokenizer 和 WordpieceTokenizer,另外一个 FullTokenizer 是这两个的结合:先进行 BasicTokenizer 得到一个分得比较粗的 token 列表,然后再对每个 token 进行一次 WordpieceTokenizer,得到最终的分词结果。

         其中 BasicTokenizer 完成: 转 unicode )-> 去除空字符、替换字符、控制字符和空白字符等奇怪字符- > 中文分词 -> 空格分词 -> 小写、去掉变音符号、标点分词;WordpieceTokenizer 大致分词思路是按照从左到右的顺序,将一个词拆分成多个子词,每个子词尽可能长。按照源码中的说法,该方法称之为greedy longest-match-first algorithm,贪婪最长优先匹配算法。

        对于中文来说,一句话概括:BERT 采取的是「分字」,即每一个汉字都切开。

3.介绍一下 Bert 以及三个下游任务

        Bert 模型是一种自编码语言模型,其主要结构是 transformer 的 encoder 层,其主要包含两个训练阶段,预训练与 fine-tuning,其中预训练阶段的任务是 Masked Language Model(完形填空) 和Next Sentence Prediction。

        下游任务:句子对分类任务,单句子分类任务,问答任务,单句子标注任务。

4.除了 Bert,其他预训练模型的拓展

        RoBERTa 模型在 Bert 模型基础上的调整:

        - 训练时间更长,Batch_size 更大,(Bert 256,RoBERTa 8K)

         - 训练数据更多(Bert 16G,RoBERTa 160G)

        - 移除了 NPL(next predict loss)

        - 动态调整 Masking 机制

        - Token Encoding:使用基于 bytes-level 的 BPE

5 BERT 和 Roberta 的区别

        RoBERTa 模型在 Bert 模型基础上的调整:

         训练时间更长,Batch_size 更大,(Bert 256,RoBERTa 8K)

          训练数据更多(Bert 16G,RoBERTa 160G)

         移除了 NPL(next predict loss)

         动态调整 Masking 机制

         Token Encoding:使用基于 bytes-level 的 BPE


http://www.kler.cn/a/416001.html

相关文章:

  • 小米路由mini刷PDCN教程补充
  • 每日速记10道java面试题03
  • PKO-LSSVM-Adaboost班翠鸟优化最小二乘支持向量机结合AdaBoost分类模型
  • JVM_垃圾收集器详解
  • 【Web】0基础学Web—html基本骨架、语义化标签、非语义化标签、列表、表格、表单
  • 40分钟学 Go 语言高并发:Go程序性能优化方法论
  • Java项目实战II基于Java+Spring Boot+MySQL的智能停车计费系统(开发文档+数据库+源码)
  • 独家|京东调整职级序列体系
  • 不一样的css(三)
  • Windows安装Node.js
  • Linux防火墙及安全策略的配置
  • 新型大语言模型的预训练与后训练范式,苹果的AFM基础语言模型
  • elementUI的单选框如何设置默认选中
  • 【创意框架】AI一键将草图生成动画,适合做儿童素质教育
  • 电机瞬态分析基础(3):空间矢量
  • Leetcode(区间合并习题思路总结,持续更新。。。)
  • 抽卡代码(简陋) C#
  • java虚拟机——如何排查jvm问题
  • 在鲲鹏麒麟服务器上部署MySQL主从集群
  • 团队自创【国王的魔镜-2】
  • Appflyer记录卸载事件
  • 替代Postman ,17.3K star!
  • 鸿蒙多线程开发——sendable共享容器
  • 右值引用和移动语义:
  • `uni.setClipboardData` 是 uni-app 提供的一个 API 设置系统剪贴板的内容
  • QT之QML布局总结