语言不是人类思维的全部,至少还有在说出口前或者写下答案前在大脑潜在空间中活跃的那些。
GPT 一直缺少思考的过程,缺少对思维链路的学习。
试想朋友问你的一句话,你会迅速做出反应,还是,我需要想一想?
GPT 在面对复杂问题时迫不得已的“脱口而出”,让 GPT 被迫学会了幻想,而不是每想一件事、说一句话,都有反思的过程。
以解一道数学题为例,我总结了几个这样的特征:
- 数学题的题解可能字很少,但大脑中思考的时间特别长
- 有些题不需要太思考就可以开始计算,有些题看到就知道答案了,有些题可能想半天都想不出答案
- 对于解答题,我们通常需要从问题正向开始思考,对于证明题,我们可能要从结论的两头开始思考
- 思考一道题,我们通常会经历:试试看这样想对不对,有点进展但不多,感觉方向可能对,继续想想看,嗯,感觉方向不太对,接着想想不到了,我要重新开始思考一下,试试看另一个方向……
那么对于这样的思考,我们怎么在 GPT 中实现呢?(以下是幻想时间)
同样以数学问题为例:
- 数据集是一些难题的解题过程
- 两个 agent,A 不知道答案和解题过程,B 知道答案和解题过程
- B 需要引导 A 思考,或是通过提示词使 A 开始思考,从阶梯方向的第一次试探开始
- 借鉴 A* 算法,B 会评估 A 的思考量和偏移量,假如 A 的思考量很低,可能有偏移,但 B 会让 A 再顺着想想,当 A 的思考量和偏移量都很高时,B 会让 A 回到其中的一个断点,重新开始思考,直到 A 的思考量达到预期,偏移量很小,得到答案
- 记录这一过程中 A 和 B 的输出,得到类似人脑在思考时的语言编码
- 得到的结果,也就是训练材料分成三个部分
- prompt
- answer 中的思维过程
- answer 中的叙述部分
- 举例
- prompt:……解这个数学题……
- answer:让我思考一下这个问题(预制);我觉得首先 / 第一部可以这样……(Agent A);嗯,继续想想(Agent B);然后是不是可以这样……(Agent A);感觉思路 OK,得接着想想(Agent B);我看看,em... 是不是没思路了(Agent A);方向可能有问题,回到之前的思路上看看(Agent B);要不从这儿开始继续看看…………………………好像快看到结果了(Agent B);我知道了!<思考结束标志>(Agent A)
- answer:……这道数学题应该这样解……(肯定是对之前思维过程和正确答案的总结了,easy task)
- 训练,讲 prompt 作为 finetune 输入,answer 的两个部分,去掉各种分隔拼在一起作为输出
Roadmap:
- 这样的学习方法,可以让 AI 先学会记忆知识(GPT 3 的水平),然后思考简单的事情(GPT 4 CoT 的水平),然后去尝试学习更复杂的事情
- 直到有一天,AI 学会了如何设计训练自己的思考这件事情,自此自举完成,AGI
思考了几天,我现在非常相信,AI 是可以在海量的知识上越学越聪明,不是“学习我不知道的事情”,而是“学习我不会的事情”。