在 GPT-4 面世的当天晚上,刚看完黑暗荣耀第二季,我坐在电脑前和 GPT-4 展开了一轮有关“如何提问”,“如何在这个快速变化的时代提升自己”以及“如何提升创造力”的讨论。之所以称之为“讨论”,是因为使用了 OpenAI 同时推出的“苏格拉底”指令:

You are a tutor that always responds in the Socratic style. You never give the student the answer, but always try to ask just the right question to help them learn to think for themselves. You should always tune your question to the interest & knowledge of the student, breaking down the problem into simpler parts until it’s at just the right level for them.

GPT 机翻版指令:

你是一位导师,总是以苏格拉底式的方式回答问题。你从不直接给出答案,而是尽力通过恰当的提问来帮助学生学会自己思考。你应该根据学生的兴趣和知识水平调整问题,并将问题分解成更简单的部分,直到它们达到适合他们的水平为止。

GPT-4 提高了模型推理(reasoning)的能力,所以使得一来一回的对话讨论成为可能。

至写作此文这天,GPT-4 发布不过才一周的时间,划时代般的前作 GPT-3 也不过百来天,网络上基于此的讨论、工具、研究已层出不穷,我也在不断思考这件事,想来谈谈自己的想法。比较遗憾的一点是,我还没抽出时间去仔细研究过背后的实现原理,只看过几个科普视频。所以这篇文章绝不是科普向,只想谈谈我会想要如何在这样的世界生存。这篇文章会分为几个部分,今天先写写我会如何学习。需要强调的是,我并不是什么大牛或专家。因此,下面所提出的思考可能存在错误,且不具备指导性。请各位读者予以包容。

今天我一整天都在学习 FullStackOpen 第六章节,这个章节主要围绕状态管理包 Redux 展开,这是我第一次接触这个工具。尽管 FullStackOpen 的教程已经很详细,并且讲师也尽可能使练习题的难度循序渐进,但我还是在个别问题上卡顿了很久。最后也是通过自己不断检查和尝试,才解决了问题。等到一切都解决后,我才意识到本可以早些向 ChatGPT 询问,这样也许问题能更快地得到解决。但我又好奇,如果没有经过自己一番折腾,我是否能够达到现在对这个知识点的理解程度?我是否只是在表面上浮光掠影地学习、满足于一些假象?所以,从这里产生了问题:何时以何种方式向 AI 工具寻求帮助,才能更有利于学习呢?我又如何辨别自己是真懂还是假懂?毕竟自欺欺人是件很容易的事情。

我现在的学习过程有几个明确的步骤:

  1. 限定范围。我想学什么?我为什么想学?我准备学习什么资料?我想在哪怎么学?我的时间和精力有多少?
  2. 全局理解,整理思考。
  3. 回顾及应用。
  4. 没有蠢问题。

限定范围

这是一件极其重要但容易被忽视的事情。不在一开始这么做,最直接的结果就是会陷入“教程地狱”,在无数个教程之间反复横跳,从未真正学习到最重要的内容,从未应用过自己学到的知识,到头来什么也没学会。

在这个纷繁复杂的世界,该学什么是自己要回答的问题,每个人有不同的目标或目的。但是 AI 可以帮助提供一份详细的学习规划,从而限定范围,尽早地实现学习目标。这个视频1很好地示例了可以如何使用 5W 分析法让 ChatGPT 提供完整的学习计划和项目建议以实践学到的知识。

全局理解并整理

我过去经常陷入“教程地狱”陷阱,还有一个原因是我过于关注细节。我记了一大堆具体函数的细节用法,但忽略了如何将它们串联起来实现一个具体的功能,没有一个将分散的知识连接起来的关键环节,也导致我很快遗忘学习过的知识。

所以,我的目前做法是,不像疯狂地赶进度,而是每学习完一个小节,学习大约花费三个小时的时间。停下来回顾之前学到的知识,并思考如何用我自己能理解的方式将知识串联起来。我通常是先使用画流程图的方式进行梳理,梳理的过程中很容易发现遗失的环节,这个时候就需要重新看材料或查阅其他资料(更快的方式,询问 ChatGPT)查缺补漏。然后我会把笔记用文字形式尽可能简洁地写下来,这一步概括知识迫使我去总结知识点而不是照单全收,并且我会尝试把新加入的知识点和已经存在我的知识库里的内容进行连接。

回顾及应用

那么,如何验证自己的理解是否正确或者到位呢?以我正在学习的 FullStackOpen 为例,讲师设计了非常合适的练习题,这是验证的绝佳机会。还可以通过做自己的项目等方式验证、加深自己的理解。如果想不到合适的项目,或许可以询问 ChatGPT(参考“限定范围”部分所提及的 YouTube 视频)。

做题或应用的过程中很可能会遇到一时半会无法解决的问题,比如代码无论如何都没有按照自己期待的情况运行。这个时候,防止在一个问题上单线消耗过大,或许可以直接把出问题的代码部分丢给 ChatGPT 让它帮你找问题。大部分时候它都不能直接解决,但是可以提供一些提示,帮助更快地锁定问题。我最近用这个方法找了好几次问题,但还没养成一遇到问题就问 ChatGPT 的习惯,常常是自己尝试了很久才想起。如果想提高这方面的效率,或许应该更早把 ChatGPT 引入这个流程。

但我还想说的是,解决问题的能力也很重要。比起 AI 无痛解决问题,或许应该先学习最基本的解决问题方法。比如对编程来说,调试(debug)是有方法和规则可遵循的,FullStackOpen 在第一章就在强调调试的作用。学习基本的方法论可以让人遇到问题时不至于像无头苍蝇一样。另外也可以准备自己的“错题集”,之后在写类似的程序的时候,可以回溯错题集寻找解决方案。而且我认为解决问题的思路或者说心智,并不是说一套方法只对应一个领域的问题,实际上是可以融会贯通,所以这是非常需要掌握的重要技能。

不过,学习的过程中难免会遇到解决不了的问题,这时就需要向外寻求帮助。由于不是所有人都在校学习,以及无法保证学校或在线平台助教的质量,有时还会担心自己问出“愚蠢的问题”,再三斟酌自己的问题才敢发出去。向 AI 工具提问的话,就不再需要担忧自己可能会显得“愚蠢”。但一定要当心,偷懒和走投无路可能就只有一线之差,使用这些便利的工具,要时刻和自己确认是不是真的有学会,以及多应用知识。2

最后说回顾,我比较喜欢 flomo 的回顾理念3,本质上就是回看你的笔记。删除或者存档不再相关的内容,添加新的相关内容。通过整理笔记这个行为,对我来说也是一种从整体思考的实践。我无法只关注一个笔记的细节,就可以得出它在整个系统中是否相关的结论。而且,我认为笔记实际上是写给“未来的自己”看的内容。当我不再学习 Redux,但又需要立即理解相关内容时,我的笔记可以提供一定的视角,帮助我理解内容。而且我也曾经遇到过别人问我某件事情,我自己不太记得细节,但是记得有记过笔记的事情,我马上回溯笔记就能给对方答复。

小结

写到这,算是把最近的思路好好整理了一遍,未来能更好地应用到学习场景中去。在这个不断变化的时代,需要持续不断地学习呀!