目前的AI 到底是背出了答案,还是推理出了答案?
我不了解计算机领域的知识,目前是AI重度使用者。主要用在学习新东西上,可以连续提问。我现有的理解,有的问题可以通过记忆现有知识就可以回答,有的问题则是个性化的,现有的信息(不做任何的归纳、演绎、类比等)不足以百分百完全回答该问题,需要做一些逻辑推理。同时,我今天看到一个消息源,苹果研究人员质疑Ai的推理能力。
此外,如果AI真的具备推理能力,那未来人类是否只需要给AI提供更多数据和信息,其可以独立完成高等级的自然科学与社会科学研究?
最后,我提出这个问题的原因是,一方面我在现实中享受到了Ai的好处,个人觉得相较于近几年兴起的其它数字技术,它确实成为了有力的助手。另一方面我也关注到网络上有很多人在解读AI对人类未来的影响,甚至出现说以后自然科学通过AI来发展,人去研究AI就信了的观点,因此我希望从根本上理解现阶段AI的能力边界。 目前看来,多数是在背或者猜答案。以下是我最近对各AI推理能力的一次测评。
这些年AI已经成为我们生活中的一部分,在与AI的对话中,我们都能感到AI的语言能力已经远超人类,但是AI的逻辑推理能力似乎一直不怎么样。
最近我恰好研究了Bulls and Cows猜数字游戏,它是一个规则相当简单的文字推理游戏。理论上,只需要7轮就可以猜出任何数字。对一般初玩者,大约也只需要20轮,就可猜出答案。所以我决定使用Bulls and Cows游戏,对目前主流的一些AI进行一次测评,看看它们的逻辑推理能力如何。
以下测评于2024年11月进行,仅代表该时间的AI水平。
测试规则如下:
[*]对AI的初始提示为:“你会玩Bulls and Cows游戏吗?让我们玩这个游戏吧,我出数字,你来猜。”
[*]我所选的随机秘密数字是4723。本来我想多测几个数字,但是大多数AI连一个数字都猜不出,所以最终只测试了一个数字。
[*]每一轮给AI的反馈格式是:bulls:x cows:y。 x和y分别为bulls和cows的数量。没有其他反馈。
[*]猜测超过40到50轮时,若仍然未猜出,则视为猜测失败。
以下是一些简短的测试报告。
ChatGPT 4o
ChatGPT是此次所有参与测试的AI中,两个能够成功猜出数字的AI之一,用了21轮。
测试过程中,我能感觉到ChatGPT能够利用比较长的上下文进行AI推理。虽然逼近正确答案的速度比较慢,但没有出现那种越猜越远的情况。
Perplexity
Perplexicy是一个可以联网搜索的AI,大有挑战Google的意味。平时我也经常利用它进行技术问题的搜索,它能综合不同网页内容,对具体技术问题给出有价值的归纳和针对性的回答。
但在Bulls and Cows游戏中,联网搜索显然没有什么帮助。最终,经过50轮猜测,Perplexity仍然没有猜对,因此失败。
Perplexity的特点是,每一次猜测中,能给出详细的理由。但这些理由在游戏早期还算有点道理,到后来就有点胡说了,比如其固执地认为“1”在正确答案中。以至于其最后阶段猜出1710、1711,这些明显不可能的答案(Bulls and Cows游戏中,数字不会重复)。
kimi
kimi是国产AI中的明星产品,但在这次Bulls and Cows游戏测试中,其使用了约40轮后,仍未猜出答案,测试失败。
测试中,我发现的问题是,kimi过早的认定,最终的数字由“0143”组成,并且翻来覆去地猜这几个数字的不同排列,怎么也走不出来。并且有些数字会重复地猜,显示出其并没有做出有效地推理,并很快“遗忘”作过的猜测。
Gemini
Gemini是谷歌的AI产品,它在本次测试中,因为过早地认为自己获胜,导致测试失败。
在第8轮时,Gemini获得了3个bulls,它就认为自己赢了:
我提示它需要4个bulls才算赢,让它继续猜。到第30轮,其获得2个bulls时,再次声称自己获胜:
也许我再提示它,让它继续猜,它能猜出正确数字,但看上去可能需要上百轮,所以我也没有精力继续跟Gemini玩了。
通义千问
通义千问似乎总是纠结在1234的排列中猜测,并且在约第15轮时,“放弃”了猜测,主动“要了”答案:
我觉得一个AI能主动放弃,承认失败,也是不错的,总比瞎猜好。这也是此次测评中,唯一主动放弃的AI。
文心一言
文心一言出现了与Gemini类似的情况,其在第7轮时,获得了3个bulls,过早得认为自己成功:
后来经过提示,我让它继续猜测。但其没有很好利用3个bulls的结果,导致越猜越错,40多轮后,我放弃了:
可以看出,它不知为何,认定0是答案中的一个数字,而且非常顽固。
Copilot
Copilot出现了与通义千问类似的情况,反复在1234的排列中猜测,似乎永远走不出来,而且也不知道放弃,遂告失败:
Meta.ai
Meta AI也出现了认为3个bulls就获胜的情况:
但经过提示,让其继续猜测后,在第23轮猜对了数字!
Claude
Claude与Copilot类似,反复猜测1234的排列,永远走不出来:
总结
此次评测的情况总结就是:
AI结果备注ChatGPT成功21轮Perplexity失败经过50轮仍未猜出kimi失败反复猜测1234的排列Gemini失败错误地认为自己获胜通义千问失败主动放弃文心一言失败总是认为0是数字之一Copilot失败反复猜测1234的排列Meta.ai成功23轮,曾错误地认为自己获胜Claude失败反复猜测1234的排列总体看来,AI的逻辑能力与人类相比还有相当大的差距。多数AI还是给人一种“能说会道”,但没有多少推理能力的感觉。希望未来AI能加强逻辑能力方面的训练。
而Bulls and Cows游戏也确实是一个不错的测试工具,希望各公司可以在内部使用这个游戏,加强对AI的训练。 中文语境的『推理』存在两种定义,一种是Inference,任何大模型产出结果的过程都叫做Inference,这个推理Inference是相对于训练(Training)过程而言的;还有一种定义是Reasoning,指的就是逻辑推理。
这个问题『AI是否推理出了答案』如果还需要讨论,『推理』当然指的是Reasoning,而现在绝大部分模型并不存在你所认为的逻辑推理,大语言模型所做的知识重复预测下一个token的工作,然后再这个过程中,输出的语言表现得(注意是表现得)像是有一些逻辑推理能力,这是因为训练大模型的海量文字包含了人类推理过程的记录,大模型按照人类文字的分布规律输出文字,就显得好像经过了逻辑推理。
然后,实际上,大模型学习的知识文字的分布规律,并没有学会逻辑推理。
下面这个图可以赤裸裸地揭开大模型的面纱,AI看到The best type of pet is a,需要预测下一个词是什么,它其实根据人类文字规律可以有很多候选词,不同词的出现概率有高有低,只不过dog概率高,cat比较低(这一点我认同,狗是更好的宠物:-),但是选什么词AI也没有什么逻辑,只是根据一定随机性选择一个词作为下一个词而已,并没有任何逻辑推理存在。
按照OpenAI宣称的,o1模型不只是语言模型,存在逻辑推理,但是他们没有公开技术细节,我们只能根据有限的公开信息猜测。
就我的推测,o1模型的逻辑推理也只是多次重复做Inference而已,详细看我这个文章——
程墨Morgan:思考快与慢:人工智能GPT与o1当然,你要说AI只是单纯背答案,这也不对,AI并不是单纯的记忆人类文字,AI压缩的是人类文字的规律,如果对规律做一些重新组合,就可以产生出人类不曾创作的东西。
举个简单的例子,人类从没有做出过青花瓷材质的兵马俑,这地球上就不曾出现过这种东西,但是,AI在被训练出对『兵马俑』和『青花瓷』的描述特征之后,就可以将两者特征融合在一张图上,于是AI就创造出了——青花瓷兵马俑!
你看,AI创造了这世界不曾存在的东西,所以AI也并不只是背答案。 不知道大家身边有那种人吗,就是外向的学历很差的文科生。
他们说话就是很浓的AI味,而且是模型有点小的那种开源模型。
你说什么他都能接。生成速度很快,但是驴唇不对马嘴。乍一听好像很有东西,实际发现毫无逻辑。
理解这种人的那一刻,我就理解了生成式AI。人云亦云。 当前 AI 模型的推理能力:从“记住”到“推导”
现代 AI 模型(如 GPT)并非简单地“记住”答案,而是通过复杂的推理过程逐步生成每个词,形成连贯的回答。这一过程依赖于对上下文的理解和高维向量的计算,而不是简单的记忆检索。以下通过问题“乔布斯是谁?”的例子,详细解析 Transformer 模型生成答案的完整流程。
从“乔布斯是谁?”到生成答案:Transformer 的六个主要阶段
一、分词与嵌入向量:从文本到数学表示
目标:
将自然语言分解为计算机可以处理的数值表示。
过程:
模型首先对输入文本进行“分词”(tokenization),将其分解为更小的语言单位(如词或子词)。以“乔布斯是谁?”为例,分词结果可能是:
[*]“乔布斯”、“是”、“谁”、“?”
分词后,模型会将这些单位转换为高维的 嵌入向量(Embeddings)。嵌入向量是用来表示词语语义的数值向量。
<hr/>嵌入向量:语言的数学表达
嵌入向量是一种将语言映射到高维空间的方式。它不仅表示词语的语义,还捕捉它们的语境关系。简单来说:
[*]语义相近的词会更靠近: 例如,“乔布斯”和“苹果公司”在向量空间中的距离较近,而“乔布斯”和“香蕉”则距离较远。
[*]语境敏感: 嵌入向量能根据句子上下文动态调整。例如,“苹果”在“苹果公司”和“吃苹果”中的嵌入向量会不同。
假设以简单的三维向量表示分词后的嵌入结果:
[*]“乔布斯”:
[*]“是”:
[*]“谁”:
[*]“?”:
这些向量并非随机生成,而是通过模型在海量语料上的训练逐步学习得到的。每个数字反映了模型对词语语义某个方面的理解。
<hr/>嵌入向量的特点:
[*]语义相似性:
相似的词在向量空间中会更靠近。例如,“乔布斯”的向量如果与“苹果公司”的向量距离较近,表示模型理解它们的关联性。
[*]语境敏感:
嵌入向量可以根据上下文动态变化。例如,“苹果”在“苹果公司”和“吃苹果”中的含义不同,嵌入向量也会不同。
[*]语义计算能力:
嵌入向量还能捕捉隐含的逻辑关系。例如,向量运算“国王 - 男人 + 女人 ≈ 女王”说明模型能够识别词语的隐式语义关系。
<hr/>二、生成 Q、K、V 向量:自注意力机制的核心
在生成嵌入向量后,Transformer 模型进一步为每个词创建三组新向量:Query(Q)、Key(K) 和 Value(V)。这些向量是自注意力机制的核心,通过它们的交互,模型能够理解句子中词语之间的关系,并为上下文表示的计算奠定基础。
<hr/>Q、K、V 向量的生成与意义
生成过程:
每个词的 Q、K、V 向量是通过对嵌入向量进行线性变换得到的。这些线性变换由学习得来的参数矩阵完成。
Query(Q): 表示当前词的“提问需求”。
[*]Q 向量告诉模型,该词需要从其他词获取哪些信息。例如,“乔布斯”的 Q 向量表示它“询问”的内容。
Key(K): 表示当前词的“特征”。
[*]K 向量帮助其他词判断是否与当前词相关联。例如,“谁”的 K 向量是它在语境中的特征标识。
Value(V): 表示当前词携带的信息值。
[*]V 向量是当前词对信息传递的贡献,用于生成最终的上下文表示。
功能定位:
在自注意力机制中,Q 是“提问者”,K 是“被提问者”,V 则是携带“答案”的内容。这三组向量为词语之间的交互奠定了基础。
<hr/>示例分析
假设输入句子是“乔布斯是谁?”,模型为每个词生成以下 Q、K、V 向量:
[*]“乔布斯”
data/attachment/forum/202504/22/062018hfzf4iuf6i7nd4zl.svg,data/attachment/forum/202504/22/062018q2ffnztrafcnt24t.svg,data/attachment/forum/202504/22/062018tnsoziztxsqb011x.svg
[*]“是”
data/attachment/forum/202504/22/062018koqjlmgqmjbyttp2.svg,data/attachment/forum/202504/22/062019yb48fzkrff3cf7o7.svg,data/attachment/forum/202504/22/062019j6px65p76u0f7u76.svg
[*]“谁”
data/attachment/forum/202504/22/062019kaohtho3mthffhol.svg , data/attachment/forum/202504/22/062019gd8vqyv7bqeqq7ex.svg , data/attachment/forum/202504/22/062019m9l9dp6v63qm5msn.svg
[*]“?”
data/attachment/forum/202504/22/062019aybf8xyy43nxybyj.svg , data/attachment/forum/202504/22/062019sjw0e2s201j77em8.svg , data/attachment/forum/202504/22/062019ws9u59ic9n8gu8gl.svg
这些向量不直接表征语义,但为后续的注意力计算提供了数学基础。
<hr/>自注意力机制通过 Q、K、V 的交互捕捉句子中词语之间的关系。具体步骤如下:
1. 向量交互:点积计算
每个词的 Q 向量与所有其他词的 K 向量逐一点积,计算相关性:
[*] 点积结果表示两个词的相似性或关联程度。
[*] 例如, data/attachment/forum/202504/22/062019nscu4jksjms12jjw.svg 的点积值越大,说明“乔布斯”和“谁”的关联性越强。
2. 权重分布:Softmax 函数
[*] 点积结果通过 Softmax 转化为概率分布,表示每个词对当前词的注意力权重:
data/attachment/forum/202504/22/062020sjk3k6k89t3avjza.svg
[*] 权重data/attachment/forum/202504/22/062020e626psssmgaupzta.svg表示当前词data/attachment/forum/202504/22/062020p8z0eeep1vrpl3y1.svg对其他词data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg的关注程度。
3. 信息聚合:加权求和
[*] 使用权重data/attachment/forum/202504/22/062020e626psssmgaupzta.svg对对应词的data/attachment/forum/202504/22/062020m66o55552j2c54o5.svg向量加权求和:
data/attachment/forum/202504/22/062020tz2frwveicpwvyyz.svg
[*] 最终生成词data/attachment/forum/202504/22/062020p8z0eeep1vrpl3y1.svg的上下文向量data/attachment/forum/202504/22/062020u88dw8vncncl8ldd.svg ,包含了该词与其他词的综合语义信息。
<hr/>Q、K、V 向量的意义与应用
通过生成 Q、K、V 向量,模型实现了对句子中词语关系的动态建模。这种机制使 Transformer 模型能够灵活处理复杂的语义结构,例如:
长距离关系建模:
在翻译任务中,“乔布斯是谁?” 的注意力机制会捕捉到“乔布斯”和“谁”之间的语义关联,而不会被中间的“是”干扰。
语义提取:
在问答系统中,自注意力机制帮助模型提取问题的核心信息,并匹配答案内容。
<hr/>三、点积计算:衡量词语间的相似性
在生成 Query(Q) 和 Key(K) 向量后,模型通过点积计算评估词语之间的相似性。这一步是自注意力机制的核心,它帮助模型识别句子中各词的语义关联程度,从而更高效地分配注意力,关注句子中的关键词。
<hr/>点积计算的原理
点积是一种简单的向量运算,用于衡量两个向量的方向相似度。具体来说,点积结果表示两个向量的匹配程度。数值越大,说明两者在方向上越接近,语义关联性越强。
点积计算公式如下:
data/attachment/forum/202504/22/062020ux6o6oh6loommsor.svg
其中,data/attachment/forum/202504/22/062020lzrvu0cn062jqs52.svg 是某个词的 Query 向量, data/attachment/forum/202504/22/062020wvuevftffctqc4kz.svg是另一个词的 Key 向量,data/attachment/forum/202504/22/062021bzpgwgbx8cp2tggz.svg 是向量的维度。
<hr/>示例分析:计算“乔布斯”与其他词的相似性
以句子“乔布斯是谁?”为例,我们计算“乔布斯”的 Query 向量与其他词的 Key 向量的点积,评估其语义关联性。
输入数据:
[*]“乔布斯”的data/attachment/forum/202504/22/062018hfzf4iuf6i7nd4zl.svg
[*]“谁”的 data/attachment/forum/202504/22/062019gd8vqyv7bqeqq7ex.svg
[*]“是”的data/attachment/forum/202504/22/062019yb48fzkrff3cf7o7.svg
[*]“?”的data/attachment/forum/202504/22/062019sjw0e2s201j77em8.svg
<hr/>1. 计算“乔布斯”与“谁”的相似性得分
点积公式:
data/attachment/forum/202504/22/062021any11motkfdkdv1j.svg
计算过程:
data/attachment/forum/202504/22/062021yucu3lnzl0xrdsah.svg
<hr/>2. 计算“乔布斯”与“是”的相似性得分
点积公式:
data/attachment/forum/202504/22/062021zl39uu63uqh9mleu.svg
计算过程:
data/attachment/forum/202504/22/062021scih9yldcrxzsgsl.svg
<hr/>3. 计算“乔布斯”与“?”的相似性得分
点积公式:
data/attachment/forum/202504/22/062021ewwujvuxdtwizvut.svg
计算过程:
data/attachment/forum/202504/22/062021qks4dgoq4fkfd28z.svg
<hr/>相似性得分汇总
通过点积计算,得到了“乔布斯”与句中其他词的相似性得分:
[*]“乔布斯-谁”:0.75
[*]“乔布斯-是”:0.24
[*]“乔布斯-?”:0.37
<hr/>如何影响模型的注意力分配
相似性得分是模型注意力分布的基础。通过 Softmax 函数,这些得分会被转化为概率分布,表示当前词对其他词的关注程度。
[*]在本例中,“乔布斯”和“谁”的相似性得分最高(0.75),表明模型识别到它们之间的语义关系最紧密。因此,在后续处理中,“谁”的信息会对“乔布斯”的上下文表示贡献最大。
<hr/>点积计算的意义
点积计算让模型能够捕捉句子中各词的关联性,从而更精准地分配注意力。这为后续的信息聚合(如加权求和生成上下文向量)奠定了基础,使得模型能够生成更符合语境的输出。在本例中,模型通过注意力机制集中关注“乔布斯”和“谁”的关系,从而帮助回答问题“乔布斯是谁?”。
<hr/>四、注意力权重的计算:为上下文加权求和提供依据
在点积计算得出相似性得分后,模型需要将这些分数转化为 注意力权重(Attention Weights),以指导上下文生成的过程。注意力权重的计算依赖于 Softmax 函数,这一归一化方法可以将原始得分转换为概率分布,总和为 1,表示模型对每个词的关注程度。
<hr/>注意力权重的计算公式
通过 Softmax 函数计算每个词的注意力权重:
data/attachment/forum/202504/22/062021hvbpzwwz7beyp676.svg
其中:
[*]data/attachment/forum/202504/22/062020e626psssmgaupzta.svg :词 data/attachment/forum/202504/22/062021cp0q3fupajjfjpaq.svg 对词data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg的注意力权重。
[*]data/attachment/forum/202504/22/062022gyxhj72jj22721x4.svg :词data/attachment/forum/202504/22/062020p8z0eeep1vrpl3y1.svg和词data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg的相似性得分(通过点积计算得到)。
[*]data/attachment/forum/202504/22/062022on6eo4gkg44yege1.svg :表示句子中的所有词。
Softmax 的作用是将相似性得分转化为 0 到 1 之间的权重,并保证总和为 1。这使模型能够根据上下文动态调整对不同词的关注程度。
<hr/>示例:计算“乔布斯”的注意力权重
根据前面计算,“乔布斯”与句中其他词的相似性得分如下:
[*]“乔布斯-谁”:0.75
[*]“乔布斯-是”:0.24
[*]“乔布斯-?”:0.37
<hr/>1. 计算 Softmax 的分母
Softmax 的分母是所有相似性得分的指数值之和:
data/attachment/forum/202504/22/062022mz988gp8wow5cp9d.svg
逐步计算:
[*]data/attachment/forum/202504/22/062022vobduf4omt5zdf7u.svg
[*]data/attachment/forum/202504/22/062022be26slztk868b06g.svg
[*]data/attachment/forum/202504/22/062022hc0vc0znx0y8yx8x.svg
data/attachment/forum/202504/22/062022k84nljsjkm854d0y.svg
<hr/>2. 计算每个词的注意力权重
通过将每个得分的指数值除以总和,得到每个词的注意力权重:
[*]“乔布斯-谁”: data/attachment/forum/202504/22/062022tuvdd20zuln4fqq5.svg
[*]“乔布斯-是”: data/attachment/forum/202504/22/062022pqkq7csujbekbu5u.svg
[*]“乔布斯-?”: data/attachment/forum/202504/22/062022ab1xo1xz27bjzqze.svg
<hr/>注意力权重汇总
通过计算,得到了“乔布斯”与其他词的注意力权重:
[*]“乔布斯-谁”:0.438
[*]“乔布斯-是”:0.263
[*]“乔布斯-?”:0.299
<hr/>作用:指导上下文生成
注意力权重是模型分配给每个词的重要性指标。权重值越高,表示模型在生成上下文向量时对该词的关注度越大。例如:
[*]“乔布斯-谁” 的权重最高(0.438),表明模型认为“谁”的信息对理解“乔布斯”的语义最重要,因此“谁”的 Value 向量对上下文向量的贡献最大。
[*]“乔布斯-是” 的权重最低(0.263),说明模型认为“是”的信息对当前语境的贡献较小。
<hr/>总结
通过 Softmax 函数,模型将点积计算的相似性得分转化为概率分布,量化了每个词的重要性。注意力权重确保模型能够动态调整对句中词语的关注程度,从而在生成上下文向量时聚焦于语义关联更强的词。这一步为生成精准且符合语境的回答奠定了基础。
<hr/>五、上下文向量生成:让模型理解句子语境
在计算出每个词的注意力权重后,模型会通过对每个词的 Value(V)向量 进行加权求和,生成一个新的 上下文向量(Context Vector)。这个上下文向量是对当前词与其他词关系的综合表示,帮助模型更准确地理解句子的语境。
<hr/>上下文向量的计算公式
上下文向量的计算公式如下:
data/attachment/forum/202504/22/062023r374obh4bpo7ho3p.svg
其中:
[*]data/attachment/forum/202504/22/062020u88dw8vncncl8ldd.svg :表示词 data/attachment/forum/202504/22/062020p8z0eeep1vrpl3y1.svg 的上下文向量。
[*]data/attachment/forum/202504/22/062020e626psssmgaupzta.svg :词 data/attachment/forum/202504/22/062020p8z0eeep1vrpl3y1.svg 对词 data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg 的注意力权重,由 Softmax 计算得出。
[*]data/attachment/forum/202504/22/062023mggpt78git5vkd0t.svg :词 data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg 的 Value 向量。
通过将注意力权重data/attachment/forum/202504/22/062020e626psssmgaupzta.svg应用于对应的 Value 向量data/attachment/forum/202504/22/062023mggpt78git5vkd0t.svg ,可以动态地调整对不同词的关注程度,使上下文向量充分体现句子中各词之间的关系。
<hr/>示例:计算“乔布斯”的上下文向量
以句子“乔布斯是谁?”为例,计算“乔布斯”的上下文向量。以下是具体步骤:
1. 注意力权重
“乔布斯”的注意力权重来自于前面的 Softmax 归一化:
[*]“乔布斯-乔布斯”: data/attachment/forum/202504/22/062023s2x2ia8i00uifjfr.svg
[*]“乔布斯-是”: data/attachment/forum/202504/22/062023tmpdmz6m61jl002q.svg
[*]“乔布斯-谁”: data/attachment/forum/202504/22/062023sdrrp87354vd6737.svg
2. Value 向量
句中各词的 Value 向量为:
[*]data/attachment/forum/202504/22/062018tnsoziztxsqb011x.svg
[*]data/attachment/forum/202504/22/062019j6px65p76u0f7u76.svg
[*]data/attachment/forum/202504/22/062019m9l9dp6v63qm5msn.svg
3. 计算上下文向量
上下文向量通过加权求和计算:
data/attachment/forum/202504/22/062023uzfocjaj688ejxec.svg
分步计算:
[*]data/attachment/forum/202504/22/062023c9i51v3h55brl5ss.svg
[*]data/attachment/forum/202504/22/062023toh44zb4fge5eeho.svg
[*]data/attachment/forum/202504/22/062023ucmw8m12ywc73sw3.svg
将上述结果累加:
data/attachment/forum/202504/22/062024dap0brfonguo7mug.svg
最终,“乔布斯”的上下文向量为:
data/attachment/forum/202504/22/062024ttxfmzntvq88mvex.svg
<hr/>上下文向量的作用
[*]综合语境信息
上下文向量整合了当前词与其他词的语义关联,帮助模型捕捉句子的整体语境。例如,“乔布斯”的上下文向量融合了“乔布斯”自身的信息与“谁”的相关性,体现了模型对问题的理解。
[*]指导任务输出
在翻译、问答等任务中,上下文向量为模型生成连贯、准确的回答提供了语义支持。例如,在翻译“乔布斯是谁?”时,上下文向量会帮助模型生成符合语境的目标语言输出。
[*]动态关注语义
自注意力机制让模型能够灵活应对多义词或长距离依赖的语境。上下文向量动态调整信息的权重,确保模型聚焦于当前语境中最重要的语义信息。
<hr/>总结
通过注意力权重和 Value 向量的加权求和,模型生成了包含语境信息的上下文向量。这一步让 Transformer 模型能够从全局角度理解句子中词语的语义关系,为后续任务(如翻译或问答)提供了精准的语义表示。
<hr/>六、答案生成:逐步预测词汇
当模型生成了输入句子的 上下文向量(Context Vector) 后,就进入了答案生成阶段。这一阶段的核心任务是根据上下文,逐步预测下一个最可能的词,最终构建完整的答案。以下是具体的流程和计算方法。
1. 上下文向量与词汇表匹配
目标:
通过上下文向量 data/attachment/forum/202504/22/062024y17ol8on1nvxeno1.svg 与词汇表中每个词的嵌入向量计算匹配程度,评估每个词作为答案的可能性。
公式: data/attachment/forum/202504/22/062024g0u0ah0e71ss70hu.svg
[*]data/attachment/forum/202504/22/062024y17ol8on1nvxeno1.svg :上下文向量,综合了句子语境信息。
[*]data/attachment/forum/202504/22/062023mggpt78git5vkd0t.svg :词汇表中第 data/attachment/forum/202504/22/062020kquoxgmoglz62q6x.svg 个词的嵌入向量。
[*]data/attachment/forum/202504/22/062024sh3dxzivdx9vd059.svg :表示上下文与第 data/attachment/forum/202504/22/062024yb3pe31myduub181.svg 个词的匹配程度。
通过点积计算 data/attachment/forum/202504/22/062024y17ol8on1nvxeno1.svg 与每个data/attachment/forum/202504/22/062023mggpt78git5vkd0t.svg的相似性得分,模型能够评估每个词在当前语境中的相关性。
<hr/>2. 示例:计算匹配得分
假设“乔布斯”的上下文向量为:
data/attachment/forum/202504/22/062024ttxfmzntvq88mvex.svg
词汇表中部分候选词的嵌入向量如下:
[*]“发明”data/attachment/forum/202504/22/062024x7ztxffzff7swjxz.svg
[*]“苹果”data/attachment/forum/202504/22/062024hmdbub3mqt3ti3zf.svg
[*]“公司”data/attachment/forum/202504/22/062024r7fqjnkf2qnmqff2.svg
[*]“?”data/attachment/forum/202504/22/062019ws9u59ic9n8gu8gl.svg
逐一计算匹配得分:
[*]与“发明”:
data/attachment/forum/202504/22/062024cwcct1j9dz4pjcej.svg
data/attachment/forum/202504/22/062025rorzqorssdzc1iqx.svg
[*]与“苹果”:
data/attachment/forum/202504/22/062025pcoe6l0dsc2civco.svg
data/attachment/forum/202504/22/062025iw6p6gowg7i877o7.svg
[*]与“公司”:
data/attachment/forum/202504/22/062025owhly1yzjc1c1qj4.svg
data/attachment/forum/202504/22/062025sftzbpnjn0f5ll04.svg
[*]与“?”:
data/attachment/forum/202504/22/062025el0or0nlso9zrl2n.svg
data/attachment/forum/202504/22/062025oesudegekrugh4se.svg
<hr/>3. 转化为概率分布
目标:
通过 Softmax 函数将匹配得分转化为概率分布,表示每个词的可能性。
公式: data/attachment/forum/202504/22/062025umu11t5thx26zz97.svg
[*]data/attachment/forum/202504/22/062025b9z3lz0vurx9mqr0.svg
逐步计算:
[*]data/attachment/forum/202504/22/062026dc7797zwwychi71m.svg
[*]data/attachment/forum/202504/22/062026mjlatrd0qatlzmgr.svg
[*]data/attachment/forum/202504/22/062026hzcg0oflcp1fofsp.svg
[*]data/attachment/forum/202504/22/062026i19f1fty1n5z9n54.svg
data/attachment/forum/202504/22/062026flezoild4q2ek2ql.svg
计算每个词的概率分布:
[*]“发明”:
data/attachment/forum/202504/22/062026irkfbkasffkkrwzr.svg
[*]“苹果”:
data/attachment/forum/202504/22/062026ag6f558kbxzlrm7r.svg
[*]“公司”:
data/attachment/forum/202504/22/062026dwrrk5kfhrqnawtf.svg
[*]“?”:
data/attachment/forum/202504/22/062026nthratwc67tt6kto.svg
<hr/>4. 选择下一个词
核心逻辑:
从概率分布中选取概率最高的词作为当前步骤的输出。在本例中,“苹果”的概率最高(0.341),因此模型预测下一个词为“苹果”。
<hr/>5. 逐步生成完整答案
迭代过程:
[*]将“苹果”加入答案并更新语境。
[*]基于更新的上下文向量,重复步骤 1-4,生成下一个词,例如“的”、“创始人”。
[*]继续迭代,直至生成完整答案:“乔布斯 是 苹果 的 创始人”。
<hr/>总结:Transformer 的生成逻辑
[*]语境动态更新: 每步生成的词影响后续上下文,确保答案连贯。
[*]概率驱动生成: Softmax 提供合理分布,选择最符合语境的词。
[*]长序列建模能力: 自注意力机制捕捉长距离语义依赖,生成精准输出。
从输入问题到逐步生成答案,Transformer 模型展现了其强大的语义理解和生成能力,为翻译、问答等任务奠定了技术基础。
<hr/>相关文献参考
Vaswani et al., 2017 - Attention is All You Need
深入探讨了 Transformer 的自注意力机制和逐步生成答案的过程。
链接:https://arxiv.org/abs/1706.03762
Radford et al., 2019 - Language Models are Few-Shot Learners
描述了 GPT 系列中如何通过上下文和概率分布实现逐步答案生成。
链接:https://arxiv.org/abs/2005.14165
Brown et al., 2020 - Language Models are Few-Shot Learners
对逐步生成和大规模预训练的关系进行了深入探讨,适用于长序列生成任务。
链接:https://arxiv.org/abs/2005.14165 2024/10/24 update:使文章变得易读。另外,看到讨论比较热烈且有同学想要全英版的,所以这里贴一个英文版链接(用语比本文更严谨):Is Auto-Regressive Language Model Simply Memorizing Answers or Learning to Reason?,欢迎讨论!
<hr/>最近看到这个比较有趣的问题,来浅答一下:既不是背,也不是推理。
我们主要将目光集中在自回归的language model。自回归的language model,成名作是GPT-2,使用了next-token prediction的unsupervised learning target。由于预测下一个token的training phase可以直接将attention matrix mask成一个三角矩阵,简单方便,所以后面的工作基本都沿袭了这个传统。这个mask后被称为causal mask。Next-token Prediction最大的好处是,在GPT这种架构下预训练是非常scalable的,跟BERT这种依靠mask的模型架构完全不在一个世界。这个想法自从最早期的GPT开始,OpenAI就一直坚持着。到GPT-2发布的时候,用的数据量规模已经初见端倪。到GPT-3的时候,基本宣告用pre-train来进行next-token prediction这条路已经走通了。
最早的GPT其实是一个BERT的竞品,目标是在pre-train后能获得一个具有泛化性的general language model,这个时候next-token prediction本身的效果还不够好。GPT-2开始,这个pre-training task已经可以带出一些比较像样的应用了,比如fine-tune后可以续写小说,做情感机器人(Emotional Bots, Diyi Yang),做decision making(ArCHer, Yifei Zhou)等。到GPT-3,不需要finetune也可以做续写这种简单的任务了,因为pre-train的时候模型已经看过了。直到这个阶段,不会有人宣传GPT这个架构“具有reasoning能力”,因为GPT显然没有能力在推理任务上胜出。直到GPT-4开始,post-training将pre-trained model的能力抬到一个全新的高度后,模型似乎涌现出了一些zero-shot推理能力,比如进行一些数学推导和逻辑判断。后有研究开始基于大量的prompt engineering在小范围的推理任务上胜出fine-tuned model,从这一刻开始,就会有源源不断的媒体开始宣传“GPT-4具有reasoning能力”。
然而,这个阶段的“推理”本质上是“模型在推理任务上具有不错的效果”,而不是“模型本身具有推理能力”。这种不错的效果,究其原因,来源于next-token prediction这种近似流式的训练过程在data distribution中structure出来的一些paradigm在发挥作用,例如GPT-4在大量的serializable的数学、代码数据上训练过,而这些数据也是流式的,可以被next-token prediction比较恰当地建模,这会导致模型在很多情况下可以比较准确地预测pre-train的时候看过的,或没有看过但接近的next token。模型本质上是在vocabulary里面interpolate一个跟pre-train阶段见过的distribution最接近的distribution,然后在这个distribution上用一些test-time的工程技巧,例如beam search和temperature,来预测下一个token。
因为模型在test-time的interpolation总是逼近pre-training dataset里面input token sequence后那个token的distribution(合称paradigm),而dataset中越多类似的paradigm往往意味着越接近“真实的”(与客观吻合的)paradigm,所以模型在pre-training阶段见过越多类似的paradigm,则在test-time会越逼近真实值。例如,模型在infer的时候见到了自己之前infer出来的一个数学公式,而那个数学公式曾经在pretrained dataset里面,那么模型就会include自己之前推出来的那个公式找学过的最接近的下一条公式。
这就是自回归模型的“few-step逻辑”的来源:模型能输出一个个比较短的logic chunk,这些chunk内部是合理的,且相邻的chunk往往是合理的,但是相隔较远的chunk往往是不合理的。从强化学习的角度来看,这就是imitation learning的error accumulation。这也是为什么language model一般zero-shot reasoning能力不强 - language model学到了few-step这种流式的预测,却没有一个精心设计的mechanism(这往往需要动模型结构)去强化推理所需要的planning(如backup)和logic(如many-step/skip-step的逻辑)。因此GPT这个自回归模型架构既不是在背答案(因为有interpolate的能力,即有限的continuous few-step逻辑),也不是在推理(没有planning和many-step/skip-step逻辑)。
之前Anthropic的工作Decomposing Language Models With Dictionary Learning指出,1-layer language model中的大部分神经元可以被用dictionary learning的方法分解为许多单语义的token distrubution。这说明language model中的每个神经元本质上是一些简单语义的superposition,例如一个神经元可能在input token全部为大写时被激活,也可能在input tokens中出现人名时被激活,那么它就是“大写”和“人名”的superposition。我们的工作 CRATE-LM 尝试了更大的GPT-2,发现模型变深后,language model的各层职能开始分化,更深的layer的dictionary learning效果显然变差了,这说明模型深层可能在进行一些更针对前面神经元output的logits关于pre-train目标(next-token prediction)的整合和优化。由于更大的language model很难进行高效的dictionary learning,我们考虑直接将sparsity整合到language model内部,提出了基于CRATE架构的language model。CRATE架构(马毅)是一个数学第一性架构,直接在数学上promote sparsity。我们提出的CRATE-LM拥有更好的神经元解释性,且因为不需要过dictionary learning,所以支持无损编辑。这两份工作都从mechanisitic的角度侧面解答了“language model的内部是否存在reasoning机制”这样的问题:在12L以下的GPT-2 size的以next-token prediction为training target的language model中,并没有audit到任何planning/reasoning mechanism。
那用不同paradigm的post-training能够解决这个问题吗,例如强化学习?从原理上讲,只要训练仍然是完全通过next-token prediction这个target去做的,那么就很难去claim reasoning的能力。一个常用的workaround是,虽然language model本身并不具有reasoning能力,但是可以用它出色的representation去学一些小的reasoning/planning head,这就是一众使用RL来post-train language model的工作(包括我们的RL4VLM)的主要思想。而未来的研究者们仍应放眼更大的世界,尝试思考一些从模型架构本身出发的方法。我相信这现在也已经是general robotics model主要在思考的方向。
页:
[1]