今天罗孚对 ChatGPT 中的 token 不是很理解,于是,就有了下述的学习。

API 的 token#

token,常规的理解:令牌。一般用于 API。比如说:你要拿到 token,你才能访问 API。

关于 API 的 token,ChatGPT 也给了解释:

在计算机科学和软件开发领域,术语 “token” 可以有不同的含义,具体取决于上下文。我猜测你提到的 “API 的 token” 可能是指在 API 访问控制中使用的身份验证令牌。
在 API(Application Programming Interface,应用程序编程接口)的上下文中,API token 是一种用于身份验证和授权的机制。当你使用一个需要身份验证的 API 进行访问时,通常需要提供一个特定的 token 来证明你的身份。
API token 是一个字符串,通常由服务器生成并与特定用户或应用程序相关联。这个 token 可以是长字符串的形式,类似于密码,用于验证 API 请求的合法性。在使用 API 时,你需要在请求中包含这个 token,以便服务器可以识别和验证你的身份,并根据你的权限来授权你对 API 的访问。
通过使用 API token,API 提供商可以更好地控制对其服务和数据的访问权限,同时也提供了一种相对安全的方式来验证用户或应用程序的身份。
需要注意的是,API token 的具体实现方式和使用方法可能因不同的 API 提供商而有所不同。某些 API 提供商可能使用其他术语,如 API 密钥(API Key)或访问令牌(Access Token),但它们的基本概念和功能是相似的。

人工智能领域的 token#

但是,在自然语言处理(NLP)和机器学习领域中的 “token”,不是同一个概念。

在阅读“陆奇最新演讲实录:我的大模型世界观”一文时,陆奇博士就讲到了 token,罗孚不是很理解:

Token 很重要。全世界可能有 40-50 个确定的 token,就是语言的 token 和模态,现在有更多的 token 化。当然现在更多的模型的参数小型化、本地化,任务领域的专业知识可以融入这些大模型当中。它的可操纵性主要是靠提示和调试,尤其是根据指令来调,或者对齐来调试,或者 in-context learning(上下文学习),这个已经贯彻比较清晰了。它的可操作性是越来越强。可拓展性基本上也足够。

于是,将上述内容复制到 ChatGPT,问问 ChatGPT 这段话中的 token 怎么理解。回复如下:

在这段话中,“token” 的意思并非指代 API 访问控制中的身份验证令牌,而是指自然语言处理(NLP)和机器学习领域中的 “token”。
在自然语言处理和机器学习中,“token” 是指文本中的最小单位或基本元素。通常,文本会被分割成一个个的 token,可以是单词、字符、子词(subword)或其他形式的单位,以便进行进一步的处理和分析。
在这段话中,提到了语言的 token 和模态,意味着语言的不同层面和表现形式,如单词、短语、句子等可以被视为不同的 token。
此外,还提到了越来越多的 token 化,这意味着在处理自然语言数据时,更多的细节和语义可以通过将文本分割成更小的 token 来捕捉和表达。
在上下文学习和指令调试方面,使用 token 来引导和操纵大型语言模型的行为。通过提供提示(prompts)或指令,可以控制模型的生成结果,使其更符合预期的输出。
总而言之,这段话中的 “token” 指代了自然语言处理和机器学习中的文本基本单位,用于表示和操作语言数据的最小元素。

这段话中的关键:“token” 是指文本中的最小单位或基本元素。也就是说,token 可以翻译成符号了,这里的符号指的是:字、单词甚至标点符号。按这个的解释,获取 token 的过程,可以理解为分词。当然,分词可能仅仅是一个动作。

这段话中也提到了:用 token 引导和操作模型的行为,通过提示(prompts)或指令控制生成结果,以符合输出预期。也就是说:以后确实会有提示引导工程师这样的岗位,说白了,就是要学会提问,这个输入的提问,可以分解出有效的 token,最终引导模型输出意向的结果。

后来又问了问 ChatGPT 它的 token 量,不过似乎问的不太对,得到的回答也不算准确,但有一个有用的信息:

GPT-3 模型是当前公开的最大规模的语言模型之一,拥有 1750 亿个参数和 2048 个位置编码(position embeddings),可以处理超过 1.75 万亿个 token 的输入序列。

这讲述的是 GPT-3 模型的能力,参数等信息是让人惊叹的,处理能力也是让人感叹的:1.75 万亿个 token 的输入序列。

好了,又来新名词了:token 的输入序列。这个又怎么理解呢?继续问 ChatGPT 吧,回答:

