关键词:大语言模型
,分词
,BPE
,BBPE
前言
token是大模型处理和生成语言文本的基本单位,在之前介绍的Bert和GPT-2中,都是简单地将中文文本切分为单个汉字字符作为token,而目前LLaMA
,ChatGLM
等大模型采用的是基于分词工具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进行模型下载