13 Apr

理解大模型中的token概念

13:04

嗯好,现在啊来讲一下一个词吧,叫token,也就是大模型里面的。这个中文翻译呢,其实没有一个很好的翻译,不过你可以把它理解为一个叫做词源的一个东西。然后,我们现在就是需要理解一下这个token它到底是什么。然后简要来说,它并不是就是一个字或者是一个词语,它呃,它也不是字母或者是一个英文字词。它有一个,它使用各种不同的算法来将一个文本切成嗯一个基本的单位,也就是切成一个碎片。然后这个可以用来表达嗯,就是让大模型来理解和了解你说的知识和一些文字。

然后可以举个例子,比如说今天天气不错。然后呃,如果我们人脑来看的话,可能会这样切成今天,然后天气不错。就是你会把今天当做一个词语,然后天气不错当做另一个呃类似的块,或者说你也可以叫做词。然后这样呢,可以节省一些你的劳力劳动,比如你如果将今天天气不错拆分为今天天气不错,这样来的话,你就会对理解上来说更为复杂。

然后人工智能也就是AI是怎么做的呢?它就是大模型收到了一串你的提示词,然后它不会就是整段整段的处理,或者一句一句的处理。它就是先交给一个叫tokenizer的分词器,这个工具,这个工具是什么呢?就是一把切刀,用来将大量的文本切割成一个一块块大小不一的块,也就是一个token。然后切割的过程中呢,呃,token可能会是一个字或者一个词,也可能是一些完整的几个词组。

然后比如你如果要切learning的话,那么有可能被切分为learn和ing。然后一个标点符号也可以是字成一个token。然后你可能会考虑到呃,为什么不以单词呃,一个词语作为单位,或者用汉字或者说字母来来呃思考。你如果将一个词语拆分成一个一个的单词,大模型并不能很好地理解这个呃句子的最终含义。

然后呢,呃,比如英文的话,它的词汇量是很多很多的。然后如果你需要切分为词汇,就是一个词一个词的话,它需要维护一张极大的词汇表。而这个词汇表是什么?词汇表就相当于你把这一个词对应的一个数字,然后下一个词又对应另一个数字,这些数字之间是不同的。但是由于呃字或者词的数量太多了,所以它会导致这个呃单词表越来越庞大。

然后呃,如果维护这样一张极其庞大的这个词汇表,它可能会让模型的处理性能大打折扣。然后再就是如果你添加了一个,你如果造一个新词,比如那些热中文的热梗也好,然后这些让就是在不在词汇表中的词都可能会让大模型就是产生一些问题。所以token这个东西就是在啊词语和字符之间维护形成的一个平衡点。

然后这个tokenizer也就是分词器,就是分析啊互联网上的很多很多资源,比如书籍,然后文章等东西。然后他统计的是这个字符或者字符组合,也就是说词或者是呃一个呃中文理解来说可以说是成语这种东西,就是哪个经常出现。然后如果他发现了,比如程序员这三个词是比较这三个字是总是经常出现的,他就可以可能倾向于将程序员这三个字打包成一个token,然后为其赋予一个独特的编号。

然后如果你读的文章里面程序和员是分开的,程序这两个字如果是一起的话,他可能会把程序这个编为一个token,然后员编成一个token,然后他们就会有一个独特的数字编号,然后存到的这个词汇表里面。呃,然后由于各个模型的tokenizer他不一样,然后他输入的语量也不一样,所以他针对的这个每个词汇的呃切分也会不同,所以呃,你同一句话在不同的模型里面使用他的输入的token是不同的。

呃,然后再来讲一讲分词器他的一些算法吧。然后有个基础的就叫bipel encoding,也就是bpe字节对编码,然后算法,呃,他最初就是将单个字符放入词汇表,然后迭代的组合频率高的相邻字符对或者是字节,然后到了他预设词汇表的大小,也就是说呃,就是模型的开发者,他会设置一个固定的词汇表大小,然后他会将呃出现频率最高的依次排列,然后形成一个呃符合预期的词汇表。

然后再就是呃,wordprice算法,就是他比这种pbpe,也就是说按照最高频率选择组合对象的一个算法更为精巧。他就是说他不是简单的选择频率最高的那一对,然后就是选择能最大化训练数据呃相似度的符号对,也就是说能让模型认为这段文本出现的可能性最大的这一对。然后还有比如sentence piece和on graph这些模型的算法,但是我不是很啊了解,所以我现在就不是很讲。

然后在模型得到了这些token后,了解一下他到底是如何处理的,就是在每个token,每个token不仅仅是一个符号或者数字,他会映射到一个呃高维向量的空间,也就是说我的inbody,就是inbody是嵌入吗?然后呃,比如GPT-3这种呃模型中他的那个向量可能会有12,288个维度,然后这些维度呢就是高维向量所表示的,他可以通过某种方式编码token的语义信息。

然后就是你可以把它想,如果考虑一个三维的空间坐标的话,呃,一个token是在三维空间坐标的一个点,然后呃,含义相似的他的空间位置可能会是相近的。然后呃,这个由于大模型的那个向量维度很高,所以我们无法通过人脑去很好的想象。就比如说你如果计算男人和女人这两个词之间的向量差,你会得到一个向量,然后这个向量呢是在某呃,应该说是呃,在某种程度上代表着男性特质的方向。

因为你是呃,从男捡到就是男人的那个坐标点,捡到女人这个坐标点,如果你取那个国王的呃方向向量,你会更偏向于那个男人这个方向的向量。然后呃,模型在训练的过程中会自发的使用空间的某些特定编码,也就是说空间结构来编码性别这一特征。

然后token的数量与模型的能力边界也有直接关系,就是呃,模型的上下文窗口,英文呢,英文表示是context window,它可以一次处理的最大文本长度。这个长度不是说单个的字或者词,也就是说为什么你输入了比如十个字,它返回的token数量是不同的。然后这个就是用token的数量来形容的,然GPT-3的早期版本好像是2048个token,也就是说它在预测下一个词最多能回复2048个这个长度。

然后如果超过这个长度,它就可能会被遗忘,也就是说这也是为什么我们需要一个很长的上下文窗口。现在已经有从2048个token扩展为128k token,还有这种100k的token。然后上下文的窗口越大,就是模型能记住更多的内容,然后它也可以更好地处理长文档、复杂推理和多轮对话。这也是为什么模型的token上下文窗口的数量越高也就越好。

但是有一个情况就是处理的token数量越多,需要的计算量越大,然后模型的训练和运行成本也就会很高。也就是说这也是为什么大家就是各个模型提供商都是以token来衡量的。然后最后来谈一谈token的局限性,就是由于token是基于统计学的,所以它会取到一部分覆盖比较广的那些词语或者是分出来的结果,但是它对一些很罕见的词语或者用法,它会很难去理解,因为它的数据里面包括的很少。

然后token有些分割会破坏,就是分割出可能破坏某些语言的那些结构或者是语义单元。因为一个文本在它的理解中,它可能有些东西是有相互影响的,然后这会如果切分开来,它会影响这些特定语言之间的细微理解差别。然后总的来说,就是token是大模型的基本组成,它就是文本被拆解或者一种碎片,然后它是用于让模型理解和生成语言的一个基石。

然后它承载的是它衡量了模型的能力,然后也是模型内部信息的一些载体。好,就讲到这。

© 2025 lee