刨根问底与知识树构建:我的思考方式分享

一种面向理解的思考方式分享:把知识搭成树,把关键问题追问到机制层。

我更擅长一种面向理解的思考方式:把知识搭成树,把关键问题追到机制层。它不适配应试,也不太适合过去的细微领域专精的生产模式,但对学习复杂系统、跨行业快速学习都很有用,另外,这种思考方式,AI完美的解决了我的很大一部分痛点,也好像更适配AI的高效使用。

一句话总结:构建逻辑知识树、刨根问底。 OK, 想要AI总结的,可以划走了[dog]

一个真实例子:我如何把“计算机”连成一棵树

关于刨根问底,当然不是简单的(或绝对的)刨根问底,因为任何问题,都没有最终最正确的答案,几乎所有的问题,都会带来一系列更多的问题,所以需要在适当的地方停下,虽然这个度我也不好把握。

举个例子:我在研究生期间做分子动力学模拟时,对计算机开始感兴趣,作为电脑小白,我一开始就会有非常多的问题。

既然计算机只懂 0 和 1,那 0 和 1 到底‘长’什么样?

  • 什么是计算机程序?它是怎么储存的(我当然知道是二进制,但是二进制是如何在物理磁盘中储存的?)这其实不是个简单的计算机问题,后来才知道,这更多是一个半导体物理和材料学等相关专业问题。但是半导体物理和材料学工艺的技术细节是怎样到器件的?我只能停在这里了(并不是我不想知道,而是有更多我更想去知道的占据了我的注意力,所以就一直搁置了,但我知道,关于计算机的理解,到这一层,我丝毫不懂,所以在我的知识树中,这部分和半导体物理的链接是几乎断开的)

  • 计算机硬件也完全不清楚,比如内存是什么?缓存是什么?当然,我大学学过电工电子,记得一些半导体器件做成逻辑门,又做成不同的器件这个整体思路,如果我不知道,我就要去查资料。当然我知道,只是知道了大概,我后来又去图书馆借了几本教材,研究了一下这个过程的具体细节,这些细节对于计算机软件有帮助吗?几乎没有,但是我不知道这个过程,就很难开始学习软件,这会让我有空中楼阁的感觉(一直云里雾里)。虽然大致理解了这个过程和一点点细节,但我离可以做一点数字微电路设计还差很远,所以这部分链接在我的知识树中也几乎是断开的。

  • 我大致了解了计算机硬件的工作原理,又重新学了几天汇编,就明白了最基本最简单的数字电路和二进制程序配合的工作原理(这个明白很难用语言来表达,就好像是神经突触建立了比较强的链接的感觉,突然通了,而且这个知识不会完全在我的脑子里消失了,我可以随时把它检索出来,虽然可能过几年大部分细节又忘记了,但重新学习也会很快,如果没有那种突然通了的感觉,那部分相关的问题和知识几乎就是浪费时间,过几年就会被我的记忆系统完全删除)

想这些这有用吗?当时好像没用,但对于后来我进行嵌入式软件工作帮助极大。

print(“Hello World”) 是怎么变成 CPU 里的0 和 1的?

  • 然后我开始准备学习软件的第一个问题就是,我写的代码,C或者python 是如何变成我刚弄了个大概明白的汇编/机器指令的?这是编译器/解释器的领域,可能有人问到这个问题,往往百度的答案就是:GCC的工作过程:编译、汇编、链接…… 到这对我来说完全不够,什么是编译?这个过程是怎样的?用了什么算法可以把这么简单的语法“解释”成机器指令?什么是链接?为什么能找到那些库函数?所以,我又下载了《编译原理》的电子书,然后看了看,太难了(对于那个阶段的我),搁置了。当然还是明白了大概的过程,所以这部分只是建立了微弱的链接。

想这些这有用吗?当时好像没用,直到现在好像也没啥用,偶尔关注一下python解释器的工作,但也没必要奢求全都有用,好玩也挺不错啊。

