深入理解大语言模型(5)-关于token

到目前为止对 LLM 的描述中,我们将其描述为一次预测一个单词,但实际上还有一个更重要的技术细

节。即 LLM 实际上并不是重复预测下一个单词,而是重复预测下一个 token 。对于一个句子,语言模型会

先使用分词器将其拆分为一个个 token ,而不是原始的单词。对于生僻词,可能会拆分为多个 token 。

这样可以大幅降低字典规模,提高模型训练和推断的效率。例如,对于 "Learning new things is fun!" 这

句话,每个单词都被转换为一个 token ,而对于较少使用的单词,如 "Prompting as powerful

developer tool",单词 "prompting" 会被拆分为三个 token,即"prom"、"pt"和"ing"。

json 复制代码
# 为了更好展示效果,这里就没有翻译成中文的 Prompt
# 注意这里的字母翻转出现了错误,吴恩达老师正是通过这个例子来解释 token 的计算方式
response = get_completion("Take the letters in lollipop \
and reverse them")
print(response)

The reversed letters of "lollipop" are "pillipol".

但是,"lollipop" 反过来应该是 "popillol"。

但 分词方式也会对语言模型的理解能力产生影响 。当您要求 ChatGPT 颠倒 "lollipop" 的字母时,由于分词器

(tokenizer) 将 "lollipop" 分解为三个 token,即 "l"、"oll"、"ipop",因此 ChatGPT 难以正确输出字

母的顺序。这时可以通过在字母间添加分隔,让每个字母成为一个token,以帮助模型准确理解词中的字

母顺序。

json 复制代码
response = get_completion("""Take the letters in \
l-o-l-l-i-p-o-p and reverse them""")
print(response)

p-o-p-i-l-l-o-l

因此,语言模型以 token 而非原词为单位进行建模,这一关键细节对分词器的选择及处理会产生重大影

响。开发者需要注意分词方式对语言理解的影响,以发挥语言模型最大潜力。

❗❗❗ 对于英文输入,一个 token 一般对应 4 个字符或者四分之三个单词;对于中文输入,一个

token 一般对应一个或半个词。不同模型有不同的 token 限制,需要注意的是,这里的 token 限制是输

入的 Prompt 和输出的 completion 的 token 数之和,因此输入的 Prompt 越长,能输出的

completion 的上限就越低。截至2023年,ChatGPT3.5-turbo 的 token 上限是 4096。

相关推荐
不爱土豆唯爱马铃薯1 天前
MC-026 | 实战·用MonkeyCode开发论文辅助工具
人工智能
程序员cxuan1 天前
姚顺雨这次访谈,腾讯终于把 AI 下半场讲明白了
人工智能·后端·程序员
甲维斯1 天前
Claude Code中文界面版更一波!又改了5000+行!
人工智能·ai编程
腾讯云开发者1 天前
从前沿洞见到落地实践:腾讯云TVP布道澳门,燃动AI Agent新思潮
人工智能
雪隐1 天前
个人电脑玩AI-02让5060 Ti给你打工——Whisper语音识别篇(下)
人工智能·后端
HIT_Weston1 天前
110、【Agent】【OpenCode】todowrite 工具提示词(示例)(四)
人工智能·agent·opencode
ECT-OS-JiuHuaShan1 天前
什么是对和错?——“有针对性定义域的逻辑值的真伪”:认识论终极追问的公理化裁决
数据库·人工智能·算法·机器学习·数学建模
澹锦汐1 天前
从 0 到 1 构建 AI 创意工具:独立开发者的 LLM 应用实战
人工智能
道友可好1 天前
Superpowers vs OpenSpec vs Spec Kit:该选哪个?
前端·人工智能·后端