BPE(Byte-Pair Encoding)简介

news2024/11/16 13:38:33

文章目录

    • BPE简介
    • Vocabulary构建
    • Encoding and Decoding

BPE简介

BPE是一种数据压缩算法的简单形式,数据中最常见的连续字节对被替换成该数据中不存在的字节。BPE的主要目标就是使用最少的token数目来表示一个corpus

在 A New Algorithm for Data Compression中首次提出

样例:

  • 假如我们有数据 aaabdaaabac 需要 encoded(compressed)
  • 字节对aa是最长出现的,因为我们用 Z 来代替,Z=aa
  • 现在我们得到数据 ZabdZabac
  • 这时候,最常出现的字节对是 ab,我们用 Y=ab 来代替
  • 得到 ZYdZYac
  • 现在,最常见的字节对是 ZY, 我们用 X=ZY 来进行代替
  • 最后我们得到 XdXac,这不能够再被压缩了,因为没有字节对出现多于一次

我们按照逆向的方式进行解压

Vocabulary构建

BPE保证最常见的词在词典中以 single token 进行表示,罕见的词被拆分成 subword tokens,这与subword-based tokenization是相同的

假定我们有个 corpus 包含下面这些词(基于空格做了pre-tokenization之后的):

{“old”: 7, “older”: 3, “finest”: 9, “lowest”: 4}

我们为每个词的后面加上 token </w>

{“old”: 7, “older”: 3, “finest”: 9, “lowest”: 4}

  • </w> 为词加上边界,算法才知道词是在哪里结束的
  • 这帮助算法查看每个字符,找到出现频率最高的字节对

下一步,我们将每个词拆分成字符,并计算他们的出现次数,初始结果如下:

在这里插入图片描述

BPE算法就是要找出出现最频繁的对,然后合并它们,依次循环,直到达到了循环限制或者token限制。

这里我们将字符看作是字节

Iterations:

Iteration 1:我们从第二频繁的字母 e 开始(因为第一个是 </w>),与 e 共同出现最多的是 s(9 + 4 = 13次),因此我们合并成 es 并添加到词汇表中,同时更新单独的 es 的出现次数

在这里插入图片描述

Iteration 2:现在,最常出现的是 est,一共出现了 13 次。因此我们合并成 est,添加到词汇表中,并更新 est 的出现次数

在这里插入图片描述

**Iteration 3:**现在,最常出现的是 est</w>,一共出现了 13 次。因此我们合并成 est</w>

在这里插入图片描述

  • 合并停止符 </w> 是很重要的。这帮助算法理解 highestestimate 的区别,他们两个的 est 一个出现在开头,一个出现在结尾,合并上 </w>,这两种 est 才会做不同的处理

**Iteration 4:**现在,出现次数最多的是 ol,一共出现 10 次,我们合并成 ol

**Iteration 5:**现在,出现次数最多的是 old,一共出现 10 次,我们合并成 old

在这里插入图片描述

从上表中,我们可以看到 f,i,n 的出现次数都是 9,但是这三个字母都只在一个单词中出现了,所以我们不再进行合并,我们停止 Iteration

在这里插入图片描述

  • 最后我们的词汇表中共有 11 项,比之前的 12 项只小一点。
  • 这是一个很小的 corpus,在实际中尺寸会减小很多
  • 这 11 个 token 组成我们的词汇表

在实际中,词汇表中的 token 随着 iteration 会先增加再减少,停止 Iteration 的准则可以是 tokens 的个数或者 Iteration 的次数

Encoding and Decoding

对 decode 来说,简单将所有 token 何在一起就好了

  • encoded sequence:[“the”, “high”, “est”, “range”, “in”, “Seattle”]

  • decoded:[“the”, “highest”, “range”, “in”, “Seattle”]

    • 而不是 [“the”, “high”, “estrange”, “in”, “Seattle”],因为有 </w>

