BPE (Byte-Pair Encoding) Tokenization

目录

  • 一、Tokenization 的概念
  • 二、BPE 的概念
  • 三、BPE 的步骤

遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步!
在这里插入图片描述
需掌握的前提知识:
本文参考: P24 台大资讯 2023秋季 深度学习之应用 |ADL 5.1:BPE (Byte-Pair Encoding) Tokenization

一、Tokenization 的概念

Tokenization 即将每个单词进行切分成小的单元。

我们其实也可以直接将每个单词作为一个单元来进行后续的训练,但是这样当我们处理新单词的时候就没有办法给出一个合适的表示,可能许多没有见过的所有的字都公用同一个表示。
在这里插入图片描述

然而,作为真人的我们第一次看到生词的时候,并不是对它一无所知的,我们可以通过生词的组成来进行猜测意思。
在这里插入图片描述
所以我们并不以单词作为一个 token,而是将单词进一步切分,即进行Tokenization。

Tokenization 可以通过多种方式来实现,BPE (Byte-Pair Encoding) 就是其中一种,这种方式比较简单而且非常流行,现在各式各样的预训练模型、基于 Transformer 模型等等都应用了 BPE 方法。

二、BPE 的概念

将单词进行切分,那切分到什么程度合适呢?如果切分单元为字母,这样不存在没有见过的字母,而且整个字母表容量也很小,但是这样一来多个字母形成的语义就难以被建模。

子词(Subword,parts of words)在单词与字母之间进行了折中,这种方式也是一个主流的方法。BPE 就是用了这样的方法来定义子词的词表,将一些常出现的连续的子词放到词表中。

三、BPE 的步骤

假设我们的训练数据如下:
在这里插入图片描述

  • step 1:初始化词表
    将训练语料库中的所有字符(包括单词结束符号)作为初始词汇表的元素。
    在这里插入图片描述

  • step 2:统计词频
    对于给定的文本数据集,统计每个字符对(两个连续字符的组合)的出现频率。
    在这里插入图片描述

  • step 3:合并最频繁的字符对
    从所有字符对中选择出现频率最高的一对。将选定的字符对视为一个单独的词元(token),并将其添加到词汇表中。
    在这里插入图片描述

  • step 4:更新词频统计
    将文本数据集中的所有实例中的选定字符对替换为新创建的词元,从 step 2 进行重复,直到达到预定的词汇表大小或无法进一步合并字符对。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ……

最终生成的词汇表包含了所有 token,包括原始的字符和合并后的 token。
在这里插入图片描述

如果我们要处理一个没有见过的单词 lowest,通过以上规则我们会将这个单词分为 lowest</w> 两个部分。

如果我们要处理一个没有见过的单词 powest,通过以上规则我们会将这个单词分为 <unk>owest</w> 四个部分。其中 p 在词表中并没有出现,因此我们这里表示为 <unk>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis使用注解形式实现一对多、多对多查询(转载)

1、链接&#xff1a;一对一&#xff0c;一对多 2、多对多 原文 MyBatis的注解实现复杂映射开发 实现复杂关系映射之前我们可以在映射文件中通过配置来实现&#xff0c;使用注解开发后&#xff0c;我们可以使用Results注解&#xff0c;Result注解&#xff0c;One注解&#x…

Java学习笔记之基本数据类型转换

前言 本篇文章是基于我本人在初学JAVA阶段想记录的的学习笔记&#xff0c;如有错误&#xff0c;恳请指正。今天要干掉的是JAVA的基本数据类型转换。 笔记目录一览 前言一&#xff0c;基本数据类型复习二&#xff0c;基本介绍什么是自动类型转换&#xff1f; 三&#xff0c;任…

nvidia-smi命令详解

参考&#xff1a; https://zhuanlan.zhihu.com/p/664550672 NVIDAI-SMI Version 版本号&#xff1b; Driver Version 驱动版本号&#xff1b; CUDA Version 版本号&#xff1b; GPU 型号及序号&#xff1b; 风扇&#xff1b; 温度&#xff1b; Perf 性能状态&#xff1b; Pers…

达梦数据库的分区表

达梦数据库的分区表 达梦数据库&#xff08;DM Database&#xff09;提供了灵活和强大的分区表功能&#xff0c;以更高效地管理和操作大规模数据集。分区表通过将数据分割成更小、更易管理的部分&#xff0c;可以显著提高查询性能、缩短维护时间、并提高系统的总体可扩展性。 …

统计信号处理基础 习题解答10-15

题目 对随机变量的随机性的一个度量是它的熵&#xff08;entropy&#xff09;&#xff0c;熵定义为&#xff1a; 如果&#xff0c;求这个熵&#xff0c;并说明它与PDF集中度的关系。观察到数据后&#xff0c;后验PDF的熵可以确定为&#xff1a; 且它应该比小。因此&#xff0c…