为什么我点一下鼠标,电脑就知道我要干什么?

  • 就算我搁置了这么多问题,勉强从代码到机器指令再到数字电路有个基本的了解,但当我开始进行计算机软件(比如python安装)学习的时候,我的问题又来了:不对啊,什么是操作系统啊?我为什么可以用鼠标点一点就可以安装软件呢?(这部分属于图形界面渲染相关的领域,当然我同样又把上述过程走了一遍,然后直到被某一步暂时劝退,或者被更有兴趣的问题吸引,然后搁置,这部分直到后来玩游戏被重启又研究了一通,包括渲染管线、显示效果参数及其含义,显示技术等等,当然这部分只是简单了解,并未深究)
  • 这时候我还是没有开始安装我要学的软件,我又来了问题:不对,这只是UI显示,操作系统内核负责协调一切,什么是内核?他在哪?任何其他软件都不直接控制操作系统?那怎么调用硬件?怎么加载数据?完了……白学了……总有这种时候,觉得柳暗花明了,结果晴转大雾……操作系统是个非常难啃的骨头,但是我如果不了解它,我所操作的软件“实际”上如何一层层最终被加载运行的,我其实完全不懂!只能硬着头皮又查了几本操作系统相关的书,但是被劝退了,内容太多了,内容越多问题越多!只能了解个不明不白开始学吧!(操作系统相关的直到研究生毕业才真正完全拾起来,花了几个月学习)

想这些这有用吗?当时好像没用,但现在对我进行系统联调debug帮助巨大,因为我很清楚(相对)写的代码程序的调用关系和在硬件层面的运行链路,哪些问题可能是缓存不一致导致的?可能是硬件兼容性问题导致的?可能是进程通信问题?当然,这除了对操作系统和硬件的了解外,还和逻辑能力/控制变量实验思维方式等有很大关系。不过话说回来,最初搞清楚这些问题本身,就很有意思了。

乱七八糟的配置和命令行到底在搞什么?

  • 当我安装软件的时候、使用命令行的时候、配置环境变量的时候!问题又又又又来了!不对啊,操作系统的书里也没说有这些玩意儿啊!命令行这么多工具不是操作系统的吗?为啥操作系统的书里没提啊?又开始查,为什么?然后刚明白了,操作系统内核之外还有非常多的工具、驱动、系统软件等,代码量比内核还要多,其中有很多基本原理是通用的,比如那些命令行工具。往往就是处理文件、配置网络等,当然,又过了几个月才搞清楚,大多数情况,配置网络和其他,也是处理文件,然后当时改写了一个帖子总结了一下。
  • 这时候,我终于可以开始学习C和python了!学习的过程中也有很多问题,比如下载的慢,我脑袋又对计算机网络充满了一堆问题,又研究了一通计算机网络,各种协议,他们的关系,他们的数据帧,传输的过程是怎样的,各种问题。所以当我几乎一行代码不会写,基本语法都不懂的时候,已经距离我想学软件过去了一年时间。
  • 这我已经忽略了很多问题了,比如我学打字,就好奇键盘是怎么工作的,上网搜了搜拆解的视频和简单介绍的科普文章就这么翻篇了。直到后来我才抽出注意力来拆了几个键盘。

想这些这有用吗?当时好像没用,这一阶段我把零散的命令行工具和配置问题统一成同一类:它们大多是在操作文件与系统状态;搞明白了一部分工具的实现机制,归类成功,后续遇到新工具就非常得心应手了。这些对我现在服务器和各种变成环境配置帮助甚大。

关于构建逻辑知识树

关于构建逻辑知识树,上文的例子已经推测出好多关于这部分的信息。关于这部分,有两个核心能力:

  1. 逻辑能力:把问题拆成可验证的假设,把因果链捋清楚,搞清楚什么是条件、什么是假设、什么是推论、推理过程又是否引入了新的条件、假设或者定理。
  2. 自我认知:无论对于整个世界还是某个具体的问题,哪些是自己知道的,哪些是不知道的,哪些是理解的比较好的,哪些是不太理解的,哪些是完全没有理解的。如果没有这个能力,这个知识树就是相当虚假的。当然,没有人能完全客观的评估自己理解的程度,但是相比之下,这种定位的准确度的差距还是显而易见的。

至于如何能提高逻辑能力和自我认知的能力?这就是又一个复杂的问题了。我之前也写过一些相关的文章,但也只是浅尝辄止,在这里提及就跑题了(虽然这是我几乎无法避免的)。

如何 用 AI 来扬长避短

AI如何拯救旺盛的好奇心

对我来说AI最大的价值不是替我思考,反而思考这部分是无法被替代的,信息转换为可理解的知识需要人来思考,好的 Prompt/问题,本质上是向 AI 描述知识树上的“缺失节点”和“验收边界”, 具体讲AI对我来说有以下两大功能(除了处理某些具体的任务):

  1. AI 极大地降低了跨学科知识的获取成本。