对于 encode 新的数据,也很简单,但是计算量比较大

  • sequence:[“the”, “highest”, “range”, “in”, “Seattle”]
  • 我们会遍历 corpus 中发现的所有 tokens(遍历已经获得的 token list),尝试去替换 substring。
  • 如果剩下了一些 substring,就替换成 unknow tokens

通常情况下,词汇表很大,但是也有一些没见过的词。实践中,我们将 pre-tokenize 后的词存在字典中。我们应用上述编码方法对 unknown words进行tokenization,并将新单词的tokenization添加到我们的字典中以供将来使用

参考:Byte-Pair Encoding: Subword-based tokenization | Towards Data Science

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

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

相关文章

Spring IOC 容器 Bean 加载过程

Spring IOC 容器 Bean 加载过程 Spring 对于我们所有的类对象进行了统一抽象&#xff0c;抽象为 BeanDefinition &#xff0c;即 Bean 的定义&#xff0c;其中定义了类的全限定类名、加载机制、初始化方式、作用域等信息&#xff0c;用于对我们要自动装配的类进行生成。 Sprin…

新版本 | 异步复制、交易日历、自定义状态函数......请查收!

大家好~DolphinDB 最新版本近日已经发布&#xff0c;本次的 V2.00.9 与 V1.30.21 新版本推出了很多新功能&#xff0c;并对数据库做了全方位提升&#xff0c;是迄今为止新增功能最多的一次更新。新特性一览我们先来看一看新特性包含哪些方面&#xff1a;1、数据库针对数据安全和…

管理.模型.SWOT

1. SWOT 在企业战略规划中&#xff0c;通过辨析企业自身的竞争优势&#xff08;Strengths&#xff09;、劣势&#xff08;Weaknesses&#xff09;和外部环境为企业带来的机会&#xff08;Opportunities&#xff09;和威胁&#xff08; Threats&#xff09;&#xff0c;企业可制…

Interview系列 - 05 Java|Iterator迭代器|集合继承体系|Set List Map接口特性|List实现类区别

文章目录01. 迭代器 Iterator 是什么&#xff1f;02. 迭代器 Iterator 有什么特点&#xff1f;03. 迭代器 Iterator 怎么使用&#xff1f;04. 如何边遍历边移除 Collection 中的元素&#xff1f;05. Iterator 和 ListIterator 有什么区别&#xff1f;06. 数组和集合的区别&…

Alist ——本地网盘管理器

Alist ——本地网盘管理器 一、下载工具 Alist https://github.com/alist-org/alist二、启动登录 进入下载好的文件中&#xff0c;在地址栏输入cmd进入命令行启动 进入命令行输入 alist start启动 记住密码&#xff0c;和端口进入浏览器 输入 &#xff1a;127.0.0.1:5244用…

java final关键字 详解

概述&#xff1a;作用&#xff1a;细节&#xff1a;演示&#xff1a;总结&#xff1a;一、概述 : final [ˈ faɪnl]&#xff0c;最终的&#xff0c;最后的&#xff0c;决定性的&#xff0c;不可改变的。final作为Java中的一个关键字可以用来修饰类&#xff0c;方法&#xff0c…

【程序人生】从土木专员到网易测试工程师,薪资翻3倍,他经历了什么?

转行对于很多人来说&#xff0c;是一件艰难而又纠结的事情&#xff0c;或许缺乏勇气&#xff0c;或许缺乏魄力&#xff0c;或许内心深处不愿打破平衡。可对于我来说&#xff0c;转行是一件不可不为的事情&#xff0c;因为那意味着新的方向、新的希望。我是学工程管理的&#xf…

京东测试进阶之路:初入测试碎碎念篇

1、基本的测试用例设计方法 基本的测试用例设计方法&#xff08;边界值分析、等价类划分等&#xff09;。 业务和场景的积累&#xff0c;了解测试需求以及易出现的bug的地方。 多维角度设计测试用例&#xff08;用户、业务流程、异常场景、代码逻辑&#xff09;。 2、需求分析 …

idea自带maven位置、maven全局环境变量配置,安装jar到本地 mac