《无与伦比》Centos7 开放端口

例如我想开放80端口&#xff0c;那么命令就是&#xff1a; firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --reload centos 关闭防火墙 systemctl stop firewalld.service 查看防火墙状态 firewall-cmd --state centOS7.4 关闭防火墙 systemctl stop f…

前端常用6种数据加密方式的使用详解

在前端开发中&#xff0c;数据加密是一个重要的安全措施&#xff0c;可以保护用户数据不被轻易窃取或篡改。以下是六种常用的前端数据加密方式及其示例代码和详细讲解&#xff1a; 1. Base64 编码 Base64 是一种基于64个可打印字符来表示二进制数据的表示方法。它不是一种加密…

Python3的requests库,超时参数timeout设置和异常捕获

在Python的requests库中&#xff0c;get()和post()方法都接受一个名为timeout的参数&#xff0c;该参数用于设置请求的超时时间。如果你没有为这些方法设置timeout参数&#xff0c;那么默认情况下它们可能会等待很长时间&#xff0c;直到服务器响应或连接失败。 在Python的req…

Redis 高可用 sentinel

简介 Sentinel提供了一种高可用方案来抵抗节点故障&#xff0c;当故障发生时Redis集群可以自动进行主从切换&#xff0c;程序可以不用重启。 Redis Sentinel集群可以看成是一个Zookeeper集群&#xff0c;他是Redis集群高可用的心脏&#xff0c;一般由3-5个节点组成&#xff0…

人体接近传感器,ATM微波传感器,人体存在传感器 微波探测器YTMW8631

人体接近传感器&#xff0c;ATM微波传感器&#xff0c;人体存在传感器 微波探测器YTMW8631 史新华 批发Atm微波探测器,Atm传感器人体接近传感器,Dvr录像机专用微波感应器,Atm机录像系统专用感应器 微波传感器的多领域应用 微波探测器是利用微波的多普勒效应来探测运动物体&…

Linux系统编程——进程信号

目录 一&#xff0c;信号预备 1.1 生活中的信号 1.2 技术应用中的信号 1.3 signal函数捕捉信号 1.3 信号的发送与记录 1.4 信号的常见处理方式 二&#xff0c;信号的产生 2.1 核心转储 2.1.1 环境配置 2.1.2 利用core文件进行调试 2.1.3 core dump标志 2.2 通过系统…

程序猿大战Python——文件操作、异常、模块——导入模块

导入模块的方式 目标&#xff1a;了解导入模块的方式有哪些&#xff1f; 模块指的是&#xff1a;以.py结尾的Python文件。 注意&#xff1a;模块名属于标识符。 在模块中&#xff0c;能定义函数、变量和类等&#xff0c;也能包含其他一些可执行的代码&#xff0c;比如print(x…

【ClickHouse】简介入门、Clickhouse的特点、ClickHouse 的安装(一)

简介 ClickHouse入门 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 ClickHouse的特…

【质量】软件系统数据质量管理过程(Word原件)

软件系统数据做数据质量管理至关重要&#xff0c;原因有四&#xff1a; 首先&#xff0c;数据质量直接影响软件系统的性能和用户体验。高质量的数据能够确保系统稳定运行&#xff0c;提供准确、可靠的信息支持&#xff0c;从而增强用户的满意度和信任度。 其次&#xff0c;数据…

集团门户网站的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;集团文化管理&#xff0c;基础数据管理&#xff0c;公告通知管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#xff0…

仓库管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;公告管理&#xff0c;物资管理&#xff0c;基础数据管理&#xff0c;用户管理 用户账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公告管理&#xff0c;物…

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享

大家好&#xff0c;我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍&#xff0c;我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图&#xff0c;可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…

【操作系统】操作系统实验03-页面置换算法

题目要求&#xff1a; 先读懂实验文档中的两个页面置换算法&#xff0c;参考文档中程序&#xff0c;实现以下要求&#xff1a; 假设某个进程P有6个页面&#xff0c;进程访问页的顺序自拟&#xff08;不少于20个&#xff09;&#xff0c;在内存中分配给该进程4个页面&#xff…

web安全渗透测试十大常规项(一):web渗透测试之XML和XXE外部实体注入

#详细点: XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSON传输。XXE漏洞XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发…

使用react-markdown 自定义组件在 Next.js 中进行渲染

在这篇文章中&#xff0c;我们将讨论如何在Next.js项目中使用react-markdown库来渲染Markdown内容&#xff0c;并自定义组件以扩展Markdown的功能。我们将使用TypeScript来确保代码的类型安全性。 Markdown是一种轻量级标记语言&#xff0c;常用于编写文档、博客等。react-mar…