BERT相关知识

news/2024/11/30 19:51:44/

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.ppmy.cn/news/1551290.html

相关文章

【CVPR24】One-Prompt to Segment All Medical Images

论文介绍 论文: One-Prompt to Segment All Medical Images 代码: https://github.com/KidsWithTokens/one-prompt 会议与年份:CVPR24 全文概述 本文介绍了一种新的医疗图像分割方法—One-Prompt Segmentation。传统的分割方法需要用户在推理阶段为每个样本提供提示…

Linux网络配置与管理

课程知识点 1、主机名的配置 2、网卡信息的配置 3、常用网络命令与网络故障排查 技术目标 掌握主机名与网卡信息的配置掌握常用网络命令的使用与网络故障排查的方法 课程内容 一、主机名的配置 1.1 配置文件 主机名保存在/etc/hostname文件中,可以通过查看…

【附录】Rust国内镜像设置

目录 前言 (1)设置环境变量 (2)安装Rust (3)设置crates镜像 前言 本节课来介绍下如何在国内高速下载安装Rust和Rust依赖,由于网络原因,我们在安装Rust和下载项目依赖时都很慢&am…

js-显示转换(强制转换)与隐式转换,==与===区别

1.显示转换(强制转换)与隐式转换 1.1显示转换 常见的JavaScript强制转换示例。 (1) 一元加号、一元减号- 值是布尔值,true将被转换为1,false将被转换为0。 let a "123"; let b a; // b的值为123,类型为Nu…

OpenAI 是怎么“压力测试”大型语言模型的?

OpenAI 再次稍微揭开了它的安全测试流程的面纱。上个月,他们分享了一项调查的结果,这项调查研究了 ChatGPT 在根据用户名字生成性别或种族偏见的几率。现在,他们又发布了两篇论文,详细描述了如何对大型语言模型进行“压力测试”&a…

Android 编译和使用libheif

项目中需要使用libheif,libde265,libyuv。一下是相应的cmakelist.txt。这里直接使用了静态库。 里面涉及到c包的链接,需要stdc。 ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a这个路径由于操作过程中copy出现问题,多了一层路径&…

用户密码存储方式的发展史

文章目录 一、裸奔时代——纯文本存储二、远古时代:加密存储三、近代:单向哈希算法四、哈希加盐:穿上迷彩服两种加盐做法1. 随机生成盐并保存2. 固定算法生成盐并且不保存 五、21世纪:自适应单项函数未来趋势 一、裸奔时代——纯文…

嵌入式硬件设计:从概念到实现的全流程

嵌入式硬件设计是现代电子技术中一个至关重要的领域,涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…