在最近,有人使用生成式AI来比较9.11和9.9哪个数字更大,结果大模型们给出的答案让人大跌眼镜,许多知名的生成式AI全部答错,认为9.11比9.9大,包括Google Gemini、GPT-4o、Claude3.5等一众大模型全部答错:
<!-- Gemini在后续修复了这个问题-->
从以上的结果可以得知,大模型们在面对这个问题时,就是在一本正经地胡说八道,GPT-4o甚至给出了“1比9小,所以要比较到下一位”的荒唐结论,本文将讲解AI大模型的推理的过程与原理。
我们是怎们理解并比较9.11和9.9的大小的?
以下讲解纯个人观点,不喜勿喷
在讲大模型是怎么比较之前,先说一下我们人类是怎么比较这两个数的。
通常,比较两个数字,人类会采用逐位比较的方法,就是从最高位开始,如果相等就往下比较,就拿9.11和9.9来举例子:
-
拿到9.11和9.9两个数字,先比较它们的最高位,发现9=9,所以继续比较十分位
-
发现在十分位上,9.11中的1比9.9中的9要小,所以9.11比9.9小,比较结束。
-
#可能有差错,好久没画流程图了,本图默认数字末尾有足够的“0”
从上面的流程图可以看到,人类是将整个数字拆开比较的,出了小数点无法比较外,其它的数字均可以比较大小,从而比较出整个数字的大小,但是在大模型们面对这些数字时,它们往往不能准确地将数字拆成一个个数字。
大模型是怎么比较数字大小的
在具体说怎么去比较数字大小前,先说一下大模型们是怎么理解我们提出的问题的。
编码器 (Encoder)
Tokenization:首先,模型需要将输入文本转化为它能够理解和处理的格式。 这通常通过分词(Tokenization)完成,即将文本切分为一系列的token (词汇单元),每个token可以是单词、子词或字符。
Embedding:然后,每个token会被转化为一个密集的向量表示,这称为嵌入(Embedding)。这些向量捕捉了词汇的意义和语境,以及它们之间的关系。
Transformer架构
大多数现代LLM基于Transformer架构,该架构由自注意力机制(Self-Attention Mechanism)组成,允许模型在处理序列时关注整个输入序列的不同部分。这有助于模型理解长距离依赖和上下文。
解码器(Decoder)
在生成响应时,解码器(对于序列到序列的任务)会利用编码器的输出,结合当前的上下文来预测下一个token的概率分布。这一过程会迭代进行,直到生成完整的响应。
知识检索与融合
虽然基本的LLM通过其内部的训练数据来生成响应,但一些更高级的模型可能会结合外部知识源(如知识图谱或文档数据库),通过检索相关片段来增强其响应的准确性。
生成策略
LLM在生成回答时采用不同的策略,如贪心搜索(Greedy Search)、BeamSearch或采样(Sampling)方法。这些策略决定了模型如何从候选词汇中选择下一个token。
上下文窗口
大多数LLM具有固定的上下文窗口大小,即模型在生成响应时所能考虑的先前token数量。例如,一个有4096个token上下文窗口的模型,在生成新文本时,最多可以考虑前4096个token的信息。
后处理与优化
生成的响应可能需要进一步的后处理,比如去重、修正语法错误或调整风格。此外,一些模型还可能使用强化学习技术来优化生成文本的质量和相关性。
8.持续学习与更新
某些LLM可以通过在线学习或增量学习的方式,持续吸收新数据以更新自己的知识库,但这不是所有模型都具备的能力,尤其是那些没有实时网络访问权限的模型。
大家就可以看到,在模型对问题的元素进行切分的时候,token并不会识别词意,所以有可能会做错误的切分,这在数学领域上是致命的,举个例子:9.11和9.9,模型可能会拆分成“9”,“.“,”11“和”9“,”.“,”9“,出现错误的拆分。所以接下来就要看模型推理的语料库里的东西了。
可不幸的是,模型的训练数据来自网络,虽然大部分是对的,但是还可能搜集到一些错误的数据,比如它搜集到一个口嗨网站的数据,那么它在回答”i9 14900KS + RTX4090ti配什么电源“时,会给出”550w“的荒唐答案。
同样,大模型在回答”9.11和9.9的大小“时,就算token切对了,但是还是可能会给出错误的答案,大模型推理答案的过程就像一个幸运大转盘,只不过是不同的答案占比不同罢了,所以因为就算9.11<9.9的答案占比很小,但万一模型在推理的时候,答案的转盘转到它了,那模型给出的答案就是错误的。
如何规避这个问题
可以看到,在上图的提问中,我添加了一个提示词,就是“请写出详细步骤”,这样就能避免大模型步子迈得太大,就像我们平时手动硬算99*99时,大部分人肯定是列竖式算的比心算准一个道理。
这还有一个专业的名词叫Chain of Thought(CoT),具体定义如下:
Chain of Thought (CoT) 是一种在大模型(尤其是大型语言模型)中引导出推理能力的技术。在自然语言处理(NLP)领域,特别是对于复杂的推理任务,CoT 提供了一种结构化的方法,使模型不仅能够给出答案,而且还能展示其推理过程。这种方法对于提高模型的透明度、可解释性和可靠性至关重要。
基本原理
传统的模型提示(prompting)通常只涉及向模型提供一个问题或任务,然后模型直接生成答案。然而,这种方法在处理需要多层次推理的问题时往往表现不佳,因为它缺乏中间推理步骤的指导。CoT 引入了一种新的提示方法,鼓励模型在生成最终答案之前,先输出一系列的中间推理步骤。
例如,考虑一个简单的数学问题:“37加48等于多少?”一个没有CoT的模型可能会直接回答“85”。但是,如果采用CoT方法,模型将首先展示它的推理过程:“首先,我将7加8得到15,写下5并将1进位。然后,我将3加4加1得到8。因此,37加48等于85。”
实现方法
CoT 的实现依赖于精心设计的提示,这些提示通常包含示例问题及其对应的推理步骤和答案。这些示例作为模型的输入,帮助模型学会在生成答案前输出推理过程。例如,训练数据可能包含这样的条目:
输入:“37 + 48 = ?” 示例:
“3 + 5 = 8,7 + 8 = 15,因此 37 + 48 = 85。”
“先加个位数得到15,再加十位数得到8,因此 37 + 48 = 85。”
模型通过学习这些示例,逐渐掌握了在生成答案前输出推理步骤的能力。
应用与优势
CoT 不仅提高了模型在推理任务上的性能,还增加了模型输出的透明度和可解释性,这对于涉及决策制定的应用尤为重要。例如,在法律、医学诊断、财务分析等领域,能够理解模型是如何得出结论的,是非常重要的。
此外,CoT 还有助于模型的泛化能力,即使在数据稀疏或从未见过的任务上也能表现出色,因为模型学会了如何推理,而不只是记忆答案。
最新进展
近期的研究进一步发展了CoT的概念,例如OpenAI提出的“证明者-验证者游戏”方法,旨在提高模型输出的可读性和可验证性。通过让强大的模型生成解决方案,较弱的模型来验证这些解决方案,这种方法促使模型生成既正确又易于理解的答案,同时提高了验证者的判断能力。
摘自:
https://m.blog.youkuaiyun.com/bqw18744018044/article/details/128389514
https://m.blog.youkuaiyun.com/qq_39970492/article/details/130980423
基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用-腾讯云开发者社区-腾讯云
https://m.blog.youkuaiyun.com/weixin_40090689/article/details/137131971
https://m.blog.youkuaiyun.com/Q2625289483/article/details/139555976
https://m.blog.youkuaiyun.com/aibishe/article/details/140068951
通俗的来讲,就是让大模型写步骤。