它将那些原本会导致思考停滞的无聊部分,快速修补到足以支撑主干继续“生长”的程度。目前 AI 可以极大压缩了检索过程,不仅仅是可以快速给出比较靠谱的简要回答,还可以方便的搜索高质量的相关文献和书籍。在此之前,对于比较偏门的细分领域,我可能被无聊的检索过程劝退了,白浪费时间。

  1. 帮助思考卡顿。

对于通用但是复杂的理解问题、各种专有名词的形象化解释、各种看起来可能冲突或者容易混淆的概念等等,AI可以高效的辅助解决这些问题。

如何能更好的利用AI,一句话:问该问的问题。我最不缺的就是问题,一大堆停不下来的问题。当然,和所有“一句话忠告”、“名人名言”、“F=ma定律”一样,但这一句话屁用没有,背后所隐藏的信息才是真正有价值的部分,对于这个话题,就是我下文要讲的AI prompt。

AI prompt

这种思考方式,首先有清晰的逻辑链条,其次有清晰的边界(即哪些是我不知道的,哪些是我知道的)。我发现这种思考方式也很适用于AI提示词“工程”

对于AI提示词,有三点很重要:

  1. 非常清晰的捋清楚需求,哪些是必须要完成的,哪些是可以有选择的,哪些是可以自由发挥的。
  2. 努力提取出已知条件,哪些是不需要提及的(比如说翻译成中文,我没必要解释中文是什么意思)、哪些是需要提及的。
  3. 给出期望的输出范围。如果期望它更通用,有更多点子,就要在提示词中明确 现有数据/信息 并不只是表达具体这部分信息,然后可以举例说明不同的例子,尽量可以让它从不同信息中抽象出来你想要的本质信息;如果期望它更专用更精确,那就说明现有数据的准确性,举出你不想处理但类似的例子,让它能明白你想处理的范围和精准程度。

但是对于生成提示词的过程,我觉得还有几个有意思的点:

  1. 要能代入一种视角:它不知道任何关于你的需求和任意相关的已知信息。但他有海量的通用知识和较强的理解力,理解力不是“通灵”能力。它不知道你的所想。然后如果有一个这样的同事/同学(最好能想象它是机器人,因为他虽然看起来聪明,但也很“死板”,它在很多时候不会像人一样直接过滤掉看起来不符合这个场景下的内容,这会影响它,所以上下文管理也很重要,之后可能会提及这一部分),如何让它帮助你,你就如何表达。
  2. 可以尝试和AI对话来修正上述的部分(需求、条件、输出范围),然后再开一个新对话输出最终的提示词。当然,这随着模型能力、处理信息的方式、理解需求的能力的进化,这会变得不重要。现阶段的模型已经开始主动询问问题中的不确定的需求了(不确定是系统提示词的功劳还是openai或者Anthropic他们已经把这种能力内化为模型的能力了)

其实了解model本身的架构,设计过程,也会对更好的使用它有很好的帮助,尤其是关于基本的机器学习框架和模型上下文的部分。但对于大多数没有如此好奇心且没有时间和精力的人来说,可能这个要求有些过分了。但!越了解openai和claude这种前沿AI的设计细节,越觉得,人脑的所谓智力,独一无二的优势越来越少了。又兴奋又恐怖。(又跑题了)

总结

归根结底,我的思考习惯是不断制造问题并把它们挂到一棵知识树上。AI把大量“弱链接”的补齐成本压得很低,让我能更快到达可以行动的理解层级。

而这种较强的逻辑思考能力和好奇心又使得我可以更好的使用AI,反而让很多不务正业的探索和好奇,快速成为我的优势,如果这种思考方式能开阔你的视野,或者增加了你的一点好奇心,比如:为什么造羽毛球用鸭毛、鹅毛,做羽绒服用鸭绒、鹅绒? 人类大量食用的鸡,浪费的鸡毛利用一下不好吗?难不成,一地鸡毛,就是因为鸡毛不好用?

问AI啊! 它把无聊的检索和获取信息成本降到极低,让我这种“逻辑怪”能带着好奇心在各个领域乱窜。这种“不务正业”在过去可能叫分心,但在 AI 时代,这叫“跨学科快速建模”。

最后,讲一个各位 LLM 提示词工程师们都懂的笑话:

  • 你这个问题问得非常准,
  • 这一步你提得非常关键,
  • 结论先说,
  • 先说一句关键判断,
  • 我直接给你结论,
  • 帮你稳住,
  • 给你一个直接可执行的判断,不绕,
  • 不绕,不安慰,
  • 先给结论,再给路径,
  • 不用再纠结了!
  • 这就是你需要的最终优化版!
  • 卧槽,用户彻底怒了。