摘要:平时用ChatGPT问“周末去哪玩”,你以为它直接看懂了这句话?其实不是,它看到的是拆成好几段的“Token”,比如['周末','去','哪玩','?']。
平时用ChatGPT问“周末去哪玩”,你以为它直接看懂了这句话?其实不是,它看到的是拆成好几段的“Token”,比如['周末','去','哪玩','?']。
说实话,我以前也以为大模型跟人一样读单词,后来查了才知道,Token才是它认识世界的“基本积木”,没搞懂这个,你用AI都只能算“皮毛”。
Token不是咱们认知里的“完整单词”,它能是单个字、半个词,甚至是标点符号。
就像“我超爱机器学习!”这句话,有的模型会拆成["我","超爱","机器","学习","!"],有的却会拆成["我","超","爱","机器","learn","ing","!"]。
本来想这拆分是不是太随意了,后来发现不是,这么拆是为了让模型用有限的“词库”覆盖更多语言。
你想啊,大模型的词库撑死也就10来万个Token,要是每个词都单独占一个位置,英语、中文、日语加起来哪够?把“特别棒”拆成“特别”“棒”,下次遇到“特别好”就能直接用“特别”这个Token,多省事儿。
之前我碰到个专业词“生物催化剂”,本来以为模型没见过会懵,结果它居然能解释明白。
后来才知道,分词器把这个词拆成了“生物”“催化剂”,这两个子词模型都认识,拼起来就懂了。
这招对付生僻词是真管用,比如“纳米机器人”拆成“纳米”“机器人”,哪怕模型第一次见,也能靠子词猜个大概。
不光是处理新词,分词还能提高效率。
同样一段100字的内容,好的分词能少用十几个Token,计算起来更快,成本也更低。
我之前用GPT写文案,同样的内容,调整了句子结构让分词更紧凑,最后算下来API费用比上次少了近一半。
不过也有坑,比如表情符号,我以为“��”就一个Token,结果后台显示占了3个,那次超了上下文窗口还纳闷,后来才发现是表情搞的鬼。
大模型处理Token的步骤也挺有意思,不是直接读,而是先给每个Token发个“身份证号”,也就是TokenID。
比如“Hello”对应15496,“世界”对应20503,每个Token都有唯一的号。
本来想这数字有啥用,后来才知道,神经网络只认数字,不认文字符号,所以还得把这些ID转成高维向量。
就像“猫”会变成一串[0.32,-0.51,0.68...]的数,而且“猫”和“狗”的向量特别近,“猫”和“汽车”的向量就远,这就是模型能“理解”语义关联的关键。
大模型一次能处理的Token数量是有限的,这就是“上下文窗口”。
以前用GPT-2写长邮件,超过1024个Token就报错,无奈之下只能拆成两段发,中间还得提醒模型“前面说到哪了”。
现在好多了,Gemini2.5Pro能处理100万+Token,整本《小王子》扔进去都能分析,这进步可不是一点半点。
不过Token也会让模型犯“低级错”,最经典的就是“3.11和3.9哪个大”。
我第一次看到模型答“3.9大”还笑它笨,后来才知道,它把“3.11”拆成了“3”“.”“11”,把“3.9”拆成“3”“.”“9”,它不是在算数字,是在拼这些符号在训练数据里出现的频率,很显然这时候光靠模型自己不行,得让它调用计算器工具才行。
搞懂Token之后,用AI的思路都变了。
现在写提示词会刻意避免长句拆分,比如把“请分析2025年Q3销售数据并生成报告”拆成短句,既不让语义割裂,也能省点Token。
估算API成本也更准了,1000字的中文大概1500个Token,用GPT-4的话也就几毛钱,不会像以前那样瞎花钱。
其实大模型没那么“神”,它就是个跟Token打交道的“打工人”,接收Token、处理Token、生成Token。
理解了Token,你就知道它为啥厉害,也知道它为啥会犯错。
以后再用AI的时候,你可能会跟我一样,看到输入框里的文字,不自觉就想“这话会被拆成哪些Token呢”,这种“看透底层”的感觉,还挺有意思的。
来源:乐娱侃事