美文网首页
2024-03-05 Byte Pair Encoding 字节

2024-03-05 Byte Pair Encoding 字节

作者: 胜果铺子 | 来源:发表于2024-03-04 00:35 被阅读0次

概述

用ChatGPT它是按照token计费的。那么token是什么?怎么计算出来的?

ChatGPT用的token化算法是BPE。名字是叫做字节对编码。原先就有这个算法,是用来做数据压缩的。ChatGPT的算法跟原来不一样。

它的结果是建立一个从 字符串(token) 到 整数编码 的1-1映射。

encoder: pair of index -> index
decoder: index -> str

编码是一步一步两两合并。解码是1步到位。

一、建立对应表的步骤

一开始将原串转成UTF-8,那么就变成一串 [0, 256) 的整数了。

所以,我们初始的对应表是,0~255 的 ASCII 码 对应到 0~255 的整数。

接下来,相邻两个数结对,统计每个对的出现次数。注意,这些对是有重叠的,比如[1, 2, 5, 10],配对结果是[(1, 2), (2, 5), (5, 10)]。

取出现次数最多的对合并。如何合并?就是产生一个新的整数编码,记录它对应的字符串。然后把整数串里面这些对都替换掉,2个旧码换成1个新编码,这就是合并。

进行多轮。

二、解码步骤

解码非常简单。整数编码查表,直接替换成字符串,就还原了。

三、编码步骤

编码是按照对应表所确立的顺序替换。原整数串的相邻两个数成对。在对应表里面找到编号最小的,且出现在当前整数串的对,合并。然后继续。直到无法合并。合并顺序必须满足,编号小的合并都已经做完了,才能做编号大的。这样保证相同的串还是替换成相同的合并后编码。

其他

英语单词间的空格并没有特殊处理。没有先把文本切分成一个个单词再输入到BPE。

参考

github
例子形象但是代码写得一般例子

相关文章

  • byte pair encoding实现

    BPEhttps://zhuanlan.zhihu.com/p/383650769[https://zhuanla...

  • bpe原理

    byte pair encoding问题: 什么时候停止呢?使用UNK表示模型词典以外的单词,OOV表示训练集里面...

  • BPE算法详解

    Byte Pair Encoding 在NLP模型中,输入通常是一个句子,例如I went to New York...

  • BPE分词

    Byte Pair Encoding (BPE) 是一种简单的数据压缩算法,在1994年提出。后由论文Neural...

  • 字、字节等存储单位说明

    字 word字节 byte位 bit1字(1w) = 2字节(2 byte)1字节(1 byte) = 8位(8 ...

  • int与byte[]的相互转换

    1.int 转 byte[] 低字节在前(低字节序) public static byte[] toLH(int ...

  • 字节位换算

    1Byte(Byte 字节) = 8Bit 1KB (Kilobyte 千字节) = 1024Byte, 1MB ...

  • int、char、long各占多少字节数

    1 byte(字节) = 8 bit(位) Java基本类型占用的字节数: 1字节: byte , boolean...

  • 字节byte

    字节(Byte):通常将可表示常用英文字符8位二进制称为一字节。 一个英文字母(不分大小写)占一个字节的空间,一个...

  • 字节 byte

    1 byte = 8 bit 1、获取一个Byte的各个 Bit 值 /** *把byte转为字符串的bit *...

网友评论

      本文标题:2024-03-05 Byte Pair Encoding 字节

      本文链接:https://www.haomeiwen.com/subject/pselzdtx.html