随笔 - 934, 文章 - 0, 评论 - 249, 阅读 - 345万

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Transformer中的token

Posted on   蝈蝈俊  阅读(4654)  评论(0编辑  收藏  举报

提到token,不得不提tokenization(分词)。分词就是将句子、段落、文章这类型的长文本,分解为以字词(token)为单位的数据结构。

比方说,在句子 “我很开心” 中,利用中文分词得到的列表是{“我”,“很”,“开心”},列表中的每一个元素代表一个token。

不同的分词策略,会导致不同的token划分,比如ChatGPT,我们可以通过https://platform.openai.com/tokenizer这里看它的Token。

对于“ChatGPT is great!”这个字符串,就被编码为六个tokens:“Chat”、“G”、“PT”、“ is”、“ great”、“!”,如下图:

OpenAI官方给出了一个初略估算的方式:对于英文, 一个token差不多为3/4的一个单词 。

下图是官方的例子,可以看到特殊字符、一些单词都被拆成多个token了。

视觉场景Transformer的token

对于视觉场景Transformer,把每个像素看作是一个token的话并不现实,因为一张224x224的图片铺平后就有4万多个token,计算量太大了,BERT都限制了token最长只能512。

所以ViT把一张图切分成一个个16x16的patch(具体数值可以自己修改)每个patch看作是一个token,这样一共就只有(224/16)*(224/16)=196个token了。当然了,单单的切分还不够,还要做一个线性映射+位置编码等等。

如下图下面部分每个点是做上面部分图片拆分的token。

总结

token是指一个具有独立语义的最小单位,每个token都代表一个独立的单元,具有一定的语义含义,并且可以被模型处理。

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示