“token 的输入序列"是指将文本或语言数据分割成一个个的 token,并按照一定的顺序组成的序列。
在自然语言处理和机器学习任务中,文本通常被转换成 token 序列作为模型的输入。一个 token 可以是一个单词、一个字符、一个子词或其他形式的文本单位,具体取决于分词或标记化的方式。
例如,考虑以下句子:“I love cats.” 如果我们将其分割成单词级的 token,那么这个句子的 token 序列可能是 [“I”, “love”, “cats”, “."]。每个 token 都代表了原始句子中的一个词或标点符号。
在输入序列中,token 的顺序非常重要,因为它们传达了文本的语法和语义信息。模型会按照这个序列的顺序逐个处理 token,以理解和生成相应的语言表示。
对于很大的输入序列,如超过模型限制的长度,通常需要进行截断或其他处理方法来使其适应模型的输入要求。
总而言之,“token 的输入序列"指的是将文本切分成一个个 token,并按照一定顺序组成的序列,用作模型的输入数据。这样的输入序列可以帮助模型理解和处理文本的语法和语义信息。

这个回答非常明确,实际就是你输入的内容,被分割了,然后还进行了顺序排列,并且给的例子也非常的通俗易懂。

另外也讲到了不能输入很大的序列,做了长度限制等,这也就是我们 GPT3.5 和 GPT4 对比介绍中提到的:GPT4 可接收的文字输入长度达到了惊人的 32000 字,而 GPT3.5,只能输入 3000 字。当然,长度的限制主要原因可能在于:计算资源、内存限制、训练效果等。

在这里举个不恰当的例子:看到儿子做作业磨磨唧唧,然后作为老父亲的我,巴拉巴拉对着儿子说了一大堆,大的宏观的长远的近期的等等等,可能说了 3 万字,但实际对儿子的大脑呢,将这 3 万字分解成一个一个的 token,假设能有 1.5 万 token,然后将 token 放进大脑的网络中,网络层层过滤,最后发现,有效 token 就 3 个:“赶紧”“做”“作业”。呃,好吧,这就是罗孚对 token 输入序列的理解,以及个人认为的我们输入内容到 ChatGPT 给出结果的过程分解。

token 顺序对结果影响的测试#

通过上述的分析理解,token 的顺序对结果的影响会比较大,这也是以后提示工程师岗位能力高下的重要区别,也许以后还会有提示词、提示说法判定标准等一系列的教程或评价体系。基于这个说法,罗孚又去考验了一下 ChatGPT:周星驰说“给个理由先”,和我说“请先给个理由?”,这两种说法的相同点和区别是什么?

回复如下:

这两种说法在表达的意图上有相同点,即请求对方提供一个理由或解释。它们都表达了一种期待对方先给出理由的态度,以便更好地理解对方的立场或决策。
相同点:
1. 请求理由:无论是"给个理由先"还是"请先给个理由”,都明确表达了希望对方先提供一个解释或理由的请求。
2. 理解对方:两种说法都强调了需要对方解释行为、决策或观点的动机,以促进更好的理解和沟通。
区别:
1. 语气和礼貌程度:“请先给个理由"更加客气和正式,给予对方更多的尊重和礼貌,而"给个理由先"则更加口语化和直接,可能显得更直率和不客气。
2. 使用场合:“请先给个理由"适用于正式场合、与上级、长辈或陌生人交流时,体现了一种更为谦虚和恳切的口吻;“给个理由先"适用于日常对话、熟悉的、亲密的交流环境。
总的来说,这两种说法的相同点是表达了请求对方给出理由的意图,区别主要在于语气和礼貌程度,以及使用场合的不同。选择使用哪种说法应根据具体的交流环境和对对方关系的了解来决定。

可能提问不算高级,ChatGPT 给出的回复还是很满意的。

各模型对歧义句理解的测试#

那就继续上歧义句:你知道“咬死了猎人的狗”这句话说的是什么吗?

ChatGPT 的回答:

非常抱歉,我之前给出的解释可能有误导性。“咬死了猎人的狗"这句话并不是一个常见的俗语或成语,也没有一个固定的官方解释。
根据一些常见的解释,这句话可能是指某个情况出现了逆转或反常的结果,即原本应该是猎人掌握主动权并对狗进行控制,但却反过来被狗所咬。这个比喻可以用来形容一些出人意料的事情发生或某个原本强势的一方被弱势的一方反击。
然而,这个短语的具体含义和背景可能会因地域、文化背景或口头传统而有所不同。所以,如果有人使用了这个短语,最好向他们询问具体的含义和背景,以便更好地理解他们的意图和表达。

文心一言的回答:

“咬死了猎人的狗”这句话通常有多种解释,但具体含义取决于说话者的背景和上下文。以下是几种可能的解释:
1. 字面意思:这句话可以理解为“一只狗咬死了猎人的猎狗”。这种情况在现实生活中是有可能发生的,但相对来说比较罕见。
1. 引申义:这句话可以引申为“因为某个原因而遭受了某种不幸或惩罚,而这个原因可以追溯到很久以前的一个事件或行动”。这种解释通常与成语“因果报应”有关。
2. 俗语意义:这句话还可以理解为“遭受不幸或惩罚,是由于自己过去的行为或行动所导致的”。这种解释通常与俗语“自作自受”有关联。
总之,这句话的含义取决于具体的上下文和对话者之间的关系。如果你能提供更多的背景信息,我可以为你做出更准确的解释。

通义千问的回答:

“咬死了猎人的狗”通常是指一只狗在遭遇危险或受到威胁时,采取了攻击行为并导致了猎人的死亡。这句话表达的是一种非常暴力和危险的行为,通常不是狗本意所为。在这种情况下,狗的行为是不可取的,并可能会对狗和人类造成严重的伤害和后果。

讯飞星火的回答:

这句话是一种比喻,通常用来形容一个人或组织因自己的行为而遭受到不幸或失败。具体来说,这个比喻源于猎人的狗被误杀了的故事,因为狗是猎人的伙伴和助手,所以人们会感到非常难过和愤怒。因此,“咬死了猎人的狗”意味着某个人或组织的行为导致了类似的悲剧,就像狗被误杀一样。

一个不确定的问题,得到了一个不确定的回答,也算能理解,于是罗孚继续补了一句:其实这是一个歧义句,请将这句话中的歧义分析出来。

ChatGPT 的回答:

非常抱歉之前的回答有误导性。确实,“咬死了猎人的狗"这句话存在歧义,可以根据语境解读为以下两种不同的意思:
1. 解读一:狗咬死了猎人。
这种解读下,狗是主动的一方,咬死了原本应该捕捉它的猎人。这是一种出乎意料的情况,狗取得了胜利或反击成功,弱者战胜了强者。
2. 解读二:猎人咬死了狗。
在这种解读下,猎人作为强势的一方,成功地咬死了狗。这种情况可能更符合常理和预期,猎人顺利完成了任务。
由于缺乏具体的上下文和背景信息,无法确定说话者的真实意图和具体的解读。因此,当听到这句话时,最好向对方进一步了解其具体意图,以便正确理解并避免歧义的产生。

文心一言的回答:

确实,这句话存在一定的歧义。以下是可能的歧义解析:
1. 狗咬死了猎人的狗:这个解释指的是狗与猎人的狗之间的争斗,导致猎人的狗死亡。这里歧义在于狗和猎人的狗可以理解为不同主体,一个是猎人的狗,另一个是咬死猎人狗的狗。
2. 狗咬死了猎人:这个解释指的是狗攻击了猎人,导致猎人死亡。这里的歧义在于,狗和猎人之间的攻击关系与通常理解的不同,狗成为了主动攻击者,而猎人则是被动承受者。
总之,这个歧义句的解析取决于对句子信息的理解和接受方式,需要结合上下文和背景知识来消除歧义。

通义千问的回答:

这句话存在一定的歧义,因为它可以理解为两种不同的含义。第一种含义是指一只狗在主人或其他人类的威胁下,为了自卫或保护主人而攻击了猎人,并导致了猎人的死亡。在这种情况下,狗的行为是出于自卫目的,而且是可以理解和接受的。
另一种含义是指一只狗在没有任何威胁或挑衅的情况下,自己突然发动攻击,并导致了猎人的死亡。在这种情况下,狗的行为可能被认为是无端的、不可预测的,并可能会对人类和狗类造成严重的伤害和后果。
无论是哪种含义,这句话都表达了一种非常暴力和危险的行为,因此在使用时需要特别小心,以免引起不必要的误解和混淆。

讯飞星火的回答:

好的,这句话中的歧义主要在于“咬死了猎人的狗”这个短语的解释。
1. 如果将“咬死了猎人的狗”解释为一个动作,那么它的主语应该是某个人或动物,因为狗通常是不会主动攻击人的。但是,如果将其解释为一个状态,那么它的主语就变成了“猎人的狗”,也就是说,狗已经死亡了。
2. 另外,这句话中还存在一个隐含的意思,即“咬死了猎人的狗”的人或组织是有意为之的。如果将这个意思理解为对某个人或组织的指责或批评,那么这句话就是一句谴责的话;但如果将其理解为一种比喻,那么这句话就可以被理解为一种自嘲或幽默的表达。

呃,在明确意图后,各方给出了不一样的结果,结果也是出乎意料,孰优孰劣,就让各位看官来评判吧。

结语#

通过向 ChatGPT 学习,罗孚基本理解了人工智能领域的 token 一词的意思,也认识到 token 顺序的重要性,而提示词、指令对结果影响较大,如何更好的提问将会成为我们未来的一个技能,而提示工程师(Prompt Engineer)职位将不再是想象,将会成为真实的岗位。如何使用提示词,将是罗孚下一次学习的内容了。欢迎交流。