优雅谈论大模型4:初识Token

Token

在继续前行之前,需要先停下来澄清下Token这个词,以及如何将原始的语料转化为Token,在细究背后的原理之后会更加优雅的理解大模型。任何的资讯都可以生成语料,而这些语料需要被机器理解以及供后续的模型训练,那么最常见的做法是将一段文字先切片,然后一一对应的转化为数字或者向量输入模型。通常而言有三种类型的分词法:基于单词、字符以及子词的分词法。单词和字符这里就不解释,字词法运用得最为广泛,也是最为主流。字词分词法包含了BPE、WordPiece、Unigram等。GPT等主流大模型也是采用BPE的分词法。

先从个列子开始以GPT-3.5为例,输入“I must read lubanmochui, it's professional.”,下图则表明整句话一共43个字符,按照不同的颜色块被切分成13份(Token)。而且每个Token都有与之对应的id。然后输入中文的时候,发现24个字符却被切成了30个Token。

按照常识,中文不是应该一个字一个Token。因为这里举的例子是GPT,一个多语言模型,它覆盖了国际很多种语言。但是它并没有特殊的针对中文做适配,因此它采用了一种办法,将中文转为unicode,然后在按照英文的体系去切分,所以会看到有些切块是“?”的字符。其实这样一来,整体效率降低了,而且代价巨大,毕竟收费是基于Token数。

分词方法

BPE、WordPiece、SentencePiece等方法的技术专业性的详细拆解后续可以参见《大模型背后的基础模型》这个专栏。

各种分词法对比,各种分词法都是基于大的词汇库然后按照特定的算法进行学习切分。BPE是贪婪而且是确定的,SentencePiece是可以针对同一个字符串进行反复的抽样。

BPE(Byte Pair Encoding)自于论文《Neural Machine Translation of Rare Words with Subword Units》。它是一种基于频率的分词方法,它从一个完整的词汇表开始,迭代地合并出现频率最高的字符对,直到预定的词汇表规模。例如:“I love lubanmochui.” 使用BPE分词法,首先将每个单词分割成字符,然后合并最常见的字符对。也许“love”会变成“lo”和“ve”,因为“lo”和“ve”在整个语料库中频繁出现。英语中“un”、“est”、“less”也经常被单独提炼出来。

WordPiece来至论文《Japanese and korean voice search》,和BPE一样在合并字符时除了考虑出现的频率,还考虑了合并后的token对整体语言模型的贡献,某种意义是基于概率的分词法。毕竟有些名词,例如针对蔬菜名合并和切分的意义不大,保留词汇的原始意义是最优的选择。

SentencePiece来至论文《Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates》。它是谷歌推出的子词开源工具包,其中集成了BPE、ULM子词算法。除此之外,SentencePiece还能支持字符和词级别的分词。为了能够处理多语言问题,SentencePiece将句子视为Unicode编码序列,从而子词算法不用依赖于语言的表示。

HuggingFace Tokenizer

HuggingFace(重量级的大模型社区)的介绍会放在后续,这里主要介绍下HuggingFace提供的Tokenizer的库。在HuggingFace里面它对于输入文本的处理流程(黄色部分)如下图所示,粉色则为处理的输出结果。

注意:

GPT, GPT-2, RoBERTa, BART, DeBERTa 等模型使用了 BPE,其中 GPT-2 使用了 byte-level BPE 。

BERT,DistilBERT,MobileBERT,Funnel Transformers,MPNET等模型使用了WordPiece。Hugging Face中的实现是基于已发表文献的模拟。

AlBERT,T5,mBART,Big Bird,XLNet等模型使用了 Unigram。

  1. Normalization:标准化步骤,包括一些常规清理,例如删除不必要的空格、小写、以及删除重音符号

  2. Pre-tokenization:tokenizer 不能单独在原始文本上进行训练。相反,我们首先需要将文本拆分为小的单元,例如单词。这就是pre-tokenization 步骤。基于单词的tokenizer可以简单地基于空白和标点符号将原始文本拆分为单词。这些词将是tokenizer在训练期间可以学习的子词边界

  3. Model:执行tokenization从而生成token序列

  4. Postprocessor:针对具体任务插入special token,以及生成attention mask和token-type ID

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

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

