大模型系列:大模型tokenizer分词编码算法BPE理论简述和实践

关键词:大语言模型分词BPEBBPE

前言

token是大模型处理和生成语言文本的基本单位,在之前介绍的Bert和GPT-2中,都是简单地将中文文本切分为单个汉字字符作为token,而目前LLaMAChatGLM等大模型采用的是基于分词工具sentencepiece实现的BBPE(Byte-level BPE)分词编码算法,本节介绍BBPE分词编码作为大模型系列的开篇。


内容摘要
  • 常用分词算法简述
  • 以中文LLaMA(Atom)为例快速开始BBPE
  • Byte-Pair Encoding (BPE) 原理简述
  • Byte-level BPE(BBPE)原理简述
  • 使用sentencepiece训练BPE,BBPE

常用分词算法简述

分词编码指的是将自然语言切割为最小的语义单元token,并且将token转化为数值id供给计算机进行模型学习的过程。常用的分词算法根据切分文本的颗粒度大小分为word,char,subword三类,以英文文本I am disappointed in you为例,三种方法切分结果如下

颗粒度 切割方式 分词结果
word 单词级别分词,英文天然可以根据空格分割出单词 [I, am, disappointed, in, you]
character 字符级别分词,以单个字符作为最小颗粒度 [I, , a, m, , d, i, s, ..., y, o, u]
subword 介于word和character之间,将word拆分为子串 [I, am, disappoint, ed, in, you]

word方式的优点是保留住了完整的单词作为有意义的整体,相比于character语义表达更加充分,但是缺点是导致词表变大,因为罗列出单词的所有组合明显比穷举出所有字符更加困难,并且对于极少出现单词组合容易训练不充分,另外的word虽然区分出了单词,但是对于单词之间语义关系无法进一步刻画,比如英文中的cat和cats这种单复数情况。
character方法的优势在于词表小,5000多个中文常用字基本能组合出所有文本序列,但是缺点也很明显,缺乏单词的语义信息,并且分词的结果较长,增加了文本表征的成本。
subword方法平衡以上两种方法, 它可以较好的平衡词表大小和语义表达能力,本篇介绍的Byte-Pair Encoding (BPE) 和Byte-level BPE(BBPE)都属于subword方法。


以中文LLaMA(Atom)为例快速开始BBPE

Atom是基于LLaMA架构在中文文本上进行训练得到的语言模型,它对中文采用BBPE分词,整个词表包含65000个token,在HuggingFace搜索Atom-7B进行模型下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武昌库里写JAVA

您的鼓励将是我前进的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值