声明&#xff1a;本教程为mac版教程&#xff0c;Windows请路过 idea自带maven3配置全局环境变量 mac电脑maven3位置/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3配置全局变量,编~/.profile文件&#xff08;没有则新建&#xff09; export MAVEN/App…

JVM-JMM内存模型(happens-before、volatile)

前言 由于计算机的存储设备与处理器的运算速度有几个数量级的差距所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲。 将运算需要使用到的数据复制到缓存中&#xff0c;让运算能快速进行&#xff0c;当运算…

Day895.MySql误删数据还原方案 -MySQL实战

MySql误删数据还原方案 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于MySql误删数据还原方案的内容。 传统的高可用架构是不能预防误删数据的&#xff0c;因为主库的一个 drop table 命令&#xff0c;会通过 binlog 传给所有从库和级联从库&#xff0c;进而导致整…

研报精选230220

目录 【行业230220国信证券】银行业行业专题&#xff1a;经济复苏中的优质中小银行【行业230220国信证券】汽车行业周报&#xff08;2023年第7周&#xff09;&#xff1a;吉利将发布新品牌“银河” &#xff0c;2022年宇通纯电动客车获欧洲销量冠军【行业230220开源证券】商贸零…

Java File相关操作

文章目录File文件操作IO流处理流缓冲流转换流对象流File文件操作 利用File类来操作。 文件操作中常用到相对目录和绝对路径 package org.File; import java.io.File; public class demo01 { public static void main(String[] args) { try{ File file new File("…

【Java期末复习】《面向对象程序设计》练习库

目录 一、单选题 二、填空题 三、程序填空题 1、 super使用--有如下父类和子类的定义&#xff0c;根据要求填写代码 2、简单加法计算器的实现 3、House类 4、矩形类 5、创建一个Box类&#xff0c;求其体积 四、函数题 6-1 求圆面积自定义异常类 6-2 判断一个数列是…

基于某业务单登陆场景并发测试实战

文章目录1 测试目的2 测试目标和测试对象3 名词解释4 测试说明5 测试环境和工具5.1 测试工具5.2 测试环境5.3 人力计划6 测试用例6.1 方案设计6.2 接口地址6.3 接口参数6.3.1 header参数6.3.2 请求参数7 脚本设计8 监控数据8.1 虚拟用户并发情况8.2 事务响应时间8.3 每秒点击次…

IP定位的具体网络应用

IP定位的原理是利用访问终端的注册信息和时延信息来估算现实中的地理位置&#xff0c;结合先进的定位算法服务&#xff0c;最高精确度能达到街道级&#xff0c;深受用户的喜爱。IP定位接口是一种通过IP地址来确定设备或用户位置的技术&#xff0c;主要应用于以下几个方面&#…

Windows平台上达梦数据库的ODBC安装与配置

文章目录概述安装包准备安装ODBC驱动配置ODBC数据源概述 最近很多公司都在响应信创&#xff0c;需要切换到国产数据库&#xff0c;然而很多数据库的一些基础组件的使用都没有一个很明确的官方文档。为了避免更多的人踩坑&#xff0c;本人将踩过的坑总结成博文&#xff0c;分享…

【正点原子FPGA连载】第十四章SD卡读写TXT文本实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十四章SD卡读写…

网络小白入门之路--锐捷RGOS日常管理

锐捷作为网络界的一名重要成员&#xff0c;其设备的管理系统RGOS也是我们要学习的重要一环&#xff0c;那么今天我们就一起看下锐捷RGOS的日常管理。 锐捷设备日常登录方式&#xff1a; 本地登陆&#xff1a; Console登陆&#xff1a;全新或配置清空的设备&#xff0c;需要使…

TeX文件和md文件的转换

1 tex文件转换为md文件 1.1 安装 pandoc 首先安装 pandoc 到你的电脑 pandoc 1.2 命令行 可以在vscode终端输出入以下命令&#xff0c;命令运行路径为tex文件所在 cd tex文件所属的目录 pandoc -s tex文件名.tex -o md的文件名.md1.3预览 发现最后md文件只有一部分转化成…