相关文章

TopOn 正式聚合Kwai 旗下程序化广告平台——Kwai Network

**我们非常高兴的宣布,TopOn SDK 近日已正式聚合Kwai Network。**作为Kwai 旗下的程序化广告平台,Kwai Network 通过优质的变现能力及产品能力,为广大开发者提供高效及时的服务。 TopOn 聚合平台与Kwai Network 正式完成接入后,开…

Pencils Protocol Season 2 收官在即,展望Season 3 及其权益

此前 Scroll 生态 LaunchPad &聚合收益平台 Pencils Protocol(原 Penpad),推出了首个资产即其生态代币 PDD 的 Launch,Season 2 活动主要是用户通过质押 ETH 代币、组件战队等方式,来获得 Point 奖励,并…

【Android踩坑】重写onClick方法时,显示Method does not override method from its supperclass

问题 重写onClick方法时,显示Method does not override method from its supperclass 解决 在类上加implements View.OnClickListener

【数据分析面试】44.分析零售客户群体(Python 集合Set的用法)

题目 假设你是一家在线零售商的数据库管理员,需要分析两类客户的数据。一个集合 purchased_customers 包含在最近一次促销活动中购买了商品的客户ID,另一个集合 newsletter_subscribers 包含订阅了新闻通讯的客户ID。编写一个函数 analyze_customers&am…

二进制搭建k8s

实验环境: k8s集群master01:192.168.1.11 k8s集群master02:192.168.1.22 master虚拟ip:192.168.1.100 k8s集群node01:192.168.1.33 k8s集群node01:192.168.1.44 nginxkeepalive01(master):192.168.1.55 nginxkeepalive02&a…

mmdetection训练(1)voc格式的数据集(自制)

mmdetection训练(1)voc格式的数据集(自制) 提前准备一、voc数据集二、修改配置代码进行训练(敲黑板!!!!!)1.数据集相关内容修改2.自定义配置文件构…

1688阿里商品详情API接口(标题|主图|SKU|价格等属性)

1688阿里商品详情API接口(标题|主图|SKU|价格等属性) 通过1688开放平台的商品详情信息API接口,开发者可以获取商品的详细信息,包括商品名称、价格、库存、描述、参数等。这些信息对于构建电商应用、比价工具或进行数据分析都是非常有用的 可以获取任意1…

详细教程!VMware Workstation Pro16 安装 + 创建 win7 虚拟机!

嚯嚯嚯,很多宝子都想拥有自己不同的操作系统环境,用于学习或项目搭建。买服务器费钱,虚拟机则成为了一个很好的选择。本文详细介绍VMware Workstation Pro 16安装及win7虚拟机创建,保姆级教程奉上! 一、准备工作 VMw…

【C++算法】堆相关经典算法题

1.最后一块石头的重量 其实就是一个模拟的过程:每次从石堆中拿出最大的元素以及次大的元素,然后将它们粉碎;如果还有剩余,就将剩余的石头继续放在原始的石堆里面重复上面的操作,直到石堆里面只剩下一个元素&#xff0c…

住宅IP vs 数据中心代理IP

IP代理种类很多,其中包括住宅代理,数据中心代理,HTTP代理等多种分类。今天我们来介绍一下住宅IP代理与数据中心代理的区别。 住宅IP含义 住宅IP是指海外互联网服务供应商分配给家庭的IP地址,是固定的IP地址,可以为用户…

Leecode热题100---11:盛最多水的容器

题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾…

Spring AI项目配置1.0.0-SNAPSHOT快照版指导

Spring AI项目配置1.0.0-SNAPSHOT快照版开发指导 说明pom文件修改 说明 请在更换Spring AI的全程中,科学上网,因为国内镜像和maven官方仓库还没有Spring AI的依赖,需要的依赖目前存放在https://repo.spring.io如果你使用的maven是自己配置&a…